diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index e711d1a7206..c3eb80df962 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -586,6 +586,26 @@ SS13 has a lot of legacy code that's never been updated. Here are some examples - Files and path accessed and referenced by code above simply being #included should be strictly lowercase to avoid issues on filesystems where case matters. +#### Modular Code in a File + +Code should be modular where possible; if you are working on a new addition, then strongly consider putting it in its own file unless it makes sense to put it with similar ones (i.e. a new tool would go in the `tools.dm` file) + +Our codebase also has support for checking files so that they only contain one specific typepath, including none of its subtypes. This can be done by adding a specific header at the beginning of the file, which the CI will look for when running. An example can be seen below. You can also run this test locally using `/tools/ci/restrict_file_types.py` + +```dm +RESTRICT_TYPE(/datum/foo) + +/datum/proc/do_thing() // Error: '/datum' proc found in a file restricted to '/datum/foo' + +/datum/foo + +/datum/foo/do_thing() + +/datum/foo/bar // Error: '/datum/foo/bar' type definition found in a file restricted to '/datum/foo' + +/datum/foo/bar/do_thing() // Error: '/datum/foo/bar' proc found in a file restricted to '/datum/foo' +``` + ### SQL - Do not use the shorthand sql insert format (where no column names are specified) because it unnecessarily breaks all queries on minor column changes and prevents using these tables for tracking outside related info such as in a connected site/forum. @@ -679,7 +699,6 @@ SS13 has a lot of legacy code that's never been updated. Here are some examples ### Other Notes -- Code should be modular where possible; if you are working on a new addition, then strongly consider putting it in its own file unless it makes sense to put it with similar ones (i.e. a new tool would go in the `tools.dm` file) - Bloated code may be necessary to add a certain feature, which means there has to be a judgement over whether the feature is worth having or not. You can help make this decision easier by making sure your code is modular. - You are expected to help maintain the code that you add, meaning that if there is a problem then you are likely to be approached in order to fix any issues, runtimes, or bugs. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1c5f9e4eb6f..25df92cd348 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -48,6 +48,7 @@ jobs: python tools/ci/unticked_files.py ${GITHUB_WORKSPACE} python tools/ci/illegal_dme_files.py ${GITHUB_WORKSPACE} python tools/ci/define_sanity.py + python tools/ci/restrict_file_types.py python -m tools.ci.check_icon_conflicts python -m tools.ci.check_icon_dupenames python -m tools.maplint.source --github diff --git a/_maps/map_files/RandomRuins/SpaceRuins/wreckedcargoship.dmm b/_maps/map_files/RandomRuins/SpaceRuins/wreckedcargoship.dmm index ce3aad34e22..83d5f5fefa8 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/wreckedcargoship.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/wreckedcargoship.dmm @@ -214,7 +214,6 @@ /area/ruin/space/wreck_cargoship) "jb" = ( /obj/structure/table, -/obj/structure/table, /obj/item/paper{ name = "management's directive"; info = "Good day Captain Hardie. Your ship has been assigned to carry an extremely delicate cargo due to an unfortunate scheduling issue in behalf of our custormers. You will find the additional information on transporting procedure of this extremely delicate cargo attached to it. Management believes you will not mind this rather unconvenient last minute change after what happened last time. Make sure you and your crew doesn't mess it up this time as we hate to compensate the expenses from our esteemed already-in-debt employees. Pick the cargo from next destination and safely deliver it where it has to go." diff --git a/_maps/map_files/stations/cerestation.dmm b/_maps/map_files/stations/cerestation.dmm index 2a03e9c68b6..ccc69336a86 100644 --- a/_maps/map_files/stations/cerestation.dmm +++ b/_maps/map_files/stations/cerestation.dmm @@ -839,24 +839,13 @@ icon_state = "dark" }, /area/station/turret_protected/ai) -"aeO" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'WARNING: FUN-SIZED JUSTICE'."; - name = "WARNING: FUN-SIZED JUSTICE"; - pixel_x = null; - pixel_y = -32 - }, -/obj/structure/disposalpipe/segment{ - dir = 4; - color = "#954535" - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralcorner" - }, -/area/station/hallway/primary/fore/west) "afd" = ( /turf/simulated/wall/r_wall, /area/station/security/permabrig) +"afe" = ( +/obj/structure/closet/masks, +/turf/simulated/floor/plasteel, +/area/station/public/fitness) "afn" = ( /obj/structure/cable{ d1 = 4; @@ -2247,6 +2236,15 @@ "aog" = ( /turf/simulated/floor/plating, /area/station/maintenance/disposal/northeast) +"aoh" = ( +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/station/public/quantum/service) "aok" = ( /obj/structure/cable/orange{ d1 = 1; @@ -2695,6 +2693,17 @@ /obj/effect/landmark/spawner/rev, /turf/simulated/floor/plating, /area/station/maintenance/disposal/northeast) +"aqR" = ( +/obj/machinery/power/apc/important/directional/north, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkblue" + }, +/area/station/public/quantum/medbay) "aqT" = ( /obj/effect/spawner/random_spawners/wall_rusted_always, /turf/simulated/wall, @@ -2821,6 +2830,11 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/station/maintenance/disposal) +"arE" = ( +/turf/simulated/floor/light{ + color = "#6b8698" + }, +/area/station/public/quantum/medbay) "arG" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/orange{ @@ -3586,6 +3600,20 @@ icon_state = "darkredcorners" }, /area/station/security/brig) +"awA" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 2; + icon_state = "green" + }, +/area/station/public/quantum/service) "awB" = ( /obj/machinery/light, /obj/machinery/newscaster/security_unit{ @@ -4754,21 +4782,6 @@ }, /turf/simulated/wall, /area/station/maintenance/maintcentral) -"aEv" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "escape" - }, -/area/station/hallway/secondary/entry/east) "aEw" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -6221,6 +6234,23 @@ icon_state = "vault" }, /area/station/security/armory/secure) +"aOR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "redcorner" + }, +/area/station/hallway/secondary/entry/north) "aOS" = ( /obj/machinery/power/terminal{ dir = 4 @@ -7848,6 +7878,12 @@ "aXD" = ( /turf/simulated/floor/plating/asteroid/ancient/airless, /area/mine/unexplored/cere/engineering) +"aXF" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/station/maintenance/port2) "aXG" = ( /obj/machinery/camera{ c_tag = "Mini Satellite Teleporter"; @@ -8251,6 +8287,17 @@ /obj/structure/grille/broken, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/port) +"aZU" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/science/robotics) "aZY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -9209,6 +9256,19 @@ icon_state = "dark" }, /area/station/engineering/break_room/secondary) +"bff" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, +/obj/item/radio/intercom{ + pixel_x = -28; + name = "custom placement" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutralcorner" + }, +/area/station/hallway/primary/starboard/south) "bfg" = ( /obj/structure/grille/broken, /obj/item/clothing/head/cone, @@ -10622,6 +10682,16 @@ }, /turf/simulated/floor/transparent/glass/reinforced/plasma, /area/station/engineering/control) +"bmb" = ( +/obj/machinery/quantumpad/cere/security_medbay, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/turf/simulated/floor/plasteel{ + icon_state = "darkred" + }, +/area/station/public/quantum/security) "bmf" = ( /obj/structure/disposalpipe/segment/corner, /obj/machinery/firealarm{ @@ -12167,6 +12237,24 @@ /obj/effect/spawner/window/reinforced/plasma, /turf/simulated/floor/plating, /area/station/engineering/engine/supermatter) +"bty" = ( +/obj/structure/window/reinforced/polarized, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/mecha_parts/core, +/obj/item/stock_parts/cell/high/plus, +/obj/item/stock_parts/cell/high/plus, +/obj/item/stock_parts/cell/high/plus, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/science/robotics) "btz" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -15458,6 +15546,11 @@ icon_state = "dark" }, /area/station/engineering/atmos) +"bGP" = ( +/turf/simulated/floor/light{ + color = "#79986b" + }, +/area/station/public/quantum/service) "bGW" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/structure/cable{ @@ -17003,6 +17096,22 @@ }, /turf/space, /area/space/nearstation) +"bNX" = ( +/obj/machinery/door/airlock/multi_tile/glass, +/obj/effect/mapping_helpers/airlock/autoname, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/public/quantum/security) +"bNZ" = ( +/obj/machinery/power/apc/directional/east, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/station/hallway/primary/aft/west) "bOf" = ( /obj/structure/cable{ d1 = 1; @@ -19397,6 +19506,23 @@ icon_state = "asteroidplating" }, /area/station/maintenance/port) +"bXp" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "purplecorner" + }, +/area/station/hallway/primary/aft/east) "bXu" = ( /obj/structure/rack, /obj/item/pickaxe/emergency, @@ -20109,6 +20235,7 @@ /obj/machinery/light/small{ dir = 1 }, +/obj/structure/closet/firecloset/full, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -20500,14 +20627,13 @@ /turf/simulated/floor/plasteel, /area/station/supply/miningdock) "cfG" = ( -/obj/machinery/bluespace_beacon, /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/turf/simulated/floor/light{ - color = "#4C763A" +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, /area/station/public/quantum/docking) "cfH" = ( @@ -20950,10 +21076,6 @@ d2 = 8; icon_state = "4-8" }, -/obj/machinery/newscaster{ - pixel_y = 28; - name = "north bump" - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -21269,16 +21391,9 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 }, -/obj/machinery/newscaster{ - pixel_y = 28; - name = "north bump" - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "escape" @@ -21639,17 +21754,6 @@ }, /turf/simulated/floor/plasteel, /area/station/science/storage) -"cmK" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/station/hallway/primary/aft/west) "cmL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -23024,7 +23128,14 @@ }, /area/station/supply/office) "cvq" = ( -/obj/machinery/light{ +/obj/machinery/door_control{ + id = "arrivalseva"; + name = "Arrivals EVA shutter control"; + pixel_x = 25; + pixel_y = 6; + req_one_access_txt = "19;41" + }, +/obj/effect/turf_decal/stripes/corner{ dir = 4 }, /turf/simulated/floor/plasteel{ @@ -23297,13 +23408,6 @@ icon_state = "dark" }, /area/station/maintenance/port) -"cxI" = ( -/obj/machinery/camera{ - c_tag = "Service Atmospherics Checkpoint" - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/station/maintenance/port2) "cxM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -25256,20 +25360,6 @@ slowdown = -0.3 }, /area/station/hallway/spacebridge/engmed) -"cIJ" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "neutralcorner" - }, -/area/station/hallway/secondary/entry/north) "cIO" = ( /obj/machinery/newscaster{ pixel_x = 28; @@ -25590,6 +25680,9 @@ pixel_x = 28; name = "custom placement" }, +/obj/machinery/light{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutralcorner" @@ -25673,6 +25766,13 @@ }, /turf/simulated/floor/wood, /area/station/legal/magistrate) +"cKU" = ( +/obj/machinery/alarm/directional/east, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkgreen" + }, +/area/station/public/quantum/docking) "cKY" = ( /obj/machinery/light{ dir = 4 @@ -25703,6 +25803,11 @@ /obj/structure/closet/secure_closet/iaa, /turf/simulated/floor/carpet, /area/station/legal/lawoffice) +"cLc" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkgreen" + }, +/area/station/public/quantum/docking) "cLe" = ( /obj/structure/cable/orange{ d1 = 2; @@ -25730,6 +25835,14 @@ icon_state = "redyellowfull" }, /area/station/service/bar) +"cLo" = ( +/obj/machinery/power/apc/directional/west, +/obj/effect/turf_decal/stripes/end{ + dir = 4 + }, +/obj/structure/cable/orange, +/turf/simulated/floor/plating, +/area/station/public/fitness) "cLq" = ( /obj/structure/bookcase/sop, /turf/simulated/floor/carpet, @@ -26044,8 +26157,8 @@ /turf/simulated/floor/carpet/black, /area/station/command/bridge) "cMQ" = ( -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, +/obj/structure/sign/cargo, +/turf/simulated/wall, /area/station/public/quantum/cargo) "cMR" = ( /obj/machinery/light/small{ @@ -26093,13 +26206,13 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/power/apc/directional/north, /obj/structure/cable/orange{ d2 = 2; icon_state = "0-2" }, /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/power/apc/important/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "darkbrown" @@ -27346,9 +27459,8 @@ d2 = 2; icon_state = "1-2" }, -/obj/machinery/bluespace_beacon, -/turf/simulated/floor/light{ - color = "#6A5135" +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, /area/station/public/quantum/cargo) "cSt" = ( @@ -28521,12 +28633,17 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, /turf/simulated/floor/light{ color = "#6A5135" }, /area/station/public/quantum/cargo) "cXa" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkbrown" @@ -29811,7 +29928,9 @@ }, /area/station/security/prison/cell_block/A) "dfF" = ( -/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment/corner{ + dir = 1 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "redcorner" @@ -29865,12 +29984,16 @@ c_tag = "Brig General Population Port"; dir = 10 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "redcorner" }, /area/station/security/prison/cell_block/A) "dgF" = ( +/obj/structure/disposalpipe/segment/corner, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "redcorner" @@ -30343,9 +30466,6 @@ dir = 4 }, /obj/effect/spawner/random_spawners/dirt_often, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "escape" @@ -30486,18 +30606,13 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6 - }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ icon_state = "darkbrown" }, /area/station/public/quantum/cargo) "dkK" = ( /obj/item/kirbyplants/plant22, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, /turf/simulated/floor/plasteel{ dir = 6; icon_state = "darkbrown" @@ -30814,9 +30929,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/structure/sign/cargo{ - pixel_y = -32 - }, /obj/structure/disposalpipe/segment{ dir = 4; color = "#954535" @@ -30954,11 +31066,11 @@ d2 = 2; icon_state = "1-2" }, -/obj/machinery/door/airlock/glass, -/obj/effect/mapping_helpers/airlock/autoname, -/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/multi_tile/glass, +/obj/effect/mapping_helpers/airlock/autoname, +/obj/machinery/door/firedoor, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -31627,12 +31739,12 @@ d2 = 8; icon_state = "4-8" }, -/obj/structure/disposalpipe/segment/corner{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "redcorner" @@ -31913,6 +32025,21 @@ icon_state = "darkredcorners" }, /area/station/security/brig) +"dtv" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Criminal Delivery Chute" + }, +/obj/effect/mapping_helpers/airlock/access/all/security/doors, +/obj/effect/turf_decal/stripes, +/obj/effect/turf_decal/stripes/red, +/obj/structure/disposalpipe/segment{ + color = "#954535" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutralcorner" + }, +/area/station/hallway/primary/aft/east) "dtA" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -33985,26 +34112,6 @@ /obj/effect/spawner/airlock/e_to_w, /turf/simulated/wall, /area/station/maintenance/apmaint) -"dHU" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "purple" - }, -/area/station/hallway/primary/aft/west) "dIi" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 9 @@ -34798,15 +34905,14 @@ /turf/simulated/floor/wood, /area/station/service/theatre) "dSV" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = 24; - name = "custom placement" - }, /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, +/obj/machinery/light{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutralcorner" @@ -35033,9 +35139,6 @@ }, /area/station/hallway/primary/fore/north) "dWM" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -35046,9 +35149,9 @@ d2 = 2; icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -35116,6 +35219,10 @@ /obj/effect/spawner/random_spawners/fungus_maybe, /turf/simulated/wall, /area/station/maintenance/asmaint) +"dYK" = ( +/obj/structure/girder, +/turf/simulated/floor/plating, +/area/station/maintenance/port2) "dZd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ @@ -35191,22 +35298,6 @@ /obj/structure/railing, /turf/space, /area/space/nearstation) -"ebB" = ( -/obj/effect/spawner/window/reinforced/grilled, -/obj/structure/cable/orange{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; - id_tag = "Secure Gate"; - name = "Security Blast Door"; - opacity = 0 - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plating, -/area/station/security/prison/cell_block/A) "ebW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -35434,6 +35525,18 @@ "egm" = ( /turf/simulated/wall/r_wall, /area/mine/unexplored/cere/medical) +"ego" = ( +/obj/structure/sign/directions/service{ + pixel_y = 39; + dir = 8 + }, +/obj/effect/turf_decal/loading_area{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/public/quantum/cargo) "egq" = ( /obj/structure/disposalpipe/segment/corner{ dir = 8 @@ -35601,11 +35704,11 @@ /turf/simulated/floor/plating/airless, /area/station/maintenance/disposal/west) "ejH" = ( -/obj/structure/closet/masks, /obj/structure/window/basic{ dir = 8 }, -/turf/simulated/floor/plasteel, +/obj/structure/punching_bag, +/turf/simulated/floor/carpet/cyan, /area/station/public/fitness) "ekh" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -36139,14 +36242,6 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/storage) -"etF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/camera{ - c_tag = "Research Atmospherics Checkpoint"; - dir = 9 - }, -/turf/simulated/floor/plating, -/area/station/hallway/primary/aft/west) "etG" = ( /obj/structure/cable/orange{ d1 = 4; @@ -36282,6 +36377,17 @@ icon_state = "dark" }, /area/station/engineering/break_room/secondary) +"evm" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/cyan, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/station/hallway/primary/aft/west) "evC" = ( /obj/structure/cable{ d1 = 4; @@ -36548,6 +36654,24 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/fore2) +"eAu" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/recharge_station, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/station/hallway/primary/starboard/north) +"eAQ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/caution/stand_clear, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkbrown" + }, +/area/station/public/quantum/cargo) "eAS" = ( /turf/simulated/floor/plating{ icon_state = "asteroidplating" @@ -36685,19 +36809,15 @@ icon_state = "asteroidplating" }, /area/station/maintenance/port) -"eCT" = ( -/obj/structure/cable/orange{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +"eDf" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkpurple" +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, +/turf/simulated/floor/plasteel/white, /area/station/science/robotics) "eDi" = ( /obj/structure/cable/orange{ @@ -36808,10 +36928,6 @@ icon_state = "neutralcorner" }, /area/station/hallway/spacebridge/cargocom) -"eEI" = ( -/obj/structure/sign/security, -/turf/simulated/wall/r_wall, -/area/station/public/quantum/science) "eEK" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -36914,6 +37030,14 @@ /obj/effect/spawner/random_spawners/dirt_frequent, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) +"eGC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/light{ + color = "#62416F" + }, +/area/station/public/quantum/science) "eGS" = ( /obj/machinery/power/apc/directional/south, /obj/machinery/light/small{ @@ -37429,6 +37553,10 @@ icon_state = "asteroidplating" }, /area/station/public/vacant_office) +"ePI" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/station/public/quantum/service) "eQt" = ( /obj/item/kirbyplants/plant21, /turf/simulated/floor/plasteel{ @@ -37992,6 +38120,15 @@ icon_state = "neutralcorner" }, /area/station/hallway/primary/port/north) +"fbf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/disposalpipe/segment/corner{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/station/maintenance/port2) "fbs" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, @@ -38292,6 +38429,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/hidden/cyan, +/obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/hallway/primary/aft/west) "fiK" = ( @@ -38377,6 +38515,11 @@ "fkn" = ( /obj/structure/disposalpipe/segment/corner, /obj/structure/chair/stool, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel, @@ -38463,6 +38606,16 @@ }, /turf/simulated/floor/plating, /area/station/security/prison/cell_block/A) +"fmA" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/alarm/directional/east, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/station/public/quantum/security) "fmI" = ( /turf/simulated/floor/plasteel{ icon_state = "neutralfull" @@ -38481,6 +38634,18 @@ icon_state = "dark" }, /area/station/medical/morgue) +"fna" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteyellow" + }, +/area/station/science/robotics/chargebay) "fnk" = ( /obj/effect/spawner/window/reinforced/grilled, /obj/structure/cable{ @@ -38674,12 +38839,22 @@ }, /area/station/science/hallway) "fru" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 }, -/turf/simulated/floor/plating, -/area/station/maintenance/port2) +/obj/structure/cable/orange{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "green" + }, +/area/station/public/quantum/service) "frK" = ( /obj/structure/cable/orange{ d1 = 2; @@ -38887,6 +39062,21 @@ icon_state = "white" }, /area/station/science/misc_lab) +"fva" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkblue" + }, +/area/station/public/quantum/medbay) "fvb" = ( /obj/structure/table/reinforced, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -39223,14 +39413,6 @@ }, /turf/simulated/floor/plasteel, /area/station/hallway/primary/fore/east) -"fAm" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "darkpurple" - }, -/area/station/science/robotics) "fAD" = ( /obj/machinery/ai_status_display, /turf/simulated/wall, @@ -39261,6 +39443,15 @@ /obj/machinery/atmospherics/pipe/simple/visible, /turf/simulated/floor/plating, /area/station/maintenance/disposal/external/southeast) +"fBT" = ( +/obj/machinery/bluespace_beacon, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/light{ + color = "#763C3A" + }, +/area/station/public/quantum/security) "fCc" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -39618,6 +39809,13 @@ }, /turf/simulated/floor/carpet/green, /area/station/service/library) +"fIL" = ( +/obj/effect/turf_decal/stripes/corner, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutralcorner" + }, +/area/station/hallway/secondary/entry/north) "fIZ" = ( /obj/machinery/firealarm{ dir = 8; @@ -39649,8 +39847,17 @@ }, /area/station/medical/storage/secondary) "fJC" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, /turf/simulated/floor/plasteel, /area/station/public/fitness) "fJD" = ( @@ -39858,6 +40065,9 @@ /obj/machinery/atmospherics/binary/valve/open, /turf/simulated/floor/plating, /area/station/maintenance/port2) +"fOb" = ( +/turf/simulated/mineral/ancient, +/area/station/public/quantum/docking) "fOd" = ( /obj/structure/cable{ d1 = 1; @@ -40093,14 +40303,6 @@ icon_state = "white" }, /area/station/science/misc_lab) -"fSm" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/obj/item/assembly/mousetrap/armed, -/turf/simulated/floor/plating{ - icon_state = "asteroidplating" - }, -/area/station/maintenance/port2) "fSn" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -40211,19 +40413,6 @@ icon_state = "arrival" }, /area/station/hallway/secondary/entry/west) -"fTG" = ( -/obj/effect/spawner/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 2; - id_tag = "RoboticsShutters" - }, -/obj/structure/cable/orange{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/plating, -/area/station/science/robotics) "fTL" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -40599,14 +40788,6 @@ icon_state = "asteroidplating" }, /area/station/maintenance/maintcentral) -"fZs" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plasteel{ - icon_state = "purplefull" - }, -/area/station/hallway/primary/aft/west) "fZC" = ( /obj/machinery/atmospherics/pipe/manifold4w/hidden/cyan, /obj/effect/spawner/random_spawners/dirt_often, @@ -40663,17 +40844,6 @@ /obj/effect/spawner/random_spawners/dirt_frequent, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) -"gaZ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5 - }, -/obj/structure/disposalpipe/segment/corner{ - dir = 1 - }, -/turf/simulated/floor/plating{ - icon_state = "asteroidplating" - }, -/area/station/maintenance/port2) "gbb" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, @@ -40924,6 +41094,11 @@ /obj/structure/table, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/plasteel, /area/station/public/fitness) "ggy" = ( @@ -40975,8 +41150,10 @@ /turf/simulated/floor/plating, /area/station/hallway/primary/central/north) "ghr" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 3 + }, /turf/simulated/floor/plating, /area/station/maintenance/port2) "ghv" = ( @@ -41002,13 +41179,6 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) -"ghP" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/station/maintenance/port2) "ghS" = ( /obj/structure/flora/grass/jungle, /obj/item/radio/intercom{ @@ -41504,6 +41674,9 @@ /obj/structure/grille, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/gambling_den) +"gtw" = ( +/turf/simulated/mineral/ancient, +/area/station/public/quantum/medbay) "gtz" = ( /obj/machinery/constructable_frame/machine_frame, /turf/simulated/floor/plasteel{ @@ -42170,13 +42343,6 @@ icon_state = "browncorner" }, /area/station/hallway/primary/fore/east) -"gEb" = ( -/obj/item/kirbyplants, -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor/carpet/cyan, -/area/station/public/fitness) "gEi" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -42318,6 +42484,26 @@ "gGB" = ( /turf/simulated/mineral/ancient/outer, /area/station/public/sleep/secondary) +"gGE" = ( +/obj/item/radio/intercom{ + pixel_x = -28; + name = "custom placement" + }, +/obj/structure/disposalpipe/segment/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkpurple" + }, +/area/station/science/robotics) "gGI" = ( /obj/structure/sign/directions/bridge{ dir = 1 @@ -42384,6 +42570,14 @@ icon_state = "purplefull" }, /area/station/hallway/primary/aft/west) +"gIk" = ( +/obj/structure/disposalpipe/segment{ + color = "#954535" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/station/hallway/primary/aft/east) "gIm" = ( /obj/effect/spawner/window/reinforced, /obj/structure/sign/chemistry, @@ -43176,6 +43370,15 @@ /obj/structure/cable/orange, /turf/simulated/floor/plating, /area/station/science/xenobiology) +"gVR" = ( +/obj/effect/turf_decal/loading_area{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/station/public/quantum/medbay) "gVY" = ( /obj/structure/railing, /turf/simulated/floor/plasteel, @@ -43393,19 +43596,6 @@ }, /turf/simulated/mineral/ancient, /area/station/public/locker) -"gZF" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/hologram/holopad, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "darkpurple" - }, -/area/station/science/robotics) "gZI" = ( /turf/simulated/floor/wood, /area/station/command/office/blueshield) @@ -43583,6 +43773,16 @@ }, /turf/simulated/floor/plasteel, /area/station/hallway/secondary/exit) +"hcI" = ( +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/plating{ + icon_state = "asteroidplating" + }, +/area/station/maintenance/port2) "hcK" = ( /obj/effect/decal/cleanable/cobweb, /obj/structure/closet/wardrobe/black, @@ -43653,6 +43853,20 @@ icon_state = "darkbrown" }, /area/station/supply/office) +"hdX" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkgreen" + }, +/area/station/public/quantum/docking) "hec" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -43790,14 +44004,11 @@ /turf/simulated/floor/plasteel, /area/station/public/fitness) "hhd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan, /obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - dir = 10; - level = 2 + d1 = 1; + d2 = 2; + icon_state = "1-2" }, /turf/simulated/floor/plating, /area/station/hallway/primary/aft/west) @@ -44159,6 +44370,10 @@ icon_state = "dark" }, /area/station/service/expedition) +"hoF" = ( +/obj/structure/disposalpipe/segment/corner, +/turf/simulated/mineral/ancient, +/area/station/maintenance/port2) "hoG" = ( /obj/structure/window/reinforced{ dir = 4 @@ -44584,6 +44799,12 @@ }, /turf/simulated/floor/carpet, /area/station/service/bar) +"huq" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating{ + icon_state = "asteroidplating" + }, +/area/station/maintenance/port2) "huu" = ( /obj/structure/disposalpipe/segment/corner{ dir = 1 @@ -44724,6 +44945,17 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) +"hxR" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteyellow" + }, +/area/station/science/robotics/chargebay) "hyd" = ( /obj/machinery/light/small{ dir = 8 @@ -44820,6 +45052,17 @@ }, /turf/simulated/floor/plasteel, /area/station/security/lobby) +"hzj" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance/two, +/obj/structure/disposalpipe/segment/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/station/maintenance/port2) "hzn" = ( /obj/structure/cable/orange{ d1 = 1; @@ -45040,6 +45283,18 @@ icon_state = "cafeteria" }, /area/station/command/office/rd) +"hDx" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/station/hallway/primary/aft/west) "hDL" = ( /obj/structure/cable/orange{ d1 = 4; @@ -45159,6 +45414,23 @@ /obj/structure/lattice/catwalk, /turf/space, /area/station/engineering/solar/auxstarboard) +"hFh" = ( +/obj/machinery/door/poddoor/shutters{ + dir = 8; + id_tag = "MechbayShutters2"; + name = "Mech Bay Shutters" + }, +/obj/machinery/door/firedoor, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "ramptop" + }, +/area/station/science/robotics/chargebay) "hFn" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -45220,17 +45492,30 @@ icon_state = "asteroidplating" }, /area/station/hallway/primary/fore/west) +"hGf" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + color = "#954535" + }, +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'WARNING: FUN-SIZED JUSTICE'."; + name = "WARNING: FUN-SIZED JUSTICE"; + pixel_x = null; + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralcorner" + }, +/area/station/hallway/primary/fore/west) "hGp" = ( -/obj/machinery/door/airlock/glass, -/obj/effect/mapping_helpers/airlock/autoname, /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -45478,10 +45763,6 @@ icon_state = "neutralcorner" }, /area/station/hallway/secondary/entry/north) -"hJh" = ( -/obj/machinery/light/small, -/turf/simulated/floor/plating, -/area/station/hallway/primary/aft/west) "hJz" = ( /obj/machinery/alarm/directional/south, /obj/structure/disposalpipe/segment{ @@ -45598,6 +45879,31 @@ /obj/machinery/light, /turf/simulated/floor/wood, /area/station/maintenance/starboard) +"hMB" = ( +/obj/effect/turf_decal/loading_area{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24; + name = "south bump" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/station/public/quantum/medbay) +"hML" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel/white, +/area/station/science/robotics) "hMY" = ( /obj/structure/closet/secure_closet/RD, /obj/item/cartridge/signal/toxins, @@ -45718,6 +46024,11 @@ icon_state = "neutralcorner" }, /area/station/hallway/spacebridge/servsci) +"hPy" = ( +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/public/quantum/security) "hPG" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance, @@ -46037,6 +46348,11 @@ d2 = 8; icon_state = "2-8" }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/plasteel, /area/station/public/fitness) "hTh" = ( @@ -46105,6 +46421,11 @@ /obj/structure/disposalpipe/segment{ color = "#954535" }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -46272,12 +46593,6 @@ icon_state = "cafeteria" }, /area/station/medical/break_room) -"hYD" = ( -/obj/machinery/bluespace_beacon, -/turf/simulated/floor/light{ - color = "#763C3A" - }, -/area/station/public/quantum/security) "hYG" = ( /obj/machinery/status_display{ layer = 4 @@ -46477,6 +46792,17 @@ "ibP" = ( /turf/simulated/floor/carpet/royalblack, /area/station/command/office/ntrep) +"ibX" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkred" + }, +/area/station/public/quantum/security) "ice" = ( /turf/simulated/wall, /area/station/hallway/primary/fore/west) @@ -46603,6 +46929,9 @@ d2 = 2; icon_state = "1-2" }, +/obj/structure/disposalpipe/segment/corner{ + dir = 8 + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -46698,6 +47027,12 @@ }, /turf/simulated/floor/transparent/glass/reinforced/plasma, /area/station/engineering/control) +"ieP" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/mineral/ancient, +/area/station/maintenance/port2) "ifa" = ( /turf/simulated/wall/indestructible/riveted, /area/station/science/toxins/test) @@ -46757,6 +47092,16 @@ icon_state = "asteroidplating" }, /area/station/science/xenobiology) +"ifz" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + color = "#954535" + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "purple" + }, +/area/station/hallway/primary/aft/west) "ifS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plating{ @@ -47002,6 +47347,23 @@ icon_state = "darkblue" }, /area/station/command/bridge) +"iky" = ( +/obj/machinery/disposal/deliveryChute{ + desc = "A chute for big and small criminals alike!"; + name = "Criminal Delivery Chute" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/turf_decal/stripes, +/obj/effect/turf_decal/stripes/red, +/obj/structure/disposalpipe/trunk{ + color = "#954535" + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/station/hallway/primary/aft/east) "ikC" = ( /obj/structure/cable{ d1 = 4; @@ -47340,6 +47702,15 @@ /obj/item/pickaxe, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/fpmaint) +"ipI" = ( +/obj/machinery/bluespace_beacon, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/light{ + color = "#6A5135" + }, +/area/station/public/quantum/cargo) "ipQ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -47777,17 +48148,6 @@ }, /turf/space, /area/station/engineering/solar/auxport) -"iuX" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/power/apc/directional/north, -/obj/structure/cable/orange{ - d2 = 2; - icon_state = "0-2" - }, -/turf/simulated/floor/plasteel/white, -/area/station/science/robotics) "ivj" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -47977,20 +48337,6 @@ /obj/machinery/biogenerator, /turf/simulated/floor/grass/jungle, /area/station/hallway/secondary/garden) -"iyj" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 8 - }, -/obj/machinery/camera{ - c_tag = "Command Quantum Pad"; - dir = 8 - }, -/obj/machinery/alarm/directional/east, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkred" - }, -/area/station/public/quantum/security) "iys" = ( /obj/machinery/alarm/directional/east, /obj/structure/table, @@ -48460,14 +48806,6 @@ }, /turf/simulated/floor/plasteel, /area/station/security/prisonershuttle) -"iHA" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/mecha_part_fabricator, -/obj/machinery/alarm/directional/west, -/turf/simulated/floor/plasteel/white, -/area/station/science/robotics) "iHG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable/orange{ @@ -48678,16 +49016,6 @@ icon_state = "dark" }, /area/station/turret_protected/aisat/interior) -"iKs" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/obj/machinery/power/apc/directional/west, -/obj/effect/turf_decal/stripes/end{ - dir = 4 - }, -/obj/structure/cable/orange, -/turf/simulated/floor/plating, -/area/station/public/fitness) "iKt" = ( /obj/structure/cable/orange{ d1 = 2; @@ -48774,14 +49102,13 @@ /turf/simulated/floor/plating, /area/station/maintenance/starboard) "iLV" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ + level = 2 + }, /obj/structure/cable{ d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ - dir = 4; - level = 2 + d2 = 4; + icon_state = "1-4" }, /turf/simulated/floor/plating, /area/station/hallway/primary/aft/west) @@ -48926,6 +49253,17 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/starboard) +"iOG" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + color = "#954535" + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "purplecorner" + }, +/area/station/hallway/primary/aft/east) "iOM" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -48993,6 +49331,13 @@ /obj/item/storage/toolbox/mechanical, /turf/simulated/floor/plating, /area/station/maintenance/port) +"iQb" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ + dir = 4; + level = 2 + }, +/turf/simulated/floor/plating, +/area/station/maintenance/port2) "iQd" = ( /obj/machinery/door/poddoor{ density = 0; @@ -49015,6 +49360,21 @@ }, /turf/simulated/floor/plating, /area/station/hallway/primary/port/south) +"iQr" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/filingcabinet/chestdrawer, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/alarm/directional/north, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/station/security/detective) "iQJ" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -49180,6 +49540,27 @@ /obj/effect/spawner/random_spawners/dirt_often, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) +"iTt" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Detective" + }, +/obj/effect/mapping_helpers/airlock/access/all/security/forensics, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/polarized{ + id = "Detective" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/station/security/detective) "iTx" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/door/firedoor, @@ -50404,6 +50785,16 @@ }, /turf/simulated/floor/plating, /area/station/security/armory/secure) +"jnH" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 24; + name = "custom placement" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutralcorner" + }, +/area/station/hallway/secondary/entry/north) "jnV" = ( /obj/machinery/status_display{ layer = 4 @@ -50791,10 +51182,6 @@ /obj/structure/rack, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/storage) -"jsY" = ( -/obj/structure/closet/boxinggloves, -/turf/simulated/floor/plasteel, -/area/station/public/fitness) "jtd" = ( /obj/structure/girder, /obj/structure/grille, @@ -51184,6 +51571,14 @@ /obj/machinery/atmospherics/portable/canister/air, /turf/simulated/floor/plating, /area/station/hallway/primary/fore/north) +"jzf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/light{ + color = "#763C3A" + }, +/area/station/public/quantum/security) "jzg" = ( /obj/effect/spawner/window/reinforced/grilled, /obj/structure/cable{ @@ -51427,20 +51822,6 @@ icon_state = "asteroidplating" }, /area/station/maintenance/apmaint) -"jCg" = ( -/obj/machinery/power/apc/directional/north, -/obj/structure/cable/orange{ - d2 = 2; - icon_state = "0-2" - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "whiteyellow" - }, -/area/station/science/robotics/chargebay) "jCl" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, @@ -51454,6 +51835,22 @@ icon_state = "neutralcorner" }, /area/station/hallway/primary/fore/north) +"jCx" = ( +/obj/effect/spawner/window/reinforced/grilled, +/obj/structure/cable/orange{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/door/poddoor{ + density = 0; + icon_state = "open"; + id_tag = "Secure Gate"; + name = "Security Blast Door"; + opacity = 0 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/station/security/prison/cell_block/A) "jCE" = ( /obj/structure/disposalpipe/sortjunction/reversed{ dir = 1; @@ -51559,6 +51956,12 @@ icon_state = "purplecorner" }, /area/station/hallway/primary/aft/east) +"jDV" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/station/maintenance/port2) "jDW" = ( /turf/simulated/floor/plasteel{ dir = 4; @@ -51702,13 +52105,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/door_control{ - id = "scieva"; - name = "Science EVA shutter control"; - pixel_x = 25; - pixel_y = 24; - req_one_access_txt = "19;41" - }, /obj/structure/cable{ d1 = 1; d2 = 4; @@ -51879,6 +52275,17 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/storage) +"jIO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/power/apc/directional/north, +/obj/structure/cable/orange{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/plasteel/white, +/area/station/science/robotics) "jJc" = ( /turf/simulated/mineral/ancient, /area/station/science/robotics) @@ -52424,6 +52831,13 @@ /obj/structure/cable/orange, /turf/simulated/floor/plating, /area/station/maintenance/portsolar) +"jRW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/camera{ + c_tag = "Service Atmospherics Checkpoint" + }, +/turf/simulated/floor/plating, +/area/station/maintenance/port2) "jSc" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -52484,7 +52898,9 @@ }, /area/station/hallway/primary/port/north) "jTe" = ( -/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment/corner{ + dir = 4 + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -52563,18 +52979,6 @@ icon_state = "darkred" }, /area/station/security/checkpoint/secondary) -"jUA" = ( -/obj/machinery/door/poddoor/shutters{ - dir = 8; - id_tag = "MechbayShutters2"; - name = "Mech Bay Shutters" - }, -/obj/machinery/door/firedoor, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "ramptop" - }, -/area/station/science/robotics/chargebay) "jUK" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -52593,27 +52997,6 @@ icon_state = "dark" }, /area/station/engineering/atmos) -"jUP" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Detective" - }, -/obj/effect/mapping_helpers/airlock/access/all/security/forensics, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable/orange{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/mapping_helpers/airlock/polarized{ - id = "Detective" - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plasteel{ - icon_state = "grimy" - }, -/area/station/security/detective) "jUW" = ( /obj/machinery/light{ dir = 1 @@ -52686,23 +53069,6 @@ /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, /area/station/maintenance/disposal/external/southwest) -"jWb" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/structure/cable/orange{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel/white, -/area/station/science/robotics) "jWj" = ( /obj/machinery/power/apc/directional/west, /obj/structure/cable/orange, @@ -52733,15 +53099,6 @@ slowdown = -0.3 }, /area/station/hallway/spacebridge/comeng) -"jWP" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, -/obj/structure/cable/orange{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/plasteel/white, -/area/station/science/robotics) "jWR" = ( /turf/simulated/floor/plasteel{ dir = 6; @@ -52927,14 +53284,9 @@ /turf/simulated/floor/plating, /area/station/hallway/primary/fore/north) "kaS" = ( -/obj/structure/sign/directions/cargo{ - dir = 4 +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/obj/structure/sign/directions/bridge{ - dir = 8; - pixel_y = 8 - }, -/turf/simulated/wall, /area/station/public/quantum/cargo) "kaY" = ( /obj/effect/turf_decal/stripes/asteroid/line{ @@ -52953,6 +53305,17 @@ }, /turf/simulated/floor/transparent/glass/reinforced, /area/station/maintenance/apmaint) +"kbj" = ( +/obj/effect/turf_decal/stripes/end{ + dir = 4 + }, +/obj/machinery/quantumpad/cere/arrivals_cargo{ + name = "quantum pad" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkyellowfull" + }, +/area/station/public/quantum/docking) "kbl" = ( /obj/machinery/floodlight{ light_power = 1 @@ -53259,7 +53622,6 @@ /turf/simulated/floor/engine, /area/station/engineering/control) "kgd" = ( -/obj/item/kirbyplants/applebush, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "darkred" @@ -53296,6 +53658,15 @@ /obj/machinery/ai_status_display, /turf/simulated/mineral/ancient, /area/station/hallway/primary/starboard/north) +"khH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutralcorner" + }, +/area/station/hallway/secondary/entry/north) "khM" = ( /obj/structure/cable{ d1 = 1; @@ -53600,6 +53971,23 @@ /obj/effect/spawner/random_spawners/dirt_frequent, /turf/simulated/floor/plasteel/white, /area/station/science/xenobiology) +"kmd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkblue" + }, +/area/station/public/quantum/medbay) "kmi" = ( /obj/machinery/door/airlock/maintenance{ name = "Cargo SMES Access" @@ -53644,6 +54032,15 @@ }, /turf/simulated/floor/engine, /area/station/engineering/control) +"kmY" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/station/maintenance/port2) "knc" = ( /obj/structure/disposalpipe/segment/corner, /turf/simulated/floor/plating, @@ -54101,6 +54498,20 @@ icon_state = "neutralfull" }, /area/station/hallway/secondary/entry/west) +"ktA" = ( +/obj/machinery/power/apc/important/directional/south, +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/obj/structure/cable/orange{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/plasteel{ + dir = 2; + icon_state = "green" + }, +/area/station/public/quantum/service) "ktP" = ( /obj/structure/chair/sofa/corp, /turf/simulated/floor/wood, @@ -54452,15 +54863,6 @@ }, /turf/simulated/floor/plating, /area/station/science/misc_lab) -"kzd" = ( -/obj/effect/landmark/spawner/nukedisc_respawn, -/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ - dir = 8; - level = 2 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/station/maintenance/port2) "kzf" = ( /obj/effect/spawner/random_spawners/wall_rusted_always, /turf/simulated/wall, @@ -54482,24 +54884,6 @@ /obj/effect/spawner/random_spawners/fungus_maybe, /turf/simulated/wall, /area/station/maintenance/disposal/east) -"kzS" = ( -/obj/machinery/camera{ - c_tag = "Docking Quantum Pad"; - dir = 8 - }, -/obj/machinery/alarm/directional/east, -/obj/structure/sign/directions/cargo{ - dir = 1; - pixel_y = 39 - }, -/obj/effect/turf_decal/loading_area{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkgreen" - }, -/area/station/public/quantum/docking) "kAn" = ( /obj/machinery/hologram/holopad, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -54589,6 +54973,17 @@ icon_state = "dark" }, /area/station/engineering/gravitygenerator) +"kBs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/light{ + color = "#6b8698" + }, +/area/station/public/quantum/medbay) "kBz" = ( /obj/structure/sink{ dir = 8; @@ -54623,9 +55018,6 @@ "kCg" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/disposalpipe/segment{ - color = "#954535" - }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -54724,13 +55116,13 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/machinery/power/apc/directional/north, /obj/structure/cable{ d2 = 2; icon_state = "0-2" }, /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/power/apc/important/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "darkpurple" @@ -55018,6 +55410,11 @@ icon_state = "neutralfull" }, /area/station/public/locker) +"kJp" = ( +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/station/hallway/primary/aft/west) "kJr" = ( /obj/structure/cable/orange{ d1 = 4; @@ -55030,6 +55427,10 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) +"kJM" = ( +/obj/structure/sign/security, +/turf/simulated/wall/r_wall, +/area/station/hallway/primary/aft/east) "kKg" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -55474,7 +55875,6 @@ "kQz" = ( /obj/item/kirbyplants/plant21, /turf/simulated/floor/plasteel{ - dir = 6; icon_state = "darkgreen" }, /area/station/public/quantum/docking) @@ -55679,24 +56079,6 @@ /obj/effect/spawner/window/reinforced/plasma/grilled, /turf/simulated/floor/plating, /area/station/science/toxins/launch) -"kTq" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable/orange{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable/orange{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plasteel{ - icon_state = "grimy" - }, -/area/station/security/detective) "kTG" = ( /obj/structure/sign/directions/medical, /turf/simulated/wall, @@ -55931,9 +56313,8 @@ d2 = 2; icon_state = "1-2" }, -/obj/machinery/bluespace_beacon, -/turf/simulated/floor/light{ - color = "#62416F" +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, /area/station/public/quantum/science) "kVQ" = ( @@ -56055,12 +56436,33 @@ /obj/structure/closet/crate, /turf/simulated/floor/plating, /area/station/maintenance/storage) +"kYN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkpurple" + }, +/area/station/science/robotics) "kZb" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, /turf/simulated/floor/plating, /area/station/engineering/smes) +"kZd" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/plating{ + icon_state = "asteroidplating" + }, +/area/station/maintenance/port2) "kZm" = ( /obj/structure/disposalpipe/segment/corner{ dir = 1 @@ -56320,9 +56722,6 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 1 }, -/obj/structure/disposalpipe/segment{ - color = "#954535" - }, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -56463,6 +56862,12 @@ "lfq" = ( /turf/simulated/mineral/ancient, /area/station/science/hallway) +"lfs" = ( +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/public/quantum/cargo) "lfB" = ( /obj/structure/disposalpipe/trunk{ dir = 1 @@ -56481,6 +56886,15 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) +"lfG" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/station/public/quantum/service) "lfX" = ( /obj/effect/turf_decal/delivery/hollow, /obj/machinery/suit_storage_unit/cmo/sec_storage/secure, @@ -56857,6 +57271,10 @@ }, /turf/simulated/floor/carpet, /area/station/medical/psych) +"lkz" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/station/public/quantum/medbay) "lkA" = ( /obj/effect/decal/cleanable/dirt, /mob/living/carbon/human/monkey, @@ -56970,12 +57388,20 @@ /turf/simulated/floor/plasteel/dark/telecomms, /area/station/science/server) "llQ" = ( -/obj/structure/window/basic{ - dir = 1 - }, /obj/structure/closet/lasertag/red, /turf/simulated/floor/plasteel, /area/station/public/fitness) +"llW" = ( +/obj/structure/sign/directions/science{ + pixel_y = 7; + dir = 8 + }, +/obj/machinery/quantumpad/cere/medbay_science, +/obj/effect/turf_decal/stripes/end, +/turf/simulated/floor/plasteel{ + icon_state = "darkpurplefull" + }, +/area/station/public/quantum/medbay) "lme" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -57621,6 +58047,11 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/plasteel, /area/station/public/fitness) "lwr" = ( @@ -57821,20 +58252,6 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) -"lyC" = ( -/obj/machinery/light_switch{ - dir = 1; - pixel_y = -24; - name = "south bump" - }, -/obj/structure/disposalpipe/segment{ - dir = 4; - color = "#954535" - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralcorner" - }, -/area/station/hallway/primary/fore/west) "lyF" = ( /obj/structure/cable{ d1 = 4; @@ -58062,6 +58479,12 @@ "lBh" = ( /turf/simulated/mineral/ancient/outer, /area/station/maintenance/auxsolarport) +"lBk" = ( +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/public/quantum/security) "lBr" = ( /obj/machinery/light/small{ dir = 8 @@ -58225,6 +58648,23 @@ }, /turf/simulated/floor/plasteel, /area/station/hallway/secondary/entry/south) +"lEh" = ( +/obj/effect/mapping_helpers/airlock/autoname, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/door/airlock/public/glass, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel, +/area/station/public/quantum/service) "lEk" = ( /obj/structure/cable/orange{ d1 = 2; @@ -58269,6 +58709,30 @@ slowdown = -0.3 }, /area/station/hallway/spacebridge/sercom) +"lEW" = ( +/obj/machinery/door/poddoor/shutters{ + dir = 8; + id_tag = "MechbayShutters2"; + name = "Mech Bay Shutters" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door_control{ + id = "MechbayShutters2"; + name = "Mechbay Shutters"; + pixel_y = -24; + req_access_txt = "29" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "ramptop" + }, +/area/station/science/robotics/chargebay) "lFc" = ( /obj/structure/lattice/catwalk, /obj/structure/cable/orange{ @@ -58391,6 +58855,14 @@ "lHw" = ( /turf/simulated/floor/plating, /area/station/maintenance/disposal/external/southeast) +"lHz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/station/maintenance/port2) "lHC" = ( /obj/item/flashlight/lantern, /turf/simulated/floor/plating{ @@ -58423,12 +58895,26 @@ icon_state = "dark" }, /area/station/service/library) +"lHU" = ( +/obj/item/assembly/mousetrap/armed, +/turf/simulated/floor/plating{ + icon_state = "asteroidplating" + }, +/area/station/maintenance/port2) "lHZ" = ( /obj/effect/spawner/window/reinforced/polarized{ id = "library" }, /turf/simulated/floor/plating, /area/station/service/library) +"lIf" = ( +/obj/machinery/door/airlock/multi_tile/glass, +/obj/effect/mapping_helpers/airlock/autoname, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/public/quantum/cargo) "lIj" = ( /obj/machinery/crema_switch{ id = "creamed"; @@ -58723,6 +59209,20 @@ /obj/item/clothing/head/cone, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) +"lPe" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/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, +/area/station/public/fitness) "lPg" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -58801,6 +59301,12 @@ icon_state = "bluecorner" }, /area/station/hallway/primary/starboard/north) +"lPR" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/ancient, +/area/station/maintenance/port2) "lPU" = ( /obj/structure/table, /obj/item/reagent_containers/glass/beaker, @@ -58815,6 +59321,16 @@ icon_state = "cafeteria" }, /area/station/service/kitchen) +"lQy" = ( +/obj/structure/disposalpipe/junction{ + dir = 8; + color = "#954535" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "purplecorner" + }, +/area/station/hallway/primary/aft/east) "lQB" = ( /obj/machinery/light{ dir = 8 @@ -59247,6 +59763,10 @@ icon_state = "asteroidplating" }, /area/station/maintenance/starboard) +"lWR" = ( +/obj/machinery/alarm/directional/east, +/turf/simulated/floor/carpet/cyan, +/area/station/public/fitness) "lWT" = ( /turf/simulated/wall, /area/station/hallway/secondary/garden) @@ -59971,18 +60491,12 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/door_control{ - id = "arrivalseva"; - name = "Arrivals EVA shutter control"; - pixel_x = 25; - pixel_y = 24; - req_one_access_txt = "19;41" - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/machinery/newscaster{ + pixel_y = 28; + name = "north bump" }, /turf/simulated/floor/plasteel{ dir = 1; @@ -60084,6 +60598,18 @@ icon_state = "barber" }, /area/station/service/barber) +"mml" = ( +/obj/structure/window/reinforced/polarized, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/science/robotics) "mmn" = ( /obj/structure/table, /obj/item/storage/firstaid/regular, @@ -60312,13 +60838,6 @@ }, /turf/simulated/floor/wood, /area/station/maintenance/starboard) -"mqw" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plating{ - icon_state = "asteroidplating" - }, -/area/station/maintenance/port2) "mqR" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -60349,10 +60868,7 @@ /obj/effect/turf_decal/loading_area{ dir = 1 }, -/obj/item/radio/intercom{ - pixel_x = 28; - name = "custom placement" - }, +/obj/machinery/alarm/directional/east, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "darkpurple" @@ -60672,6 +61188,15 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) +"mxh" = ( +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/station/maintenance/port2) "mxj" = ( /obj/structure/cable{ d2 = 8; @@ -61515,18 +62040,6 @@ /obj/structure/lattice/catwalk, /turf/space, /area/station/engineering/solar/starboard) -"mNc" = ( -/obj/machinery/door/airlock/research, -/obj/effect/mapping_helpers/airlock/autoname, -/obj/effect/mapping_helpers/airlock/access/all/science/robotics, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plasteel{ - icon_state = "darkpurplefull" - }, -/area/station/science/robotics) "mNd" = ( /obj/machinery/constructable_frame/machine_frame, /turf/simulated/floor/plating, @@ -61739,9 +62252,6 @@ }, /area/station/hallway/spacebridge/sercom) "mQN" = ( -/obj/machinery/door/airlock/glass, -/obj/effect/mapping_helpers/airlock/autoname, -/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable{ @@ -61749,6 +62259,7 @@ d2 = 2; icon_state = "1-2" }, +/obj/machinery/door/firedoor, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -62206,12 +62717,21 @@ }, /area/station/supply/office) "mXA" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - dir = 10; - level = 2 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/turf/simulated/floor/plating, -/area/station/maintenance/port2) +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 8 + }, +/obj/machinery/alarm/directional/east, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "green" + }, +/area/station/public/quantum/service) "mXS" = ( /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, @@ -62241,6 +62761,13 @@ /obj/machinery/atmospherics/unary/vent_pump/on, /turf/simulated/floor/carpet/black, /area/station/service/chapel) +"mYs" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/station/public/quantum/medbay) "mYI" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 @@ -62788,18 +63315,6 @@ /obj/effect/spawner/random_spawners/dirt_often, /turf/simulated/floor/plasteel, /area/station/maintenance/turbine) -"nhi" = ( -/obj/structure/window/reinforced/polarized, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/station/science/robotics) "nhx" = ( /turf/simulated/floor/plating, /area/station/hallway/secondary/exit) @@ -63060,6 +63575,18 @@ icon_state = "asteroidplating" }, /area/station/maintenance/port) +"nlJ" = ( +/obj/structure/sign/directions/service{ + pixel_y = 39; + dir = 8 + }, +/obj/effect/turf_decal/loading_area{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/public/quantum/docking) "nlZ" = ( /obj/machinery/porta_turret/ai_turret/disable, /obj/structure/cable{ @@ -63181,14 +63708,10 @@ }, /area/station/service/hydroponics) "noC" = ( -/obj/machinery/door/poddoor/multi_tile/two_tile_hor{ - name = "Arrivals Emergency EVA Storage"; - id_tag = "arrivalseva" - }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/station/maintenance/asmaint) +/area/station/public/quantum/docking) "noS" = ( /obj/structure/disposalpipe/sortjunction{ dir = 4; @@ -63606,6 +64129,15 @@ "nvU" = ( /turf/simulated/floor/carpet/black, /area/station/service/chapel) +"nvX" = ( +/obj/machinery/door/poddoor/multi_tile/two_tile_ver{ + id_tag = "arrivalseva"; + name = "Arrivals Emergency EVA Storage" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/maintenance/asmaint) "nwl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable{ @@ -63717,6 +64249,14 @@ icon_state = "purplecorner" }, /area/station/hallway/primary/aft/east) +"nxZ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/light{ + color = "#6A5135" + }, +/area/station/public/quantum/cargo) "nyc" = ( /obj/structure/sign/vacuum{ pixel_y = 32 @@ -63794,6 +64334,19 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel, /area/station/hallway/primary/port/north) +"nzH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/mecha_part_fabricator, +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/alarm/directional/west, +/turf/simulated/floor/plasteel/white, +/area/station/science/robotics) "nzK" = ( /obj/structure/cable{ d1 = 1; @@ -64001,9 +64554,6 @@ }, /area/station/medical/storage/secondary) "nDE" = ( -/obj/machinery/light/small{ - dir = 4 - }, /obj/effect/spawner/grouped_spawner{ group_id = "tunnelbats"; max_per_spawner = 1; @@ -64011,6 +64561,11 @@ path_to_spawn = /mob/living/simple_animal/hostile/scarybat; total_amount = 20 }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/port2) "nDG" = ( @@ -64444,6 +64999,24 @@ }, /turf/simulated/floor/transparent/glass/reinforced, /area/station/maintenance/port) +"nLs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + icon_state = "grimy" + }, +/area/station/security/detective) "nLy" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/plasteel{ @@ -64547,12 +65120,6 @@ icon_state = "redcorner" }, /area/station/security/prison/cell_block/A) -"nNm" = ( -/obj/structure/disposalpipe/segment/corner{ - dir = 1 - }, -/turf/simulated/floor/plating, -/area/station/maintenance/port2) "nNz" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 @@ -64591,16 +65158,6 @@ icon_state = "whiteblue" }, /area/station/medical/medbay) -"nNO" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line, -/turf/simulated/floor/plasteel/white, -/area/station/science/robotics) "nNY" = ( /obj/structure/railing/corner{ dir = 8 @@ -64622,10 +65179,6 @@ icon_state = "darkgreenfull" }, /area/station/service/hydroponics) -"nOx" = ( -/obj/machinery/alarm/directional/east, -/turf/simulated/floor/plasteel, -/area/station/public/fitness) "nOF" = ( /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -64643,6 +65196,14 @@ icon_state = "neutralfull" }, /area/station/hallway/primary/central/east) +"nOM" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/plasteel/white, +/area/station/science/robotics) "nON" = ( /obj/machinery/door/airlock/maintenance/external{ name = "External Airlock Access" @@ -64810,6 +65371,17 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/gambling_den) +"nRs" = ( +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/power/apc/important/directional/east, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkred" + }, +/area/station/public/quantum/security) "nRz" = ( /obj/structure/cable/orange{ d1 = 1; @@ -64957,6 +65529,19 @@ icon_state = "whitegreenfull" }, /area/station/public/sleep) +"nVd" = ( +/obj/effect/turf_decal/loading_area{ + dir = 1 + }, +/obj/structure/sign/directions/medical{ + dir = 4; + pixel_y = 39 + }, +/obj/machinery/bluespace_beacon, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/public/quantum/science) "nVj" = ( /obj/structure/railing{ dir = 9 @@ -65082,17 +65667,14 @@ }, /area/station/hallway/secondary/entry/east) "nYR" = ( -/obj/machinery/door/airlock/glass{ - name = "Research Quantum Pad" - }, /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/firedoor, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -65155,20 +65737,6 @@ icon_state = "dark" }, /area/station/maintenance/disposal) -"oac" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/filingcabinet/chestdrawer, -/obj/structure/cable/orange{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "grimy" - }, -/area/station/security/detective) "oaf" = ( /obj/machinery/light, /turf/simulated/floor/plasteel{ @@ -65997,32 +66565,25 @@ }, /area/station/hallway/spacebridge/cargocom) "oms" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 - }, /obj/structure/cable/orange{ d1 = 4; d2 = 8; icon_state = "4-8" }, -/obj/structure/disposalpipe/sortjunction{ - dir = 4; - name = "disposal pipe - Detective"; - sort_type_txt = "24" +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, /obj/structure/cable/orange{ d1 = 1; d2 = 4; icon_state = "1-4" }, -/obj/structure/cable/orange{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "redcorner" @@ -66087,13 +66648,18 @@ }, /area/station/hallway/spacebridge/cargocom) "onY" = ( -/obj/machinery/power/apc/directional/east, +/obj/machinery/camera{ + c_tag = "Command Quantum Pad"; + dir = 6 + }, +/obj/item/kirbyplants/applebush, /obj/structure/cable{ + d1 = 4; d2 = 8; - icon_state = "0-8" + icon_state = "4-8" }, /turf/simulated/floor/plasteel{ - dir = 5; + dir = 1; icon_state = "darkred" }, /area/station/public/quantum/security) @@ -66331,6 +66897,13 @@ }, /turf/simulated/floor/engine, /area/station/science/test_chamber) +"oqR" = ( +/obj/machinery/alarm/directional/south, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkblue" + }, +/area/station/public/quantum/medbay) "oqU" = ( /obj/machinery/atmospherics/pipe/simple/heat_exchanging{ dir = 4 @@ -66371,6 +66944,33 @@ icon_state = "white" }, /area/station/medical/cloning) +"orp" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/sortjunction{ + dir = 4; + name = "disposal pipe - Detective"; + sort_type_txt = "24" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "redcorner" + }, +/area/station/hallway/primary/fore/west) "orr" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -66568,9 +67168,12 @@ d2 = 8; icon_state = "4-8" }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "purplecorner" @@ -66846,11 +67449,12 @@ /turf/simulated/floor/plasteel/freezer, /area/station/service/kitchen) "oAw" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating{ + icon_state = "asteroidplating" }, -/obj/structure/disposalpipe/segment/corner, -/turf/simulated/floor/plating, /area/station/maintenance/port2) "oAO" = ( /turf/simulated/mineral/ancient/outer, @@ -67015,6 +67619,23 @@ /obj/structure/closet/secure_closet/engineering_electrical, /turf/simulated/floor/transparent/glass/reinforced, /area/station/hallway/primary/starboard/north) +"oEl" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/delivery, +/obj/structure/cable/orange{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel/white, +/area/station/science/robotics) "oEE" = ( /obj/structure/chair/comfy/shuttle{ dir = 8 @@ -67266,6 +67887,14 @@ icon_state = "whitebluecorner" }, /area/station/medical/storage/secondary) +"oJz" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 2; + id_tag = "RoboticsShutters" + }, +/turf/simulated/floor/plating, +/area/station/science/robotics) "oJH" = ( /obj/structure/closet/crate, /obj/item/pickaxe/emergency, @@ -67778,17 +68407,6 @@ icon_state = "neutral" }, /area/station/public/storage/tools) -"oQD" = ( -/obj/structure/cable/orange{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/turf_decal/delivery/white/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "purplefull" - }, -/area/station/hallway/primary/aft/west) "oQK" = ( /obj/effect/decal/cleanable/cobweb{ icon_state = "cobweb2" @@ -67972,6 +68590,13 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/station/public/quantum/security) +"oTz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 6; + level = 2 + }, +/turf/simulated/floor/plating, +/area/station/maintenance/port2) "oTN" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -67996,12 +68621,6 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/port) -"oUg" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/simulated/floor/plating/asteroid/ancient, -/area/station/maintenance/port2) "oUr" = ( /obj/item/clothing/head/cone, /turf/simulated/floor/plating{ @@ -69103,9 +69722,6 @@ name = "west bump" }, /obj/structure/disposalpipe/segment, -/obj/machinery/light{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ dir = 1; @@ -69302,6 +69918,33 @@ icon_state = "white" }, /area/station/science/misc_lab) +"pqq" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/autoname, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/public/quantum/security) +"pqr" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutralcorner" + }, +/area/station/hallway/primary/starboard/north) "pqs" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -69642,7 +70285,6 @@ /turf/simulated/floor/plating, /area/station/hallway/primary/port/north) "pvV" = ( -/obj/machinery/light, /obj/machinery/door/airlock/public/glass{ name = "Central Access" }, @@ -70100,17 +70742,6 @@ }, /turf/simulated/floor/plasteel, /area/station/hallway/secondary/exit) -"pDK" = ( -/obj/structure/cable/orange{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "whiteyellow" - }, -/area/station/science/robotics/chargebay) "pDM" = ( /obj/structure/cable/orange{ d1 = 2; @@ -70142,23 +70773,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/port) -"pEb" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/orange{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "whiteyellow" - }, -/area/station/science/robotics/chargebay) "pEi" = ( /obj/machinery/camera{ c_tag = "Research Asteroid Hallway 1"; @@ -70242,6 +70856,16 @@ /obj/structure/railing, /turf/simulated/floor/plating/asteroid/ancient/airless, /area/mine/unexplored/cere/ai) +"pFj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/station/maintenance/port2) "pFl" = ( /obj/machinery/computer/pandemic, /obj/item/radio/intercom{ @@ -70686,6 +71310,23 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/disposal/north) +"pLU" = ( +/obj/machinery/door/airlock/research, +/obj/effect/mapping_helpers/airlock/autoname, +/obj/effect/mapping_helpers/airlock/access/all/science/robotics, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkpurplefull" + }, +/area/station/science/robotics) "pMq" = ( /obj/effect/spawner/window/reinforced/grilled, /obj/structure/disposalpipe/segment, @@ -70855,6 +71496,17 @@ icon_state = "redyellowfull" }, /area/station/service/bar) +"pPj" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/caution/stand_clear, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkgreen" + }, +/area/station/public/quantum/docking) "pPl" = ( /obj/machinery/computer/shuttle/labor, /turf/simulated/floor/plasteel, @@ -70930,6 +71582,11 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/simulated/floor/plasteel, /area/station/public/fitness) "pQm" = ( @@ -70980,12 +71637,12 @@ dir = 1 }, /obj/effect/turf_decal/stripes/line, -/obj/machinery/power/apc/directional/north, /obj/effect/turf_decal/caution/stand_clear, /obj/structure/cable{ d2 = 2; icon_state = "0-2" }, +/obj/machinery/power/apc/important/directional/north, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "darkgreen" @@ -71799,12 +72456,6 @@ icon_state = "white" }, /area/station/medical/cloning) -"qdq" = ( -/obj/structure/disposalpipe/trunk{ - color = "#954535" - }, -/turf/simulated/wall/r_wall, -/area/station/public/quantum/science) "qds" = ( /obj/machinery/light/small{ dir = 4 @@ -72055,6 +72706,14 @@ icon_state = "darkgreenfull" }, /area/station/service/hydroponics) +"qhD" = ( +/obj/structure/cable/orange{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/plating/asteroid/ancient, +/area/station/maintenance/asmaint) "qhH" = ( /obj/structure/cable{ d1 = 2; @@ -72528,6 +73187,15 @@ icon_state = "asteroidplating" }, /area/station/maintenance/fore2) +"qnI" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "neutralcorner" + }, +/area/station/hallway/secondary/entry/north) "qnJ" = ( /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, @@ -73461,6 +74129,14 @@ }, /turf/simulated/floor/plating, /area/station/legal/lawoffice) +"qCo" = ( +/obj/item/radio/intercom{ + pixel_x = 28; + name = "custom placement" + }, +/obj/structure/punching_bag, +/turf/simulated/floor/carpet/cyan, +/area/station/public/fitness) "qCq" = ( /obj/machinery/light, /turf/simulated/floor/plasteel{ @@ -73743,12 +74419,6 @@ icon_state = "red" }, /area/station/security/storage) -"qHd" = ( -/obj/machinery/atmospherics/unary/portables_connector{ - dir = 8 - }, -/turf/simulated/floor/plating, -/area/station/maintenance/port2) "qHf" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -73897,6 +74567,16 @@ icon_state = "asteroidplating" }, /area/station/maintenance/starboard) +"qIX" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/quantumpad/cere/cargo_service, +/turf/simulated/floor/plasteel{ + icon_state = "whitegreenfull" + }, +/area/station/public/quantum/cargo) "qJm" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 @@ -74057,6 +74737,17 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plating, /area/station/command/bridge) +"qLe" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/caution/stand_clear, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkpurple" + }, +/area/station/public/quantum/science) "qLv" = ( /obj/structure/cable{ d1 = 1; @@ -74374,15 +75065,6 @@ /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, /area/station/hallway/secondary/garden) -"qQX" = ( -/obj/structure/sign/cargo{ - pixel_y = 32 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "browncorner" - }, -/area/station/hallway/primary/fore/east) "qRb" = ( /obj/machinery/atmospherics/pipe/simple/visible/purple, /obj/effect/spawner/window/reinforced/grilled, @@ -74394,6 +75076,10 @@ icon_state = "asteroidplating" }, /area/station/hallway/spacebridge/scidock) +"qRD" = ( +/obj/effect/spawner/random_spawners/grille_maybe, +/turf/simulated/floor/plating, +/area/station/maintenance/port2) "qRI" = ( /obj/effect/landmark{ icon = 'icons/effects/spawner_icons.dmi'; @@ -74734,6 +75420,11 @@ icon_state = "neutralfull" }, /area/station/hallway/primary/port/north) +"qZm" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/station/maintenance/port2) "qZt" = ( /obj/structure/chair, /obj/machinery/atmospherics/unary/vent_scrubber/on, @@ -74797,12 +75488,12 @@ /turf/space, /area/station/engineering/solar/port) "rao" = ( -/obj/structure/cable/orange{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, /obj/item/assembly/mousetrap/armed, +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -74991,6 +75682,12 @@ slowdown = -0.3 }, /area/station/hallway/spacebridge/dockmed) +"reB" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating{ + icon_state = "asteroidplating" + }, +/area/station/maintenance/port2) "reS" = ( /obj/machinery/ai_status_display, /turf/simulated/mineral/ancient, @@ -75248,23 +75945,6 @@ /obj/machinery/ai_status_display, /turf/simulated/wall, /area/station/hallway/primary/central/east) -"rll" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "purplecorner" - }, -/area/station/hallway/primary/aft/east) "rlz" = ( /obj/structure/falsewall{ desc = "A huge chunk of metal used to separate rooms. Nothing odd here, sir."; @@ -75287,23 +75967,6 @@ icon_state = "neutralcorner" }, /area/station/turret_protected/aisat/interior) -"rlX" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ - dir = 8; - level = 2 - }, -/turf/simulated/floor/plating, -/area/station/maintenance/port2) -"rma" = ( -/obj/machinery/atmospherics/unary/portables_connector{ - dir = 8 - }, -/obj/machinery/atmospherics/portable/canister/air, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/station/maintenance/port2) "rmf" = ( /obj/effect/spawner/random_spawners/dirt_frequent, /turf/simulated/floor/plasteel{ @@ -75332,10 +75995,6 @@ /area/station/service/hydroponics) "rmL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/item/radio/intercom{ - pixel_x = -28; - name = "custom placement" - }, /obj/structure/disposalpipe/segment/corner{ dir = 4 }, @@ -75699,6 +76358,40 @@ icon_state = "dark" }, /area/station/engineering/break_room) +"rsu" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/item/radio/intercom{ + pixel_y = 28; + name = "custom placement" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "purplecorner" + }, +/area/station/hallway/primary/aft/east) +"rsx" = ( +/obj/structure/sign/directions/security{ + pixel_y = 7; + dir = 8 + }, +/obj/machinery/quantumpad/cere/medbay_security, +/obj/effect/turf_decal/stripes/end{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkredfull" + }, +/area/station/public/quantum/medbay) "rsH" = ( /obj/machinery/door/airlock/maintenance{ name = "Dorm SMES Access" @@ -75860,6 +76553,9 @@ icon_state = "whiteblue" }, /area/station/medical/paramedic) +"rxd" = ( +/turf/simulated/mineral/ancient, +/area/station/public/quantum/cargo) "rxg" = ( /obj/structure/closet, /turf/simulated/floor/plating/asteroid/ancient, @@ -76258,20 +76954,6 @@ /obj/effect/spawner/random_spawners/dirt_often, /turf/simulated/floor/plasteel, /area/station/security/range) -"rDY" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/obj/structure/disposalpipe/segment/corner, -/obj/structure/cable/orange{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/simulated/floor/plating{ - icon_state = "asteroidplating" - }, -/area/station/maintenance/port2) "rEb" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -76422,13 +77104,6 @@ icon_state = "white" }, /area/station/medical/medbay) -"rHM" = ( -/obj/machinery/atmospherics/unary/portables_connector{ - dir = 8 - }, -/obj/machinery/atmospherics/portable/canister/air, -/turf/simulated/floor/plating, -/area/station/maintenance/port2) "rHQ" = ( /obj/structure/sign/security, /turf/simulated/wall, @@ -76553,6 +77228,14 @@ icon_state = "neutralcorner" }, /area/station/hallway/primary/fore/east) +"rJv" = ( +/obj/structure/cable/orange{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/plating/asteroid/ancient, +/area/station/maintenance/asmaint) "rJE" = ( /obj/structure/sign/poster/random{ name = "random official poster"; @@ -76713,6 +77396,14 @@ icon_state = "whitebluefull" }, /area/station/medical/paramedic) +"rMg" = ( +/obj/machinery/door/airlock/multi_tile/glass, +/obj/effect/mapping_helpers/airlock/autoname, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/public/quantum/science) "rMi" = ( /obj/structure/cable{ d2 = 4; @@ -77563,23 +78254,6 @@ icon_state = "cafeteria" }, /area/station/service/kitchen) -"saO" = ( -/obj/machinery/disposal/deliveryChute{ - desc = "A chute for big and small criminals alike!"; - name = "Criminal Delivery Chute" - }, -/obj/structure/disposalpipe/trunk{ - color = "#954535" - }, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/effect/turf_decal/stripes, -/obj/effect/turf_decal/stripes/red, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/station/hallway/primary/aft/west) "saR" = ( /obj/machinery/atmospherics/unary/thermomachine/freezer, /turf/simulated/floor/plasteel{ @@ -77760,6 +78434,22 @@ }, /turf/simulated/floor/wood, /area/station/command/office/ntrep) +"sec" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24; + name = "east bump" + }, +/obj/structure/sign/directions/cargo{ + dir = 4; + pixel_y = -25 + }, +/obj/effect/turf_decal/loading_area, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkred" + }, +/area/station/public/quantum/security) "sed" = ( /obj/effect/turf_decal/stripes/end{ dir = 4 @@ -78458,6 +79148,14 @@ /obj/structure/cable, /turf/simulated/floor/plating, /area/station/hallway/secondary/entry/north) +"sqX" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/station/public/quantum/medbay) "sri" = ( /obj/structure/chair/stool{ dir = 8 @@ -78501,11 +79199,6 @@ /obj/effect/spawner/random_spawners/dirt_frequent, /turf/simulated/floor/plating, /area/station/security/range) -"srw" = ( -/obj/structure/closet/firecloset/full, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/station/hallway/primary/aft/west) "srN" = ( /obj/machinery/alarm/directional/north, /turf/simulated/floor/plasteel{ @@ -78837,6 +79530,23 @@ /obj/structure/lattice/catwalk, /turf/space, /area/mine/unexplored/cere/engineering) +"suZ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel/white, +/area/station/science/robotics) "svb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -79226,6 +79936,25 @@ }, /turf/simulated/wall/r_wall, /area/station/medical/virology) +"sBQ" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24; + name = "south bump" + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "green" + }, +/area/station/public/quantum/service) "sBU" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -79271,13 +80000,8 @@ }, /area/station/public/storage/tools) "sCn" = ( -/obj/structure/cable/orange{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, /obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, +/turf/simulated/wall, /area/station/maintenance/asmaint) "sCr" = ( /obj/machinery/atmospherics/pipe/simple/visible/yellow{ @@ -79376,6 +80100,16 @@ icon_state = "escape" }, /area/station/hallway/secondary/exit) +"sDR" = ( +/obj/machinery/quantumpad/cere/science_medbay, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "whitebluefull" + }, +/area/station/public/quantum/science) "sDY" = ( /obj/machinery/requests_console{ department = "Hydroponics"; @@ -79391,8 +80125,8 @@ "sEg" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/disposalpipe/junction{ - dir = 8; +/obj/structure/disposalpipe/segment{ + dir = 4; color = "#954535" }, /turf/simulated/floor/plasteel{ @@ -79948,7 +80682,6 @@ /area/station/science/robotics) "sOx" = ( /obj/machinery/economy/vending/detdrobe, -/obj/machinery/alarm/directional/north, /turf/simulated/floor/plasteel{ icon_state = "grimy" }, @@ -80529,21 +81262,6 @@ /obj/effect/spawner/random_spawners/dirt_often, /turf/simulated/floor/plating, /area/station/hallway/primary/starboard/south) -"sYa" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/disposalpipe/segment/corner{ - dir = 4 - }, -/obj/item/radio/intercom{ - pixel_x = -28; - name = "custom placement" - }, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "darkpurple" - }, -/area/station/science/robotics) "sYg" = ( /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -81099,6 +81817,15 @@ icon_state = "neutralcorner" }, /area/station/hallway/primary/port/east) +"tiG" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkpurple" + }, +/area/station/science/robotics) "tiI" = ( /obj/structure/disposalpipe/segment/corner, /turf/simulated/floor/plasteel{ @@ -82017,6 +82744,12 @@ /obj/structure/bed, /turf/simulated/floor/plating, /area/station/maintenance/starboard) +"txf" = ( +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/public/quantum/science) "txk" = ( /obj/structure/table/wood, /obj/machinery/recharger, @@ -82318,6 +83051,14 @@ icon_state = "dark" }, /area/station/engineering/gravitygenerator) +"tCo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/unary/portables_connector{ + dir = 4 + }, +/obj/machinery/atmospherics/portable/canister/air, +/turf/simulated/floor/plating, +/area/station/maintenance/port2) "tCV" = ( /obj/item/kirbyplants/plant22, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -82420,6 +83161,11 @@ icon_state = "darkbrown" }, /area/station/supply/office) +"tEJ" = ( +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/station/maintenance/port2) "tEV" = ( /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -82606,6 +83352,20 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/carpet, /area/station/hallway/primary/port/east) +"tHQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating/asteroid/ancient, +/area/station/maintenance/port2) "tHV" = ( /obj/machinery/light, /obj/structure/cable{ @@ -82615,12 +83375,6 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/maintcentral) -"tIt" = ( -/obj/machinery/status_display{ - layer = 4 - }, -/turf/simulated/wall/r_wall, -/area/station/science/robotics/chargebay) "tIB" = ( /obj/machinery/light/small{ dir = 1 @@ -82700,12 +83454,12 @@ }, /area/station/security/prison/cell_block/A) "tJP" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 8 +/obj/machinery/bluespace_beacon, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkgreen" +/turf/simulated/floor/light{ + color = "#4C763A" }, /area/station/public/quantum/docking) "tJU" = ( @@ -83103,6 +83857,19 @@ icon_state = "dark" }, /area/station/service/expedition) +"tTm" = ( +/obj/machinery/quantumpad/cere/service_cargo, +/obj/structure/sign/directions/cargo{ + pixel_y = 7; + dir = 4 + }, +/obj/effect/turf_decal/stripes/end{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkyellowfull" + }, +/area/station/public/quantum/service) "tTE" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp/green, @@ -83401,6 +84168,10 @@ icon_state = "solarpanel" }, /area/station/engineering/solar/starboard) +"tXE" = ( +/obj/structure/closet/firecloset/full, +/turf/simulated/floor/plating, +/area/station/hallway/primary/aft/west) "tXJ" = ( /obj/structure/cable/orange{ d1 = 2; @@ -83439,19 +84210,13 @@ }, /area/station/service/hydroponics) "tYi" = ( -/obj/structure/sign/directions/cargo{ - dir = 4; - pixel_y = -25 - }, /obj/effect/turf_decal/loading_area, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24; - name = "east bump" +/obj/structure/sign/directions/medical{ + pixel_y = -25; + dir = 4 }, /turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkred" + icon_state = "dark" }, /area/station/public/quantum/security) "tYn" = ( @@ -84855,6 +85620,15 @@ icon_state = "asteroidplating" }, /area/station/hallway/secondary/exit) +"uuF" = ( +/obj/structure/sign/poster/random{ + name = "random official poster"; + random_basetype = /obj/structure/sign/poster/official; + pixel_x = 32 + }, +/obj/structure/punching_bag, +/turf/simulated/floor/carpet/cyan, +/area/station/public/fitness) "uuG" = ( /obj/structure/cable, /obj/machinery/power/apc/directional/south, @@ -84926,6 +85700,11 @@ icon_state = "dark" }, /area/station/medical/morgue) +"uvN" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkbrown" + }, +/area/station/public/quantum/cargo) "uvT" = ( /turf/simulated/mineral/ancient, /area/station/maintenance/electrical_shop) @@ -85724,6 +86503,26 @@ icon_state = "whitegreen" }, /area/station/medical/virology) +"uIC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + color = "#954535" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "purplecorner" + }, +/area/station/hallway/primary/aft/east) "uIG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -85886,12 +86685,14 @@ }, /area/station/hallway/secondary/exit) "uKU" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/plating{ - icon_state = "asteroidplating" +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 }, -/area/station/maintenance/port2) +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "green" + }, +/area/station/public/quantum/service) "uLy" = ( /obj/effect/spawner/airlock/s_to_n, /turf/simulated/mineral/ancient, @@ -86075,6 +86876,19 @@ icon_state = "neutralcorner" }, /area/station/hallway/primary/central/east) +"uOP" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "purplefull" + }, +/area/station/hallway/primary/aft/west) "uOU" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ @@ -86238,13 +87052,6 @@ /obj/machinery/alarm/directional/east, /turf/simulated/floor/plasteel, /area/station/hallway/secondary/entry/south) -"uQE" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/delivery, -/turf/simulated/floor/plasteel/white, -/area/station/science/robotics) "uQG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 9 @@ -86656,13 +87463,24 @@ }, /area/station/service/chapel) "uUU" = ( -/obj/machinery/recharge_station, -/obj/effect/turf_decal/delivery, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "neutralcorner" +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/area/station/hallway/primary/starboard/north) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/autoname, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/public/glass, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/public/quantum/medbay) "uUY" = ( /obj/structure/cable/orange{ d1 = 4; @@ -86983,6 +87801,11 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/station/hallway/secondary/entry/north) +"van" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkpurple" + }, +/area/station/public/quantum/science) "vap" = ( /obj/item/stack/ore/iron, /obj/effect/turf_decal/box, @@ -87020,27 +87843,6 @@ icon_state = "redyellowfull" }, /area/station/service/bar) -"vaS" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/item/radio/intercom{ - pixel_y = 28; - name = "custom placement" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "purplecorner" - }, -/area/station/hallway/primary/aft/east) "vaT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -87121,21 +87923,6 @@ icon_state = "cafeteria" }, /area/station/science/xenobiology) -"vbZ" = ( -/turf/simulated/wall/r_wall, -/area/station/hallway/primary/aft/west) -"vcb" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/cyan, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/apc/directional/west, -/obj/structure/cable, -/turf/simulated/floor/plating, -/area/station/hallway/primary/aft/west) "vcj" = ( /obj/machinery/light{ dir = 4 @@ -87185,6 +87972,14 @@ icon_state = "dark" }, /area/station/service/hydroponics) +"vcD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/light{ + color = "#4C763A" + }, +/area/station/public/quantum/docking) "vcK" = ( /obj/machinery/cryopod{ dir = 2 @@ -87693,7 +88488,6 @@ }, /area/station/hallway/secondary/entry/west) "vmU" = ( -/obj/machinery/alarm/directional/east, /obj/item/kirbyplants/plant25, /turf/simulated/floor/plasteel{ dir = 6; @@ -87942,6 +88736,12 @@ icon_state = "neutralcorner" }, /area/station/hallway/primary/fore/west) +"vpQ" = ( +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/public/quantum/docking) "vpS" = ( /obj/effect/spawner/window/reinforced/grilled, /obj/structure/cable/orange{ @@ -87987,19 +88787,13 @@ /turf/simulated/floor/plating, /area/station/maintenance/disposal/north) "vqp" = ( -/obj/effect/turf_decal/stripes/end{ - dir = 4 - }, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24; - name = "east bump" - }, -/obj/machinery/quantumpad/cere/arrivals_cargo{ - name = "quantum pad" +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 }, +/obj/machinery/quantumpad/cere/arrivals_service, /turf/simulated/floor/plasteel{ - icon_state = "darkyellowfull" + icon_state = "whitegreenfull" }, /area/station/public/quantum/docking) "vqN" = ( @@ -88509,6 +89303,22 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/disposal/south) +"vxP" = ( +/obj/machinery/camera{ + c_tag = "Research Atmospherics Checkpoint"; + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ + dir = 10; + level = 2 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/turf/simulated/floor/plating, +/area/station/hallway/primary/aft/west) "vxS" = ( /obj/structure/closet/secure_closet/roboticist, /turf/simulated/floor/plasteel{ @@ -88525,8 +89335,9 @@ }, /area/station/service/barber) "vyk" = ( -/obj/structure/disposalpipe/segment/corner, /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/port2) "vyI" = ( @@ -88587,19 +89398,6 @@ icon_state = "bcircuit" }, /area/station/turret_protected/ai) -"vzH" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/cyan{ - dir = 5; - level = 2 - }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, -/area/station/hallway/primary/aft/west) "vzL" = ( /obj/structure/cable/orange{ d1 = 1; @@ -88612,6 +89410,10 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/starboard) +"vzP" = ( +/obj/structure/disposalpipe/segment/corner, +/turf/simulated/floor/plating/asteroid/ancient, +/area/station/maintenance/port2) "vAg" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk, @@ -89167,18 +89969,6 @@ "vHw" = ( /turf/simulated/floor/plating, /area/station/public/vacant_office) -"vHF" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/simulated/floor/plasteel/white, -/area/station/science/robotics) "vHH" = ( /turf/simulated/floor/plating, /area/station/maintenance/starboard) @@ -90000,9 +90790,6 @@ d2 = 8; icon_state = "1-8" }, -/obj/machinery/light{ - dir = 4 - }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutralcorner" @@ -90259,10 +91046,32 @@ icon_state = "dark" }, /area/station/maintenance/disposal) +"vZz" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/plating{ + icon_state = "asteroidplating" + }, +/area/station/maintenance/port2) "vZN" = ( /obj/machinery/light, /turf/simulated/floor/plasteel, /area/station/public/fitness) +"wac" = ( +/obj/machinery/quantumpad/cere/service_arrivals, +/obj/structure/sign/directions/evac{ + pixel_y = 7; + dir = 4 + }, +/obj/effect/turf_decal/stripes/end, +/turf/simulated/floor/plasteel{ + icon_state = "darkgreenfull" + }, +/area/station/public/quantum/service) "waf" = ( /obj/machinery/door/airlock/security/glass{ name = "Security Office" @@ -90318,6 +91127,15 @@ icon_state = "asteroidplating" }, /area/station/maintenance/starboard) +"wbd" = ( +/obj/effect/landmark/spawner/nukedisc_respawn, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ + dir = 4; + level = 2 + }, +/turf/simulated/floor/plating, +/area/station/maintenance/port2) "wbe" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -90709,6 +91527,31 @@ icon_state = "whitepurple" }, /area/station/science/xenobiology) +"wij" = ( +/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 + }, +/obj/structure/cable/orange{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment/corner{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "redcorner" + }, +/area/station/hallway/primary/fore/west) "wim" = ( /obj/machinery/light, /obj/structure/sign/electricshock{ @@ -91134,6 +91977,20 @@ icon_state = "neutralfull" }, /area/station/hallway/primary/port/south) +"wnO" = ( +/obj/machinery/power/apc/directional/north, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/cable/orange{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "whiteyellow" + }, +/area/station/science/robotics/chargebay) "woa" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -91164,16 +92021,6 @@ /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, /area/station/maintenance/maintcentral) -"woL" = ( -/obj/structure/sign/directions/security{ - dir = 8; - pixel_y = 24 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "browncorner" - }, -/area/station/hallway/primary/fore/east) "woQ" = ( /obj/effect/spawner/window/reinforced/plasma/grilled, /obj/structure/cable{ @@ -91417,6 +92264,9 @@ icon_state = "neutralfull" }, /area/station/hallway/primary/starboard/south) +"wse" = ( +/turf/simulated/mineral/ancient, +/area/station/public/quantum/service) "wst" = ( /obj/machinery/iv_drip, /obj/structure/closet/crate/freezer/iv_storage, @@ -91526,6 +92376,19 @@ dir = 4 }, /area/station/medical/reception) +"wtx" = ( +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkpurple" + }, +/area/station/science/robotics) "wty" = ( /obj/effect/spawner/airlock/e_to_w, /turf/simulated/wall, @@ -92967,6 +93830,14 @@ icon_state = "white" }, /area/station/medical/medbay) +"wMQ" = ( +/obj/machinery/door/airlock/multi_tile/glass, +/obj/effect/mapping_helpers/airlock/autoname, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/public/quantum/docking) "wMV" = ( /obj/structure/cable{ d1 = 4; @@ -93543,6 +94414,21 @@ icon_state = "tranquillite" }, /area/station/service/mime) +"wXc" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/cyan, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/station/hallway/primary/aft/west) "wXm" = ( /obj/structure/cable/orange{ d1 = 1; @@ -93646,8 +94532,8 @@ /turf/simulated/floor/plating, /area/station/maintenance/apmaint) "wZF" = ( -/obj/machinery/alarm/directional/west, /obj/structure/reagent_dispensers/fueltank, +/obj/machinery/alarm/directional/west, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whiteyellow" @@ -93950,6 +94836,17 @@ icon_state = "whiteyellow" }, /area/station/medical/reception) +"xdr" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating{ + icon_state = "asteroidplating" + }, +/area/station/maintenance/port2) "xdu" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -93991,9 +94888,6 @@ icon_state = "darkredcorners" }, /area/station/security/brig) -"xdy" = ( -/turf/simulated/floor/plating, -/area/station/maintenance/asmaint) "xdJ" = ( /obj/structure/disposalpipe/segment, /obj/effect/spawner/window/reinforced/polarized{ @@ -94110,17 +95004,11 @@ /turf/space, /area/station/engineering/solar/starboard) "xho" = ( -/obj/structure/punching_bag, -/obj/structure/sign/poster/random{ - name = "random official poster"; - pixel_y = 32; - random_basetype = /obj/structure/sign/poster/official +/obj/structure/closet/boxinggloves, +/obj/machinery/light{ + dir = 4 }, -/obj/item/radio/intercom{ - pixel_x = 28; - name = "custom placement" - }, -/turf/simulated/floor/carpet/cyan, +/turf/simulated/floor/plasteel, /area/station/public/fitness) "xhr" = ( /obj/structure/cable/orange{ @@ -94335,24 +95223,6 @@ /obj/effect/spawner/window/reinforced/grilled, /turf/simulated/floor/plating, /area/station/turret_protected/aisat/interior/secondary) -"xjO" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable/orange{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/cable/orange{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/plasteel/white, -/area/station/science/robotics) "xjX" = ( /obj/item/radio/intercom{ pixel_y = 28; @@ -94407,6 +95277,18 @@ "xla" = ( /turf/simulated/wall/r_wall, /area/station/security/prison/cell_block/A) +"xlF" = ( +/obj/structure/window/reinforced/polarized, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/science/robotics) "xlM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/light{ @@ -94507,35 +95389,22 @@ icon_state = "neutralfull" }, /area/station/hallway/primary/port/south) -"xnZ" = ( +"xod" = ( +/obj/structure/cable/orange{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 +/turf/simulated/floor/plating{ + icon_state = "asteroidplating" }, -/obj/structure/cable/orange{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/poddoor/shutters{ - dir = 8; - id_tag = "MechbayShutters2"; - name = "Mech Bay Shutters" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door_control{ - id = "MechbayShutters2"; - name = "Mechbay Shutters"; - pixel_y = -24; - req_access_txt = "29" - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "ramptop" - }, -/area/station/science/robotics/chargebay) +/area/station/maintenance/port2) "xof" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 4 @@ -94894,6 +95763,23 @@ icon_state = "darkred" }, /area/station/security/checkpoint/secondary) +"xwy" = ( +/obj/effect/turf_decal/loading_area{ + dir = 1 + }, +/obj/structure/sign/directions/cargo{ + dir = 1; + pixel_y = 39 + }, +/obj/machinery/camera{ + c_tag = "Docking Quantum Pad"; + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkgreen" + }, +/area/station/public/quantum/docking) "xwI" = ( /turf/simulated/floor/engine{ slowdown = -0.3 @@ -94961,6 +95847,10 @@ /obj/structure/reagent_dispensers/fueltank, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/starboard) +"xxC" = ( +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/plasteel/white, +/area/station/science/robotics) "xxK" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -95277,6 +96167,9 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8 }, +/obj/machinery/light{ + dir = 8 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutralcorner" @@ -95291,15 +96184,6 @@ }, /turf/simulated/floor/plasteel/white, /area/station/science/robotics/chargebay) -"xBE" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/station/science/robotics) "xBI" = ( /obj/machinery/door/airlock/public/glass{ name = "Walkway" @@ -95531,6 +96415,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/structure/sign/cargo{ + pixel_y = -32 + }, /turf/simulated/floor/plasteel{ icon_state = "neutralcorner" }, @@ -95547,6 +96434,21 @@ icon_state = "asteroidplating" }, /area/station/maintenance/gambling_den) +"xEX" = ( +/obj/effect/spawner/random_spawners/grille_maybe, +/turf/simulated/floor/plating/asteroid/ancient, +/area/station/maintenance/asmaint) +"xFn" = ( +/obj/structure/table, +/obj/item/mmi/robotic_brain, +/obj/item/reagent_containers/glass/beaker/large, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkpurple" + }, +/area/station/science/robotics) "xFJ" = ( /obj/structure/cable/orange{ d1 = 2; @@ -95838,19 +96740,6 @@ }, /turf/space, /area/station/engineering/solar/starboard/aft) -"xJO" = ( -/obj/structure/sign/directions/security{ - dir = 1; - pixel_y = -24 - }, -/obj/structure/disposalpipe/segment{ - dir = 4; - color = "#954535" - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralcorner" - }, -/area/station/hallway/primary/fore/west) "xJW" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -95968,20 +96857,10 @@ }, /area/station/hallway/secondary/entry/north) "xMA" = ( -/obj/structure/disposalpipe/segment{ - color = "#954535" - }, -/obj/machinery/door/airlock/security/glass{ - name = "Criminal Delivery Chute" - }, -/obj/effect/mapping_helpers/airlock/access/all/security/doors, -/obj/effect/turf_decal/stripes, -/obj/effect/turf_decal/stripes/red, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "neutralcorner" + icon_state = "dark" }, -/area/station/hallway/primary/aft/west) +/area/station/public/quantum/science) "xME" = ( /obj/machinery/light{ dir = 1 @@ -96183,22 +97062,6 @@ "xQc" = ( /turf/simulated/wall/r_wall, /area/station/public/quantum/science) -"xQj" = ( -/obj/structure/table, -/obj/item/mmi/robotic_brain, -/obj/structure/cable/orange{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/item/reagent_containers/glass/beaker/large, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "darkpurple" - }, -/area/station/science/robotics) "xQl" = ( /obj/effect/landmark/start/paramedic, /turf/simulated/floor/plasteel{ @@ -96317,18 +97180,6 @@ }, /turf/simulated/floor/plating, /area/station/supply/miningdock) -"xRU" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/window/reinforced/polarized, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/station/science/robotics) "xSg" = ( /obj/effect/spawner/window/reinforced/polarized/grilled{ id = "rd" @@ -96586,7 +97437,6 @@ /area/station/security/prison/cell_block/A) "xVY" = ( /obj/structure/table/wood, -/obj/structure/table/wood, /obj/item/eftpos, /turf/simulated/floor/carpet/black, /area/station/service/chapel) @@ -96641,6 +97491,10 @@ icon_state = "purplecorner" }, /area/station/hallway/primary/aft/west) +"xWx" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/mineral/ancient, +/area/station/maintenance/port2) "xWF" = ( /obj/structure/sign/security, /turf/simulated/wall, @@ -96663,10 +97517,6 @@ icon_state = "neutralcorner" }, /area/station/hallway/primary/central/west) -"xXq" = ( -/obj/structure/closet/firecloset/full, -/turf/simulated/floor/plating, -/area/station/maintenance/asmaint) "xXt" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable{ @@ -96812,10 +97662,6 @@ }, /turf/simulated/floor/transparent/glass/reinforced, /area/station/maintenance/asmaint) -"xZM" = ( -/obj/structure/sign/security, -/turf/simulated/wall/r_wall, -/area/station/hallway/primary/aft/west) "xZN" = ( /obj/structure/cable/orange{ d1 = 1; @@ -97248,24 +98094,6 @@ icon_state = "wood-broken" }, /area/station/maintenance/asmaint) -"yhz" = ( -/obj/structure/window/reinforced/polarized, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/mecha_parts/core, -/obj/item/stock_parts/cell/high/plus, -/obj/item/stock_parts/cell/high/plus, -/obj/item/stock_parts/cell/high/plus, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/station/science/robotics) "yhA" = ( /obj/structure/cable{ d1 = 4; @@ -97431,6 +98259,13 @@ icon_state = "neutralcorner" }, /area/station/hallway/primary/fore/west) +"yjz" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/plating, +/area/station/maintenance/port2) "yjI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/engine{ @@ -114834,7 +115669,7 @@ dlq drb bWx iEe -oTv +bNX kgd bKI ugt @@ -114936,7 +115771,7 @@ gux pdh pcf wAO -fPc +rMg mqT mOX jaK @@ -115094,7 +115929,7 @@ pZt hGp nla mmY -hYD +hPy fSn mXS abE @@ -115348,11 +116183,11 @@ aEn aWl bWx iEe -oTv +cjR onY -iyj +fBT tYi -sed +bmb mXS abE rNK @@ -115446,11 +116281,11 @@ oTn dIi uXY itm -xIP -mqW -pSN -vmU -fPc +sDR +nVd +eGC +van +lyI mSq rrN tVm @@ -115604,13 +116439,13 @@ cYr xla sZf aWA -xJO -kvD -cjR -cjR -cjR -bgb -cjR +iEe +pqq +ibX +jzf +hPy +fSn +mXS abE abE lzH @@ -115703,11 +116538,11 @@ pMB xIr fEl lyI -lyI -lyI -xQc -qdq -eEI +qLe +xMA +eGC +van +rMg cSI xEd rWs @@ -115862,13 +116697,13 @@ xla aVy bWx iEe -ice -cWq -hEQ -iGj -abW -cRv -cRv +lBk +nRs +fmA +sec +sed +mXS +abE abE rNK rNK @@ -115959,12 +116794,12 @@ tPJ odt rQS iLV -vcb -vzH -srw -vbZ -saO -xMA +lyI +xIP +mqW +pSN +vmU +txf ldf kCg sEg @@ -116118,13 +116953,13 @@ hyJ aEn drB bWx -aeO -fRa -cWq -cWq -iGj -abW -abW +iEe +kvD +cjR +cjR +cjR +bgb +cjR cRv abE rNK @@ -116215,13 +117050,13 @@ rWw nfF eqH eqH -etF -pMB -cmK -hJh -vbZ -vbZ -xZM +hDx +lyI +lyI +lyI +xQc +xQc +xQc cSI xEd lxP @@ -116376,11 +117211,11 @@ xla drB bWx iEe -dxD -dxD -dxD -dxD -dxD +ice +cWq +hEQ +abW +abW abW cRv abE @@ -116472,11 +117307,11 @@ rWw rWw rWw rWw -rWw -rWw +vxP hhd -fil -fil +hhd +wXc +evm fil ksi jGC @@ -116632,12 +117467,12 @@ xla goe drB haT -iEe -iiN -dyJ -nHy -evg -emw +hGf +fRa +cWq +cWq +abW +abW abW cRv abE @@ -116728,14 +117563,14 @@ cdb cdb cdb cdb -wiE -wiE -wiE -wiE -wiE -wiE -wiE -wiE +rWw +vkl +tXE +chQ +bNZ +pMB +kJp +vkl wMV xEd lxP @@ -116890,11 +117725,11 @@ aEn drB bWx iEe -qwd -pPN -fvV -dkb -emw +dxD +dxD +dxD +dxD +dxD abW cRv cRv @@ -116985,13 +117820,13 @@ cdb cdb cdb cdb -iWe -ceb -ceB -wZF -sLH -qAH -ixR +wiE +wiE +wiE +wiE +wiE +wiE +wiE wiE ete ciB @@ -117147,11 +117982,11 @@ xla drG bWx iEe -keF -rHk -ujb -etG -lKg +iiN +dyJ +nHy +evg +emw abW abW cRv @@ -117243,13 +118078,13 @@ cdb cdb cdb iWe -aHN -kDJ -xAR -wGS -kMq -qbf -uTv +ceb +ceB +wZF +sLH +qAH +ixR +wiE grQ xEd jEr @@ -117403,12 +118238,12 @@ xla xla drG dMP -lyC -dxD -oac -iGG -etG -aan +iEe +qwd +pPN +fvV +dkb +emw abW abW cRv @@ -117500,16 +118335,16 @@ cdb cdb cdb iWe -eTg -fxp -xBB -ksg -fxp -qni -nDp +aHN +kDJ +xAR +wGS +kMq +qbf +uTv xWu xEd -jEr +ifz uMr xOL frh @@ -117659,13 +118494,13 @@ tkd dfi peB oms -qHk -wDC -jUP -kTq -rzy -sIe -awL +bWx +iEe +keF +rHk +ujb +etG +lKg abW abW cRv @@ -117690,7 +118525,7 @@ vkc bQh eMW bRg -cFF +lPe pSW ktf uzy @@ -117753,18 +118588,18 @@ cdb cdb cdb cdb -rWw -rWw -rWw -wiE -jCg -pDK -pEb -lqw -kTN -piu -wiE -dHU +cdb +cdb +cdb +iWe +eTg +fxp +xBB +ksg +fxp +qni +nDp +wMV xEd qTc jRs @@ -117914,15 +118749,15 @@ cLF cNR cTp dfF -ebB +fMx drL dNw xKD dxD -sOx -qHH -bPO -dxG +iQr +iGG +etG +aan abW cRv cRv @@ -117947,7 +118782,7 @@ xru xru cFF cFF -cFF +lPe cFF uvv cFF @@ -118011,16 +118846,16 @@ cdb cdb rWw rWw -ccW -ccW +rWw +rWw wiE +wnO +hxR +fna +lqw +kTN +piu wiE -jUA -xnZ -wiE -wiE -wiE -tIt iqk xEd dnS @@ -118172,14 +119007,14 @@ cOh utC dgx xla -dsd -bWx -iEe -jmh -dxD -dxD -dxD -dxD +orp +qHk +wDC +iTt +nLs +rzy +sIe +awL abW cRv abE @@ -118192,19 +119027,19 @@ aXn aXn aXn aXn -cEM +aXn siY gtD nIF kWu -jsY -nOx +nJA +cFF xru xru xru cFF cFF -cFF +lPe cFF cFF cFF @@ -118270,14 +119105,14 @@ rWw ccW ccW ccW -vFW -iHA -uQE -jWb -fAm -sYa -mNc -fZs +wiE +wiE +hFh +lEW +wiE +wiE +wiE +wiE ovQ jTe dEz @@ -118428,15 +119263,15 @@ ncQ cOh utC dgF -aWX -wAb +jCx +wij bWx tyT -iGj -abW -abW -abW -abW +dxD +sOx +qHH +bPO +dxG cRv cRv abE @@ -118449,21 +119284,21 @@ aXn aXn aXn aXn -cEM -cEM -rDY +aXn +aXn +lPg igo kWu -kWu -kWu -kWu -tYu -kWu +lWR +uuF +qCo +cFF +afe xho -nJA -gEb -nJA -nJA +cFF +lPe +cFF +cFF llQ chH pow @@ -118528,13 +119363,13 @@ ccW ccW ccW vFW -iuX -jWP -xjO -eCT -xQj -fTG -oQD +nzH +oEl +suZ +kYN +gGE +pLU +uOP dWM idI xOc @@ -118689,11 +119524,11 @@ xla dsi dNN jeS -iGj -abW -abW -abW -abW +jmh +dxD +dxD +dxD +dxD cRv abE abE @@ -118707,20 +119542,20 @@ aXn aXn aXn aXn -cEM +hcI nDE -lPg -iKs -kUN -fSm -gaZ -ncn -kWu +tHQ kWu kWu kWu kWu +tYu kWu +wse +ePI +lEh +ePI +wse kWu kWu kWu @@ -118784,14 +119619,14 @@ ccW ccW ccW ccW -jJc -sOt -oUw -nNO -qWS -heU -wOH -alw +vFW +jIO +xxC +nOM +tiG +xFn +oJz +jRs vBs xEd jEr @@ -118963,24 +119798,24 @@ aXn aXn aXn aXn -aXn -cEM mTc wkS -ncn -ncn -ncn +nIF +xod +cLo +qxQ +lHU oAw -mqw -mqw -mqw +ncn +cEM +wse uKU fru +sBQ +wse ghr -nEk -ghr -nEk -nNm +dQZ +dQZ spx aZF boJ @@ -119042,17 +119877,17 @@ ccW ccW ccW jJc -lRI -wbe -vHF +sOt +oUw +eDf qWS -wUo -ifg -jRs +heU +wOH +alw xWu xEd jEr -cGd +dOm wIq uMr wIq @@ -119220,23 +120055,23 @@ aXn aXn aXn aXn -aXn -aXn -cEM -cEM -cEM -aZF -aYC -ncn -oUg -ncn -ncn +mTc nIF -otN -dQZ -qxQ -qxQ -ghP +nIF +xdr +cEM +cEM +ieP +hoF +xWx +xWx +wse +lfG +bGP +awA +wse +hzj +qZm vyk wIm nOU @@ -119299,16 +120134,16 @@ ccW ccW ccW jJc -utp -wpR -gZF -drC -puk -npb -npb -aZQ -teH -pvV +lRI +wbe +hML +qWS +wUo +ifg +jRs +xWu +xEd +jEr cGd uxn nWA @@ -119477,23 +120312,23 @@ aXn aXn aXn aXn -aXn -aXn -aXn -aXn -aXn -cEM -cEM -cEM aZF +lPR +nIF +xdr cEM -cEM -cEM -lMj -aZF -aZF -aZF -gsS +jRW +qzg +mxh +spx +tCo +wse +aoh +bGP +ktA +wse +pFj +tEJ bBI ssq wxX @@ -119556,17 +120391,17 @@ ccW ccW ccW jJc -uRn -wuC -xBE -uCo -fXR -nTV -epr -rll -uuV -gPL -dOm +utp +wpR +wtx +drC +puk +npb +npb +aZQ +teH +pvV +cGd lmA kMZ giH @@ -119735,25 +120570,25 @@ aXn aXn aXn aXn -aXn -aXn -aXn -aXn -aXn -aXn -aXn -aXn -aXn -aXn +ncn +nIF +xdr cEM -mXA +oTz fNZ -kzd -rlX +wbd +iQb dOJ +wse +tTm +mXA +wac +wse +kmY +dQZ pQE ssE -cSR +aZF hfx hRg dmT @@ -119813,16 +120648,16 @@ ccW ccW ccW jJc -vgV +uRn +wuC +aZU uCo -xRU -xNF -jhA -shk -npb -cia -ciG -gPL +fXR +nTV +epr +bXp +uuV +iOG dXV sOr clY @@ -119990,24 +120825,24 @@ hUU hUU hUU hUU -hUU -hUU -aXn -aXn -aXn -aXn -aXn -aXn -aXn aXn aXn aXn +nIF +xdr cEM -cxI -qzg -qHd -rma -rHM +lMj +aZF +aZF +aZF +gsS +wse +wse +wse +wse +wse +kmY +qxQ rQk iwA cSR @@ -120070,13 +120905,13 @@ ccW ccW ccW jJc -vtz +vgV uCo -yhz -uCo -uCo -rAM -hVS +xlF +xNF +jhA +shk +npb lnY mBQ suu @@ -120246,25 +121081,25 @@ rNK rNK hUU lzH -lzH -lwN hUU hUU hUU hUU -hUU -hUU -aXn -aXn -aXn -aXn -aXn -cEM -cEM -cEM -cEM +ncn +vZz +reB +kZd +qRD +aXF +qxQ +otN +qxQ cEM cEM +qxQ +nIF +xdr +qxQ aZF cPN yiS @@ -120327,12 +121162,12 @@ ccW ccW ccW jJc -vwo -wRa -nhi -jkk -ouB -sLj +vtz +uCo +bty +uCo +uCo +rAM hVS cia ciG @@ -120503,25 +121338,25 @@ rNK rNK rNK rNK -rNK -aVN -rNK -rNK -rNK -rNK +lzH +mic rNK hUU -aXn -aXn -aXn -aXn -aXn -hUU -hUU -hUU -hUU -hUU hUU +vzP +huq +huq +nEk +nEk +nEk +lHz +jDV +vyk +kUN +kUN +kUN +fbf +aZF aZF cPN yiS @@ -120584,12 +121419,12 @@ ccW ccW ccW jJc -vxS -fyR -tXf -phx -jkh -kMa +vwo +wRa +mml +jkk +ouB +sLj hVS cia sWc @@ -120760,25 +121595,25 @@ rNK rNK rNK rNK +rNK aVN rNK rNK -rNK -rNK -rNK -rNK -hUU hUU aXn aXn +hUU +hUU +qxQ +qxQ +dYK +dQZ +yjz +qxQ +nIF aXn hUU hUU -hUU -hUU -bhO -bhO -bhO qKh cPN dcw @@ -120840,14 +121675,14 @@ rWw ccW ccW ccW -qeq -qeq -qeq -qeq -qeq -qeq -qeq -npb +jJc +vxS +fyR +tXf +phx +jkh +kMa +hVS cia ciG vlI @@ -121017,24 +121852,24 @@ rNK rNK rNK rNK +aVN rNK rNK rNK -rNK -rNK -rNK -rNK +hUU +hUU +hUU mic hUU hUU aXn +aXn +hUU +aZF hUU hUU -rNK -rNK -bhO mic -rNK +hUU rNK euP cPN @@ -121097,14 +121932,14 @@ rWw ccW ccW ccW -ccW -ccW -ccW -ccW -ccW -ccW -ccW -izC +qeq +qeq +qeq +qeq +qeq +qeq +qeq +npb chX ciG gPL @@ -121287,8 +122122,8 @@ hUU hUU hUU hUU -rNK -rNK +hUU +hUU rNK lzH rNK @@ -121359,9 +122194,9 @@ ccW ccW ccW ccW -ccW -ccW -izC +dXV +dXV +dXV chY ciG fIE @@ -121616,12 +122451,12 @@ ccW ccW ccW ccW -ccW -ccW -fpn -cia -ciG -pRd +dXV +iky +dtv +uIC +gIk +lQy pQN sKh nta @@ -121873,9 +122708,9 @@ ccW ccW ccW ccW -ccW -ccW -fpn +dXV +dXV +kJM nxX irU sOk @@ -122132,7 +122967,7 @@ ccW ccW ccW ccW -izC +fpn cib upM pRd @@ -122389,8 +123224,8 @@ ful ful ccW ccW -izC -vaS +fpn +cia ciG gPL dXD @@ -122647,7 +123482,7 @@ ful ful ful ful -cia +rsu ciG gPL nwv @@ -140818,11 +141653,11 @@ rNK rNK fMl aZM -aZM -aZM -aZM -aZM -aZM +gtw +gtw +gtw +gtw +gtw fMl lzH oyN @@ -141075,11 +141910,11 @@ rNK fMl fMl aZM -aZM -aZM -aZM -aZM -aZM +gtw +rsx +fva +llW +gtw fMl vXn scE @@ -141332,12 +142167,12 @@ fMl fMl aZM aZM -aZM -aZM -aZM -aZM -aZM -aZM +gtw +gVR +arE +hMB +gtw +fMl wQz kNz qUu @@ -141589,12 +142424,12 @@ fMl aZM aZM aZM -aZM -aZM -aZM -aZM -aZM -aZM +gtw +mYs +kBs +sqX +gtw +fMl vXn scG enD @@ -141846,12 +142681,12 @@ fMl aZM aZM aZM -aZM -tnq -tnq -tnq -aZM -aZM +gtw +aqR +kmd +oqR +gtw +fMl nVQ sXL stK @@ -142103,11 +142938,11 @@ aZM aZM aZM aZM -tnq -tnq +gtw +lkz uUU -tnq -tnq +lkz +gtw nVQ nVQ sdo @@ -142360,15 +143195,15 @@ aZM aZM aZM aZM -tnq +eAu pHb -qiV +pqr qiV qIC rmL rLb sdy -eWl +bff kDq sUA tFb @@ -142412,7 +143247,7 @@ xwI xwI fYG cWU -cWU +qnI wkP aXr mBh @@ -142436,7 +143271,7 @@ wlD vLS kUL qQb -kYz +aOR kYz rYf jdC @@ -142928,19 +143763,19 @@ xoU lrx lrx lrx -cIJ +lrx qCD lrx oBG dSV cEi -dxM +jnH kis -cvq -dxM -dxM dxM dxM +fIL +khH +khH cvq dxM cJW @@ -143194,10 +144029,10 @@ lmF wPr aXn vpJ -vpJ -vpJ cGc vpJ +neh +nvX vpJ vpJ vpJ @@ -143453,9 +144288,9 @@ aXn aXn aXn vpJ +omG +omG vpJ -xdy -xdy wJY moj euL @@ -143466,7 +144301,7 @@ cfh eJd rrt hNb -pLr +wMQ wxE djw sla @@ -143609,11 +144444,11 @@ lCC lCC lCC lCC -lzH -rNK -rNK -rzh -rzh +cHq +uqC +uqC +uqC +cHq dnA aAs lBG @@ -143710,10 +144545,10 @@ aXn aXn aXn wLr -xXq +vpJ sCn -mJk -mJk +vpJ +vRX rao mLO nrP @@ -143865,14 +144700,14 @@ frm frm alc alc -lCC -lCC -rzh -rzh -rzh -rzh +alc cHq -qQX +cMS +vQf +cWX +dkG +lIf +lxo fmI dmX aRx @@ -143968,19 +144803,19 @@ aXn aXn vpJ dJb -cdG -imG -vRX vRX +rJv +mJk +mLO vWF vpJ vWF pus vqp -kzS +nlJ tJP kQz -pLr +nFW daX djw fEC @@ -144122,14 +144957,14 @@ fri dEn alc alc -lCC -cHq -uqC -uqC -uqC -cHq +alc +rxd +eAQ kaS -woL +nxZ +uvN +lfs +lxo fmI vBk aRx @@ -144225,19 +145060,19 @@ aXn aXn wLr ogk -cdG -imG +rIn +qhD vWF vWF vWF vWF vWF nFW -nFW -nFW -nFW -nFW -nFW +pPj +noC +vcD +cLc +wMQ ckr ckW lXp @@ -144380,11 +145215,11 @@ qzy frm alc alc -cHq -cMS -vQf -cWX -dkG +rxd +qIX +ego +ipI +uvN cMQ lxo fmI @@ -144489,13 +145324,13 @@ vWF vWF vWF vWF -vWF -vWF -vWF -vpJ -omG -noC -aEv +fOb +kbj +xwy +hdX +cKU +vpQ +daX djw xRa xMQ @@ -144744,14 +145579,14 @@ vWF vWF vWF vWF -vRX -gpR cfH -vWF -vWF -vpJ -omG -neh +gpR +fOb +fOb +fOb +nFW +nFW +nFW mjG djw jUc @@ -144899,7 +145734,7 @@ cNa feN cXa dkK -cMQ +lfs lxo fmI bDQ @@ -145006,8 +145841,8 @@ mJk mJk mJk cdj -vpJ -vpJ +vRX +xEX vpJ dkc djw diff --git a/_maps/map_files/stations/deltastation.dmm b/_maps/map_files/stations/deltastation.dmm index 548b6ba2425..e890932b2be 100644 --- a/_maps/map_files/stations/deltastation.dmm +++ b/_maps/map_files/stations/deltastation.dmm @@ -18926,6 +18926,7 @@ "bgB" = ( /obj/effect/turf_decal/delivery/hollow, /obj/structure/table, +/obj/item/reagent_containers/condiment/enzyme, /turf/simulated/floor/plasteel{ icon_state = "redfull" }, @@ -19247,6 +19248,13 @@ /area/station/hallway/primary/fore/south) "bhH" = ( /obj/machinery/smartfridge, +/obj/effect/mapping_helpers/airlock/windoor/access/all/service/hydroponics{ + dir = 8 + }, +/obj/machinery/door/window/reinforced/reversed{ + dir = 8; + name = "kitchen ingredient storage" + }, /turf/simulated/floor/plasteel, /area/station/service/kitchen) "bhI" = ( @@ -19325,6 +19333,7 @@ "bhR" = ( /obj/effect/turf_decal/delivery/hollow, /obj/structure/table, +/obj/item/food/snacks/mint, /turf/simulated/floor/plasteel{ icon_state = "white" }, @@ -20748,8 +20757,6 @@ /turf/simulated/floor/plasteel, /area/station/service/kitchen) "blk" = ( -/obj/item/food/snacks/mint, -/obj/item/reagent_containers/condiment/enzyme, /obj/machinery/reagentgrinder, /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plasteel, diff --git a/_maps/map_files/stations/metastation.dmm b/_maps/map_files/stations/metastation.dmm index 1d78a0d6871..e45238c442c 100644 --- a/_maps/map_files/stations/metastation.dmm +++ b/_maps/map_files/stations/metastation.dmm @@ -8313,7 +8313,7 @@ dir = 4 }, /obj/machinery/camera{ - c_tag = "Cargo - Quatermaster"; + c_tag = "Cargo - Quartermaster"; dir = 1 }, /turf/simulated/floor/plasteel{ @@ -83619,7 +83619,6 @@ /area/station/public/fitness) "tHm" = ( /obj/structure/table/reinforced, -/obj/structure/table/reinforced, /obj/item/gavelblock, /obj/item/gavelhammer, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -92078,7 +92077,6 @@ /area/station/hallway/secondary/exit) "xtZ" = ( /obj/structure/table, -/obj/structure/table, /obj/item/wrench, /obj/item/crowbar, /obj/item/radio/intercom{ diff --git a/code/__DEFINES/antag_defines.dm b/code/__DEFINES/antag_defines.dm index 7b88e983ac2..fe136abd200 100644 --- a/code/__DEFINES/antag_defines.dm +++ b/code/__DEFINES/antag_defines.dm @@ -61,3 +61,10 @@ GLOBAL_LIST(contractors) * Pulse Demon */ #define PULSEDEMON_SOURCE_DRAIN_INVALID (-1) + +/proc/ischangeling(mob/M) // TODO: Someone please convert these to proper defines some day. + return M.mind?.has_antag_datum(/datum/antagonist/changeling) + +// Helper proc that determines if a mob is a mindslave. +/proc/ismindslave(mob/living/carbon/human/H) + return istype(H) && H.mind.has_antag_datum(/datum/antagonist/mindslave, FALSE) diff --git a/code/__DEFINES/misc_defines.dm b/code/__DEFINES/misc_defines.dm index e096e8eada9..c1ab48c1f79 100644 --- a/code/__DEFINES/misc_defines.dm +++ b/code/__DEFINES/misc_defines.dm @@ -52,6 +52,9 @@ #define PRINTER_FONT "Times New Roman" #define SIGNFONT "Times New Roman" +/// Emoji icon set +#define EMOJI_SET 'icons/ui_icons/emoji.dmi' + //some arbitrary defines to be used by self-pruning global lists. (see master_controller) #define PROCESS_KILL 26 //Used to trigger removal from a processing list @@ -692,3 +695,6 @@ do { \ #define TEAM_ADMIN_ADD_OBJ_SUCCESS (1<<0) #define TEAM_ADMIN_ADD_OBJ_CANCEL_LOG (1<<1) #define TEAM_ADMIN_ADD_OBJ_PURPOSEFUL_CANCEL (1<<2) + +/// A helper used by `restrict_file_types.py` to identify types to restrict in a file. Not used by byond at all. +#define RESTRICT_TYPE(type) // do nothing diff --git a/code/__DEFINES/radio_defines.dm b/code/__DEFINES/radio_defines.dm index 386b64ad749..bfe3f26259b 100644 --- a/code/__DEFINES/radio_defines.dm +++ b/code/__DEFINES/radio_defines.dm @@ -41,7 +41,7 @@ #define TRANSMISSION_WIRE 0 #define TRANSMISSION_RADIO 1 -//This filter is special because devices belonging to default also recieve signals sent to any other filter. +//This filter is special because devices belonging to default also receive signals sent to any other filter. #define RADIO_DEFAULT "radio_default" #define RADIO_TO_AIRALARM "radio_airalarm" //air alarms #define RADIO_FROM_AIRALARM "radio_airalarm_rcvr" //devices interested in recieving signals from air alarms diff --git a/code/__HELPERS/colour_helpers.dm b/code/__HELPERS/colour_helpers.dm index b9853409725..2c8668fd400 100644 --- a/code/__HELPERS/colour_helpers.dm +++ b/code/__HELPERS/colour_helpers.dm @@ -3,9 +3,9 @@ var/list/RGB2 = rgb2num(rgb2) // add missing alpha if needed - if(RGB1.len < RGB2.len) RGB1 += 255 - else if(RGB2.len < RGB1.len) RGB2 += 255 - var/usealpha = RGB1.len > 3 + if(length(RGB1) < length(RGB2)) RGB1 += 255 + else if(length(RGB2) < length(RGB1)) RGB2 += 255 + var/usealpha = length(RGB1) > 3 var/r = round(RGB1[1] + (RGB2[1] - RGB1[1]) * amount, 1) var/g = round(RGB1[2] + (RGB2[2] - RGB1[2]) * amount, 1) diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 1bba4042d0c..c30ca477cae 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -314,7 +314,7 @@ var/roletext = get_roletext(be_special_type) var/list/candidates = list() // Keep looping until we find a non-afk candidate within the time bracket (we limit the bracket to 10 minutes (6000)) - while(!candidates.len && afk_bracket < 6000) + while(!length(candidates) && afk_bracket < 6000) for(var/mob/dead/observer/G in GLOB.player_list) if(G.client != null) if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD)) @@ -330,7 +330,7 @@ var/roletext = get_roletext(be_special_type) var/list/candidates = list() // Keep looping until we find a non-afk candidate within the time bracket (we limit the bracket to 10 minutes (6000)) - while(!candidates.len && afk_bracket < 6000) + while(!length(candidates) && afk_bracket < 6000) for(var/mob/dead/observer/G in GLOB.player_list) if(G.client != null) if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD)) @@ -362,7 +362,7 @@ /proc/get_active_player_count() // Get active players who are playing in the round var/active_players = 0 - for(var/i = 1; i <= GLOB.player_list.len; i++) + for(var/i = 1; i <= length(GLOB.player_list); i++) var/mob/M = GLOB.player_list[i] if(M && M.client) if(isnewplayer(M)) // exclude people in the lobby @@ -447,7 +447,7 @@ /proc/pollCandidatesWithVeto(adminclient, adminusr, max_slots, Question, be_special_type, antag_age_check = FALSE, poll_time = 300, ignore_respawnability = FALSE, min_hours = FALSE, flashwindow = TRUE, check_antaghud = TRUE, source, role_cleanname) var/list/willing_ghosts = SSghost_spawns.poll_candidates(Question, be_special_type, antag_age_check, poll_time, ignore_respawnability, min_hours, flashwindow, check_antaghud, source, role_cleanname) var/list/selected_ghosts = list() - if(!willing_ghosts.len) + if(!length(willing_ghosts)) return selected_ghosts var/list/candidate_ghosts = willing_ghosts.Copy() @@ -459,7 +459,7 @@ else candidate_ghosts -= G - for(var/i = max_slots, (i > 0 && candidate_ghosts.len), i--) + for(var/i = max_slots, (i > 0 && length(candidate_ghosts)), i--) var/this_ghost = input("Pick players. This will go on until there either no more ghosts to pick from or the [i] remaining slot(s) are full.", "Candidates") as null|anything in candidate_ghosts candidate_ghosts -= this_ghost selected_ghosts += this_ghost diff --git a/code/__HELPERS/heap.dm b/code/__HELPERS/heap.dm index c9ad037755f..3d827dda0cf 100644 --- a/code/__HELPERS/heap.dm +++ b/code/__HELPERS/heap.dm @@ -12,23 +12,23 @@ cmp = compare /datum/heap/proc/IsEmpty() - return !L.len + return !length(L) //Insert and place at its position a new node in the heap /datum/heap/proc/Insert(atom/A) L.Add(A) - Swim(L.len) + Swim(length(L)) //removes and returns the first element of the heap //(i.e the max or the min dependant on the comparison function) /datum/heap/proc/Pop() - if(!L.len) + if(!length(L)) return null . = L[1] - L[1] = L[L.len] - L.Cut(L.len) + L[1] = L[length(L)] + L.Cut(length(L)) Sink(1) @@ -53,10 +53,10 @@ //Returns the greater (relative to the comparison proc) of a node children //or 0 if there's no child /datum/heap/proc/GetGreaterChild(index) - if(index * 2 > L.len) + if(index * 2 > length(L)) return 0 - if(index * 2 + 1 > L.len) + if(index * 2 + 1 > length(L)) return index * 2 if(call(cmp)(L[index * 2], L[index * 2 + 1]) < 0) diff --git a/code/__HELPERS/icon_helpers.dm b/code/__HELPERS/icon_helpers.dm index da7a0cfb9be..f51269e72b1 100644 --- a/code/__HELPERS/icon_helpers.dm +++ b/code/__HELPERS/icon_helpers.dm @@ -86,7 +86,7 @@ var/curblend = A.blend_mode || defblend - if(A.overlays.len || A.underlays.len) + if(length(A.overlays) || length(A.underlays)) var/icon/flat = BLANK // Layers will be a sorted list of icons/overlays, based on the order in which they are displayed var/list/layers = list() @@ -102,7 +102,7 @@ // Loop through the underlays, then overlays, sorting them into the layers list for(var/process_set in 0 to 1) var/list/process = process_set? A.overlays : A.underlays - for(var/i in 1 to process.len) + for(var/i in 1 to length(process)) var/image/current = process[i] if(!current) continue @@ -114,7 +114,7 @@ return flat current_layer = process_set + A.layer + current_layer / 1000 - for(var/p in 1 to layers.len) + for(var/p in 1 to length(layers)) var/image/cmp = layers[p] if(current_layer < layers[cmp]) layers.Insert(p, current) diff --git a/code/__HELPERS/icon_smoothing.dm b/code/__HELPERS/icon_smoothing.dm index 025be39f3b4..affda69950a 100644 --- a/code/__HELPERS/icon_smoothing.dm +++ b/code/__HELPERS/icon_smoothing.dm @@ -266,7 +266,7 @@ DEFINE_BITFIELD(smoothing_junction, list( A.bottom_left_corner = se new_overlays += se - if(new_overlays.len) + if(length(new_overlays)) A.add_overlay(new_overlays) ///Scans direction to find targets to smooth with. diff --git a/code/__HELPERS/lists.dm b/code/__HELPERS/lists.dm index 7a90a0543e5..cd6d5d8820b 100644 --- a/code/__HELPERS/lists.dm +++ b/code/__HELPERS/lists.dm @@ -101,9 +101,9 @@ //Returns list element or null. Should prevent "index out of bounds" error. /proc/listgetindex(list/list, index) - if(istype(list) && list.len) + if(istype(list) && length(list)) if(isnum(index)) - if(InRange(index,1,list.len)) + if(InRange(index,1,length(list))) return list[index] else if(index in list) return list[index] @@ -111,13 +111,13 @@ //Return either pick(list) or null if list is not of type /list or is empty /proc/safepick(list/list) - if(!islist(list) || !list.len) + if(!islist(list) || !length(list)) return return pick(list) //Checks if the list is empty /proc/isemptylist(list/list) - if(!list.len) + if(!length(list)) return 1 return 0 @@ -132,7 +132,7 @@ //Checks for specific types in specifically structured (Assoc "type" = TRUE) lists ('typecaches') /proc/is_type_in_typecache(atom/A, list/L) - if(!L || !L.len || !A) + if(!L || !length(L) || !A) return 0 return L[A.type] @@ -250,7 +250,7 @@ //Pick a random element from the list and remove it from the list. /proc/pick_n_take(list/listfrom) - if(listfrom.len > 0) + if(length(listfrom) > 0) var/picked = pick(listfrom) listfrom -= picked return picked @@ -275,12 +275,12 @@ //Returns the top(last) element from the list and removes it from the list (typical stack function) /proc/pop(list/L) - if(L.len) - . = L[L.len] + if(length(L)) + . = L[length(L)] L.len-- /proc/popleft(list/L) - if(L.len) + if(length(L)) . = L[1] L.Cut(1,2) @@ -293,7 +293,7 @@ /proc/reverselist(list/L) var/list/output = list() if(L) - for(var/i = L.len; i >= 1; i--) + for(var/i = length(L); i >= 1; i--) output += L[i] return output @@ -303,8 +303,8 @@ return L = L.Copy() - for(var/i=1, i sorted_text.len) + if(insert_index > length(sorted_text)) sorted_text += current_sort_text continue @@ -673,13 +673,13 @@ #define LAZYINITLIST(L) if(!L) { L = list() } -#define UNSETEMPTY(L) if(L && !L.len) L = null -#define LAZYREMOVE(L, I) if(L) { L -= I; if(!L.len) { L = null; } } +#define UNSETEMPTY(L) if(L && !length(L)) L = null +#define LAZYREMOVE(L, I) if(L) { L -= I; if(!length(L)) { L = null; } } #define LAZYADD(L, I) if(!L) { L = list(); } L += I; #define LAZYOR(L, I) if(!L) { L = list(); } L |= I; /// Adds I to L, initializing L if necessary, if I is not already in L #define LAZYDISTINCTADD(L, I) if(!L) { L = list(); } L |= I; -#define LAZYACCESS(L, I) (L ? (isnum(I) ? (I > 0 && I <= L.len ? L[I] : null) : L[I]) : null) +#define LAZYACCESS(L, I) (L ? (isnum(I) ? (I > 0 && I <= length(L) ? L[I] : null) : L[I]) : null) #define LAZYLEN(L) length(L) // Despite how pointless this looks, it's still needed in order to convey that the list is specificially a 'Lazy' list. #define LAZYCLEARLIST(L) if(L) L.Cut() @@ -707,8 +707,8 @@ if(!L) return - for(var/i=1, i= 2) - fromIndex = fromIndex % L.len - toIndex = toIndex % (L.len + 1) + if(length(L) >= 2) + fromIndex = fromIndex % length(L) + toIndex = toIndex % (length(L) + 1) if(fromIndex <= 0) - fromIndex += L.len + fromIndex += length(L) if(toIndex <= 0) - toIndex += L.len + 1 + toIndex += length(L) + 1 var/datum/sortInstance/SI = GLOB.sortInstance if(!SI) diff --git a/code/__HELPERS/sorts/MergeSort.dm b/code/__HELPERS/sorts/MergeSort.dm index b6072842b68..0ce79909b5c 100644 --- a/code/__HELPERS/sorts/MergeSort.dm +++ b/code/__HELPERS/sorts/MergeSort.dm @@ -1,12 +1,12 @@ //merge-sort - gernerally faster than insert sort, for runs of 7 or larger /proc/sortMerge(list/L, cmp = GLOBAL_PROC_REF(cmp_numeric_asc), associative, fromIndex = 1, toIndex) - if(L && L.len >= 2) - fromIndex = fromIndex % L.len - toIndex = toIndex % (L.len + 1) + if(L && length(L) >= 2) + fromIndex = fromIndex % length(L) + toIndex = toIndex % (length(L) + 1) if(fromIndex <= 0) - fromIndex += L.len + fromIndex += length(L) if(toIndex <= 0) - toIndex += L.len + 1 + toIndex += length(L) + 1 var/datum/sortInstance/SI = GLOB.sortInstance if(!SI) diff --git a/code/__HELPERS/sorts/TimSort.dm b/code/__HELPERS/sorts/TimSort.dm index f71cb05b066..faf3e74aa7d 100644 --- a/code/__HELPERS/sorts/TimSort.dm +++ b/code/__HELPERS/sorts/TimSort.dm @@ -1,12 +1,12 @@ //TimSort interface /proc/sortTim(list/L, cmp = GLOBAL_PROC_REF(cmp_numeric_asc), associative, fromIndex = 1, toIndex = 0) - if(L && L.len >= 2) - fromIndex = fromIndex % L.len - toIndex = toIndex % (L.len + 1) + if(L && length(L) >= 2) + fromIndex = fromIndex % length(L) + toIndex = toIndex % (length(L) + 1) if(fromIndex <= 0) - fromIndex += L.len + fromIndex += length(L) if(toIndex <= 0) - toIndex += L.len + 1 + toIndex += length(L) + 1 var/datum/sortInstance/SI = GLOB.sortInstance if(!SI) diff --git a/code/__HELPERS/sorts/__main.dm b/code/__HELPERS/sorts/__main.dm index b5368330d59..6da4fc6e878 100644 --- a/code/__HELPERS/sorts/__main.dm +++ b/code/__HELPERS/sorts/__main.dm @@ -75,7 +75,7 @@ GLOBAL_DATUM_INIT(sortInstance, /datum/sortInstance, new()) //Merge all remaining runs to complete sort //ASSERT(start == end) mergeForceCollapse(); - //ASSERT(runBases.len == 1) + //ASSERT(length(runBases) == 1) //reset minGallop, for successive calls minGallop = MIN_GALLOP @@ -177,8 +177,8 @@ reverse a descending sequence without violating stability. //This method is called each time a new run is pushed onto the stack. //So the invariants are guaranteed to hold for i= 2) - var/n = runBases.len - 1 + while(length(runBases) >= 2) + var/n = length(runBases) - 1 if(n > 1 && runLens[n - 1] <= runLens[n] + runLens[n + 1]) if(runLens[n - 1] < runLens[n + 1]) --n @@ -192,8 +192,8 @@ reverse a descending sequence without violating stability. //Merges all runs on the stack until only one remains. //Called only once, to finalise the sort /datum/sortInstance/proc/mergeForceCollapse() - while(runBases.len >= 2) - var/n = runBases.len - 1 + while(length(runBases) >= 2) + var/n = length(runBases) - 1 if(n > 1 && runLens[n - 1] < runLens[n + 1]) --n mergeAt(n) @@ -203,9 +203,9 @@ reverse a descending sequence without violating stability. //Run i must be the penultimate or antepenultimate run on the stack //In other words, i must be equal to stackSize-2 or stackSize-3 /datum/sortInstance/proc/mergeAt(i) - //ASSERT(runBases.len >= 2) + //ASSERT(length(runBases) >= 2) //ASSERT(i >= 1) - //ASSERT(i == runBases.len - 1 || i == runBases.len - 2) + //ASSERT(i == length(runBases) - 1 || i == length(runBases) - 2) var/base1 = runBases[i] var/base2 = runBases[i + 1] @@ -590,8 +590,8 @@ reverse a descending sequence without violating stability. while(remaining > 0) - while(runBases.len >= 2) - var/n = runBases.len - 1 + while(length(runBases) >= 2) + var/n = length(runBases) - 1 if(n > 1 && runLens[n - 1] <= runLens[n] + runLens[n + 1]) if(runLens[n - 1] < runLens[n + 1]) --n @@ -601,8 +601,8 @@ reverse a descending sequence without violating stability. else break //Invariant is established - while(runBases.len >= 2) - var/n = runBases.len - 1 + while(length(runBases) >= 2) + var/n = length(runBases) - 1 if(n > 1 && runLens[n - 1] < runLens[n + 1]) --n mergeAt2(n) diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index 9f8eb3e977f..1b20fdc1a89 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -553,9 +553,9 @@ if(tag == "img") var/list/img_props = splittext(arg, ";") - if(img_props.len == 3) + if(length(img_props) == 3) return "" - if(img_props.len == 2) + if(length(img_props) == 2) return "" return "" diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index b0aee0b08a4..f118fab395f 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -313,7 +313,7 @@ if(entry == null) return null matrix_list += entry - if(matrix_list.len < 6) + if(length(matrix_list) < 6) return null var/a = matrix_list[1] var/b = matrix_list[2] diff --git a/code/_onclick/drag_drop.dm b/code/_onclick/drag_drop.dm index 420e9d4d9fa..84f87e5bfd5 100644 --- a/code/_onclick/drag_drop.dm +++ b/code/_onclick/drag_drop.dm @@ -40,7 +40,7 @@ FALSE if not usr.ClickOn(src, params) // if not, we click object /* -recieve a mousedrop +receive a mousedrop called on object which was under the object you dragged and dropped return TRUE if you want to prevent us click the object actually if you do something in that proc like changing user location or whatever, you expected to return TRUE diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index 6cf0868dd45..8af3de91da0 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -776,10 +776,10 @@ so as to remain in compliance with the most up-to-date laws." return FALSE var/icon_pref if(!hud_shown) - for(var/i in 1 to alerts.len) + for(var/i in 1 to length(alerts)) mymob.client.screen -= alerts[alerts[i]] return TRUE - for(var/i in 1 to alerts.len) + for(var/i in 1 to length(alerts)) var/atom/movable/screen/alert/alert = alerts[alerts[i]] if(alert.icon_state == "template") if(!icon_pref) diff --git a/code/_onclick/hud/hud_datum.dm b/code/_onclick/hud/hud_datum.dm index 6ac4cce04b8..804e0c0f90f 100644 --- a/code/_onclick/hud/hud_datum.dm +++ b/code/_onclick/hud/hud_datum.dm @@ -252,3 +252,7 @@ /datum/hud/proc/update_locked_slots() return + +/datum/hud/proc/remove_vampire_hud() + static_inventory -= vampire_blood_display + QDEL_NULL(vampire_blood_display) diff --git a/code/_onclick/hud/radial.dm b/code/_onclick/hud/radial.dm index e52f6476ceb..501de75891e 100644 --- a/code/_onclick/hud/radial.dm +++ b/code/_onclick/hud/radial.dm @@ -90,9 +90,9 @@ GLOBAL_LIST_EMPTY(radial_menus) zone = 360 - starting_angle + ending_angle max_elements = round(zone / min_angle) - var/paged = max_elements < choices.len - if(elements.len < max_elements) - var/elements_to_add = max_elements - elements.len + var/paged = max_elements < length(choices) + if(length(elements) < max_elements) + var/elements_to_add = max_elements - length(elements) for(var/i in 1 to elements_to_add) //Create all elements var/atom/movable/screen/radial/new_element = new /atom/movable/screen/radial/slice new_element.parent = src @@ -102,18 +102,18 @@ GLOBAL_LIST_EMPTY(radial_menus) page_data = list(null) var/list/current = list() var/list/choices_left = choices.Copy() - while(choices_left.len) - if(current.len == max_elements) + while(length(choices_left)) + if(length(current) == max_elements) page_data[page] = current page++ page_data.len++ current = list() - if(paged && current.len == max_elements - 1) + if(paged && length(current) == max_elements - 1) current += NEXT_PAGE_ID continue else current += popleft(choices_left) - if(paged && current.len < max_elements) + if(paged && length(current) < max_elements) current += NEXT_PAGE_ID page_data[page] = current @@ -123,14 +123,14 @@ GLOBAL_LIST_EMPTY(radial_menus) /datum/radial_menu/proc/update_screen_objects() var/list/page_choices = page_data[current_page] - var/angle_per_element = round(zone / page_choices.len) + var/angle_per_element = round(zone / length(page_choices)) if(current_user.mob.z && anchor.z) pixel_x_difference = ((world.icon_size * anchor.x) + anchor.step_x + anchor.pixel_x) - ((world.icon_size * current_user.mob.x) + current_user.mob.step_x + current_user.mob.pixel_x) pixel_y_difference = ((world.icon_size * anchor.y) + anchor.step_y + anchor.pixel_y) - ((world.icon_size * current_user.mob.y) + current_user.mob.step_y + current_user.mob.pixel_y) - for(var/i in 1 to elements.len) + for(var/i in 1 to length(elements)) var/atom/movable/screen/radial/E = elements[i] var/angle = WRAP(starting_angle + (i - 1) * angle_per_element, 0, 360) - if(i > page_choices.len) + if(i > length(page_choices)) HideElement(E) else SetElement(E,page_choices[i], angle) @@ -187,10 +187,10 @@ GLOBAL_LIST_EMPTY(radial_menus) selected_choice = choices_values[choice_id] /datum/radial_menu/proc/get_next_id() - return "c_[choices.len]" + return "c_[length(choices)]" /datum/radial_menu/proc/set_choices(list/new_choices) - if(choices.len) + if(length(choices)) Reset() for(var/E in new_choices) var/id = get_next_id() diff --git a/code/_onclick/hud/robot_hud.dm b/code/_onclick/hud/robot_hud.dm index ae1e54f9fe2..b2c692dfc32 100644 --- a/code/_onclick/hud/robot_hud.dm +++ b/code/_onclick/hud/robot_hud.dm @@ -216,7 +216,7 @@ if(!R.robot_modules_background) return - var/display_rows = CEILING(R.module.modules.len / 8, 1) + var/display_rows = CEILING(length(R.module.modules) / 8, 1) R.robot_modules_background.screen_loc = "CENTER-4:16,SOUTH+1:7 to CENTER+3:16,SOUTH+[display_rows]:7" R.client.screen += R.robot_modules_background diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 48c0664d740..bb041323527 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -204,7 +204,7 @@ return if(I in S.contents) // If the item is already in the storage, move them to the end of the list - if(S.contents[S.contents.len] == I) // No point moving them at the end if they're already there! + if(S.contents[length(S.contents)] == I) // No point moving them at the end if they're already there! return var/list/new_contents = S.contents.Copy() diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 0e789eacb89..17d9c8c54e4 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -145,7 +145,7 @@ if(I.discrete) return var/message_verb = "attacked" - if(I.attack_verb && I.attack_verb.len) + if(I.attack_verb && length(I.attack_verb)) message_verb = "[pick(I.attack_verb)]" else if(!I.force) return diff --git a/code/controllers/globals.dm b/code/controllers/globals.dm index 3b448d91462..a10701fa538 100644 --- a/code/controllers/globals.dm +++ b/code/controllers/globals.dm @@ -52,10 +52,10 @@ GLOBAL_REAL(GLOB, /datum/controller/global_vars) gvars_datum_init_order = list() gvars_datum_protected_varlist = list("gvars_datum_protected_varlist" = TRUE) var/list/global_procs = typesof(/datum/controller/global_vars/proc) - var/expected_len = vars.len - gvars_datum_in_built_vars.len - if(global_procs.len != expected_len) - warning("Unable to detect all global initialization procs! Expected [expected_len] got [global_procs.len]!") - if(global_procs.len) + var/expected_len = length(vars) - length(gvars_datum_in_built_vars) + if(length(global_procs) != expected_len) + warning("Unable to detect all global initialization procs! Expected [expected_len] got [length(global_procs)]!") + if(length(global_procs)) var/list/expected_global_procs = vars - gvars_datum_in_built_vars for(var/I in global_procs) expected_global_procs -= replacetext("[I]", "InitGlobal", "") diff --git a/code/controllers/master.dm b/code/controllers/master.dm index 4ecc06b54d3..5593027e482 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -332,9 +332,9 @@ GLOBAL_REAL(Master, /datum/controller/master) = new var/ss_runlevels = SS.runlevels var/added_to_any = FALSE - for(var/I in 1 to GLOB.bitflags.len) + for(var/I in 1 to length(GLOB.bitflags)) if(ss_runlevels & GLOB.bitflags[I]) - while(runlevel_sorted_subsystems.len < I) + while(length(runlevel_sorted_subsystems) < I) runlevel_sorted_subsystems += list(list()) runlevel_sorted_subsystems[I] += SS added_to_any = TRUE diff --git a/code/controllers/subsystem/SSacid.dm b/code/controllers/subsystem/SSacid.dm index 469cd7d06fc..6f470b451bc 100644 --- a/code/controllers/subsystem/SSacid.dm +++ b/code/controllers/subsystem/SSacid.dm @@ -25,8 +25,8 @@ SUBSYSTEM_DEF(acid) //cache for sanic speed (lists are references anyways) var/list/currentrun = src.currentrun - while(currentrun.len) - var/obj/O = currentrun[currentrun.len] + while(length(currentrun)) + var/obj/O = currentrun[length(currentrun)] currentrun.len-- if(!O || QDELETED(O)) processing -= O diff --git a/code/controllers/subsystem/SSafk.dm b/code/controllers/subsystem/SSafk.dm index b83f7d05d73..6bf0e99629e 100644 --- a/code/controllers/subsystem/SSafk.dm +++ b/code/controllers/subsystem/SSafk.dm @@ -86,7 +86,7 @@ SUBSYSTEM_DEF(afk) /datum/controller/subsystem/afk/proc/removeFromWatchList(list/toRemove) for(var/C in toRemove) - for(var/i in 1 to afk_players.len) + for(var/i in 1 to length(afk_players)) if(afk_players[i] == C) afk_players.Cut(i, i + 1) break diff --git a/code/controllers/subsystem/SSair.dm b/code/controllers/subsystem/SSair.dm index d5901824dc9..832b52cb571 100644 --- a/code/controllers/subsystem/SSair.dm +++ b/code/controllers/subsystem/SSair.dm @@ -59,13 +59,13 @@ SUBSYSTEM_DEF(air) msg += "DPN:[round(cost_deferred_pipenets,1)]|" msg += "AM:[round(cost_atmos_machinery,1)]" msg += "} " - msg += "AT:[active_turfs.len]|" - msg += "EG:[excited_groups.len]|" - msg += "HS:[hotspots.len]|" - msg += "PN:[networks.len]|" - msg += "HP:[high_pressure_delta.len]|" - msg += "AS:[active_super_conductivity.len]|" - msg += "AT/MS:[round((cost ? active_turfs.len/cost : 0),0.1)]" + msg += "AT:[length(active_turfs)]|" + msg += "EG:[length(excited_groups)]|" + msg += "HS:[length(hotspots)]|" + msg += "PN:[length(networks)]|" + msg += "HP:[length(high_pressure_delta)]|" + msg += "AS:[length(active_super_conductivity)]|" + msg += "AT/MS:[round((cost ? length(active_turfs)/cost : 0),0.1)]" return msg.Join("") /datum/controller/subsystem/air/get_metrics() @@ -179,8 +179,8 @@ SUBSYSTEM_DEF(air) src.currentrun = deferred_pipenet_rebuilds.Copy() //cache for sanic speed (lists are references anyways) var/list/currentrun = src.currentrun - while(currentrun.len) - var/obj/machinery/atmospherics/A = currentrun[currentrun.len] + while(length(currentrun)) + var/obj/machinery/atmospherics/A = currentrun[length(currentrun)] currentrun.len-- if(A) A.build_network(remove_deferral = TRUE) @@ -194,8 +194,8 @@ SUBSYSTEM_DEF(air) src.currentrun = networks.Copy() //cache for sanic speed (lists are references anyways) var/list/currentrun = src.currentrun - while(currentrun.len) - var/datum/pipeline/thing = currentrun[currentrun.len] + while(length(currentrun)) + var/datum/pipeline/thing = currentrun[length(currentrun)] currentrun.len-- if(thing) thing.process() @@ -210,8 +210,8 @@ SUBSYSTEM_DEF(air) src.currentrun = atmos_machinery.Copy() //cache for sanic speed (lists are references anyways) var/list/currentrun = src.currentrun - while(currentrun.len) - var/obj/machinery/atmospherics/M = currentrun[currentrun.len] + while(length(currentrun)) + var/obj/machinery/atmospherics/M = currentrun[length(currentrun)] currentrun.len-- if(!M || (M.process_atmos(seconds) == PROCESS_KILL)) atmos_machinery.Remove(M) @@ -223,8 +223,8 @@ SUBSYSTEM_DEF(air) src.currentrun = active_super_conductivity.Copy() //cache for sanic speed (lists are references anyways) var/list/currentrun = src.currentrun - while(currentrun.len) - var/turf/simulated/T = currentrun[currentrun.len] + while(length(currentrun)) + var/turf/simulated/T = currentrun[length(currentrun)] currentrun.len-- T.super_conduct() if(MC_TICK_CHECK) @@ -235,8 +235,8 @@ SUBSYSTEM_DEF(air) src.currentrun = hotspots.Copy() //cache for sanic speed (lists are references anyways) var/list/currentrun = src.currentrun - while(currentrun.len) - var/obj/effect/hotspot/H = currentrun[currentrun.len] + while(length(currentrun)) + var/obj/effect/hotspot/H = currentrun[length(currentrun)] currentrun.len-- if(H) H.process() @@ -246,8 +246,8 @@ SUBSYSTEM_DEF(air) return /datum/controller/subsystem/air/proc/process_high_pressure_delta(resumed = 0) - while(high_pressure_delta.len) - var/turf/simulated/T = high_pressure_delta[high_pressure_delta.len] + while(length(high_pressure_delta)) + var/turf/simulated/T = high_pressure_delta[length(high_pressure_delta)] high_pressure_delta.len-- T.high_pressure_movements() T.pressure_difference = 0 @@ -261,8 +261,8 @@ SUBSYSTEM_DEF(air) src.currentrun = active_turfs.Copy() //cache for sanic speed (lists are references anyways) var/list/currentrun = src.currentrun - while(currentrun.len) - var/turf/simulated/T = currentrun[currentrun.len] + while(length(currentrun)) + var/turf/simulated/T = currentrun[length(currentrun)] currentrun.len-- if(T) T.process_cell(fire_count) @@ -274,8 +274,8 @@ SUBSYSTEM_DEF(air) src.currentrun = excited_groups.Copy() //cache for sanic speed (lists are references anyways) var/list/currentrun = src.currentrun - while(currentrun.len) - var/datum/excited_group/EG = currentrun[currentrun.len] + while(length(currentrun)) + var/datum/excited_group/EG = currentrun[length(currentrun)] currentrun.len-- EG.breakdown_cooldown++ if(EG.breakdown_cooldown == 10) diff --git a/code/controllers/subsystem/SSblackbox.dm b/code/controllers/subsystem/SSblackbox.dm index 6cc8f9c7141..cdd10077d26 100644 --- a/code/controllers/subsystem/SSblackbox.dm +++ b/code/controllers/subsystem/SSblackbox.dm @@ -68,10 +68,10 @@ SUBSYSTEM_DEF(blackbox) /datum/controller/subsystem/blackbox/Shutdown() sealed = FALSE for(var/obj/machinery/message_server/MS in GLOB.message_servers) - if(MS.pda_msgs.len) - record_feedback("tally", "radio_usage", MS.pda_msgs.len, "PDA") - if(MS.rc_msgs.len) - record_feedback("tally", "radio_usage", MS.rc_msgs.len, "request console") + if(length(MS.pda_msgs)) + record_feedback("tally", "radio_usage", length(MS.pda_msgs), "PDA") + if(length(MS.rc_msgs)) + record_feedback("tally", "radio_usage", length(MS.rc_msgs), "request console") if(length(research_levels)) record_feedback("associative", "high_research_level", 1, research_levels) @@ -248,7 +248,7 @@ SUBSYSTEM_DEF(blackbox) * * depth - Depth to use */ /datum/controller/subsystem/blackbox/proc/record_feedback_recurse_list(list/L, list/key_list, increment, depth = 1) - if(depth == key_list.len) + if(depth == length(key_list)) if(L.Find(key_list[depth])) L["[key_list[depth]]"] += increment else diff --git a/code/controllers/subsystem/SSfires.dm b/code/controllers/subsystem/SSfires.dm index f811713e632..c98d7f01d5d 100644 --- a/code/controllers/subsystem/SSfires.dm +++ b/code/controllers/subsystem/SSfires.dm @@ -26,8 +26,8 @@ SUBSYSTEM_DEF(fires) //cache for sanic speed (lists are references anyways) var/list/currentrun = src.currentrun - while(currentrun.len) - var/obj/O = currentrun[currentrun.len] + while(length(currentrun)) + var/obj/O = currentrun[length(currentrun)] currentrun.len-- if(!O || QDELETED(O)) processing -= O diff --git a/code/controllers/subsystem/SSgarbage.dm b/code/controllers/subsystem/SSgarbage.dm index f567255f703..9201b040191 100644 --- a/code/controllers/subsystem/SSgarbage.dm +++ b/code/controllers/subsystem/SSgarbage.dm @@ -89,6 +89,7 @@ SUBSYSTEM_DEF(garbage) if(I.hard_deletes) dellog += "\tTotal Hard Deletes [I.hard_deletes]" dellog += "\tTime Spent Hard Deleting: [I.hard_delete_time]ms" + dellog += "\tAverage References During Hardel: [I.reference_average] references." if(I.slept_destroy) dellog += "\tSleeps: [I.slept_destroy]" if(I.no_respect_force) @@ -258,6 +259,7 @@ SUBSYSTEM_DEF(garbage) I.hard_deletes++ I.hard_delete_time += TICK_DELTA_TO_MS(tick) + I.reference_average = (refcount(I) + I.reference_average) / I.hard_deletes if(tick > highest_del_tickusage) @@ -275,7 +277,7 @@ SUBSYSTEM_DEF(garbage) /datum/controller/subsystem/garbage/Recover() InitQueues() //We first need to create the queues before recovering data if(istype(SSgarbage.queues)) - for(var/i in 1 to SSgarbage.queues.len) + for(var/i in 1 to length(SSgarbage.queues)) queues[i] |= SSgarbage.queues[i] @@ -289,6 +291,8 @@ SUBSYSTEM_DEF(garbage) var/no_respect_force = 0//Number of times it's not respected force=TRUE var/no_hint = 0 //Number of times it's not even bother to give a qdel hint var/slept_destroy = 0 //Number of times it's slept in its destroy + /// Average amount of references that the hard deleted item holds when hard deleted + var/reference_average = 0 /datum/qdel_item/New(mytype) name = "[mytype]" diff --git a/code/controllers/subsystem/SSicon_smooth.dm b/code/controllers/subsystem/SSicon_smooth.dm index 5513d9152d8..1b33f458dad 100644 --- a/code/controllers/subsystem/SSicon_smooth.dm +++ b/code/controllers/subsystem/SSicon_smooth.dm @@ -10,13 +10,13 @@ SUBSYSTEM_DEF(icon_smooth) var/list/smooth_queue = list() /datum/controller/subsystem/icon_smooth/fire() - while(smooth_queue.len) - var/atom/A = smooth_queue[smooth_queue.len] + while(length(smooth_queue)) + var/atom/A = smooth_queue[length(smooth_queue)] smooth_queue.len-- A.smooth_icon() if(MC_TICK_CHECK) return - if(!smooth_queue.len) + if(!length(smooth_queue)) can_fire = 0 /datum/controller/subsystem/icon_smooth/Initialize() diff --git a/code/controllers/subsystem/SSidlenpcpool.dm b/code/controllers/subsystem/SSidlenpcpool.dm index b5c52f23ae6..c424950791e 100644 --- a/code/controllers/subsystem/SSidlenpcpool.dm +++ b/code/controllers/subsystem/SSidlenpcpool.dm @@ -24,8 +24,8 @@ SUBSYSTEM_DEF(idlenpcpool) //cache for sanic speed (lists are references anyways) var/list/currentrun = src.currentrun - while(currentrun.len) - var/mob/living/simple_animal/SA = currentrun[currentrun.len] + while(length(currentrun)) + var/mob/living/simple_animal/SA = currentrun[length(currentrun)] --currentrun.len if(!SA) log_debug("idlenpcpool encountered an invalid entry, resumed: [resumed], SA [SA], type of SA [SA?.type], null [SA == null], qdelled [QDELETED(SA)], SA in AI_IDLE list: [SA in GLOB.simple_animals[AI_IDLE]]") diff --git a/code/controllers/subsystem/SSjobs.dm b/code/controllers/subsystem/SSjobs.dm index 5b2d10876b0..5996c84737e 100644 --- a/code/controllers/subsystem/SSjobs.dm +++ b/code/controllers/subsystem/SSjobs.dm @@ -44,7 +44,7 @@ SUBSYSTEM_DEF(jobs) /datum/controller/subsystem/jobs/proc/SetupOccupations(list/faction = list("Station")) occupations = list() var/list/all_jobs = subtypesof(/datum/job) - if(!all_jobs.len) + if(!length(all_jobs)) to_chat(world, "Error setting up jobs, no job datums found.") return 0 @@ -63,12 +63,12 @@ SUBSYSTEM_DEF(jobs) job_debug.Add(text) /datum/controller/subsystem/jobs/proc/GetJob(rank) - if(!occupations.len) + if(!length(occupations)) SetupOccupations() return name_occupations[rank] /datum/controller/subsystem/jobs/proc/GetJobType(jobtype) - if(!occupations.len) + if(!length(occupations)) SetupOccupations() return type_occupations[jobtype] @@ -235,7 +235,7 @@ SUBSYSTEM_DEF(jobs) if(!job) continue var/list/candidates = FindOccupationCandidates(job, level) - if(!candidates.len) + if(!length(candidates)) continue var/list/filteredCandidates = list() @@ -246,7 +246,7 @@ SUBSYSTEM_DEF(jobs) continue filteredCandidates += V - if(!filteredCandidates.len) + if(!length(filteredCandidates)) continue var/mob/new_player/candidate = pick(filteredCandidates) @@ -263,7 +263,7 @@ SUBSYSTEM_DEF(jobs) if(!job) continue var/list/candidates = FindOccupationCandidates(job, level) - if(!candidates.len) + if(!length(candidates)) continue var/mob/new_player/candidate = pick(candidates) AssignRole(candidate, command_position) @@ -282,7 +282,7 @@ SUBSYSTEM_DEF(jobs) for(var/level = 1 to 3) var/list/candidates = list() candidates = FindOccupationCandidates(job, level) - if(candidates.len) + if(length(candidates)) var/mob/new_player/candidate = pick(candidates) if(AssignRole(candidate, "AI")) ai_selected++ @@ -317,7 +317,7 @@ SUBSYSTEM_DEF(jobs) if(player.ready && player.mind && !player.mind.assigned_role) unassigned += player - Debug("DO, Len: [unassigned.len]") + Debug("DO, Len: [length(unassigned)]") if(!length(unassigned)) return FALSE @@ -330,7 +330,7 @@ SUBSYSTEM_DEF(jobs) Debug("DO, Running Assistant Check 1") var/datum/job/ast = new /datum/job/assistant() var/list/assistant_candidates = FindOccupationCandidates(ast, 3) - Debug("AC1, Candidates: [assistant_candidates.len]") + Debug("AC1, Candidates: [length(assistant_candidates)]") for(var/mob/new_player/player in assistant_candidates) Debug("AC1 pass, Player: [player]") AssignRole(player, "Assistant") diff --git a/code/controllers/subsystem/SSmachinery.dm b/code/controllers/subsystem/SSmachinery.dm index b625979eae5..e17cf6ec8d6 100644 --- a/code/controllers/subsystem/SSmachinery.dm +++ b/code/controllers/subsystem/SSmachinery.dm @@ -39,15 +39,15 @@ SUBSYSTEM_DEF(machines) propagate_network(PC, PC.powernet) /datum/controller/subsystem/machines/get_stat_details() - return "Machines: [processing.len] | Powernets: [powernets.len] | Deferred: [deferred_powernet_rebuilds.len]" + return "Machines: [length(processing)] | Powernets: [length(powernets)] | Deferred: [length(deferred_powernet_rebuilds)]" /datum/controller/subsystem/machines/proc/process_defered_powernets(resumed = 0) if(!resumed) src.currentrun = deferred_powernet_rebuilds.Copy() //cache for sanid speed (lists are references anyways) var/list/currentrun = src.currentrun - while(currentrun.len) - var/obj/O = currentrun[currentrun.len] + while(length(currentrun)) + var/obj/O = currentrun[length(currentrun)] currentrun.len-- if(O && !QDELETED(O)) var/datum/regional_powernet/newPN = new() // create a new powernet... @@ -62,8 +62,8 @@ SUBSYSTEM_DEF(machines) src.currentrun = powernets.Copy() //cache for sanid speed (lists are references anyways) var/list/currentrun = src.currentrun - while(currentrun.len) - var/datum/regional_powernet/P = currentrun[currentrun.len] + while(length(currentrun)) + var/datum/regional_powernet/P = currentrun[length(currentrun)] currentrun.len-- if(P) P.process_power() // reset the power state @@ -78,8 +78,8 @@ SUBSYSTEM_DEF(machines) src.currentrun = processing.Copy() //cache for sanic speed (lists are references anyways) var/list/currentrun = src.currentrun - while(currentrun.len) - var/obj/machinery/thing = currentrun[currentrun.len] + while(length(currentrun)) + var/obj/machinery/thing = currentrun[length(currentrun)] currentrun.len-- if(!QDELETED(thing) && thing.process(seconds) != PROCESS_KILL) if(prob(MACHINE_FLICKER_CHANCE)) diff --git a/code/controllers/subsystem/SSmobs.dm b/code/controllers/subsystem/SSmobs.dm index 537683f1d60..1a3683937b3 100644 --- a/code/controllers/subsystem/SSmobs.dm +++ b/code/controllers/subsystem/SSmobs.dm @@ -35,8 +35,8 @@ SUBSYSTEM_DEF(mobs) //cache for sanic speed (lists are references anyways) var/list/currentrun = src.currentrun var/times_fired = src.times_fired - while(currentrun.len) - var/mob/living/L = currentrun[currentrun.len] + while(length(currentrun)) + var/mob/living/L = currentrun[length(currentrun)] currentrun.len-- if(L) L.Life(seconds, times_fired) diff --git a/code/controllers/subsystem/SSnano_mob_hunter.dm b/code/controllers/subsystem/SSnano_mob_hunter.dm index 49b433ca6b0..93e622f3ae1 100644 --- a/code/controllers/subsystem/SSnano_mob_hunter.dm +++ b/code/controllers/subsystem/SSnano_mob_hunter.dm @@ -21,7 +21,7 @@ SUBSYSTEM_DEF(mob_hunt) if(!server_status) return client_mob_update() - if(normal_spawns.len < max_normal_spawns) + if(length(normal_spawns) < max_normal_spawns) spawn_mob() //leaving this here in case admins want to use it for a random mini-event or something @@ -51,7 +51,7 @@ SUBSYSTEM_DEF(mob_hunt) if(!H || H != connected_clients[client]) ex_players |= connected_clients[client] connected_clients[client] = H - if(ex_players.len) //to make sure we don't do this if we didn't lose any player since the last update + if(length(ex_players)) //to make sure we don't do this if we didn't lose any player since the last update for(var/obj/effect/nanomob/N in (normal_spawns + trap_spawns)) N.conceal(ex_players) @@ -59,7 +59,7 @@ SUBSYSTEM_DEF(mob_hunt) if(server_status != 0) return server_status = 1 - while(normal_spawns.len < max_normal_spawns) //repopulate the server's spawns completely if we auto-recover from crash + while(length(normal_spawns) < max_normal_spawns) //repopulate the server's spawns completely if we auto-recover from crash spawn_mob() /datum/controller/subsystem/mob_hunt/proc/manual_reboot() @@ -94,7 +94,7 @@ SUBSYSTEM_DEF(mob_hunt) var/obj/effect/nanomob/new_mob = new /obj/effect/nanomob(mob_info.spawn_point, mob_info) trap_spawns += new_mob new_mob.reveal() - if(trap_spawns.len > max_trap_spawns) + if(length(trap_spawns) > max_trap_spawns) var/obj/effect/nanomob/old_trap = trap_spawns[1] old_trap.despawn() return 1 diff --git a/code/controllers/subsystem/SSnpcpool.dm b/code/controllers/subsystem/SSnpcpool.dm index ca9c3befbee..8e17b860ac7 100644 --- a/code/controllers/subsystem/SSnpcpool.dm +++ b/code/controllers/subsystem/SSnpcpool.dm @@ -18,8 +18,8 @@ SUBSYSTEM_DEF(npcpool) var/list/currentrun = src.currentrun - while(currentrun.len) - var/mob/living/simple_animal/SA = currentrun[currentrun.len] + while(length(currentrun)) + var/mob/living/simple_animal/SA = currentrun[length(currentrun)] --currentrun.len if(!SA) log_debug("npcpool encountered an invalid entry, resumed: [resumed], SA [SA], type of SA [SA?.type], null [SA == null], qdelled [QDELETED(SA)], SA in AI_ON list: [SA in GLOB.simple_animals[AI_ON]]") diff --git a/code/controllers/subsystem/SSoverlays.dm b/code/controllers/subsystem/SSoverlays.dm index dad9c3683cf..ed3382382c9 100644 --- a/code/controllers/subsystem/SSoverlays.dm +++ b/code/controllers/subsystem/SSoverlays.dm @@ -113,7 +113,7 @@ SUBSYSTEM_DEF(overlays) priority_overlays.Cut() //If not already queued for work and there are overlays to remove - if(NOT_QUEUED_ALREADY && remove_overlays.len) + if(NOT_QUEUED_ALREADY && length(remove_overlays)) QUEUE_FOR_COMPILE /atom/proc/cut_overlay(list/overlays, priority) @@ -123,9 +123,9 @@ SUBSYSTEM_DEF(overlays) LAZYINITLIST(add_overlays) //always initialized after this point LAZYINITLIST(priority_overlays) LAZYINITLIST(remove_overlays) - var/a_len = add_overlays.len - var/r_len = remove_overlays.len - var/p_len = priority_overlays.len + var/a_len = length(add_overlays) + var/r_len = length(remove_overlays) + var/p_len = length(priority_overlays) remove_overlays += overlays add_overlays -= overlays @@ -133,9 +133,9 @@ SUBSYSTEM_DEF(overlays) var/list/cached_priority = priority_overlays LAZYREMOVE(cached_priority, overlays) - var/fa_len = add_overlays.len - var/fr_len = remove_overlays.len - var/fp_len = priority_overlays.len + var/fa_len = length(add_overlays) + var/fr_len = length(remove_overlays) + var/fp_len = length(priority_overlays) //If not already queued and there is work to be done if(NOT_QUEUED_ALREADY && (fa_len != a_len || fr_len != r_len || fp_len != p_len)) @@ -149,17 +149,17 @@ SUBSYSTEM_DEF(overlays) LAZYINITLIST(add_overlays) //always initialized after this point LAZYINITLIST(priority_overlays) - var/a_len = add_overlays.len - var/p_len = priority_overlays.len + var/a_len = length(add_overlays) + var/p_len = length(priority_overlays) if(priority) priority_overlays += overlays //or in the image. Can we use [image] = image? - var/fp_len = priority_overlays.len + var/fp_len = length(priority_overlays) if(NOT_QUEUED_ALREADY && fp_len != p_len) QUEUE_FOR_COMPILE else add_overlays += overlays - var/fa_len = add_overlays.len + var/fa_len = length(add_overlays) if(NOT_QUEUED_ALREADY && fa_len != a_len) QUEUE_FOR_COMPILE @@ -200,7 +200,7 @@ SUBSYSTEM_DEF(overlays) var/list/cached_other = other.overlays.Copy() if(cached_other) - if(cut_old || !overlays.len) + if(cut_old || !length(overlays)) overlays = cached_other else overlays |= cached_other diff --git a/code/controllers/subsystem/SSparallax.dm b/code/controllers/subsystem/SSparallax.dm index 99024fd0d1e..60637955cdf 100644 --- a/code/controllers/subsystem/SSparallax.dm +++ b/code/controllers/subsystem/SSparallax.dm @@ -31,7 +31,7 @@ SUBSYSTEM_DEF(parallax) var/list/currentrun = src.currentrun while(length(currentrun)) - var/client/C = currentrun[currentrun.len] + var/client/C = currentrun[length(currentrun)] currentrun.len-- if(!C || !C.eye) if(MC_TICK_CHECK) diff --git a/code/controllers/subsystem/SSping.dm b/code/controllers/subsystem/SSping.dm index 42df890f9b7..5e95309b8e3 100644 --- a/code/controllers/subsystem/SSping.dm +++ b/code/controllers/subsystem/SSping.dm @@ -27,7 +27,7 @@ SUBSYSTEM_DEF(ping) var/list/current_run = src.current_run while(length(current_run)) - var/client/client = current_run[current_run.len] + var/client/client = current_run[length(current_run)] current_run.len-- if(client?.tgui_panel?.is_ready()) diff --git a/code/controllers/subsystem/SSshuttles.dm b/code/controllers/subsystem/SSshuttles.dm index d4b921f36eb..5e5a92bdb05 100644 --- a/code/controllers/subsystem/SSshuttles.dm +++ b/code/controllers/subsystem/SSshuttles.dm @@ -246,7 +246,7 @@ SUBSYSTEM_DEF(shuttle) /datum/controller/subsystem/shuttle/proc/get_dock_overlap(x0, y0, x1, y1, z) . = list() var/list/stationary_cache = stationary - for(var/i in 1 to stationary_cache.len) + for(var/i in 1 to length(stationary_cache)) var/obj/docking_port/port = stationary_cache[i] if(!port || port.z != z) continue @@ -254,7 +254,7 @@ SUBSYSTEM_DEF(shuttle) var/list/overlap = get_overlap(x0, y0, x1, y1, bounds[1], bounds[2], bounds[3], bounds[4]) var/list/xs = overlap[1] var/list/ys = overlap[2] - if(xs.len && ys.len) + if(length(xs) && length(ys)) .[port] = overlap /datum/controller/subsystem/shuttle/proc/update_hidden_docking_ports(list/remove_turfs, list/add_turfs) @@ -272,7 +272,7 @@ SUBSYSTEM_DEF(shuttle) for(var/V in add_turfs) var/turf/T = V var/image/I - if(remove_images.len) + if(length(remove_images)) //we can just reuse any images we are about to delete instead of making new ones I = remove_images[1] remove_images.Cut(1, 2) diff --git a/code/controllers/subsystem/SSspacedrift.dm b/code/controllers/subsystem/SSspacedrift.dm index 96aa68a8e2a..cb489b55c2a 100644 --- a/code/controllers/subsystem/SSspacedrift.dm +++ b/code/controllers/subsystem/SSspacedrift.dm @@ -26,8 +26,8 @@ SUBSYSTEM_DEF(spacedrift) //cache for sanic speed (lists are references anyways) var/list/currentrun = src.currentrun - while(currentrun.len) - var/atom/movable/AM = currentrun[currentrun.len] + while(length(currentrun)) + var/atom/movable/AM = currentrun[length(currentrun)] currentrun.len-- if(!AM) processing -= AM diff --git a/code/controllers/subsystem/SStgui.dm b/code/controllers/subsystem/SStgui.dm index 924a5f02919..d84c486c615 100644 --- a/code/controllers/subsystem/SStgui.dm +++ b/code/controllers/subsystem/SStgui.dm @@ -42,8 +42,8 @@ SUBSYSTEM_DEF(tgui) src.current_run = open_uis.Copy() // Cache for sanic speed (lists are references anyways) var/list/current_run = src.current_run - while(current_run.len) - var/datum/tgui/ui = current_run[current_run.len] + while(length(current_run)) + var/datum/tgui/ui = current_run[length(current_run)] current_run.len-- // TODO: Move user/src_object check to process() if(ui && ui.user && ui.src_object) diff --git a/code/controllers/subsystem/SSthrowing.dm b/code/controllers/subsystem/SSthrowing.dm index 621c5020028..3e4bc1536ff 100644 --- a/code/controllers/subsystem/SSthrowing.dm +++ b/code/controllers/subsystem/SSthrowing.dm @@ -30,7 +30,7 @@ SUBSYSTEM_DEF(throwing) var/list/currentrun = src.currentrun while(length(currentrun)) - var/atom/movable/AM = currentrun[currentrun.len] + var/atom/movable/AM = currentrun[length(currentrun)] var/datum/thrownthing/TT = currentrun[AM] currentrun.len-- if(!AM || !TT) diff --git a/code/controllers/subsystem/SSticker.dm b/code/controllers/subsystem/SSticker.dm index 91c37f28a0c..6a9bd55d688 100644 --- a/code/controllers/subsystem/SSticker.dm +++ b/code/controllers/subsystem/SSticker.dm @@ -529,9 +529,9 @@ SUBSYSTEM_DEF(ticker) else var/list/randomtips = file2list("strings/tips.txt") var/list/memetips = file2list("strings/sillytips.txt") - if(randomtips.len && prob(95)) + if(length(randomtips) && prob(95)) m = pick(randomtips) - else if(memetips.len) + else if(length(memetips)) m = pick(memetips) if(m) @@ -706,8 +706,8 @@ SUBSYSTEM_DEF(ticker) for(var/loc_type in subtypesof(/datum/trade_destination)) var/datum/trade_destination/D = new loc_type - GLOB.weighted_randomevent_locations[D] = D.viable_random_events.len - GLOB.weighted_mundaneevent_locations[D] = D.viable_mundane_events.len + GLOB.weighted_randomevent_locations[D] = length(D.viable_random_events) + GLOB.weighted_mundaneevent_locations[D] = length(D.viable_mundane_events) // Easy handler to make rebooting the world not a massive sleep in world/Reboot() /datum/controller/subsystem/ticker/proc/reboot_helper(reason, end_string, delay) diff --git a/code/controllers/subsystem/non_firing/SSatoms.dm b/code/controllers/subsystem/non_firing/SSatoms.dm index 4226c93f98d..a1c515fdb80 100644 --- a/code/controllers/subsystem/non_firing/SSatoms.dm +++ b/code/controllers/subsystem/non_firing/SSatoms.dm @@ -36,7 +36,7 @@ SUBSYSTEM_DEF(atoms) var/count var/list/mapload_arg = list(TRUE) if(atoms) - count = atoms.len + count = length(atoms) for(var/I in atoms) var/atom/A = I if(A && !A.initialized) @@ -58,7 +58,7 @@ SUBSYSTEM_DEF(atoms) initialized = INITIALIZATION_INNEW_REGULAR - if(late_loaders.len) + if(length(late_loaders)) watch = start_watch() if(noisy) log_startup_progress("Late-initializing atoms...") diff --git a/code/controllers/subsystem/non_firing/SSmapping.dm b/code/controllers/subsystem/non_firing/SSmapping.dm index c73d53da322..34870242284 100644 --- a/code/controllers/subsystem/non_firing/SSmapping.dm +++ b/code/controllers/subsystem/non_firing/SSmapping.dm @@ -203,7 +203,7 @@ SUBSYSTEM_DEF(mapping) log_startup_progress("Loaded Lavaland in [stop_watch(watch)]s") /datum/controller/subsystem/mapping/proc/seedRuins(list/z_levels = null, budget = 0, whitelist = /area/space, list/potentialRuins) - if(!z_levels || !z_levels.len) + if(!z_levels || !length(z_levels)) WARNING("No Z levels provided - Not generating ruins") return @@ -230,10 +230,10 @@ SUBSYSTEM_DEF(mapping) continue ruins_availible[R] = R.placement_weight - while(budget > 0 && (ruins_availible.len || forced_ruins.len)) + while(budget > 0 && (length(ruins_availible) || length(forced_ruins))) var/datum/map_template/ruin/current_pick var/forced = FALSE - if(forced_ruins.len) //We have something we need to load right now, so just pick it + if(length(forced_ruins)) //We have something we need to load right now, so just pick it for(var/ruin in forced_ruins) current_pick = ruin if(forced_ruins[ruin] > 0) //Load into designated z diff --git a/code/controllers/subsystem/non_firing/SSradio.dm b/code/controllers/subsystem/non_firing/SSradio.dm index 402fc3375c6..e17bc1e42d1 100644 --- a/code/controllers/subsystem/non_firing/SSradio.dm +++ b/code/controllers/subsystem/non_firing/SSradio.dm @@ -85,7 +85,7 @@ SUBSYSTEM_DEF(radio) if(frequency) frequency.remove_listener(device) - if(frequency.devices.len == 0) + if(length(frequency.devices) == 0) qdel(frequency) frequencies -= f_text diff --git a/code/controllers/subsystem/non_firing/SStitlescreen.dm b/code/controllers/subsystem/non_firing/SStitlescreen.dm index 100dff90cda..6591e67dd4f 100644 --- a/code/controllers/subsystem/non_firing/SStitlescreen.dm +++ b/code/controllers/subsystem/non_firing/SStitlescreen.dm @@ -10,10 +10,10 @@ SUBSYSTEM_DEF(title) for(var/S in provisional_title_screens) var/list/L = splittext(S,"+") - if(L.len == 1 && L[1] != "blank.png") + if(length(L) == 1 && L[1] != "blank.png") title_screens += S - else if(L.len > 1) + else if(length(L) > 1) if(use_rare_screens && lowertext(L[1]) == "rare") title_screens += S @@ -21,7 +21,7 @@ SUBSYSTEM_DEF(title) if(length(title_screens) > 1) for(var/S in title_screens) var/list/L = splittext(S,".") - if(L.len != 2 || L[1] != "default") + if(length(L) != 2 || L[1] != "default") continue title_screens -= S break diff --git a/code/controllers/subsystem/processing/processing.dm b/code/controllers/subsystem/processing/processing.dm index 14ab39fdcdf..1abc4b89116 100644 --- a/code/controllers/subsystem/processing/processing.dm +++ b/code/controllers/subsystem/processing/processing.dm @@ -26,8 +26,8 @@ SUBSYSTEM_DEF(processing) //cache for sanic speed (lists are references anyways) var/list/current_run = currentrun - while(current_run.len) - var/datum/thing = current_run[current_run.len] + while(length(current_run)) + var/datum/thing = current_run[length(current_run)] current_run.len-- if(QDELETED(thing)) processing -= thing diff --git a/code/controllers/subsystem/tickets/tickets.dm b/code/controllers/subsystem/tickets/tickets.dm index 444ca63d063..7cf79bae006 100644 --- a/code/controllers/subsystem/tickets/tickets.dm +++ b/code/controllers/subsystem/tickets/tickets.dm @@ -334,7 +334,7 @@ SUBSYSTEM_DEF(tickets) for(var/datum/ticket/T in allTickets) if(T.client_ckey == C.ckey && (T.ticketState == TICKET_OPEN || T.ticketState == TICKET_STALE)) tickets += T - if(tickets.len) + if(length(tickets)) return tickets return FALSE diff --git a/code/datums/ai_laws_datums.dm b/code/datums/ai_laws_datums.dm index c844b72657d..dd9e29fbb93 100644 --- a/code/datums/ai_laws_datums.dm +++ b/code/datums/ai_laws_datums.dm @@ -53,7 +53,7 @@ return statements /datum/ai_laws/proc/sort_laws() - if(sorted_laws.len) + if(length(sorted_laws)) return if(zeroth_law) @@ -65,7 +65,7 @@ var/index = 1 for(var/datum/ai_law/inherent_law in inherent_laws) inherent_law.index = index++ - if(supplied_laws.len < inherent_law.index || !istype(supplied_laws[inherent_law.index], /datum/ai_law)) + if(length(supplied_laws) < inherent_law.index || !istype(supplied_laws[inherent_law.index], /datum/ai_law)) sorted_laws += inherent_law for(var/datum/ai_law/AL in supplied_laws) @@ -77,11 +77,11 @@ if(change_zeroth) S.sync_zeroth(zeroth_law, zeroth_law_borg) - if(full_sync || ion_laws.len) + if(full_sync || length(ion_laws)) S.laws.clear_ion_laws() - if(full_sync || inherent_laws.len) + if(full_sync || length(inherent_laws)) S.laws.clear_inherent_laws() - if(full_sync || supplied_laws.len) + if(full_sync || length(supplied_laws)) S.laws.clear_supplied_laws() for(var/datum/ai_law/law in ion_laws) @@ -130,7 +130,7 @@ var/new_law = new/datum/ai_law/ion(law) ion_laws += new_law - if(state_ion.len < ion_laws.len) + if(length(state_ion) < length(ion_laws)) state_ion += 1 sorted_laws.Cut() @@ -145,7 +145,7 @@ var/new_law = new/datum/ai_law/inherent(law) inherent_laws += new_law - if(state_inherent.len < inherent_laws.len) + if(length(state_inherent) < length(inherent_laws)) state_inherent += 1 sorted_laws.Cut() @@ -154,22 +154,22 @@ if(!law) return - if(supplied_laws.len >= number) + if(length(supplied_laws) >= number) var/datum/ai_law/existing_law = supplied_laws[number] if(existing_law && existing_law.law == law) return - if(supplied_laws.len >= number && supplied_laws[number]) + if(length(supplied_laws) >= number && supplied_laws[number]) delete_law(supplied_laws[number]) - while(src.supplied_laws.len < number) + while(length(src.supplied_laws) < number) src.supplied_laws += "" - if(state_supplied.len < supplied_laws.len) + if(length(state_supplied) < length(supplied_laws)) state_supplied += 1 var/new_law = new/datum/ai_law/supplied(law, number) supplied_laws[number] = new_law - if(state_supplied.len < supplied_laws.len) + if(length(state_supplied) < length(supplied_laws)) state_supplied += 1 sorted_laws.Cut() @@ -203,7 +203,7 @@ var/index = laws.Find(law) if(index) laws -= law - for(index, index < state.len, index++) + for(index, index < length(state), index++) state[index] = state[index+1] sorted_laws.Cut() diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index 4c4ea93241a..fffa11ef74d 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -102,7 +102,7 @@ components_of_type = test if(I == our_type) //exact match, take priority var/inserted = FALSE - for(var/J in 1 to components_of_type.len) + for(var/J in 1 to length(components_of_type)) var/datum/component/C = components_of_type[J] if(C.type != our_type) //but not over other exact matches components_of_type.Insert(J, I) @@ -127,13 +127,13 @@ var/list/components_of_type = dc[I] if(length(components_of_type)) // var/list/subtracted = components_of_type - src - if(subtracted.len == 1) //only 1 guy left + if(length(subtracted) == 1) //only 1 guy left dc[I] = subtracted[1] //make him special else dc[I] = subtracted else //just us dc -= I - if(!dc.len) + if(!length(dc)) P.datum_components = null UnregisterFromParent() @@ -163,7 +163,7 @@ * Register to listen for a signal from the passed in target * * This sets up a listening relationship such that when the target object emits a signal - * the source datum this proc is called upon, will recieve a callback to the given proctype + * the source datum this proc is called upon, will receive a callback to the given proctype * Return values from procs registered must be a bitfield * * Arguments: @@ -241,7 +241,7 @@ lookup[sig] -= src signal_procs[target] -= sig_type_or_types - if(!signal_procs[target].len) + if(!length(signal_procs[target])) signal_procs -= target /// Registers multiple signals to the same proc. diff --git a/code/datums/components/boss_music.dm b/code/datums/components/boss_music.dm index 85af91c4d5e..5805052b9b5 100644 --- a/code/datums/components/boss_music.dm +++ b/code/datums/components/boss_music.dm @@ -37,7 +37,7 @@ UnregisterSignal(parent, COMSIG_HOSTILE_FOUND_TARGET) return ..() -///Handles giving the boss music to a new target the fauna has recieved. +///Handles giving the boss music to a new target the fauna has received. ///Keeps track of them to not repeatedly overwrite its own track. /datum/component/boss_music/proc/on_target_found(atom/source, mob/new_target) SIGNAL_HANDLER diff --git a/code/datums/components/material_container.dm b/code/datums/components/material_container.dm index 42d9731dbc0..6041460d068 100644 --- a/code/datums/components/material_container.dm +++ b/code/datums/components/material_container.dm @@ -184,7 +184,7 @@ //For consuming material //mats is a list of types of material to use and the corresponding amounts, example: list(MAT_METAL=100, MAT_GLASS=200) /datum/component/material_container/proc/use_amount(list/mats, multiplier=1) - if(!mats || !mats.len) + if(!mats || !length(mats)) return FALSE var/datum/material/M @@ -292,7 +292,7 @@ return (total_amount + amt) <= max_amount /datum/component/material_container/proc/has_materials(list/mats, multiplier=1) - if(!mats || !mats.len) + if(!mats || !length(mats)) return FALSE var/datum/material/M diff --git a/code/datums/components/proximity_monitor.dm b/code/datums/components/proximity_monitor.dm index e4a3112f860..b37712b9d1f 100644 --- a/code/datums/components/proximity_monitor.dm +++ b/code/datums/components/proximity_monitor.dm @@ -68,7 +68,7 @@ * Arguments: * * datum/source - this will be the `hasprox_receiver` * * atom/old_loc - the location the receiver just moved from - * * dir - the direction the reciever just moved in + * * dir - the direction the receiver just moved in */ /datum/component/proximity_monitor/proc/on_receiver_move(datum/source, atom/old_loc, dir) SIGNAL_HANDLER @@ -120,7 +120,7 @@ /** * Called when the receiver or an atom in the `nested_receiver_locs` list moves into a disposals holder object. * - * This proc recieves arguments, but they aren't needed. + * This proc receives arguments, but they aren't needed. */ /datum/component/proximity_monitor/proc/on_disposal_enter(datum/source) SIGNAL_HANDLER @@ -130,7 +130,7 @@ /** * Called when the receiver or an atom in the `nested_receiver_locs` list moves out of a disposals holder object. * - * This proc recieves arguments, but they aren't needed. + * This proc receives arguments, but they aren't needed. */ /datum/component/proximity_monitor/proc/on_disposal_exit(datum/source) SIGNAL_HANDLER diff --git a/code/datums/components/slippery.dm b/code/datums/components/slippery.dm index 4b79900cd43..4488c8dcb83 100644 --- a/code/datums/components/slippery.dm +++ b/code/datums/components/slippery.dm @@ -45,7 +45,7 @@ UnregisterSignal(parent, list(COMSIG_MOVABLE_CROSSED, COMSIG_ATOM_ENTERED)) /** - Called whenever the parent recieves either the `MOVABLE_CROSSED` signal or the `ATOM_ENTERED` signal. + Called whenever the parent receives either the `MOVABLE_CROSSED` signal or the `ATOM_ENTERED` signal. Calls the `victim`'s `slip()` proc with the component's variables as arguments. Additionally calls the parent's `after_slip()` proc on the `victim`. diff --git a/code/datums/components/spawner.dm b/code/datums/components/spawner.dm index 9780db16407..b1d6e867975 100644 --- a/code/datums/components/spawner.dm +++ b/code/datums/components/spawner.dm @@ -39,7 +39,7 @@ /datum/component/spawner/proc/try_spawn_mob() var/atom/P = parent - if(spawned_mobs.len >= max_mobs) + if(length(spawned_mobs) >= max_mobs) return 0 if(spawn_delay > world.time) return 0 diff --git a/code/datums/components/swarming.dm b/code/datums/components/swarming.dm index ac81ea6aefa..928589fbaaa 100644 --- a/code/datums/components/swarming.dm +++ b/code/datums/components/swarming.dm @@ -17,7 +17,7 @@ for(var/other in swarm_members) var/datum/component/swarming/other_swarm = other other_swarm.swarm_members -= src - if(!other_swarm.swarm_members.len) + if(!length(other_swarm.swarm_members)) other_swarm.unswarm() swarm_members = null return ..() @@ -36,10 +36,10 @@ if(!other_swarm || !(other_swarm in swarm_members)) return swarm_members -= other_swarm - if(!swarm_members.len) + if(!length(swarm_members)) unswarm() other_swarm.swarm_members -= src - if(!other_swarm.swarm_members.len) + if(!length(other_swarm.swarm_members)) other_swarm.unswarm() /datum/component/swarming/proc/swarm() diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index e74385de46c..c56c4a1e275 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -15,7 +15,7 @@ using /datum/datacore/proc/manifest_inject(), or manifest_insert() GLOBAL_LIST_EMPTY(PDA_Manifest) /datum/datacore/proc/get_manifest_json() - if(GLOB.PDA_Manifest.len) + if(length(GLOB.PDA_Manifest)) return var/heads[0] var/sec[0] @@ -38,44 +38,44 @@ GLOBAL_LIST_EMPTY(PDA_Manifest) heads[++heads.len] = list("name" = name, "rank" = rank, "active" = isactive) department = 1 depthead = 1 - if(rank == "Captain" && heads.len != 1) - heads.Swap(1, heads.len) + if(rank == "Captain" && length(heads) != 1) + heads.Swap(1, length(heads)) if(real_rank in GLOB.active_security_positions) sec[++sec.len] = list("name" = name, "rank" = rank, "active" = isactive) department = 1 - if(depthead && sec.len != 1) - sec.Swap(1, sec.len) + if(depthead && length(sec) != 1) + sec.Swap(1, length(sec)) if(real_rank in GLOB.engineering_positions) eng[++eng.len] = list("name" = name, "rank" = rank, "active" = isactive) department = 1 - if(depthead && eng.len != 1) - eng.Swap(1, eng.len) + if(depthead && length(eng) != 1) + eng.Swap(1, length(eng)) if(real_rank in GLOB.medical_positions) med[++med.len] = list("name" = name, "rank" = rank, "active" = isactive) department = 1 - if(depthead && med.len != 1) - med.Swap(1, med.len) + if(depthead && length(med) != 1) + med.Swap(1, length(med)) if(real_rank in GLOB.science_positions) sci[++sci.len] = list("name" = name, "rank" = rank, "active" = isactive) department = 1 - if(depthead && sci.len != 1) - sci.Swap(1, sci.len) + if(depthead && length(sci) != 1) + sci.Swap(1, length(sci)) if(real_rank in GLOB.service_positions) ser[++ser.len] = list("name" = name, "rank" = rank, "active" = isactive) department = 1 - if(depthead && ser.len != 1) - ser.Swap(1, ser.len) + if(depthead && length(ser) != 1) + ser.Swap(1, length(ser)) if(real_rank in GLOB.supply_positions) sup[++sup.len] = list("name" = name, "rank" = rank, "active" = isactive) department = 1 - if(depthead && sup.len != 1) - sup.Swap(1, sup.len) + if(depthead && length(sup) != 1) + sup.Swap(1, length(sup)) if(real_rank in GLOB.nonhuman_positions) bot[++bot.len] = list("name" = name, "rank" = rank, "active" = isactive) @@ -105,7 +105,7 @@ GLOBAL_LIST_EMPTY(PDA_Manifest) manifest_inject(H) /datum/datacore/proc/manifest_modify(name, assignment) - if(GLOB.PDA_Manifest.len) + if(length(GLOB.PDA_Manifest)) GLOB.PDA_Manifest.Cut() var/datum/data/record/foundrecord var/real_title = assignment @@ -137,7 +137,7 @@ GLOBAL_LIST_EMPTY(PDA_Manifest) GLOBAL_VAR_INIT(record_id_num, 1001) /datum/datacore/proc/manifest_inject(mob/living/carbon/human/H) - if(GLOB.PDA_Manifest.len) + if(length(GLOB.PDA_Manifest)) GLOB.PDA_Manifest.Cut() if(H.mind && (H.mind.assigned_role != H.mind.special_role)) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index 5483b5a4c21..9abedd63a0d 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -225,7 +225,7 @@ var/list/variable_html = list() if(islist) var/list/L = D - for(var/i in 1 to L.len) + for(var/i in 1 to length(L)) var/key = L[i] var/value if(IS_NORMAL_LIST(L) && !isnum(key)) @@ -511,8 +511,8 @@ var/list/L = value var/list/items = list() - if(L.len > 0 && !(name == "underlays" || name == "overlays" || name == "vars" || L.len > (IS_NORMAL_LIST(L) ? 250 : 300))) - for(var/i in 1 to L.len) + if(length(L) > 0 && !(name == "underlays" || name == "overlays" || name == "vars" || length(L) > (IS_NORMAL_LIST(L) ? 250 : 300))) + for(var/i in 1 to length(L)) var/key = L[i] var/val if(IS_NORMAL_LIST(L) && !isnum(key)) @@ -523,10 +523,10 @@ items += debug_variable(key, val, level + 1, sanitize = sanitize) - item = "[VV_HTML_ENCODE(name)] = /list ([L.len])
    [items.Join()]
" + item = "[VV_HTML_ENCODE(name)] = /list ([length(L)])
    [items.Join()]
" else - item = "[VV_HTML_ENCODE(name)] = /list ([L.len])" + item = "[VV_HTML_ENCODE(name)] = /list ([length(L)])" else item = "[VV_HTML_ENCODE(name)] = [VV_HTML_ENCODE(value)]" @@ -1049,7 +1049,7 @@ to_chat(usr, "This can only be done to instances of type /mob") return - if(!H.languages.len) + if(!length(H.languages)) to_chat(usr, "This mob knows no languages.") return @@ -1400,9 +1400,9 @@ return TRUE L.len = value["value"] - log_world("### ListVarEdit by [src]: /list len: [L.len]") - log_admin("[key_name(src)] modified list's len: [L.len]") - message_admins("[key_name_admin(src)] modified list's len: [L.len]") + log_world("### ListVarEdit by [src]: /list len: [length(L)]") + log_admin("[key_name(src)] modified list's len: [length(L)]") + message_admins("[key_name_admin(src)] modified list's len: [length(L)]") return TRUE if(href_list["listshuffle"]) diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index 0675cdf52bf..ccfabbd9a88 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -49,9 +49,9 @@ GLOBAL_LIST_INIT(advance_cures, list( D = null // Generate symptoms if we weren't given any. - if(!symptoms || !symptoms.len) + if(!symptoms || !length(symptoms)) - if(!D || !D.symptoms || !D.symptoms.len) + if(!D || !D.symptoms || !length(D.symptoms)) symptoms = GenerateSymptoms(0, 2) else for(var/datum/symptom/S in D.symptoms) @@ -71,7 +71,7 @@ GLOBAL_LIST_INIT(advance_cures, list( /datum/disease/advance/stage_act() if(!..()) return FALSE - if(symptoms && symptoms.len) + if(symptoms && length(symptoms)) if(!processing) processing = TRUE @@ -162,7 +162,7 @@ GLOBAL_LIST_INIT(advance_cures, list( if(!HasSymptom(S)) possible_symptoms += S - if(!possible_symptoms.len) + if(!length(possible_symptoms)) return generated // Random chance to get more than one symptom @@ -172,7 +172,7 @@ GLOBAL_LIST_INIT(advance_cures, list( while(prob(20)) number_of += 1 - for(var/i = 1; number_of >= i && possible_symptoms.len; i++) + for(var/i = 1; number_of >= i && length(possible_symptoms); i++) generated += pick_n_take(possible_symptoms) return generated @@ -194,7 +194,7 @@ GLOBAL_LIST_INIT(advance_cures, list( //Generate disease properties based on the effects. Returns an associated list. /datum/disease/advance/proc/GenerateProperties() - if(!symptoms || !symptoms.len) + if(!symptoms || !length(symptoms)) CRASH("We did not have any symptoms before generating properties.") var/list/properties = list("resistance" = 1, "stealth" = 0, "stage rate" = 1, "transmittable" = 1, "severity" = 0) @@ -212,7 +212,7 @@ GLOBAL_LIST_INIT(advance_cures, list( // Assign the properties that are in the list. /datum/disease/advance/proc/AssignProperties(list/properties = list()) - if(properties && properties.len) + if(properties && length(properties)) switch(properties["stealth"]) if(2) visibility_flags = HIDDEN_SCANNER @@ -220,7 +220,7 @@ GLOBAL_LIST_INIT(advance_cures, list( visibility_flags = HIDDEN_SCANNER|HIDDEN_PANDEMIC // The more symptoms we have, the less transmittable it is but some symptoms can make up for it. - SetSpread(clamp(2 ** (properties["transmittable"] - symptoms.len), BLOOD, AIRBORNE)) + SetSpread(clamp(2 ** (properties["transmittable"] - length(symptoms)), BLOOD, AIRBORNE)) permeability_mod = max(CEILING(0.4 * properties["transmittable"], 1), 1) cure_chance = 15 - clamp(properties["resistance"], -5, 5) // can be between 10 and 20 stage_prob = max(properties["stage rate"], 2) @@ -266,8 +266,8 @@ GLOBAL_LIST_INIT(advance_cures, list( // Will generate a random cure, the less resistance the symptoms have, the harder the cure. /datum/disease/advance/proc/GenerateCure(list/properties = list()) - if(properties && properties.len) - var/res = clamp(properties["resistance"] - (symptoms.len / 2), 1, GLOB.advance_cures.len) + if(properties && length(properties)) + var/res = clamp(properties["resistance"] - (length(symptoms) / 2), 1, length(GLOB.advance_cures)) // to_chat(world, "Res = [res]") cures = list(GLOB.advance_cures[res]) @@ -288,7 +288,7 @@ GLOBAL_LIST_INIT(advance_cures, list( // Randomly remove a symptom. /datum/disease/advance/proc/Devolve() - if(symptoms.len > 1) + if(length(symptoms) > 1) var/s = safepick(symptoms) if(s) RemoveSymptom(s) @@ -319,7 +319,7 @@ GLOBAL_LIST_INIT(advance_cures, list( if(HasSymptom(S)) return - if(symptoms.len < (VIRUS_SYMPTOM_LIMIT - 1) + rand(-1, 1)) + if(length(symptoms) < (VIRUS_SYMPTOM_LIMIT - 1) + rand(-1, 1)) symptoms += S else RemoveSymptom(pick(symptoms)) @@ -347,14 +347,14 @@ GLOBAL_LIST_INIT(advance_cures, list( for(var/datum/disease/advance/A in D_list) diseases += A.Copy() - if(!diseases.len) + if(!length(diseases)) return null - if(diseases.len <= 1) + if(length(diseases) <= 1) return pick(diseases) // Just return the only entry. var/i = 0 // Mix our diseases until we are left with only one result. - while(i < 20 && diseases.len > 1) + while(i < 20 && length(diseases) > 1) i++ @@ -377,7 +377,7 @@ GLOBAL_LIST_INIT(advance_cures, list( for(var/datum/disease/A in data["viruses"]) preserve += A.Copy() R.data = data.Copy() - if(preserve.len) + if(length(preserve)) R.data["viruses"] = preserve /proc/AdminCreateVirus(client/user) @@ -407,7 +407,7 @@ GLOBAL_LIST_INIT(advance_cures, list( i -= 1 while(i > 0) - if(D.symptoms.len > 0) + if(length(D.symptoms) > 0) var/new_name = stripped_input(user, "Name your new disease.", "New Name") if(!new_name) diff --git a/code/datums/diseases/advance/symptoms/damage_converter.dm b/code/datums/diseases/advance/symptoms/damage_converter.dm index 9b5fcf6981f..9d8c47451f8 100644 --- a/code/datums/diseases/advance/symptoms/damage_converter.dm +++ b/code/datums/diseases/advance/symptoms/damage_converter.dm @@ -42,7 +42,7 @@ Bonus var/list/parts = H.get_damaged_organs(TRUE, TRUE, AFFECT_ORGANIC_ORGAN) //1,1 because it needs inputs. - if(!parts.len) + if(!length(parts)) return var/healed = 0 for(var/obj/item/organ/external/E in parts) diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index ddec1008c4c..c6e68cd3f28 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -82,7 +82,7 @@ Bonus // Remove all the diseases we cured. var/mob/living/M = A.affected_mob if(istype(M)) - if(cured_diseases.len) + if(length(cured_diseases)) for(var/res in M.resistances) if(res in cured_diseases) M.resistances -= res diff --git a/code/datums/diseases/advance/symptoms/symptoms.dm b/code/datums/diseases/advance/symptoms/symptoms.dm index 8f72de7f599..454f71fc8bf 100644 --- a/code/datums/diseases/advance/symptoms/symptoms.dm +++ b/code/datums/diseases/advance/symptoms/symptoms.dm @@ -18,7 +18,7 @@ GLOBAL_LIST_INIT(list_symptoms, subtypesof(/datum/symptom)) /datum/symptom/New() var/list/S = GLOB.list_symptoms - for(var/i = 1; i <= S.len; i++) + for(var/i = 1; i <= length(S); i++) if(type == S[i]) id = "[i]" return diff --git a/code/datums/helper_datums/async_input.dm b/code/datums/helper_datums/async_input.dm index e25fd0ac3e0..35c9b715e41 100644 --- a/code/datums/helper_datums/async_input.dm +++ b/code/datums/helper_datums/async_input.dm @@ -110,11 +110,11 @@ /datum/async_input/ranked/render_choices() var/dat = "
" dat += "" - for(var/i = 1, i <= choices.len, i++) + for(var/i = 1, i <= length(choices), i++) var/choice = choices[i] dat += "" dat += "" - dat += "" + dat += "" dat += "" dat += "" dat += "
[button("+", i != 1 ? "upvote=[i]" : "", null, i == 1)][button("-", i != choices.len ? "downvote=[i]" : "", null, i == choices.len)][button("-", i != length(choices) ? "downvote=[i]" : "", null, i == length(choices))][i]. [choice]
" @@ -157,7 +157,7 @@ ..() popup.add_script("autocomplete.js", 'html/browser/autocomplete.js') - for(var/i=1, i <= choices.len, i++) + for(var/i=1, i <= length(choices), i++) var/C = choices[choices[i]] choices[i] = url_encode(choices[i], TRUE) choices[choices[i]] = C diff --git a/code/datums/helper_datums/construction_datum.dm b/code/datums/helper_datums/construction_datum.dm index 5b534b848b9..9d74a79bae2 100644 --- a/code/datums/helper_datums/construction_datum.dm +++ b/code/datums/helper_datums/construction_datum.dm @@ -14,15 +14,15 @@ if(!holder) //don't want this without a holder spawn qdel(src) - set_desc(steps.len) + set_desc(length(steps)) return /datum/construction/proc/next_step(mob/user as mob) steps.len-- - if(!steps.len) + if(!length(steps)) spawn_result(user) else - set_desc(steps.len) + set_desc(length(steps)) return /datum/construction/proc/action(atom/used_atom,mob/user as mob) @@ -37,9 +37,9 @@ return 0 /datum/construction/proc/is_right_key(atom/used_atom) // returns current step num if used_atom is of the right type. - var/list/L = steps[steps.len] + var/list/L = steps[length(steps)] if(do_tool_or_atom_check(used_atom, L["key"])) - return steps.len + return length(steps) return 0 @@ -67,12 +67,12 @@ return 1 /datum/construction/proc/check_all_steps(atom/used_atom,mob/user as mob) //check all steps, remove matching one. - for(var/i=1;i<=steps.len;i++) + for(var/i=1;i<=length(steps);i++) var/list/L = steps[i] if(do_tool_or_atom_check(used_atom, L["key"]) && custom_action(i, used_atom, user)) steps[i]=null;//stupid byond list from list removal... listclearnulls(steps) - if(!steps.len) + if(!length(steps)) spawn_result(user) return 1 return 0 @@ -130,7 +130,7 @@ /datum/construction/reversible/New(atom) ..() - index = steps.len + index = length(steps) return /datum/construction/reversible/proc/update_index(diff as num, mob/user as mob) diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index ec374b634e1..e599974ad1a 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -205,7 +205,7 @@ precision = rand(1, 100) var/list/bagholding = teleatom.search_contents_for(/obj/item/storage/backpack/holding) - if(bagholding.len) + if(length(bagholding)) if(safe_turf_first) //If this is true, this is already a random teleport. Make it unsafe but do not touch the precision. safe_turf_first = FALSE else diff --git a/code/datums/holocall.dm b/code/datums/holocall.dm index bf93b4039be..e7fc3faef51 100644 --- a/code/datums/holocall.dm +++ b/code/datums/holocall.dm @@ -34,7 +34,7 @@ LAZYADD(H.holo_calls, src) H.atom_say("[area] pad beeps: Incoming call from [caller]!") - if(!dialed_holopads.len) + if(!length(dialed_holopads)) calling_holopad.atom_say("Connection failure.") qdel(src) return @@ -105,7 +105,7 @@ LAZYREMOVE(H.holo_calls, src) dialed_holopads -= H - if(!dialed_holopads.len) + if(!length(dialed_holopads)) if(graceful) calling_holopad.atom_say("Call rejected.") qdel(src) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index f5d05098240..73608ba323e 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -485,12 +485,12 @@ if(istype(robot) && robot.emagged) . += "
Cyborg: Is emagged! Unemag!
0th law: [robot.laws.zeroth_law]" var/mob/living/silicon/ai/ai = current - if(istype(ai) && ai.connected_robots.len) + if(istype(ai) && length(ai.connected_robots)) var/n_e_robots = 0 for(var/mob/living/silicon/robot/R in ai.connected_robots) if(R.emagged) n_e_robots++ - . += "
[n_e_robots] of [ai.connected_robots.len] slaved cyborgs are emagged. Unemag" + . += "
[n_e_robots] of [length(ai.connected_robots)] slaved cyborgs are emagged. Unemag" /datum/mind/proc/memory_edit_uplink() . = "" @@ -685,7 +685,7 @@ if("destroy") var/list/possible_targets = active_ais(1) - if(possible_targets.len) + if(length(possible_targets)) var/mob/new_target = input("Select target:", "Objective target") as null|anything in possible_targets new_objective = new /datum/objective/destroy new_objective.target = new_target.mind @@ -1104,10 +1104,10 @@ if(!(src in SSticker.mode.syndicates)) SSticker.mode.syndicates += src SSticker.mode.update_synd_icons_added(src) - if(SSticker.mode.syndicates.len==1) + if(length(SSticker.mode.syndicates) == 1) SSticker.mode.prepare_syndicate_leader(src) else - current.real_name = "[syndicate_name()] Operative #[SSticker.mode.syndicates.len-1]" + current.real_name = "[syndicate_name()] Operative #[length(SSticker.mode.syndicates) - 1]" special_role = SPECIAL_ROLE_NUKEOPS to_chat(current, "You are a [syndicate_name()] agent!") SSticker.mode.forge_syndicate_objectives(src) @@ -1134,7 +1134,7 @@ if(!SSticker.mode.equip_syndicate(current)) to_chat(usr, "Equipping a syndicate failed!") return - SSticker.mode.update_syndicate_id(current.mind, SSticker.mode.syndicates.len == 1) + SSticker.mode.update_syndicate_id(current.mind, length(SSticker.mode.syndicates) == 1) log_admin("[key_name(usr)] has equipped [key_name(current)] as a nuclear operative") message_admins("[key_name_admin(usr)] has equipped [key_name_admin(current)] as a nuclear operative") @@ -1593,10 +1593,10 @@ if(!(src in SSticker.mode.syndicates)) SSticker.mode.syndicates += src SSticker.mode.update_synd_icons_added(src) - if(SSticker.mode.syndicates.len==1) + if(length(SSticker.mode.syndicates) == 1) SSticker.mode.prepare_syndicate_leader(src) else - current.real_name = "[syndicate_name()] Operative #[SSticker.mode.syndicates.len-1]" + current.real_name = "[syndicate_name()] Operative #[length(SSticker.mode.syndicates) - 1]" special_role = SPECIAL_ROLE_NUKEOPS assigned_role = SPECIAL_ROLE_NUKEOPS to_chat(current, "You are a [syndicate_name()] agent!") diff --git a/code/datums/outfits/vv_outfit.dm b/code/datums/outfits/vv_outfit.dm index c211e1001c1..36401cb41fd 100644 --- a/code/datums/outfits/vv_outfit.dm +++ b/code/datums/outfits/vv_outfit.dm @@ -182,7 +182,7 @@ for(var/edit in vedits) if(istext(vedits[edit]) || isnum(vedits[edit]) || isnull(vedits[edit])) stripped_edits[edit] = vedits[edit] - if(stripped_edits.len) + if(length(stripped_edits)) stripped_vv[slot] = stripped_edits .["vv_values"] = stripped_vv diff --git a/code/datums/progressbar.dm b/code/datums/progressbar.dm index 3efc5b1e094..aecbe44d2d2 100644 --- a/code/datums/progressbar.dm +++ b/code/datums/progressbar.dm @@ -26,7 +26,7 @@ LAZYINITLIST(user.progressbars[bar.loc]) var/list/bars = user.progressbars[bar.loc] bars.Add(src) - listindex = bars.len + listindex = length(bars) animate(bar, pixel_y = 32 + (PROGRESSBAR_HEIGHT * (listindex - 1)), alpha = 255, time = 5, easing = SINE_EASING) /datum/progressbar/proc/update(progress) @@ -58,7 +58,7 @@ var/list/bars = user.progressbars[bar.loc] bars.Remove(src) - if(!bars.len) + if(!length(bars)) LAZYREMOVE(user.progressbars, bar.loc) animate(bar, alpha = 0, time = 5) spawn(5) diff --git a/code/datums/radiation_wave.dm b/code/datums/radiation_wave.dm index c7ff5d74af5..19533fd7ebb 100644 --- a/code/datums/radiation_wave.dm +++ b/code/datums/radiation_wave.dm @@ -90,7 +90,7 @@ width-- width = 1 + (2 * width) - for(var/k in 1 to atoms.len) + for(var/k in 1 to length(atoms)) var/atom/thing = atoms[k] if(!thing) continue diff --git a/code/datums/radio_frequency.dm b/code/datums/radio_frequency.dm index 71e891ed3ce..89ffaebf1bc 100644 --- a/code/datums/radio_frequency.dm +++ b/code/datums/radio_frequency.dm @@ -47,9 +47,9 @@ return devices_line += device // var/list/obj/devices_line___ = devices[filter_str] -// var/l = devices_line___.len - //log_admin("DEBUG: devices_line.len=[devices_line.len]") - //log_admin("DEBUG: devices(filter_str).len=[l]") +// var/l = length(devices_line___) + //log_admin("DEBUG: length(devices_line)=[length(devices_line)]") + //log_admin("DEBUG: length(devices(filter_str))=[l]") /datum/radio_frequency/proc/remove_listener(obj/device) for(var/devices_filter in devices) @@ -57,7 +57,7 @@ devices_line-=device while(null in devices_line) devices_line -= null - if(devices_line.len==0) + if(length(devices_line) == 0) devices -= devices_filter qdel(devices_line) diff --git a/code/datums/recipe.dm b/code/datums/recipe.dm index 3582772446a..8fb79eed615 100644 --- a/code/datums/recipe.dm +++ b/code/datums/recipe.dm @@ -51,7 +51,7 @@ . = -1 else return 0 - if((reagents?(reagents.len):(0)) < avail_reagents.reagent_list.len) + if((reagents?(length(reagents)):(0)) < length(avail_reagents.reagent_list)) return -1 return . @@ -71,7 +71,7 @@ break if(!found) . = -1 - if(checklist.len) + if(length(checklist)) return 0 return . @@ -103,17 +103,17 @@ for(var/datum/recipe/recipe in available_recipes) if(recipe.check_reagents(obj.reagents) == exact && recipe.check_items(obj, ignored_items) == exact) possible_recipes += recipe - if(possible_recipes.len == 0) + if(length(possible_recipes) == 0) return null - else if(possible_recipes.len == 1) + else if(length(possible_recipes) == 1) return possible_recipes[1] else //okay, let's select the most complicated recipe var/r_count = 0 var/i_count = 0 . = possible_recipes[1] for(var/datum/recipe/recipe in possible_recipes) - var/N_i = (recipe.items)?(recipe.items.len):0 - var/N_r = (recipe.reagents)?(recipe.reagents.len):0 + var/N_i = (recipe.items)?(length(recipe.items)):0 + var/N_r = (recipe.reagents)?(length(recipe.reagents)):0 if(N_i > i_count || (N_i== i_count && N_r > r_count)) r_count = N_r i_count = N_i @@ -128,6 +128,6 @@ /datum/recipe/proc/count_n_items() var/count = 0 - if(items && items.len) - count += items.len + if(items && length(items)) + count += length(items) return count diff --git a/code/datums/spells/area_teleport.dm b/code/datums/spells/area_teleport.dm index b7d349b5a32..3cd160c1cc7 100644 --- a/code/datums/spells/area_teleport.dm +++ b/code/datums/spells/area_teleport.dm @@ -49,7 +49,7 @@ if(clear) L+=T - if(!L.len) + if(!length(L)) to_chat(usr, "The spell matrix was unable to locate a suitable teleport destination for an unknown reason. Sorry.") return @@ -62,7 +62,7 @@ var/list/tempL = L var/attempt = null var/success = 0 - while(tempL.len) + while(length(tempL)) attempt = pick(tempL) success = target.Move(attempt) if(!success) diff --git a/code/datums/spells/charge.dm b/code/datums/spells/charge.dm index be5c5a09b88..a35a923267b 100644 --- a/code/datums/spells/charge.dm +++ b/code/datums/spells/charge.dm @@ -20,7 +20,7 @@ if(L.pulling && (isliving(L.pulling))) var/mob/living/M = L.pulling - if(M.mob_spell_list.len != 0 || (M.mind && M.mind.spell_list.len != 0)) + if(length(M.mob_spell_list) != 0 || (M.mind && length(M.mind.spell_list) != 0)) for(var/datum/spell/S in M.mob_spell_list) S.cooldown_handler.revert_cast() if(M.mind) diff --git a/code/datums/spells/conjure.dm b/code/datums/spells/conjure.dm index 74f4a885e4d..048454fbbbf 100644 --- a/code/datums/spells/conjure.dm +++ b/code/datums/spells/conjure.dm @@ -30,7 +30,7 @@ if(delay <= 0 || do_after(user, delay, target = user)) for(var/i=0,iNo target found in range.") return diff --git a/code/datums/spells/lichdom.dm b/code/datums/spells/lichdom.dm index 30c0dd39ec4..68af16b3a79 100644 --- a/code/datums/spells/lichdom.dm +++ b/code/datums/spells/lichdom.dm @@ -13,22 +13,12 @@ var/marked_item_uid var/mob/living/current_body var/resurrections = 0 - var/existence_stops_round_end = FALSE action_icon_state = "skeleton" /datum/spell/lichdom/create_new_targeting() return new /datum/spell_targeting/self -/datum/spell/lichdom/Destroy() - for(var/datum/mind/M in SSticker.mode.wizards) //Make sure no other bones are about - for(var/datum/spell/S in M.spell_list) - if(istype(S,/datum/spell/lichdom) && S != src) - return ..() - if(existence_stops_round_end) - GLOB.configuration.gamemode.disable_certain_round_early_end = FALSE - return ..() - /datum/spell/lichdom/cast(list/targets, mob/user = usr) for(var/mob/M in targets) if(stat_allowed) @@ -89,7 +79,6 @@ lich.Weaken(stun_time) user.mind.transfer_to(lich) equip_lich(lich) - RegisterSignal(lich, list(COMSIG_PARENT_QDELETING, COMSIG_MOVABLE_Z_CHANGED), PROC_REF(check_revivability_handler)) current_body = lich cooldown_handler.recharge_duration += 1 MINUTES @@ -134,13 +123,8 @@ H.unEquip(H.head) equip_lich(H) - RegisterSignal(target, list(COMSIG_PARENT_QDELETING, COMSIG_MOVABLE_Z_CHANGED), PROC_REF(check_revivability_handler)) - RegisterSignal(current_body, list(COMSIG_PARENT_QDELETING, COMSIG_MOVABLE_Z_CHANGED), PROC_REF(check_revivability_handler)) to_chat(user, "With a hideous feeling of emptiness you watch in horrified fascination as skin sloughs off bone! Blood boils, nerves disintegrate, eyes boil in their sockets! As your organs crumble to dust in your fleshless chest you come to terms with your choice. You're a lich!") - existence_stops_round_end = TRUE - GLOB.configuration.gamemode.disable_certain_round_early_end = TRUE - /datum/spell/lichdom/proc/is_revive_possible() var/obj/item/marked_item = locateUID(marked_item_uid) if(QDELETED(marked_item)) @@ -153,23 +137,6 @@ return FALSE return TRUE -/datum/spell/lichdom/proc/check_revivability_handler() - SIGNAL_HANDLER - - // There are other liches about, so round may still continue - for(var/datum/mind/M in SSticker.mode.wizards) - for(var/datum/spell/lichdom/S in M.spell_list) - if(S == src) - continue - // Other lich can still revive - if(S.is_revive_possible()) - return - // Other lich is still alive - if(!QDELETED(S.current_body) && S.current_body.stat != DEAD) - return - - GLOB.configuration.gamemode.disable_certain_round_early_end = is_revive_possible() - /datum/spell/lichdom/proc/equip_lich(mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/black(H), SLOT_HUD_OUTER_SUIT) H.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/black(H), SLOT_HUD_HEAD) diff --git a/code/datums/spells/mind_transfer.dm b/code/datums/spells/mind_transfer.dm index ffefd1534a1..b980233a9cb 100644 --- a/code/datums/spells/mind_transfer.dm +++ b/code/datums/spells/mind_transfer.dm @@ -50,18 +50,18 @@ Also, you never added distance checking after target is selected. I've went ahea var/mob/living/caster = user//The wizard/whomever doing the body transferring. //MIND TRANSFER BEGIN - if(caster.mind.special_verbs.len)//If the caster had any special verbs, remove them from the mob verb list. + if(length(caster.mind.special_verbs))//If the caster had any special verbs, remove them from the mob verb list. for(var/V in caster.mind.special_verbs)//Since the caster is using an object spell system, this is mostly moot. remove_verb(caster, V) //But a safety nontheless. - if(victim.mind.special_verbs.len)//Now remove all of the victim's verbs. + if(length(victim.mind.special_verbs))//Now remove all of the victim's verbs. for(var/V in victim.mind.special_verbs) remove_verb(victim, V) var/mob/dead/observer/ghost = victim.ghostize(0) caster.mind.transfer_to(victim) - if(victim.mind.special_verbs.len)//To add all the special verbs for the original caster. + if(length(victim.mind.special_verbs))//To add all the special verbs for the original caster. for(var/V in caster.mind.special_verbs)//Not too important but could come into play. add_verb(caster, V) @@ -71,7 +71,7 @@ Also, you never added distance checking after target is selected. I've went ahea caster.key = ghost.key //have to transfer the key since the mind was not active qdel(ghost) - if(caster.mind.special_verbs.len)//If they had any special verbs, we add them here. + if(length(caster.mind.special_verbs))//If they had any special verbs, we add them here. for(var/V in caster.mind.special_verbs) add_verb(caster, V) //MIND TRANSFER END diff --git a/code/datums/spells/turf_teleport.dm b/code/datums/spells/turf_teleport.dm index 936d4c3fda9..ac20dea2ae8 100644 --- a/code/datums/spells/turf_teleport.dm +++ b/code/datums/spells/turf_teleport.dm @@ -35,7 +35,7 @@ continue turfs += T - if(!turfs.len) + if(!length(turfs)) var/list/turfs_to_pick_from = list() for(var/turf/T in orange(target,outer_tele_radius)) if(!(T in orange(target,inner_tele_radius))) diff --git a/code/datums/uplink_items/uplink_general.dm b/code/datums/uplink_items/uplink_general.dm index 7f36a727544..21bea123b93 100644 --- a/code/datums/uplink_items/uplink_general.dm +++ b/code/datums/uplink_items/uplink_general.dm @@ -6,7 +6,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) var/list/uplink_items = list() var/list/sales_items = list() var/newreference = 1 - if(!uplink_items.len) + if(!length(uplink_items)) var/list/last = list() for(var/path in GLOB.uplink_items) diff --git a/code/datums/weather/weather_types/ash_storm.dm b/code/datums/weather/weather_types/ash_storm.dm index 0c1407e8aed..636dbb3dc60 100644 --- a/code/datums/weather/weather_types/ash_storm.dm +++ b/code/datums/weather/weather_types/ash_storm.dm @@ -54,7 +54,7 @@ if(!golemShuttleOnPlanet) eligible_areas -= get_areas(/area/shuttle/freegolem) - for(var/i in 1 to eligible_areas.len) + for(var/i in 1 to length(eligible_areas)) var/area/place = eligible_areas[i] if(place.outdoors) outside_areas += place diff --git a/code/game/alternate_appearance.dm b/code/game/alternate_appearance.dm index 4e6c0b052de..b7cdb4f8d55 100644 --- a/code/game/alternate_appearance.dm +++ b/code/game/alternate_appearance.dm @@ -23,7 +23,7 @@ displayTo - a list of MOBS to show this appearance to */ /datum/alternate_appearance/proc/display_to(list/displayTo) - if(!displayTo || !displayTo.len) + if(!displayTo || !length(displayTo)) return for(var/m in displayTo) var/mob/M = m @@ -47,7 +47,7 @@ var/mob/M = m if(M.client) M.client.images -= img - if(M.viewing_alternate_appearances && M.viewing_alternate_appearances.len) + if(M.viewing_alternate_appearances && length(M.viewing_alternate_appearances)) M.viewing_alternate_appearances -= src viewers -= M @@ -94,7 +94,7 @@ if(alternate_appearances[key]) qdel(alternate_appearances[key]) alternate_appearances[key] = AA - if(displayTo && displayTo.len) + if(displayTo && length(displayTo)) display_alt_appearance(key, displayTo) diff --git a/code/game/area/areas/depot-areas.dm b/code/game/area/areas/depot-areas.dm index 8831d808981..b9e045e1d45 100644 --- a/code/game/area/areas/depot-areas.dm +++ b/code/game/area/areas/depot-areas.dm @@ -133,7 +133,7 @@ /area/syndicate_depot/core/proc/armory_locker_looted() if(!run_finished && !used_self_destruct) - if(shield_list.len) + if(length(shield_list)) activate_self_destruct("Armory compromised despite armory shield being online.", FALSE) return declare_finished() @@ -221,7 +221,7 @@ var/obj/effect/landmark/L = thing if(L.name == "syndi_depot_bot") possible_bot_spawns |= L - if(possible_bot_spawns.len) + if(length(possible_bot_spawns)) var/obj/effect/landmark/S = pick(possible_bot_spawns) new /obj/effect/portal(get_turf(S)) var/mob/living/simple_animal/bot/ed209/syndicate/B = new /mob/living/simple_animal/bot/ed209/syndicate(get_turf(S)) @@ -345,7 +345,7 @@ SEND_SOUND(R, sound('sound/misc/notice1.ogg')) /area/syndicate_depot/core/proc/shields_up() - if(shield_list.len) + if(length(shield_list)) return for(var/thing in GLOB.landmarks_list) var/obj/effect/landmark/L = thing @@ -362,7 +362,7 @@ A.lock() /area/syndicate_depot/core/proc/shields_key_check() - if(!shield_list.len) + if(!length(shield_list)) return if(detected_mech || detected_pod || detected_double_agent) return @@ -485,7 +485,7 @@ var/list/shield_list = list() /area/syndicate_depot/perimeter/proc/perimeter_shields_up() - if(shield_list.len) + if(length(shield_list)) return for(var/turf/T in src) var/obj/machinery/shieldwall/syndicate/S = new /obj/machinery/shieldwall/syndicate(T) diff --git a/code/game/area/ss13_areas/public_areas.dm b/code/game/area/ss13_areas/public_areas.dm index f5c9408384e..7fc9f292263 100644 --- a/code/game/area/ss13_areas/public_areas.dm +++ b/code/game/area/ss13_areas/public_areas.dm @@ -245,3 +245,9 @@ /area/station/public/quantum/cargo name = "Cargo Quantum Pad" + +/area/station/public/quantum/service + name = "Service Quantum Pad" + +/area/station/public/quantum/medbay + name = "Medbay Quantum Pad" diff --git a/code/game/atoms.dm b/code/game/atoms.dm index c76d3d6d7f8..996ba8dd2f6 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -368,7 +368,7 @@ pass |= istype(A, type) if(!pass) continue - if(A.contents.len) + if(length(A.contents)) found += A.search_contents_for(path, filter_path) return found @@ -393,13 +393,13 @@ if(reagents) if(container_type & TRANSPARENT) . += "It contains:" - if(reagents.reagent_list.len) + if(length(reagents.reagent_list)) if(user.can_see_reagents()) //Show each individual reagent for(var/I in reagents.reagent_list) var/datum/reagent/R = I . += "[R.volume] units of [R.name]" else //Otherwise, just show the total volume - if(reagents && reagents.reagent_list.len) + if(reagents && length(reagents.reagent_list)) . += "[reagents.total_volume] units of various reagents." else . += "Nothing." @@ -845,9 +845,9 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons) /atom/proc/transfer_blood_dna(list/blood_dna) if(!blood_DNA) blood_DNA = list() - var/old_length = blood_DNA.len + var/old_length = length(blood_DNA) blood_DNA |= blood_dna - if(blood_DNA.len > old_length) + if(length(blood_DNA) > old_length) return TRUE//some new blood DNA was added //to add blood from a mob onto something, and transfer their dna info @@ -1027,7 +1027,7 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons) var/cur_x = null var/cur_y = null var/list/y_arr = null - for(cur_x in 1 to GLOB.global_map.len) + for(cur_x in 1 to length(GLOB.global_map)) y_arr = GLOB.global_map[cur_x] cur_y = y_arr.Find(src.z) if(cur_y) @@ -1155,12 +1155,12 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons) Adds an instance of colour_type to the atom's atom_colours list */ /atom/proc/add_atom_colour(coloration, colour_priority) - if(!atom_colours || !atom_colours.len) + if(!atom_colours || !length(atom_colours)) atom_colours = list() atom_colours.len = COLOUR_PRIORITY_AMOUNT //four priority levels currently. if(!coloration) return - if(colour_priority > atom_colours.len) + if(colour_priority > length(atom_colours)) return atom_colours[colour_priority] = coloration update_atom_colour() @@ -1172,7 +1172,7 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons) if(!atom_colours) atom_colours = list() atom_colours.len = COLOUR_PRIORITY_AMOUNT //four priority levels currently. - if(colour_priority > atom_colours.len) + if(colour_priority > length(atom_colours)) return if(coloration && atom_colours[colour_priority] != coloration) return //if we don't have the expected color (for a specific priority) to remove, do nothing @@ -1191,7 +1191,7 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons) for(var/C in atom_colours) if(islist(C)) var/list/L = C - if(L.len) + if(length(L)) color = L return else if(C) diff --git a/code/game/dna/dna2.dm b/code/game/dna/dna2.dm index 090aa51320f..86d0448bbac 100644 --- a/code/game/dna/dna2.dm +++ b/code/game/dna/dna2.dm @@ -126,9 +126,9 @@ GLOBAL_LIST_EMPTY(bad_blocks) SetUIValueRange(DNA_UI_SKIN_TONE, 35-character.s_tone, 220, 1) // Value can be negative. - SetUIValueRange(DNA_UI_HEAD_MARK_STYLE, head_marks, GLOB.marking_styles_list.len, 1) - SetUIValueRange(DNA_UI_BODY_MARK_STYLE, body_marks, GLOB.marking_styles_list.len, 1) - SetUIValueRange(DNA_UI_TAIL_MARK_STYLE, tail_marks, GLOB.marking_styles_list.len, 1) + SetUIValueRange(DNA_UI_HEAD_MARK_STYLE, head_marks, length(GLOB.marking_styles_list), 1) + SetUIValueRange(DNA_UI_BODY_MARK_STYLE, body_marks, length(GLOB.marking_styles_list), 1) + SetUIValueRange(DNA_UI_TAIL_MARK_STYLE, tail_marks, length(GLOB.marking_styles_list), 1) SetUIValueRange(DNA_UI_PHYSIQUE, GLOB.character_physiques.Find(character.physique), length(GLOB.character_physiques), 1) SetUIValueRange(DNA_UI_HEIGHT, GLOB.character_heights.Find(character.height), length(GLOB.character_heights), 1) @@ -393,7 +393,7 @@ GLOBAL_LIST_EMPTY(bad_blocks) // Just checks our character has all the crap it needs. /datum/dna/proc/check_integrity(mob/living/carbon/human/character) if(character) - if(UI.len != DNA_UI_LENGTH) + if(length(UI) != DNA_UI_LENGTH) ResetUIFrom(character) if(length(struc_enzymes)!= 3 * DNA_SE_LENGTH) diff --git a/code/game/dna/dna2_helpers.dm b/code/game/dna/dna2_helpers.dm index e8008e25ba9..b3de3a92f38 100644 --- a/code/game/dna/dna2_helpers.dm +++ b/code/game/dna/dna2_helpers.dm @@ -163,16 +163,16 @@ H.change_gender(PLURAL, FALSE) //Head Markings - var/head_marks = dna.GetUIValueRange(DNA_UI_HEAD_MARK_STYLE, GLOB.marking_styles_list.len) - if((head_marks > 0) && (head_marks <= GLOB.marking_styles_list.len)) + var/head_marks = dna.GetUIValueRange(DNA_UI_HEAD_MARK_STYLE, length(GLOB.marking_styles_list)) + if((head_marks > 0) && (head_marks <= length(GLOB.marking_styles_list))) H.m_styles["head"] = GLOB.marking_styles_list[head_marks] //Body Markings - var/body_marks = dna.GetUIValueRange(DNA_UI_BODY_MARK_STYLE, GLOB.marking_styles_list.len) - if((body_marks > 0) && (body_marks <= GLOB.marking_styles_list.len)) + var/body_marks = dna.GetUIValueRange(DNA_UI_BODY_MARK_STYLE, length(GLOB.marking_styles_list)) + if((body_marks > 0) && (body_marks <= length(GLOB.marking_styles_list))) H.m_styles["body"] = GLOB.marking_styles_list[body_marks] //Tail Markings - var/tail_marks = dna.GetUIValueRange(DNA_UI_TAIL_MARK_STYLE, GLOB.marking_styles_list.len) - if((tail_marks > 0) && (tail_marks <= GLOB.marking_styles_list.len)) + var/tail_marks = dna.GetUIValueRange(DNA_UI_TAIL_MARK_STYLE, length(GLOB.marking_styles_list)) + if((tail_marks > 0) && (tail_marks <= length(GLOB.marking_styles_list))) H.m_styles["tail"] = GLOB.marking_styles_list[tail_marks] // Physique (examine fluff) @@ -207,8 +207,8 @@ /datum/dna/proc/write_head_attributes(obj/item/organ/external/head/head_organ) //Hair - var/hair = GetUIValueRange(DNA_UI_HAIR_STYLE,GLOB.hair_styles_full_list.len) - if((hair > 0) && (hair <= GLOB.hair_styles_full_list.len)) + var/hair = GetUIValueRange(DNA_UI_HAIR_STYLE,length(GLOB.hair_styles_full_list)) + if((hair > 0) && (hair <= length(GLOB.hair_styles_full_list))) head_organ.h_style = GLOB.hair_styles_full_list[hair] head_organ.hair_colour = rgb(head_organ.dna.GetUIValueRange(DNA_UI_HAIR_R, 255), head_organ.dna.GetUIValueRange(DNA_UI_HAIR_G, 255), head_organ.dna.GetUIValueRange(DNA_UI_HAIR_B, 255)) @@ -223,8 +223,8 @@ head_organ.h_grad_colour = rgb(head_organ.dna.GetUIValueRange(DNA_UI_HAIR_GRADIENT_R, 255), head_organ.dna.GetUIValueRange(DNA_UI_HAIR_GRADIENT_G, 255), head_organ.dna.GetUIValueRange(DNA_UI_HAIR_GRADIENT_B, 255)) //Facial Hair - var/beard = GetUIValueRange(DNA_UI_BEARD_STYLE,GLOB.facial_hair_styles_list.len) - if((beard > 0) && (beard <= GLOB.facial_hair_styles_list.len)) + var/beard = GetUIValueRange(DNA_UI_BEARD_STYLE,length(GLOB.facial_hair_styles_list)) + if((beard > 0) && (beard <= length(GLOB.facial_hair_styles_list))) head_organ.f_style = GLOB.facial_hair_styles_list[beard] head_organ.facial_colour = rgb(head_organ.dna.GetUIValueRange(DNA_UI_BEARD_R, 255), head_organ.dna.GetUIValueRange(DNA_UI_BEARD_G, 255), head_organ.dna.GetUIValueRange(DNA_UI_BEARD_B, 255)) @@ -308,8 +308,8 @@ SetUIValueRange(DNA_UI_HAIR_GRADIENT_X, head_organ.h_grad_offset_x + 16, 32, 1) SetUIValueRange(DNA_UI_HAIR_GRADIENT_Y, head_organ.h_grad_offset_y + 16, 32, 1) - SetUIValueRange(DNA_UI_HAIR_STYLE, hair, GLOB.hair_styles_full_list.len, 1) - SetUIValueRange(DNA_UI_BEARD_STYLE, beard, GLOB.facial_hair_styles_list.len, 1) + SetUIValueRange(DNA_UI_HAIR_STYLE, hair, length(GLOB.hair_styles_full_list), 1) + SetUIValueRange(DNA_UI_BEARD_STYLE, beard, length(GLOB.facial_hair_styles_list), 1) SetUIValueRange(DNA_UI_HAIR_GRADIENT_STYLE, gradient, length(GLOB.hair_gradients_list), 1) var/list/available = character.generate_valid_head_accessories() diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm index cfb8f17e08a..89b670b0975 100644 --- a/code/game/dna/dna_modifier.dm +++ b/code/game/dna/dna_modifier.dm @@ -351,7 +351,7 @@ /obj/machinery/computer/scan_consolenew/proc/all_dna_blocks(list/buffer) var/list/arr = list() - for(var/i = 1, i <= buffer.len, i++) + for(var/i = 1, i <= length(buffer), i++) arr += "[i]:[EncodeDNABlock(buffer[i])]" return arr @@ -468,7 +468,7 @@ data["beakerVolume"] = 0 if(connected.beaker) data["beakerLabel"] = connected.beaker.label_text ? connected.beaker.label_text : null - if(connected.beaker.reagents && connected.beaker.reagents.reagent_list.len) + if(length(connected.beaker.reagents.reagent_list)) for(var/datum/reagent/R in connected.beaker.reagents.reagent_list) data["beakerVolume"] += R.volume diff --git a/code/game/dna/mutations/disabilities.dm b/code/game/dna/mutations/disabilities.dm index f6b570d6f4d..c0140fcb7ca 100644 --- a/code/game/dna/mutations/disabilities.dm +++ b/code/game/dna/mutations/disabilities.dm @@ -435,7 +435,7 @@ var/list/words = splittext(message," ") var/list/rearranged = list() - for(var/i=1;i<=words.len;i++) + for(var/i=1;i<=length(words);i++) var/cword = pick(words) words.Remove(cword) var/suffix = copytext(cword,length(cword)-1,length(cword)) diff --git a/code/game/dna/mutations/mutation_powers.dm b/code/game/dna/mutations/mutation_powers.dm index 58a538d19af..463b3275786 100644 --- a/code/game/dna/mutations/mutation_powers.dm +++ b/code/game/dna/mutations/mutation_powers.dm @@ -391,7 +391,7 @@ /datum/spell/eat/cast(list/targets, mob/user = usr) - if(!targets.len) + if(!length(targets)) to_chat(user, "No target found in range.") return @@ -700,8 +700,8 @@ if(H.mind && H.mind.initial_account) numbers += H.mind.initial_account.account_number numbers += H.mind.initial_account.account_pin - if(numbers.len>0) - to_chat(user, "Numbers: You sense the number[numbers.len>1?"s":""] [english_list(numbers)] [numbers.len>1?"are":"is"] important to [M.name].") + if(length(numbers)>0) + to_chat(user, "Numbers: You sense the number[length(numbers)>1?"s":""] [english_list(numbers)] [length(numbers)>1?"are":"is"] important to [M.name].") to_chat(user, "Thoughts: [M.name] is currently [thoughts].") if(M.dna?.GetSEState(GLOB.empathblock)) @@ -867,10 +867,10 @@ M.change_skin_tone(new_tone) if(M.dna.species.bodyflags & HAS_ICON_SKIN_TONE) - var/prompt = "Please select skin tone: 1-[M.dna.species.icon_skin_tones.len] (" - for(var/i = 1 to M.dna.species.icon_skin_tones.len) + var/prompt = "Please select skin tone: 1-[length(M.dna.species.icon_skin_tones)] (" + for(var/i = 1 to length(M.dna.species.icon_skin_tones)) prompt += "[i] = [M.dna.species.icon_skin_tones[i]]" - if(i != M.dna.species.icon_skin_tones.len) + if(i != length(M.dna.species.icon_skin_tones)) prompt += ", " prompt += ")" @@ -878,7 +878,7 @@ if(!new_tone) new_tone = 0 else - new_tone = max(min(round(text2num(new_tone)), M.dna.species.icon_skin_tones.len), 1) + new_tone = max(min(round(text2num(new_tone)), length(M.dna.species.icon_skin_tones)), 1) M.change_skin_tone(new_tone) //Skin colour. diff --git a/code/game/gamemodes/autotraitor/autotraitor.dm b/code/game/gamemodes/autotraitor/autotraitor.dm index be7bf110aa3..371a90bdfab 100644 --- a/code/game/gamemodes/autotraitor/autotraitor.dm +++ b/code/game/gamemodes/autotraitor/autotraitor.dm @@ -32,7 +32,7 @@ traitor_prob = (num_players - (max_traitors - 1) * 10) * 10 // Stop setup if no possible traitors - if(!possible_traitors.len) + if(!length(possible_traitors)) return 0 if(GLOB.configuration.gamemode.traitor_scaling) @@ -56,7 +56,7 @@ traitor.special_role = SPECIAL_ROLE_TRAITOR traitor.restricted_roles = restricted_jobs -// if(!traitors.len) +// if(!length(traitors)) // return 0 return 1 @@ -120,7 +120,7 @@ if(prob(traitor_prob)) message_admins("Making a new Traitor.") - if(!possible_traitors.len) + if(!length(possible_traitors)) message_admins("No potential traitors. Cancelling new traitor.") traitorcheckloop() return diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index ae13b97766d..67eb21a8aae 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -481,7 +481,7 @@ goal_weights += initial(picked.weight) station_goals += new picked - if(station_goals.len) + if(length(station_goals)) send_station_goals_message() /datum/game_mode/proc/send_station_goals_message() diff --git a/code/game/gamemodes/intercept_report.dm b/code/game/gamemodes/intercept_report.dm index 61a3e945824..15aa4bd2ffd 100644 --- a/code/game/gamemodes/intercept_report.dm +++ b/code/game/gamemodes/intercept_report.dm @@ -93,7 +93,7 @@ if(!man.mind) continue if(man.mind.assigned_role == man.mind.special_role) continue dudes += man - if(dudes.len==0) + if(length(dudes)==0) return null return pick(dudes) @@ -119,7 +119,7 @@ if(man.dna.species.name in SSticker.mode.protected_species) return dudes += man - for(var/i = 0, i < max(GLOB.player_list.len/10,2), i++) + for(var/i = 0, i < max(length(GLOB.player_list)/10,2), i++) dudes += pick(GLOB.player_list) return pick(dudes) diff --git a/code/game/gamemodes/miniantags/abduction/abductee_objectives.dm b/code/game/gamemodes/miniantags/abduction/abductee_objectives.dm index e567f5e0d52..2502eb3e08d 100644 --- a/code/game/gamemodes/miniantags/abduction/abductee_objectives.dm +++ b/code/game/gamemodes/miniantags/abduction/abductee_objectives.dm @@ -35,7 +35,7 @@ for(var/datum/job/J in jobs) if(J.current_positions < 1) jobs -= J - if(jobs.len > 0) + if(length(jobs) > 0) var/datum/job/target = pick(jobs) explanation_text += " a [target.title]." else diff --git a/code/game/gamemodes/miniantags/abduction/abduction.dm b/code/game/gamemodes/miniantags/abduction/abduction.dm index 9dc28ac372b..f5a56423451 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction.dm @@ -27,11 +27,11 @@ /datum/game_mode/abduction/pre_setup() possible_abductors = get_players_for_role(ROLE_ABDUCTOR) - if(!possible_abductors.len) + if(!length(possible_abductors)) return 0 abductor_teams = max(1, min(max_teams,round(num_players()/15))) - var/possible_teams = max(1,round(possible_abductors.len / 2)) + var/possible_teams = max(1,round(length(possible_abductors) / 2)) abductor_teams = min(abductor_teams,possible_teams) abductors.len = 2*abductor_teams @@ -56,7 +56,7 @@ //Team Members if(!preset_agent || !preset_scientist) - if(possible_abductors.len <=2) + if(length(possible_abductors) <=2) return 0 var/datum/mind/scientist diff --git a/code/game/gamemodes/miniantags/demons/slaughter demon/slaughter.dm b/code/game/gamemodes/miniantags/demons/slaughter_demon/slaughter.dm similarity index 99% rename from code/game/gamemodes/miniantags/demons/slaughter demon/slaughter.dm rename to code/game/gamemodes/miniantags/demons/slaughter_demon/slaughter.dm index 1dce1c415ff..3812df84a3a 100644 --- a/code/game/gamemodes/miniantags/demons/slaughter demon/slaughter.dm +++ b/code/game/gamemodes/miniantags/demons/slaughter_demon/slaughter.dm @@ -133,7 +133,7 @@ ..() spawn(5) var/list/demon_candidates = SSghost_spawns.poll_candidates("Do you want to play as a slaughter demon?", ROLE_DEMON, TRUE, 10 SECONDS, source = /mob/living/simple_animal/demon/slaughter/cult) - if(!demon_candidates.len) + if(!length(demon_candidates)) visible_message("[src] disappears in a flash of red light!") qdel(src) return @@ -182,7 +182,7 @@ validtargets += M - if(!validtargets.len) + if(!length(validtargets)) to_chat(usr, "There are no valid targets!") return diff --git a/code/game/gamemodes/miniantags/guardian/guardian.dm b/code/game/gamemodes/miniantags/guardian/guardian.dm index e56038057e2..0f2e2f4efaa 100644 --- a/code/game/gamemodes/miniantags/guardian/guardian.dm +++ b/code/game/gamemodes/miniantags/guardian/guardian.dm @@ -305,7 +305,7 @@ var/list/mob/dead/observer/candidates = SSghost_spawns.poll_candidates("Do you want to play as the [mob_name] ([guardian_type]) of [user.real_name]?", ROLE_GUARDIAN, FALSE, 10 SECONDS, source = src, role_cleanname = "[mob_name] ([guardian_type])") var/mob/dead/observer/theghost = null - if(candidates.len) + if(length(candidates)) theghost = pick(candidates) if(has_guardian(user)) to_chat(user, "You already have a [mob_name]!") diff --git a/code/game/gamemodes/miniantags/guardian/types/lightning_guardian.dm b/code/game/gamemodes/miniantags/guardian/types/lightning_guardian.dm index 34e8dd2195b..98a0b706413 100644 --- a/code/game/gamemodes/miniantags/guardian/types/lightning_guardian.dm +++ b/code/game/gamemodes/miniantags/guardian/types/lightning_guardian.dm @@ -35,7 +35,7 @@ var/datum/beam/B = chain if(B.target == target) return //oh this guy already HAS a chain, let's not chain again - if(enemychains.len > 2) + if(length(enemychains) > 2) var/datum/beam/C = pick(enemychains) qdel(C) enemychains -= C @@ -64,7 +64,7 @@ /mob/living/simple_animal/hostile/guardian/beam/proc/cleardeletedchains() if(summonerchain && QDELETED(summonerchain)) summonerchain = null - if(enemychains.len) + if(length(enemychains)) for(var/chain in enemychains) var/datum/cd = chain if(!chain || QDELETED(cd)) @@ -77,14 +77,14 @@ if(!summonerchain) summonerchain = Beam(summoner, "lightning[rand(1,12)]", 'icons/effects/effects.dmi', time=INFINITY, maxdistance=INFINITY, beam_type=/obj/effect/ebeam/chain) . += chainshock(summonerchain) - if(enemychains.len) + if(length(enemychains)) for(var/chain in enemychains) . += chainshock(chain) /mob/living/simple_animal/hostile/guardian/beam/proc/removechains() if(summonerchain) QDEL_NULL(summonerchain) - if(enemychains.len) + if(length(enemychains)) for(var/chain in enemychains) qdel(chain) enemychains = list() diff --git a/code/game/gamemodes/miniantags/morph/morph.dm b/code/game/gamemodes/miniantags/morph/morph.dm index e6582468518..81a9f959218 100644 --- a/code/game/gamemodes/miniantags/morph/morph.dm +++ b/code/game/gamemodes/miniantags/morph/morph.dm @@ -113,6 +113,7 @@ var/obj/item/clothing/under/U = H.w_uniform U.turn_sensors_off() + A.pulledby.stop_pulling() A.extinguish_light() A.forceMove(src) var/food_value = calc_food_gained(A) diff --git a/code/game/gamemodes/miniantags/morph/morph_event.dm b/code/game/gamemodes/miniantags/morph/morph_event.dm index 070f4a8bb1e..4367557e389 100644 --- a/code/game/gamemodes/miniantags/morph/morph_event.dm +++ b/code/game/gamemodes/miniantags/morph/morph_event.dm @@ -4,7 +4,7 @@ /datum/event/spawn_morph/proc/get_morph() spawn() var/list/candidates = SSghost_spawns.poll_candidates("Do you want to play as a morph?", ROLE_MORPH, TRUE, source = /mob/living/simple_animal/hostile/morph) - if(!candidates.len) + if(!length(candidates)) key_of_morph = null kill() return diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm index 790fa4ee447..ef28580d675 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant.dm @@ -162,7 +162,7 @@ else var/list/mob/dead/observer/candidates = SSghost_spawns.poll_candidates("Do you want to play as a revenant?", poll_time = 15 SECONDS, source = /mob/living/simple_animal/revenant) var/mob/dead/observer/theghost = null - if(candidates.len) + if(length(candidates)) theghost = pick(candidates) message_admins("[key_name_admin(theghost)] has taken control of a revenant created without a mind") key = theghost.key diff --git a/code/game/gamemodes/miniantags/revenant/revenant_spawn_event.dm b/code/game/gamemodes/miniantags/revenant/revenant_spawn_event.dm index 4eb77abb532..227d89666df 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant_spawn_event.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant_spawn_event.dm @@ -14,7 +14,7 @@ spawn() var/list/candidates = SSghost_spawns.poll_candidates("Do you want to play as a revenant?", ROLE_REVENANT, TRUE, source = /mob/living/simple_animal/revenant) - if(!candidates.len) + if(!length(candidates)) key_of_revenant = null kill() return diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 10161f7d0bf..791be28f86c 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -34,13 +34,13 @@ var/list/possible_syndicates = get_players_for_role(ROLE_OPERATIVE) var/agent_number = 0 - if(possible_syndicates.len < 1) + if(length(possible_syndicates) < 1) return 0 if(LAZYLEN(possible_syndicates) > agents_possible) agent_number = agents_possible else - agent_number = possible_syndicates.len + agent_number = length(possible_syndicates) var/n_players = num_players() if(agent_number > n_players) @@ -115,7 +115,7 @@ break for(var/datum/mind/synd_mind in syndicates) - if(spawnpos > synd_spawn.len) + if(spawnpos > length(synd_spawn)) spawnpos = 2 synd_mind.current.loc = synd_spawn[spawnpos] synd_mind.offstation_role = TRUE @@ -151,8 +151,8 @@ var/player_tc var/remainder - player_tc = round(total_tc / GLOB.nuclear_uplink_list.len) //round to get an integer and not floating point - remainder = total_tc % GLOB.nuclear_uplink_list.len + player_tc = round(total_tc / length(GLOB.nuclear_uplink_list)) //round to get an integer and not floating point + remainder = total_tc % length(GLOB.nuclear_uplink_list) for(var/obj/item/radio/uplink/nuclear/U in GLOB.nuclear_uplink_list) U.hidden_uplink.uses += player_tc diff --git a/code/game/gamemodes/nuclear/nuclear_challenge.dm b/code/game/gamemodes/nuclear/nuclear_challenge.dm index 178399588d9..7acb04f5472 100644 --- a/code/game/gamemodes/nuclear/nuclear_challenge.dm +++ b/code/game/gamemodes/nuclear/nuclear_challenge.dm @@ -68,8 +68,8 @@ var/player_tc var/remainder - player_tc = round(total_tc / GLOB.nuclear_uplink_list.len) //round to get an integer and not floating point - remainder = total_tc % GLOB.nuclear_uplink_list.len + player_tc = round(total_tc / length(GLOB.nuclear_uplink_list)) //round to get an integer and not floating point + remainder = total_tc % length(GLOB.nuclear_uplink_list) for(var/obj/item/radio/uplink/nuclear/U in GLOB.nuclear_uplink_list) U.hidden_uplink.uses += player_tc @@ -84,7 +84,7 @@ if(declaring_war) to_chat(user, "You are already in the process of declaring war! Make your mind up.") return FALSE - if(GLOB.player_list.len < CHALLENGE_MIN_PLAYERS) + if(length(GLOB.player_list) < CHALLENGE_MIN_PLAYERS) to_chat(user, "The enemy crew is too small to be worth declaring war on.") return FALSE if(!is_admin_level(user.z)) diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm index 4860096946f..6ed2761e5c4 100644 --- a/code/game/gamemodes/nuclear/pinpointer.dm +++ b/code/game/gamemodes/nuclear/pinpointer.dm @@ -488,7 +488,7 @@ names[name] = H name_counts[name] = 1 - if(!names.len) + if(!length(names)) user.visible_message("[user]'s pinpointer fails to detect a signal.", "Your pinpointer fails to detect a signal.") return diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 320c2578cdd..222ff61365b 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -121,7 +121,7 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective) possible_targets += possible_target - if(possible_targets.len > 0) + if(length(possible_targets) > 0) target = pick(possible_targets) SEND_SIGNAL(src, COMSIG_OBJECTIVE_TARGET_FOUND, target) diff --git a/code/game/gamemodes/setupgame.dm b/code/game/gamemodes/setupgame.dm index 66cd614b966..f65680cad61 100644 --- a/code/game/gamemodes/setupgame.dm +++ b/code/game/gamemodes/setupgame.dm @@ -1,5 +1,5 @@ /proc/getAssignedBlock(name, list/blocksLeft, activity_bounds=DNA_DEFAULT_BOUNDS, good=0) - if(blocksLeft.len==0) + if(!length(blocksLeft)) warning("[name]: No more blocks left to assign!") return 0 var/assigned = pick(blocksLeft) @@ -129,4 +129,4 @@ warning("DNA2: Mutation [mutation.name] trying to add to already assigned gene block list (used by [english_list(GLOB.assigned_mutation_blocks[block])])") GLOB.assigned_mutation_blocks[block] = mutation - //testing("DNA2: [numsToAssign.len] blocks are unused: [english_list(numsToAssign)]") + //testing("DNA2: [length(numsToAssign)] blocks are unused: [english_list(numsToAssign)]") diff --git a/code/game/gamemodes/vampire/traitor_vamp.dm b/code/game/gamemodes/vampire/traitor_vamp.dm index 96011208404..cdb9fa1036e 100644 --- a/code/game/gamemodes/vampire/traitor_vamp.dm +++ b/code/game/gamemodes/vampire/traitor_vamp.dm @@ -28,7 +28,7 @@ if((player.mind in possible_vampires) && (player.client.prefs.active_character.species in secondary_protected_species)) possible_vampires -= player.mind - if(possible_vampires.len > 0) + if(length(possible_vampires) > 0) for(var/I in possible_vampires) if(length(pre_vampires) >= secondary_enemies) break diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index 3074242b50a..a20b8d70f05 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -677,7 +677,7 @@ GLOBAL_LIST_EMPTY(multiverse) check_spooky()//clean out/refresh the list - if(spooky_scaries.len >= 3 && !unlimited) + if(length(spooky_scaries) >= 3 && !unlimited) to_chat(user, "This artifact can only affect three undead at a time!") return if(heresy) @@ -691,7 +691,7 @@ GLOBAL_LIST_EMPTY(multiverse) spooky_scaries |= M to_chat(M, "You have been revived by [user.real_name]!") to_chat(M, "[user.p_theyre(TRUE)] your master now, assist them even if it costs you your new life!") - desc = "A shard capable of resurrecting humans as skeleton thralls[unlimited ? "." : ", [spooky_scaries.len]/3 active thralls."]" + desc = "A shard capable of resurrecting humans as skeleton thralls[unlimited ? "." : ", [length(spooky_scaries)]/3 active thralls."]" /obj/item/necromantic_stone/proc/check_spooky() if(unlimited) //no point, the list isn't used. diff --git a/code/game/gamemodes/wizard/raginmages.dm b/code/game/gamemodes/wizard/raginmages.dm index a524a17e5bf..f312d1f4de0 100644 --- a/code/game/gamemodes/wizard/raginmages.dm +++ b/code/game/gamemodes/wizard/raginmages.dm @@ -105,7 +105,7 @@ var/mob/dead/observer/harry = null message_admins("SWF is still pissed, sending another wizard - [max_mages - mages_made] left.") - if(!candidates.len) + if(!length(candidates)) message_admins("This is awkward, sleeping until another mage check..") making_mage = FALSE sleep(300) diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index ccff189cb7c..f53d3f7ba96 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -668,14 +668,14 @@ return FALSE to_chat(user, "[book] crumbles to ashes as you acquire its knowledge.") qdel(book) - else if(items_path.len) + else if(length(items_path)) var/response = tgui_alert(user, "The [src] loadout contains items that will not be refundable if bought. Are you sure this is what you want?", "No refunds!", list("No", "Yes")) if(response != "Yes") return FALSE if(!CanBuy(user, book)) to_chat(user, "You can't afford that anymore!") return FALSE - if(items_path.len) + if(length(items_path)) var/obj/item/storage/box/wizard/B = new(src) for(var/path in items_path) new path(B) @@ -881,7 +881,7 @@ dat += "" var/datum/spellbook_entry/E - for(var/i=1,i<=entries.len,i++) + for(var/i=1,i<=length(entries),i++) var/spell_info = "" E = entries[i] spell_info += E.GetInfo() diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index c0aacd4cf8e..30c7e40b300 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -45,21 +45,11 @@ if(but_wait_theres_more) return ..() - // Wizards - for(var/datum/mind/wizard in wizards) - if(!iscarbon(wizard.current) || wizard.current.stat == DEAD) // wizard is in an MMI, don't count them as alive - continue - return ..() - - // Apprentices - for(var/datum/mind/apprentice in apprentices) - if(!iscarbon(apprentice.current)) - continue - if(apprentice.current.stat == DEAD) - continue - if(istype(apprentice.current, /obj/item/mmi)) // apprentice is in an MMI, don't count them as alive - continue - return ..() + // Wizards and Apprentices + for(var/datum/mind/wizard in (wizards + apprentices)) // yes, this works so it iterates through wizards, then apprentices + var/datum/antagonist/wizard/datum_wizard = wizard.has_antag_datum(/datum/antagonist/wizard) + if(datum_wizard?.wizard_is_alive()) + return ..() finished = TRUE return TRUE @@ -67,7 +57,7 @@ /datum/game_mode/wizard/declare_completion(ragin = 0) if(finished && !ragin) SSticker.mode_result = "wizard loss - wizard killed" - to_chat(world, " The wizard[(wizards.len>1)?"s":""] has been killed by the crew! The Space Wizards Federation has been taught a lesson they will not soon forget!") + to_chat(world, " The wizard[(length(wizards)>1)?"s":""] has been killed by the crew! The Space Wizards Federation has been taught a lesson they will not soon forget!") ..() return TRUE diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm index 560c136d45e..01d85316fb7 100644 --- a/code/game/jobs/access.dm +++ b/code/game/jobs/access.dm @@ -56,7 +56,7 @@ for(var/req in req_access) if(!(req in accesses)) //doesn't have this access return 0 - if(req_one_access.len) + if(length(req_one_access)) for(var/req in req_one_access) if(req in accesses) //has an access from the single access list return 1 diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index 305d5f1d379..925e8e6f464 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -225,7 +225,7 @@ imprint_pda(H) - if(gear_leftovers.len) + if(length(gear_leftovers)) for(var/datum/gear/G in gear_leftovers) var/atom/placed_in = H.equip_or_collect(G.spawn_item(null, H.client.prefs.active_character.loadout_gear[G.display_name])) if(istype(placed_in)) diff --git a/code/game/jobs/job/silicon_jobs.dm b/code/game/jobs/job/silicon_jobs.dm index a1ab1e683ec..9fdfc71b5f7 100644 --- a/code/game/jobs/job/silicon_jobs.dm +++ b/code/game/jobs/job/silicon_jobs.dm @@ -17,7 +17,7 @@ return FALSE /datum/job/ai/is_position_available() - return (GLOB.empty_playable_ai_cores.len != 0) + return (length(GLOB.empty_playable_ai_cores) != 0) /datum/job/cyborg title = "Cyborg" diff --git a/code/game/jobs/job_exp.dm b/code/game/jobs/job_exp.dm index ae9667593de..d60339f08e6 100644 --- a/code/game/jobs/job_exp.dm +++ b/code/game/jobs/job_exp.dm @@ -176,7 +176,7 @@ GLOBAL_LIST_INIT(role_playtime_requirements, list( if(!GLOB.configuration.jobs.enable_exp_tracking) return "Tracking is disabled in the server configuration file." var/list/play_records = params2list(prefs.exp) - if(!play_records.len) + if(!length(play_records)) return "[key] has no records." var/return_text = "
    " var/list/exp_data = list() @@ -201,11 +201,11 @@ GLOBAL_LIST_INIT(role_playtime_requirements, list( jobs_unlocked += job.title else jobs_locked += "[job.title] - [job.get_exp_restrictions(mob.client)]" - if(jobs_unlocked.len) + if(length(jobs_unlocked)) return_text += "

    Jobs Unlocked:
    • " return_text += jobs_unlocked.Join("
    • ") return_text += "
    " - if(jobs_locked.len) + if(length(jobs_locked)) return_text += "

    Jobs Not Unlocked:
    • " return_text += jobs_locked.Join("
    • ") return_text += "
    " diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index c34dcfc7b5c..dafa25fc175 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -287,7 +287,7 @@ implantSubData["name"] = sanitize(I.name) implantData.Add(list(implantSubData)) occupantData["implant"] = implantData - occupantData["implant_len"] = implantData.len + occupantData["implant_len"] = length(implantData) var/extOrganData[0] for(var/obj/item/organ/external/E in occupant.bodyparts) @@ -310,7 +310,7 @@ shrapnelData.Add(list(shrapnelSubData)) organData["shrapnel"] = shrapnelData - organData["shrapnel_len"] = shrapnelData.len + organData["shrapnel_len"] = length(shrapnelData) var/organStatus[0] if(E.status & ORGAN_BROKEN) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 46228977536..b5d28534dd9 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -111,7 +111,7 @@ /obj/machinery/autolathe/ui_static_data(mob/user) var/list/data = list() data["categories"] = categories - if(!recipiecache.len) + if(!length(recipiecache)) var/list/recipes = list() for(var/v in files.known_designs) var/datum/design/D = files.known_designs[v] @@ -164,7 +164,7 @@ data["busyamt"] = length(being_built) > 1 ? being_built[2] : 1 data["showhacked"] = hacked ? TRUE : FALSE data["buildQueue"] = queue - data["buildQueueLen"] = queue.len + data["buildQueueLen"] = length(queue) return data /obj/machinery/autolathe/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) @@ -179,7 +179,7 @@ queue = list() if("remove_from_queue") var/index = text2num(params["remove_from_queue"]) - if(isnum(index) && ISINRANGE(index, 1, queue.len)) + if(isnum(index) && ISINRANGE(index, 1, length(queue))) remove_from_queue(index) to_chat(usr, "Removed item from queue.") if("make") @@ -213,7 +213,7 @@ if(!(multiplier in list(1, 10, 25, max_multiplier))) //"enough materials ?" is checked in the build proc message_admins("Player [key_name_admin(usr)] attempted to pass invalid multiplier [multiplier] to an autolathe in ui_act. Possible href exploit.") return - if((queue.len + 1) < queue_max_len) + if((length(queue) + 1) < queue_max_len) add_to_queue(design_last_ordered, multiplier) else to_chat(usr, "The autolathe queue is full!") @@ -247,8 +247,8 @@ var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) var/temp_metal = materials.amount(MAT_METAL) var/temp_glass = materials.amount(MAT_GLASS) - data["processing"] = being_built.len ? get_processing_line() : null - if(istype(queue) && queue.len) + data["processing"] = length(being_built) ? get_processing_line() : null + if(istype(queue) && length(queue)) var/list/data_queue = list() for(var/list/L in queue) var/datum/design/D = L[1] @@ -257,7 +257,7 @@ temp_metal = max(temp_metal - LL[1], 1) temp_glass = max(temp_glass - LL[2], 1) data["queue"] = data_queue - data["queue_len"] = data_queue.len + data["queue_len"] = length(data_queue) else data["queue"] = null return data @@ -417,7 +417,7 @@ desc = initial(desc) /obj/machinery/autolathe/proc/can_build(datum/design/D, multiplier = 1, custom_metal, custom_glass) - if(D.make_reagents.len) + if(length(D.make_reagents)) return 0 var/coeff = get_coeff(D) @@ -456,10 +456,10 @@ queue = list() if(D) queue.Add(list(list(D,multiplier))) - return queue.len + return length(queue) /obj/machinery/autolathe/proc/remove_from_queue(index) - if(!isnum(index) || !istype(queue) || (index<1 || index>queue.len)) + if(!isnum(index) || !istype(queue) || (index<1 || index>length(queue))) return 0 queue.Cut(index,++index) return 1 @@ -469,7 +469,7 @@ var/multiplier = queue[1][2] if(!D) remove_from_queue(1) - if(queue.len) + if(length(queue)) return process_queue() else return diff --git a/code/game/machinery/camera/camera_assembly.dm b/code/game/machinery/camera/camera_assembly.dm index eff8932848b..0844f892ac6 100644 --- a/code/game/machinery/camera/camera_assembly.dm +++ b/code/game/machinery/camera/camera_assembly.dm @@ -61,7 +61,7 @@ return ..() /obj/item/camera_assembly/crowbar_act(mob/user, obj/item/I) - if(!upgrades.len) + if(!length(upgrades)) return . = TRUE if(!I.use_tool(src, user, 0, volume = I.tool_volume)) @@ -87,7 +87,7 @@ return var/list/tempnetwork = splittext(input, ",") - if(tempnetwork.len < 1) + if(length(tempnetwork) < 1) state = ASSEMBLY_WIRED to_chat(usr, "No network found please hang up and try your call again.") return diff --git a/code/game/machinery/camera/tracking.dm b/code/game/machinery/camera/tracking.dm index 9d7e884319d..49189320e09 100644 --- a/code/game/machinery/camera/tracking.dm +++ b/code/game/machinery/camera/tracking.dm @@ -22,7 +22,7 @@ for(var/obj/machinery/camera/C in L) var/list/tempnetwork = C.network & src.network - if(tempnetwork.len) + if(length(tempnetwork)) T[text("[][]", C.c_tag, (C.can_use() ? null : " (Deactivated)"))] = C track.cameras = T @@ -195,7 +195,7 @@ var/obj/machinery/camera/a var/obj/machinery/camera/b - for(var/i = L.len, i > 0, i--) + for(var/i = length(L), i > 0, i--) for(var/j = 1 to i - 1) a = L[j] b = L[j + 1] diff --git a/code/game/machinery/clonepod.dm b/code/game/machinery/clonepod.dm index a2dc8fca9f1..4853ae760b0 100644 --- a/code/game/machinery/clonepod.dm +++ b/code/game/machinery/clonepod.dm @@ -564,11 +564,17 @@ return if(istype(I, /obj/item/card/id) || istype(I, /obj/item/pda)) - if(allowed(user)) - locked = !locked - to_chat(user, "Access restriction is now [locked ? "enabled" : "disabled"].") - else + if(!allowed(user)) to_chat(user, "Access denied.") + return + + switch(tgui_alert(user, "Change access restrictions or perform an emergency ejection of [src]?", "Cloning pod", list("Change access", "Emergency ejection"))) + if("Change access") + locked = !locked + to_chat(user, "Access restriction is now [locked ? "enabled" : "disabled"].") + if("Emergency ejection") + eject_clone(TRUE) // GET OUT + to_chat(user, "You force [src] to eject its clone!") return if(is_organ(I) || is_type_in_list(I, ALLOWED_ROBOT_PARTS)) //fun fact, robot parts aren't organs! diff --git a/code/game/machinery/computer/ai_core.dm b/code/game/machinery/computer/ai_core.dm index f8898a07b65..26e3f776053 100644 --- a/code/game/machinery/computer/ai_core.dm +++ b/code/game/machinery/computer/ai_core.dm @@ -271,7 +271,7 @@ for(var/obj/structure/AIcore/deactivated/D in world) cores["[D] ([D.loc.loc])"] = D - if(!cores.len) + if(!length(cores)) to_chat(src, "No deactivated AI cores were found.") var/id = input("Which core?", "Toggle AI Core Latejoin", null) as null|anything in cores diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 1c127fe212c..1a9b2a90871 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -22,7 +22,7 @@ /obj/machinery/computer/arcade/proc/prizevend(score) - if(!contents.len) + if(!length(contents)) var/prize_amount if(score) prize_amount = score @@ -354,7 +354,7 @@ /obj/machinery/computer/arcade/orion_trail/attack_hand(mob/user) if(..()) return - if(fuel <= 0 || food <=0 || settlers.len == 0) + if(fuel <= 0 || food <=0 || length(settlers) == 0) gameover = 1 event = null user.set_machine(src) @@ -362,7 +362,7 @@ if(gameover) dat = "

    Game Over

    " dat += "Like many before you, your crew never made it to Orion, lost to space...
    Forever." - if(settlers.len == 0) + if(length(settlers) == 0) dat += "
    Your entire crew died, your ship joins the fleet of ghost-ships littering the galaxy." else if(food <= 0) @@ -757,7 +757,7 @@ if(ORION_TRAIL_LING) eventdat += "Strange reports warn of changelings infiltrating crews on trips to Orion..." - if(settlers.len <= 2) + if(length(settlers) <= 2) eventdat += "
    Your crew's chance of reaching Orion is so slim the changelings likely avoided your ship..." eventdat += "

    Continue

    " eventdat += "

    Close

    " @@ -924,7 +924,6 @@ alive++ return newcrew - //Remove Random/Specific crewmember /obj/machinery/computer/arcade/orion_trail/proc/remove_crewmember(specific = "", dont_remove = "") var/list/safe2remove = settlers @@ -934,7 +933,7 @@ if(specific && specific != dont_remove) safe2remove = list(specific) else - if(safe2remove.len >= 1) //need to make sure we even have anyone to remove + if(length(safe2remove) >= 1) //need to make sure we even have anyone to remove removed = pick(safe2remove) if(removed) diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm index bd648b91102..8c5a22d2544 100644 --- a/code/game/machinery/computer/camera_advanced.dm +++ b/code/game/machinery/computer/camera_advanced.dm @@ -197,7 +197,7 @@ for(var/obj/machinery/camera/netcam in L) var/list/tempnetwork = netcam.network&origin.networks - if(tempnetwork.len) + if(length(tempnetwork)) T[text("[][]", netcam.c_tag, (netcam.can_use() ? null : " (Deactivated)"))] = netcam diff --git a/code/game/machinery/computer/camera_console.dm b/code/game/machinery/computer/camera_console.dm index 046d2445b44..ae5764d4da3 100644 --- a/code/game/machinery/computer/camera_console.dm +++ b/code/game/machinery/computer/camera_console.dm @@ -161,7 +161,7 @@ stack_trace("Camera in a cameranet has a non-list camera network") continue var/list/tempnetwork = C.network & network - if(tempnetwork.len) + if(length(tempnetwork)) D["[C.c_tag]"] = C return D diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index 2727b8c110e..97a55c19cb0 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -189,7 +189,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) return FALSE if(job.job_banned_gamemode) // you cannot open a slot for more sec/legal after revs win return FALSE - if((job.total_positions > GLOB.player_list.len * (max_relative_positions / 100))) + if((job.total_positions > length(GLOB.player_list) * (max_relative_positions / 100))) return FALSE if(opened_positions[job.title] < 0) return TRUE @@ -228,7 +228,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) return FALSE if(job in SSjobs.prioritized_jobs) return TRUE // because this also lets us un-prioritize the job - if(SSjobs.prioritized_jobs.len >= 3) + if(length(SSjobs.prioritized_jobs) >= 3) return FALSE if(job.total_positions <= job.current_positions) return FALSE diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index d374fada3cf..854e307fd60 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -475,7 +475,7 @@ data["str_security_level"] = capitalize(SSsecurity_level.get_current_level_as_text()) var/list/msg_data = list() - for(var/i = 1; i <= messagetext.len; i++) + for(var/i = 1; i <= length(messagetext); i++) msg_data.Add(list(list("title" = messagetitle[i], "body" = messagetext[i], "id" = i))) data["messages"] = msg_data diff --git a/code/game/machinery/computer/message_monitor.dm b/code/game/machinery/computer/message_monitor.dm index c8c08fe993d..5394a21bd30 100644 --- a/code/game/machinery/computer/message_monitor.dm +++ b/code/game/machinery/computer/message_monitor.dm @@ -409,7 +409,7 @@ if(!PM || !PM.can_receive()) continue sendPDAs += P - if(GLOB.PDAs && GLOB.PDAs.len > 0) + if(GLOB.PDAs && length(GLOB.PDAs) > 0) customrecepient = tgui_input_list(usr, "Select a PDA from the list.", items = sortAtom(sendPDAs)) else customrecepient = null diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 96bd846fd7d..28001aa8ba6 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -58,12 +58,12 @@ var/hasContent = 0 desc = "Requires" - for(var/i = 1 to req_components.len) + for(var/i = 1 to length(req_components)) var/tname = req_components[i] var/amt = req_components[tname] if(amt == 0) continue - var/use_and = i == req_components.len + var/use_and = i == length(req_components) desc += "[(hasContent ? (use_and ? ", and" : ",") : "")] [amt] [amt == 1 ? req_component_names[tname] : "[req_component_names[tname]]\s"]" hasContent = 1 @@ -133,7 +133,7 @@ state = 2 circuit.loc = src.loc circuit = null - if(components.len == 0) + if(length(components) == 0) to_chat(user, "You remove the circuit board.") else to_chat(user, "You remove the circuit board and other components.") @@ -146,7 +146,7 @@ icon_state = "box_1" return - if(istype(P, /obj/item/storage/part_replacer) && P.contents.len && get_req_components_amt()) + if(istype(P, /obj/item/storage/part_replacer) && length(P.contents) && get_req_components_amt()) var/obj/item/storage/part_replacer/replacer = P var/list/added_components = list() var/list/part_list = list() diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 8df74ed68ee..f04445faf6f 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -153,7 +153,7 @@ /obj/machinery/computer/cryopod/emag_act(mob/user) user.changeNext_move(CLICK_CD_MELEE) - if(!objective_items.len) + if(!length(objective_items)) visible_message("The console buzzes in an annoyed manner.") playsound(src, 'sound/machines/buzz-sigh.ogg', 30, 1) return @@ -390,7 +390,7 @@ // Delete them from datacore. var/announce_rank = null - if(GLOB.PDA_Manifest.len) + if(length(GLOB.PDA_Manifest)) GLOB.PDA_Manifest.Cut() for(var/datum/data/record/R in GLOB.data_core.medical) if(R.fields["name"] == occupant.real_name) @@ -592,7 +592,7 @@ if(Gh.key == FT) if(Gh.client && Gh.client.holder) //just in case someone has a byond name with @ at the start, which I don't think is even possible but whatever to_chat(Gh, "Warning: Your body has entered cryostorage.") - log_admin("[key_name(E)] entered a stasis pod.") + log_admin("[key_name(E)] entered a stasis pod.") if(SSticker.mode.tdm_gamemode) SSblackbox.record_feedback("nested tally", "TDM_quitouts", 1, list(SSticker.mode.name, "TDM Cryopods")) message_admins("[key_name_admin(E)] entered a stasis pod. (JMP)") @@ -678,7 +678,7 @@ if((ishuman(person_to_cryo) && istype(get_area(P), /area/station/public/sleep)) || istype(P, /obj/machinery/cryopod/robot)) free_cryopods += P var/obj/machinery/cryopod/target_cryopod = null - if(free_cryopods.len) + if(length(free_cryopods)) target_cryopod = safepick(free_cryopods) if(target_cryopod.check_occupant_allowed(person_to_cryo)) var/turf/T = get_turf(person_to_cryo) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 2f2c4ce3229..e6bd12e67c3 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1546,9 +1546,9 @@ GLOBAL_LIST_EMPTY(airlock_emissive_underlays) if(!electronics) ae = new/obj/item/airlock_electronics(loc) check_access() - if(req_access.len) + if(length(req_access)) ae.selected_accesses = req_access - else if(req_one_access.len) + else if(length(req_one_access)) ae.selected_accesses = req_one_access ae.one_access = 1 ae.unres_access_from = unres_sides diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 3fc3fbebe41..812cd31da9f 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -28,7 +28,7 @@ /obj/machinery/door/window/Initialize(mapload) . = ..() - if(req_access && req_access.len) + if(req_access && length(req_access)) base_state = icon_state if(name != initial(name)) @@ -367,9 +367,9 @@ ae = new/obj/item/airlock_electronics(loc) if(!req_access) check_access() - if(req_access.len) + if(length(req_access)) ae.selected_accesses = req_access - else if(req_one_access.len) + else if(length(req_one_access)) ae.selected_accesses = req_one_access ae.one_access = 1 else diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm index bce1e147cae..007bfa82703 100644 --- a/code/game/machinery/doppler_array.dm +++ b/code/game/machinery/doppler_array.dm @@ -73,7 +73,7 @@ GLOBAL_LIST_EMPTY(doppler_arrays) to_chat(user, "You rotate [src].") /obj/machinery/doppler_array/proc/print_explosive_logs(mob/user) - if(!logged_explosions.len) + if(!length(logged_explosions)) atom_say("No logs currently stored in internal database.") return if(active_timers) diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 78029b71833..ef3c41ec96c 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -399,7 +399,7 @@ GLOBAL_LIST_EMPTY(holopads) /*This is the proc for special two-way communication between AI and holopad/people talking near holopad. For the other part of the code, check silicon say.dm. Particularly robot talk.*/ /obj/machinery/hologram/holopad/hear_talk(atom/movable/speaker, list/message_pieces, verb) - if(speaker && masters.len)//Master is mostly a safety in case lag hits or something. Radio_freq so AIs dont hear holopad stuff through radios. + if(speaker && length(masters))//Master is mostly a safety in case lag hits or something. Radio_freq so AIs dont hear holopad stuff through radios. for(var/mob/living/silicon/ai/master in masters) if(masters[master] && speaker != master) master.relay_speech(speaker, message_pieces, verb) @@ -415,7 +415,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ /obj/machinery/hologram/holopad/proc/SetLightsAndPower() - var/total_users = masters.len + LAZYLEN(holo_calls) + var/total_users = length(masters) + LAZYLEN(holo_calls) change_power_mode(total_users > 0 ? ACTIVE_POWER_USE : IDLE_POWER_USE) active_power_consumption = HOLOPAD_PASSIVE_POWER_USAGE + (HOLOGRAM_POWER_USAGE * total_users) if(total_users) diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 5898d0c14ac..158e245fccc 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -272,7 +272,7 @@ /obj/machinery/deconstruct(disassembled = TRUE) if(!(flags & NODECONSTRUCT)) on_deconstruction() - if(component_parts && component_parts.len) + if(component_parts && length(component_parts)) spawn_frame(disassembled) for(var/obj/item/I in component_parts) I.forceMove(loc) diff --git a/code/game/machinery/magnetic_module.dm b/code/game/machinery/magnetic_module.dm index 87442eac712..f10aae48db5 100644 --- a/code/game/machinery/magnetic_module.dm +++ b/code/game/machinery/magnetic_module.dm @@ -234,7 +234,7 @@ RegisterSignal(M, COMSIG_PARENT_QDELETING, PROC_REF(on_magnet_del), TRUE) /obj/machinery/magnetic_controller/process() - if(magnets.len == 0 && autolink) + if(length(magnets) == 0 && autolink) link_magnets() /obj/machinery/magnetic_controller/ui_state(mob/user) @@ -416,7 +416,7 @@ /obj/machinery/magnetic_controller/proc/MagnetMove() if(looping) return - while(moving && rpath.len >= 1) + while(moving && length(rpath) >= 1) if(stat & (BROKEN|NOPOWER)) break @@ -430,7 +430,7 @@ signal.frequency = frequency signal.data["code"] = code - if(pathpos > rpath.len) // if the position is greater than the length, we just loop through the list! + if(pathpos > length(rpath)) // if the position is greater than the length, we just loop through the list! pathpos = 1 var/nextmove = uppertext(rpath[pathpos]) // makes it un-case-sensitive diff --git a/code/game/machinery/poolcontroller.dm b/code/game/machinery/poolcontroller.dm index 13e71b0d39c..46df33dfc23 100644 --- a/code/game/machinery/poolcontroller.dm +++ b/code/game/machinery/poolcontroller.dm @@ -149,7 +149,7 @@ /obj/machinery/poolcontroller/proc/miston() //Spawn /obj/effect/mist (from the shower) on all linked pool tiles - if(linkedmist.len) + if(length(linkedmist)) return for(var/turf/simulated/floor/beach/water/W in linkedturfs) diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index acf292c693c..e95ef133f7b 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -75,7 +75,7 @@ /obj/machinery/porta_turret/Initialize(mapload) . = ..() - if(req_access && req_access.len) + if(req_access && length(req_access)) req_access.Cut() req_one_access = list(ACCESS_SECURITY, ACCESS_HEADS) one_access = TRUE @@ -93,7 +93,7 @@ /obj/machinery/porta_turret/centcom/Initialize(mapload) . = ..() - if(req_one_access && req_one_access.len) + if(req_one_access && length(req_one_access)) req_one_access.Cut() req_access = list(ACCESS_CENT_SPECOPS) one_access = FALSE @@ -179,7 +179,7 @@ GLOBAL_LIST_EMPTY(turret_icons) /obj/machinery/porta_turret/proc/HasController() var/area/A = get_area(src) - return A && A.turret_controls.len > 0 + return A && length(A.turret_controls) > 0 /obj/machinery/porta_turret/proc/access_is_configurable() return targetting_is_configurable && !HasController() @@ -635,10 +635,10 @@ GLOBAL_LIST_EMPTY(turret_icons) return TURRET_NOT_TARGET /obj/machinery/porta_turret/proc/tryToShootAt(list/mob/living/targets) - if(targets.len && last_target && (last_target in targets) && target(last_target)) + if(length(targets) && last_target && (last_target in targets) && target(last_target)) return 1 - while(targets.len > 0) + while(length(targets) > 0) var/mob/living/M = pick(targets) targets -= M if(target(M)) @@ -1100,7 +1100,7 @@ GLOBAL_LIST_EMPTY(turret_icons) /obj/machinery/porta_turret/syndicate/Initialize(mapload) . = ..() - if(req_one_access && req_one_access.len) + if(req_one_access && length(req_one_access)) req_one_access.Cut() req_access = list(ACCESS_SYNDICATE) one_access = FALSE diff --git a/code/game/machinery/quantum_pad.dm b/code/game/machinery/quantum_pad.dm index 98d8d4a0f95..0a6f672216b 100644 --- a/code/game/machinery/quantum_pad.dm +++ b/code/game/machinery/quantum_pad.dm @@ -30,9 +30,29 @@ preset_target = /obj/machinery/quantumpad/cere/science_arrivals /obj/machinery/quantumpad/cere/arrivals_cargo preset_target = /obj/machinery/quantumpad/cere/cargo_arrivals +/obj/machinery/quantumpad/cere/security_medbay + preset_target = /obj/machinery/quantumpad/cere/medbay_security +/obj/machinery/quantumpad/cere/medbay_security + preset_target = /obj/machinery/quantumpad/cere/security_medbay +/obj/machinery/quantumpad/cere/medbay_science + preset_target = /obj/machinery/quantumpad/cere/science_medbay +/obj/machinery/quantumpad/cere/science_medbay + preset_target = /obj/machinery/quantumpad/cere/medbay_science +/obj/machinery/quantumpad/cere/arrivals_service + preset_target = /obj/machinery/quantumpad/cere/service_arrivals +/obj/machinery/quantumpad/cere/service_arrivals + preset_target = /obj/machinery/quantumpad/cere/arrivals_service +/obj/machinery/quantumpad/cere/cargo_service + preset_target = /obj/machinery/quantumpad/cere/service_cargo +/obj/machinery/quantumpad/cere/service_cargo + preset_target = /obj/machinery/quantumpad/cere/cargo_service + /obj/machinery/quantumpad/Initialize(mapload) . = ..() + PopulateParts() + +/obj/machinery/quantumpad/proc/PopulateParts() component_parts = list() component_parts += new /obj/item/circuitboard/quantumpad(null) component_parts += new /obj/item/stack/ore/bluespace_crystal/artificial(null) @@ -45,6 +65,12 @@ . = ..() linked_pad = locate(preset_target) +/obj/machinery/quantumpad/cere/PopulateParts() + // No parts in Cere telepads, just hardcode the efficiencies + power_efficiency = 4 + teleport_speed = 10 + teleport_cooldown = 0 + /obj/machinery/quantumpad/Destroy() linked_pad = null return ..() diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index 7b8b9d83519..ad5ba2bb0d9 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -537,7 +537,7 @@ /obj/item/bombcore/chemical/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/reagent_containers/glass/beaker) || istype(I, /obj/item/reagent_containers/glass/bottle)) - if(beakers.len < max_beakers) + if(length(beakers) < max_beakers) if(!user.drop_item()) return beakers += I @@ -553,7 +553,7 @@ . = TRUE if(!I.use_tool(src, user, 0, volume = I.tool_volume)) return - if(beakers.len == 0) + if(length(beakers) == 0) return for(var/obj/item/B in beakers) B.loc = get_turf(src) @@ -574,7 +574,7 @@ spread_range += 2 // Extra range, reduced density. temp_boost += 50 // maximum of +150K blast using only large beakers. Not enough to self ignite. for(var/obj/item/slime_extract/S in LG.beakers) // And slime cores. - if(beakers.len < max_beakers) + if(length(beakers) < max_beakers) beakers += S S.loc = src else @@ -591,7 +591,7 @@ time_release += 50 // A typical bomb, using basic beakers, will explode over 2-4 seconds. Using two will make the reaction last for less time, but it will be more dangerous overall. for(var/obj/item/reagent_containers/glass/B in G) - if(beakers.len < max_beakers) + if(length(beakers) < max_beakers) beakers += B B.loc = src else diff --git a/code/game/machinery/tcomms/tcomms_base.dm b/code/game/machinery/tcomms/tcomms_base.dm index beb0bb44233..2517ac6cacd 100644 --- a/code/game/machinery/tcomms/tcomms_base.dm +++ b/code/game/machinery/tcomms/tcomms_base.dm @@ -206,7 +206,7 @@ GLOBAL_LIST_EMPTY(tcomms_machines) var/vname /// sender_name before modify_message modifies it, because it introduces html tags. var/pre_modify_name - /// List of all channels this can be sent or recieved on + /// List of all channels this can be sent or received on var/list/zlevels = list() /// Should this signal be re-broadcasted (Can be modified by NTTC, defaults to TRUE) var/pass = TRUE diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index cece7b32c0a..5d82f8830b8 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -245,7 +245,7 @@ var/list/L = list() var/list/areaindex = list() var/list/S = power_station.linked_stations - if(!S.len) + if(!length(S)) return L for(var/obj/machinery/teleport/station/R in S) var/turf/T = get_turf(R) @@ -632,7 +632,7 @@ var/obj/item/multitool/M = I if(!panel_open) if(M.buffer && istype(M.buffer, /obj/machinery/teleport/station) && M.buffer != src) - if(linked_stations.len < efficiency) + if(length(linked_stations) < efficiency) linked_stations.Add(M.buffer) M.buffer = null to_chat(user, "You upload the data from [M]'s buffer.") diff --git a/code/game/machinery/vendors/tilt_crits.dm b/code/game/machinery/vendors/tilt_crits.dm index f4421707641..f2eaf0a9bef 100644 --- a/code/game/machinery/vendors/tilt_crits.dm +++ b/code/game/machinery/vendors/tilt_crits.dm @@ -96,7 +96,7 @@ /datum/tilt_crit/vendor/embed/tip_crit_effect(obj/machinery/economy/vending/machine, mob/living/carbon/victim, incoming_damage) victim.visible_message( "[machine]'s panel shatters against [victim]!", - "[machine] lands on you, its panel shattering!" ) for(var/i in 1 to machine.num_shards) diff --git a/code/game/mecha/combat/honker.dm b/code/game/mecha/combat/honker.dm index 5ddca924d18..8e25bf3dac6 100644 --- a/code/game/mecha/combat/honker.dm +++ b/code/game/mecha/combat/honker.dm @@ -120,7 +120,7 @@ /obj/mecha/combat/honker/get_equipment_list() - if(!equipment.len) + if(!length(equipment)) return var/output = "Honk-ON-Systems:
    " for(var/obj/item/mecha_parts/mecha_equipment/MT in equipment) diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm index f57aa643db7..f53faf14515 100644 --- a/code/game/mecha/combat/marauder.dm +++ b/code/game/mecha/combat/marauder.dm @@ -91,7 +91,7 @@ /obj/mecha/combat/marauder/seraph/loaded/Initialize(mapload) . = ..() //Let it equip whatever is needed. var/obj/item/mecha_parts/mecha_equipment/ME - if(equipment.len)//Now to remove it and equip anew. + if(length(equipment))//Now to remove it and equip anew. for(ME in equipment) equipment -= ME qdel(ME) diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm index 28dbc2f5bea..4af1b23ae6d 100644 --- a/code/game/mecha/equipment/mecha_equipment.dm +++ b/code/game/mecha/equipment/mecha_equipment.dm @@ -99,7 +99,7 @@ /obj/item/mecha_parts/mecha_equipment/proc/can_attach(obj/mecha/M) if(istype(M)) - if(M.equipment.len[mode? "Analyze" : "Launch"]\]
    \[Syringes: [syringes.len]/[max_syringes] | Reagents: [reagents.total_volume]/[reagents.maximum_volume]\]
    Reagents list" + return "[output] \[[mode? "Analyze" : "Launch"]\]
    \[Syringes: [length(syringes)]/[max_syringes] | Reagents: [reagents.total_volume]/[reagents.maximum_volume]\]
    Reagents list" /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/action(atom/movable/target) if(!action_checks(target)) @@ -289,7 +289,7 @@ return if(mode) return analyze_reagents(target) - if(!syringes.len) + if(!length(syringes)) occupant_message("No syringes loaded.") return if(reagents.total_volume<=0) @@ -356,7 +356,7 @@ processed_reagents.len = 0 var/m = 0 var/message - for(var/i=1 to known_reagents.len) + for(var/i=1 to length(known_reagents)) if(m>=synth_speed) break var/reagent = afilter.get("reagent_[i]") @@ -364,7 +364,7 @@ message = "[m ? ", " : null][known_reagents[reagent]]" processed_reagents += reagent m++ - if(processed_reagents.len) + if(length(processed_reagents)) message += " added to production" START_PROCESSING(SSobj, src) occupant_message(message) @@ -427,7 +427,7 @@ /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/proc/get_reagents_list() var/output - for(var/i=1 to known_reagents.len) + for(var/i=1 to length(known_reagents)) var/reagent_id = known_reagents[i] output += {" [known_reagents[reagent_id]]
    "} return output @@ -442,7 +442,7 @@ return output || "None" /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/proc/load_syringe(obj/item/reagent_containers/syringe/S) - if(syringes.len= 2) occupant_message("The syringe is too far away.") return FALSE @@ -501,12 +501,12 @@ /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/process() if(..()) return - if(!processed_reagents.len || reagents.total_volume >= reagents.maximum_volume || !chassis.has_charge(energy_drain)) + if(!length(processed_reagents) || reagents.total_volume >= reagents.maximum_volume || !chassis.has_charge(energy_drain)) occupant_message("Reagent processing stopped.") log_message("Reagent processing stopped.") STOP_PROCESSING(SSobj, src) return - var/amount = synth_speed / processed_reagents.len + var/amount = synth_speed / length(processed_reagents) for(var/reagent in processed_reagents) reagents.add_reagent(reagent,amount) chassis.use_power(energy_drain) @@ -554,6 +554,6 @@ /obj/item/mecha_parts/mecha_equipment/medical/rescue_jaw/can_attach(obj/mecha/M) if(istype(M, /obj/mecha/medical) || istype(M, /obj/mecha/working/ripley/firefighter)) //Odys or firefighters - if(M.equipment.len < M.max_equip) + if(length(M.equipment) < M.max_equip) return TRUE return FALSE diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index 575bad890e3..f6a33da3af4 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -94,7 +94,7 @@ if(isobj(target)) var/obj/O = target if(!O.anchored) - if(cargo_holder.cargo.len < cargo_holder.cargo_capacity) + if(length(cargo_holder.cargo) < cargo_holder.cargo_capacity) chassis.visible_message("[chassis] lifts [target] and starts to load it into cargo compartment.") O.anchored = TRUE if(do_after_cooldown(target)) @@ -102,7 +102,7 @@ O.forceMove(chassis) O.anchored = FALSE occupant_message("[target] successfully loaded.") - log_message("Loaded [O]. Cargo compartment capacity: [cargo_holder.cargo_capacity - cargo_holder.cargo.len]") + log_message("Loaded [O]. Cargo compartment capacity: [cargo_holder.cargo_capacity - length(cargo_holder.cargo)]") else O.anchored = initial(O.anchored) else diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index bae4537ee05..05b6ac9a111 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -495,7 +495,7 @@ /obj/item/mecha_parts/mecha_equipment/weapon/energy/plasma/can_attach(obj/mecha/M) if(istype(M, /obj/mecha/working)) - if(M.equipment.len" for(var/obj/item/mecha_parts/mecha_equipment/MT in equipment) @@ -229,11 +229,11 @@ /obj/mecha/proc/log_message(message as text,red=null) log.len++ - log[log.len] = list("time"=world.timeofday,"message"="[red?"":null][message][red?"":null]") - return log.len + log[length(log)] = list("time"=world.timeofday,"message"="[red?"":null][message][red?"":null]") + return length(log) /obj/mecha/proc/log_append_to_last(message as text,red=null) - var/list/last_entry = log[log.len] + var/list/last_entry = log[length(log)] last_entry["message"] += "
    [red?"":null][message][red?"":null]" return diff --git a/code/game/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm index 72a5f8daacd..c5e87d3789d 100644 --- a/code/game/mecha/mecha_wreckage.dm +++ b/code/game/mecha/mecha_wreckage.dm @@ -21,7 +21,7 @@ . = ..() if(parts) for(var/i in 1 to 2) - if(!parts.len) + if(!length(parts)) break if(prob(60)) continue @@ -53,7 +53,7 @@ . = TRUE if(!I.use_tool(src, user, 0, volume = I.tool_volume)) return - if(crowbar_salvage.len) + if(length(crowbar_salvage)) var/obj/S = pick(crowbar_salvage) S.forceMove(user.drop_location()) user.visible_message("[user] pries [S] from [src].", "You pry [S] from [src].") diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index 6fd31c92744..6ba689b31dc 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -155,7 +155,7 @@ var/turf/T = get_turf(O) if(T) T.Entered(O) - log_message("Unloaded [O]. Cargo compartment capacity: [cargo_capacity - cargo.len]") + log_message("Unloaded [O]. Cargo compartment capacity: [cargo_capacity - length(cargo)]") return @@ -163,7 +163,7 @@ /obj/mecha/working/ripley/get_stats_part() var/output = ..() output += "Cargo Compartment Contents:
    " - if(cargo.len) + if(length(cargo)) for(var/obj/O in cargo) output += "Unload : [O]
    " else diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm index cd63de1feaf..5fe748f2d18 100644 --- a/code/game/objects/effects/decals/Cleanable/humans.dm +++ b/code/game/objects/effects/decals/Cleanable/humans.dm @@ -236,7 +236,7 @@ /obj/effect/decal/cleanable/blood/writing/Initialize(mapload) . = ..() - if(random_icon_states.len) + if(length(random_icon_states)) for(var/obj/effect/decal/cleanable/blood/writing/W in loc) random_icon_states.Remove(W.icon_state) icon_state = pick(random_icon_states) diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index 35d339aebcb..e2c8e72e9a1 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -56,7 +56,7 @@ bloodiness -= add_blood S.bloody_shoes[blood_state] = min(MAX_SHOE_BLOODINESS, S.bloody_shoes[blood_state] + add_blood) S.bloody_shoes[BLOOD_BASE_ALPHA] = BLOODY_FOOTPRINT_BASE_ALPHA * (alpha/255) - if(blood_DNA && blood_DNA.len) + if(blood_DNA && length(blood_DNA)) S.add_blood(H.blood_DNA, basecolor) S.blood_state = blood_state S.blood_color = basecolor diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm index 562c7390b6c..9f5471fb2ce 100644 --- a/code/game/objects/effects/glowshroom.dm +++ b/code/game/objects/effects/glowshroom.dm @@ -91,7 +91,7 @@ if(direction & i) dirList += i - if(dirList.len) + if(length(dirList)) var/newDir = pick(dirList) if(newDir == 16) floor = 1 diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index a127b327d13..a2f5b11cbdd 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -416,7 +416,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/newplayer_start) //Without this you sp /obj/effect/landmark/costume/random/Initialize(mapload) //costume spawner, selects a random subclass and disappears . = ..() var/list/options = (typesof(/obj/effect/landmark/costume) - /obj/effect/landmark/costume/random) - var/PICK= options[rand(1,options.len)] + var/PICK= options[rand(1,length(options))] new PICK(src.loc) return INITIALIZE_HINT_QDEL @@ -580,7 +580,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/newplayer_start) //Without this you sp var/datum/map_template/ruin/ruin_template /obj/effect/landmark/ruin/New(loc, my_ruin_template) - name = "ruin_[GLOB.ruin_landmarks.len + 1]" + name = "ruin_[length(GLOB.ruin_landmarks) + 1]" ..(loc) ruin_template = my_ruin_template GLOB.ruin_landmarks |= src diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index 4f2ece5959f..08703285cc2 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -132,7 +132,7 @@ var/list/vents = list() for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in entry_vent.parent.other_atmosmch) vents.Add(temp_vent) - if(!vents.len) + if(!length(vents)) entry_vent = null return var/obj/machinery/atmospherics/unary/vent_pump/exit_vent = pick(vents) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 0b2958abbce..03a576f0358 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -229,7 +229,7 @@ GLOBAL_DATUM_INIT(welding_sparks, /mutable_appearance, mutable_appearance('icons msg += "No tech origins detected.
    " - if(materials.len) + if(length(materials)) msg += "Extractable materials:
    " for(var/mat in materials) msg += "[CallMaterialName(mat)]
    " //Capitize first word, remove the "$" diff --git a/code/game/objects/items/ashtray.dm b/code/game/objects/items/ashtray.dm index 63e2d25fdad..037709e2c00 100644 --- a/code/game/objects/items/ashtray.dm +++ b/code/game/objects/items/ashtray.dm @@ -7,7 +7,7 @@ /obj/item/ashtray/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/cigbutt) || istype(I, /obj/item/clothing/mask/cigarette) || istype(I, /obj/item/match)) - if(contents.len >= max_butts) + if(length(contents) >= max_butts) to_chat(user, "This ashtray is full.") return if(!user.unEquip(I)) @@ -31,18 +31,18 @@ return ..() /obj/item/ashtray/update_icon_state() - if(contents.len == max_butts) + if(length(contents) == max_butts) icon_state = icon_full - else if(contents.len > max_butts * 0.5) + else if(length(contents) > max_butts * 0.5) icon_state = icon_half else icon_state = initial(icon_state) /obj/item/ashtray/update_desc() . = ..() - if(contents.len == max_butts) + if(length(contents) == max_butts) desc = initial(desc) + " It's stuffed full." - else if(contents.len > max_butts * 0.5) + else if(length(contents) > max_butts * 0.5) desc = initial(desc) + " It's half-filled." else desc = initial(desc) @@ -53,7 +53,7 @@ update_appearance(UPDATE_DESC|UPDATE_ICON_STATE) /obj/item/ashtray/throw_impact(atom/hit_atom) - if(contents.len) + if(length(contents)) visible_message("[src] slams into [hit_atom] spilling its contents!") empty_tray() return ..() diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm index a7b423a097e..66258630f48 100644 --- a/code/game/objects/items/blueprints.dm +++ b/code/game/objects/items/blueprints.dm @@ -211,7 +211,7 @@ A.always_unpowered = FALSE A.set_dynamic_lighting() - for(var/i in 1 to turfs.len) + for(var/i in 1 to length(turfs)) var/turf/thing = turfs[i] var/area/old_area = thing.loc A.contents += thing @@ -293,8 +293,8 @@ /obj/item/areaeditor/proc/detect_room(turf/first) var/list/turf/found = new var/list/turf/pending = list(first) - while(pending.len) - if(found.len+pending.len > 300) + while(length(pending)) + if(found.len+length(pending) > 300) return ROOM_ERR_TOOLARGE var/turf/T = pending[1] //why byond havent list::pop()? pending -= T diff --git a/code/game/objects/items/devices/autopsy.dm b/code/game/objects/items/devices/autopsy.dm index 141a8973895..af9646366c7 100644 --- a/code/game/objects/items/devices/autopsy.dm +++ b/code/game/objects/items/devices/autopsy.dm @@ -43,7 +43,7 @@ return W /obj/item/autopsy_scanner/proc/add_data(obj/item/organ/O) - if(O.autopsy_data.len) + if(length(O.autopsy_data)) for(var/V in O.autopsy_data) var/datum/autopsy_data/W = O.autopsy_data[V] @@ -62,7 +62,7 @@ qdel(D.organs_scanned[O.name]) D.organs_scanned[O.name] = W.copy() - if(O.trace_chemicals.len) + if(length(O.trace_chemicals)) for(var/V in O.trace_chemicals) if(O.trace_chemicals[V] > 0 && !chemtraces.Find(V)) chemtraces += V @@ -97,7 +97,7 @@ else scan_data += "Time of death: Unknown / Still alive

    " - if(wdata.len) + if(length(wdata)) var/n = 1 for(var/wdata_idx in wdata) var/datum/autopsy_data_scanner/D = wdata[wdata_idx] @@ -140,7 +140,7 @@ n++ - if(chemtraces.len) + if(length(chemtraces)) scan_data += "Trace Chemicals:
    " for(var/chemID in chemtraces) scan_data += chemID diff --git a/code/game/objects/items/devices/enginepicker.dm b/code/game/objects/items/devices/enginepicker.dm index 46cd5348565..f5fe7521608 100644 --- a/code/game/objects/items/devices/enginepicker.dm +++ b/code/game/objects/items/devices/enginepicker.dm @@ -49,7 +49,7 @@ var/G //Generator that will be spawned var/turf/T = get_turf(choice) - if(choice.enginetype.len > 1) //If the beacon has multiple engine types + if(length(choice.enginetype) > 1) //If the beacon has multiple engine types var/E = tgui_input_list(user, "You have selected a combined beacon, which option would you prefer?", "[src]", choice.enginetype) if(E) engtype = E @@ -76,7 +76,7 @@ var/ailist[] = list() for(var/mob/living/silicon/ai/A in GLOB.alive_mob_list) ailist += A - if(ailist.len) + if(length(ailist)) var/mob/living/silicon/ai/announcer = pick(ailist) announcer.say(";Engine delivery detected. Type: [engtype].") //Let's announce the terrible choice to everyone diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index f04502612d6..dbb4ecb723a 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -387,21 +387,22 @@ return FALSE return ..() -/obj/item/radio/headset/attackby(obj/item/W as obj, mob/user as mob) - if(istype(W, /obj/item/encryptionkey/)) +/obj/item/radio/headset/attackby(obj/item/key, mob/user) + if(istype(key, /obj/item/encryptionkey/)) if(keyslot1 && keyslot2) to_chat(user, "The headset can't hold another key!") return + if(!user.unEquip(key)) + to_chat(user, "[key] is stuck to your hand, you can't insert it in [src].") + return + + key.forceMove(src) if(!keyslot1) - user.drop_item() - W.loc = src - keyslot1 = W + keyslot1 = key else - user.drop_item() - W.loc = src - keyslot2 = W + keyslot2 = key recalculateChannels() return @@ -489,11 +490,11 @@ /obj/item/radio/headset/proc/setupRadioDescription() var/radio_text = "" - for(var/i = 1 to channels.len) + for(var/i = 1 to length(channels)) var/channel = channels[i] var/key = get_radio_key_from_channel(channel) radio_text += "[key] - [channel]" - if(i != channels.len) + if(i != length(channels)) radio_text += ", " radio_desc = radio_text diff --git a/code/game/objects/items/devices/radio/radio_objects.dm b/code/game/objects/items/devices/radio/radio_objects.dm index 2f7f5e4f184..9553c14b5de 100644 --- a/code/game/objects/items/devices/radio/radio_objects.dm +++ b/code/game/objects/items/devices/radio/radio_objects.dm @@ -258,7 +258,7 @@ GLOBAL_LIST_EMPTY(deadsay_radio_systems) /obj/item/radio/proc/autosay(message, from, channel, role = "Unknown", follow_target_override) //BS12 EDIT var/datum/radio_frequency/connection = null - if(channel && channels && channels.len > 0) + if(channel && channels && length(channels) > 0) if(channel == "department") channel = channels[1] connection = secure_radio_connections[channel] @@ -343,7 +343,7 @@ GLOBAL_LIST_EMPTY(deadsay_radio_systems) return radio_connection // Otherwise, if a channel is specified, look for it. - if(channels && channels.len > 0) + if(channels && length(channels) > 0) if(message_mode == "department") // Department radio shortcut message_mode = channels[1] @@ -527,7 +527,7 @@ GLOBAL_LIST_EMPTY(deadsay_radio_systems) if(freq in SSradio.ANTAG_FREQS) if(!(syndiekey))//Checks to see if it's allowed on that frequency, based on the encryption keys return -1 - if(!freq) //recieved on main frequency + if(!freq) //received on main frequency if(!listening) return -1 else diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index c2d93a5cb98..04d3b60581a 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -80,13 +80,13 @@ SLIME SCANNER if(ishuman(M)) var/mob/living/carbon/human/H = M if(H.reagents) - if(H.reagents.reagent_list.len) + if(length(H.reagents.reagent_list)) msgs += "Subject contains the following reagents:" for(var/datum/reagent/R in H.reagents.reagent_list) msgs += "[R.volume]u of [R.name][R.overdosed ? " - OVERDOSING" : ".
    "]" else msgs += "Subject contains no reagents." - if(H.reagents.addiction_list.len) + if(length(H.reagents.addiction_list)) msgs += "Subject is addicted to the following reagents:" for(var/datum/reagent/R in H.reagents.addiction_list) msgs += "[R.name] Stage: [R.addiction_stage]/5" @@ -664,7 +664,7 @@ SLIME SCANNER if(!isnull(O.reagents)) var/dat = "" var/blood_type = "" - if(O.reagents.reagent_list.len > 0) + if(length(O.reagents.reagent_list) > 0) var/one_percent = O.reagents.total_volume / 100 for(var/datum/reagent/R in O.reagents.reagent_list) if(R.id != "blood") diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index 40fbaec9bc8..2e8f73059fd 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -231,7 +231,7 @@ playsound(loc, 'sound/goonstation/machines/printer_thermal.ogg', 50, 1) var/obj/item/paper/P = new /obj/item/paper(get_turf(src)) var/t1 = "Transcript:

    " - for(var/i = 1, mytape.storedinfo.len >= i, i++) + for(var/i = 1, length(mytape.storedinfo) >= i, i++) t1 += "[mytape.storedinfo[i]]
    " P.info = t1 P.name = "paper- 'Transcript'" diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index a8817a1b722..62c6af8cb8d 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -145,7 +145,7 @@ new/obj/effect/temp_visual/teleport_abductor/syndi_teleporter(mobloc) playsound(destination, "sparks", 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) new/obj/effect/temp_visual/teleport_abductor/syndi_teleporter(destination) - else if(!EMP_D && !(bagholding.len && !flawless)) // This is where the fun begins + else if(!EMP_D && !(length(bagholding) && !flawless)) // This is where the fun begins var/direction = get_dir(user, destination) panic_teleport(user, destination, direction) else // Emp activated? Bag of holding? No saving throw for you diff --git a/code/game/objects/items/devices/uplinks.dm b/code/game/objects/items/devices/uplinks.dm index 522ee656d72..1439b9134c6 100644 --- a/code/game/objects/items/devices/uplinks.dm +++ b/code/game/objects/items/devices/uplinks.dm @@ -64,13 +64,13 @@ GLOBAL_LIST_EMPTY(world_uplinks) for(var/category in uplink_items) cats[++cats.len] = list("cat" = category, "items" = list()) for(var/datum/uplink_item/I in uplink_items[category]) - if(I.job && I.job.len) + if(I.job && length(I.job)) if(!(I.job.Find(job)) && uplink_type != UPLINK_TYPE_ADMIN) continue if(length(I.species)) if(!(I.species.Find(species)) && uplink_type != UPLINK_TYPE_ADMIN) continue - cats[cats.len]["items"] += list(list( + cats[length(cats)]["items"] += list(list( "name" = sanitize(I.name), "desc" = sanitize(I.description()), "cost" = I.cost, @@ -88,10 +88,10 @@ GLOBAL_LIST_EMPTY(world_uplinks) var/list/random_items = list() - for(var/IR in uplink_items) - var/datum/uplink_item/UI = uplink_items[IR] - if(UI.cost <= uses && UI.limited_stock != 0) - random_items += UI + for(var/uplink_section in uplink_items) + for(var/datum/uplink_item/UI in uplink_items[uplink_section]) + if(UI.cost <= uses && UI.limited_stock != 0) + random_items += UI return pick(random_items) diff --git a/code/game/objects/items/mixing_bowl.dm b/code/game/objects/items/mixing_bowl.dm index 286e68e3088..59898eec3f1 100644 --- a/code/game/objects/items/mixing_bowl.dm +++ b/code/game/objects/items/mixing_bowl.dm @@ -26,7 +26,7 @@ to_chat(user, "You should clean [src] before you use it for food prep.") return 0 if(is_type_in_list(I, GLOB.cooking_ingredients[RECIPE_MICROWAVE]) || is_type_in_list(I, GLOB.cooking_ingredients[RECIPE_GRILL]) || is_type_in_list(I, GLOB.cooking_ingredients[RECIPE_OVEN]) || is_type_in_list(I, GLOB.cooking_ingredients[RECIPE_CANDY])) - if(contents.len>=max_n_of_items) + if(length(contents)>=max_n_of_items) to_chat(user, "This [src] is full of ingredients, you cannot put more.") return 1 if(istype(I, /obj/item/stack)) @@ -103,7 +103,7 @@ display_name = "Coldsauce" dat += {"[display_name]: [R.volume] unit\s
    "} - if(items_counts.len==0 && reagents.reagent_list.len==0) + if(length(items_counts)==0 && length(reagents.reagent_list)==0) dat = {"[src] is empty
    "} else dat = {"Ingredients:
    [dat]"} diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index e5986a9833c..1828254d2ef 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -7,7 +7,7 @@ icon = 'icons/obj/module.dmi' icon_state = "cyborg_upgrade" origin_tech = "programming=2" - /// Whether or not the cyborg needs to have a chosen module before they can recieve this upgrade. + /// Whether or not the cyborg needs to have a chosen module before they can receive this upgrade. var/require_module = FALSE /// The type of module this upgrade is compatible with: Engineering, Medical, etc. var/module_type = null @@ -364,10 +364,11 @@ /***********************/ /obj/item/borg/upgrade/floorbuffer - name = "janitor cyborg floor buffer upgrade" - desc = "A floor buffer upgrade kit that can be attached to janitor cyborgs." + name = "janitorial floor buffer upgrade" + desc = "A floor buffer upgrade kit that can be attached to janitor cyborgs and mobile janicarts." icon = 'icons/obj/vehicles.dmi' icon_state = "upgrade" + origin_tech = "materials=3;engineering=4" require_module = TRUE module_type = /obj/item/robot_module/janitor /// How much speed the cyborg loses while the buffer is active diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index f74144a9ca5..8e419170469 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -143,7 +143,7 @@ recipe_list = srl.recipes var/t1 = "Amount Left: [get_amount()]
    " - for(var/i in 1 to recipe_list.len) + for(var/i in 1 to length(recipe_list)) var/E = recipe_list[i] if(isnull(E)) t1 += "
    " diff --git a/code/game/objects/items/tools/multitool.dm b/code/game/objects/items/tools/multitool.dm index d7eb05149c6..a44742ade66 100644 --- a/code/game/objects/items/tools/multitool.dm +++ b/code/game/objects/items/tools/multitool.dm @@ -85,7 +85,7 @@ if(!detect_state && GLOB.cameranet.chunkGenerated(our_turf.x, our_turf.y, our_turf.z)) var/datum/camerachunk/chunk = GLOB.cameranet.getCameraChunk(our_turf.x, our_turf.y, our_turf.z) if(chunk) - if(chunk.seenby.len) + if(length(chunk.seenby)) for(var/mob/camera/aiEye/A in chunk.seenby) //Checks if the A is to be detected or not if(!A.ai_detector_visible) diff --git a/code/game/objects/items/weapons/cigs.dm b/code/game/objects/items/weapons/cigs.dm index ef0d3dbe555..efd1ea57792 100644 --- a/code/game/objects/items/weapons/cigs.dm +++ b/code/game/objects/items/weapons/cigs.dm @@ -245,7 +245,7 @@ LIGHTERS ARE IN LIGHTERS.DM if(is_being_smoked) // if it's being smoked, transfer reagents to the mob var/mob/living/carbon/C = loc for(var/datum/reagent/R in reagents.reagent_list) - reagents.trans_id_to(C, R.id, first_puff ? 1 : max(REAGENTS_METABOLISM / reagents.reagent_list.len, 0.1)) //transfer at least .1 of each chem + reagents.trans_id_to(C, R.id, first_puff ? 1 : max(REAGENTS_METABOLISM / length(reagents.reagent_list), 0.1)) //transfer at least .1 of each chem first_puff = FALSE if(!reagents.total_volume) // There were reagents, but now they're gone to_chat(C, "Your [name] loses its flavor.") diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 81bf6cf32a5..445546f20a1 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -134,7 +134,7 @@ to_chat(user, "You remove the label from [src].") return 1 else if(stage == WIRED && is_type_in_list(I, allowed_containers)) - if(beakers.len == 2) + if(length(beakers) == 2) to_chat(user, "[src] can not hold more containers.") return else @@ -184,7 +184,7 @@ nadeassembly.forceMove(get_turf(src)) nadeassembly.master = null nadeassembly = null - if(beakers.len) + if(length(beakers)) for(var/obj/O in beakers) O.forceMove(get_turf(src)) beakers = list() @@ -280,7 +280,7 @@ if(!chem_splash(get_turf(src), affected_area, reactants, ignition_temp, threatscale) && !no_splash) playsound(loc, 'sound/items/screwdriver2.ogg', 50, 1) - if(beakers.len) + if(length(beakers)) for(var/obj/O in beakers) O.forceMove(get_turf(src)) beakers = list() diff --git a/code/game/objects/items/weapons/holosign_projector.dm b/code/game/objects/items/weapons/holosign_projector.dm index 4e806509f2e..655286170d4 100644 --- a/code/game/objects/items/weapons/holosign_projector.dm +++ b/code/game/objects/items/weapons/holosign_projector.dm @@ -32,7 +32,7 @@ if(holocreator_busy) to_chat(user, "[src] is busy creating a hologram.") return - if(signs.len < max_signs) + if(length(signs) < max_signs) playsound(src.loc, 'sound/machines/click.ogg', 20, 1) if(creation_time) holocreator_busy = TRUE @@ -40,7 +40,7 @@ holocreator_busy = FALSE return holocreator_busy = FALSE - if(signs.len >= max_signs) + if(length(signs) >= max_signs) return if(is_blocked_turf(T, TRUE)) //don't try to sneak dense stuff on our tile during the wait. return @@ -54,7 +54,7 @@ return /obj/item/holosign_creator/attack_self(mob/user) - if(signs.len) + if(length(signs)) for(var/H in signs) qdel(H) to_chat(user, "You clear all active holograms.") @@ -135,7 +135,7 @@ to_chat(user, "You clear all active holograms, and reset your projector to normal.") holosign_type = /obj/structure/holosign/barrier/cyborg creation_time = 5 - if(signs.len) + if(length(signs)) for(var/H in signs) qdel(H) shock = 0 @@ -144,17 +144,17 @@ to_chat(user, "You clear all active holograms, and overload your energy projector!") holosign_type = /obj/structure/holosign/barrier/cyborg/hacked creation_time = 30 - if(signs.len) + if(length(signs)) for(var/H in signs) qdel(H) shock = 1 return else - if(signs.len) + if(length(signs)) for(var/H in signs) qdel(H) to_chat(user, "You clear all active holograms.") - if(signs.len) + if(length(signs)) for(var/H in signs) qdel(H) to_chat(user, "You clear all active holograms.") diff --git a/code/game/objects/items/weapons/melee/energy_melee_weapons.dm b/code/game/objects/items/weapons/melee/energy_melee_weapons.dm index b716a7ce5b1..22acf04add8 100644 --- a/code/game/objects/items/weapons/melee/energy_melee_weapons.dm +++ b/code/game/objects/items/weapons/melee/energy_melee_weapons.dm @@ -55,7 +55,7 @@ throwforce = throwforce_on hitsound = 'sound/weapons/blade1.ogg' throw_speed = 4 - if(attack_verb_on.len) + if(length(attack_verb_on)) attack_verb = attack_verb_on if(icon_state_on) icon_state = icon_state_on @@ -71,7 +71,7 @@ throwforce = throwforce_off hitsound = initial(hitsound) throw_speed = initial(throw_speed) - if(attack_verb_on.len) + if(length(attack_verb_on)) attack_verb = list() icon_state = initial(icon_state) w_class = initial(w_class) @@ -339,7 +339,7 @@ throwforce = throwforce_on hitsound = 'sound/weapons/bladeslice.ogg' throw_speed = 4 - if(attack_verb_on.len) + if(length(attack_verb_on)) attack_verb = attack_verb_on if(icon_state_on) icon_state = icon_state_on @@ -355,7 +355,7 @@ throwforce = throwforce_off hitsound = initial(hitsound) throw_speed = initial(throw_speed) - if(attack_verb_on.len) + if(length(attack_verb_on)) attack_verb = list() icon_state = initial(icon_state) w_class = initial(w_class) diff --git a/code/game/objects/items/weapons/stock_parts.dm b/code/game/objects/items/weapons/stock_parts.dm index 302ce2f20fc..570c1c8f8b0 100644 --- a/code/game/objects/items/weapons/stock_parts.dm +++ b/code/game/objects/items/weapons/stock_parts.dm @@ -220,7 +220,7 @@ /obj/item/stock_parts/capacitor/quadratic name = "quadratic capacitor" - desc = "An capacity capacitor used in the construction of a variety of devices." + desc = "An ultra-high capacity capacitor used in the construction of a variety of devices." icon_state = "quadratic_capacitor" origin_tech = "powerstorage=5;materials=4;engineering=4" rating = 4 diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 052d4ac74c5..600550157ce 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -77,7 +77,7 @@ return TOXLOSS /obj/item/storage/bag/trash/update_icon_state() - switch(contents.len) + switch(length(contents)) if(21 to INFINITY) icon_state = "[initial(icon_state)]3" if(11 to 20) @@ -336,7 +336,7 @@ // Sets up numbered display to show the stack size of each stored mineral // NOTE: numbered display is turned off currently because it's broken /obj/item/storage/bag/sheetsnatcher/orient2hud(mob/user as mob) - var/adjusted_contents = contents.len + var/adjusted_contents = length(contents) //Numbered contents display var/list/datum/numbered_display/numbered_contents @@ -377,7 +377,7 @@ if(!istype(S)) return 0 //I would prefer to drop a new stack, but the item/attack_hand code - // that calls this can't recieve a different object than you clicked on. + // that calls this can't receive a different object than you clicked on. //Therefore, make a new stack internally that has the remainder. // -Sayu diff --git a/code/game/objects/items/weapons/storage/bible.dm b/code/game/objects/items/weapons/storage/bible.dm index e4bafc9d70f..dd88e73e614 100644 --- a/code/game/objects/items/weapons/storage/bible.dm +++ b/code/game/objects/items/weapons/storage/bible.dm @@ -99,7 +99,7 @@ var/mob/living/carbon/human/H = M if(prob(60)) bless(H) - H.visible_message("[user] heals [H == user ? "[user.p_themselves()]" : "[H]"] with the power of [deity_name]!", "May the power of [deity_name] compel you to be healed!") playsound(loc, "punch", 25, 1, -1) else diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 447580b14ad..e33ecd54bd1 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -1005,7 +1005,7 @@ /obj/item/storage/box/papersack/attackby(obj/item/W, mob/user, params) if(is_pen(W)) //if a pen is used on the sack, dialogue to change its design appears - if(contents.len) + if(length(contents)) to_chat(user, "You can't modify [src] with items still inside!") return var/list/designs = list(NODESIGN, NANOTRASEN, SYNDI, HEART, SMILE) @@ -1022,7 +1022,7 @@ update_appearance(UPDATE_DESC|UPDATE_ICON_STATE) return else if(W.sharp) - if(!contents.len) + if(!length(contents)) if(item_state == "paperbag_None") to_chat(user, "You cut eyeholes into [src].") new /obj/item/clothing/head/papersack(user.loc) diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index 24fcd542715..58c9fc1f0b6 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -232,15 +232,15 @@ new cigarette_type(src) /obj/item/storage/fancy/cigarettes/update_icon_state() - icon_state = "[initial(icon_state)][contents.len]" + icon_state = "[initial(icon_state)][length(contents)]" /obj/item/storage/fancy/cigarettes/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) if(!ismob(M)) return - if(istype(M) && M == user && user.zone_selected == "mouth" && contents.len > 0 && !user.wear_mask) + if(istype(M) && M == user && user.zone_selected == "mouth" && length(contents) > 0 && !user.wear_mask) var/got_cig = 0 - for(var/num=1, num <= contents.len, num++) + for(var/num=1, num <= length(contents), num++) var/obj/item/I = contents[num] if(istype(I, /obj/item/clothing/mask/cigarette)) var/obj/item/clothing/mask/cigarette/C = I @@ -374,7 +374,7 @@ /obj/item/storage/fancy/rollingpapers/update_overlays() . = ..() - if(!contents.len) + if(!length(contents)) . += "[icon_state]_empty" /* diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm index 118b05361e7..74f094d40ae 100644 --- a/code/game/objects/items/weapons/storage/firstaid.dm +++ b/code/game/objects/items/weapons/storage/firstaid.dm @@ -290,7 +290,7 @@ overlays += I /obj/item/storage/pill_bottle/attack(mob/M, mob/user) - if(iscarbon(M) && contents.len) + if(iscarbon(M) && length(contents)) if(applying_meds) to_chat(user, "You are already applying meds.") return @@ -339,7 +339,7 @@ if(iscarbon(over_object)) var/mob/living/carbon/C = over_object if(loc == C && src == C.get_active_hand()) - if(!contents.len) + if(!length(contents)) to_chat(C, "There is nothing in [src]!") return C.visible_message("[C] [rapid_intake_message]") diff --git a/code/game/objects/items/weapons/storage/storage_base.dm b/code/game/objects/items/weapons/storage/storage_base.dm index 80f1531cee3..cfb1b6015dc 100644 --- a/code/game/objects/items/weapons/storage/storage_base.dm +++ b/code/game/objects/items/weapons/storage/storage_base.dm @@ -722,7 +722,7 @@ // But then again a tesseract would destroy the server anyways // Also I wish I could just insert a list instead of it reading it the wrong way content_list.len++ - content_list[content_list.len] = AM.serialize() + content_list[length(content_list)] = AM.serialize() return data /obj/item/storage/deserialize(list/data) diff --git a/code/game/objects/items/weapons/storage/surgical_tray.dm b/code/game/objects/items/weapons/storage/surgical_tray.dm index d46f15b0894..c7c91677d8d 100644 --- a/code/game/objects/items/weapons/storage/surgical_tray.dm +++ b/code/game/objects/items/weapons/storage/surgical_tray.dm @@ -36,7 +36,7 @@ new /obj/item/stack/medical/ointment/advanced(src) /obj/item/storage/surgical_tray/update_icon_state() - if(!contents.len) + if(!length(contents)) icon_state = "surgical_tray_e" else icon_state = "surgical_tray" diff --git a/code/game/objects/items/weapons/teleportation.dm b/code/game/objects/items/weapons/teleportation.dm index 12d8c9f4c06..403cbe1462b 100644 --- a/code/game/objects/items/weapons/teleportation.dm +++ b/code/game/objects/items/weapons/teleportation.dm @@ -56,7 +56,7 @@ if(A.tele_proof) continue // Telescience-proofed areas require a beacon. turfs += T - if(turfs.len) + if(length(turfs)) L["None (Dangerous)"] = pick(turfs) var/t1 = tgui_input_list(user, "Please select a teleporter to lock in on.", "Hand Teleporter", L) if(!t1 || (!user.is_in_active_hand(src) || user.stat || user.restrained())) diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index 2153082219c..91106241eaf 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -339,8 +339,8 @@ LINEN BINS amount-- var/obj/item/bedsheet/B - if(sheets.len > 0) - B = sheets[sheets.len] + if(length(sheets) > 0) + B = sheets[length(sheets)] sheets.Remove(B) else @@ -364,8 +364,8 @@ LINEN BINS amount-- var/obj/item/bedsheet/B - if(sheets.len > 0) - B = sheets[sheets.len] + if(length(sheets) > 0) + B = sheets[length(sheets)] sheets.Remove(B) else diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index 4a11d6cc15d..5bee6f32e4a 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -20,7 +20,7 @@ /obj/structure/displaycase/Initialize(mapload) . = ..() - if(start_showpieces.len && !start_showpiece_type) + if(length(start_showpieces) && !start_showpiece_type) var/list/showpiece_entry = pick(start_showpieces) if(showpiece_entry && showpiece_entry["type"]) start_showpiece_type = showpiece_entry["type"] diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm index 43d4c263c18..87b775b7e71 100644 --- a/code/game/objects/structures/signs.dm +++ b/code/game/objects/structures/signs.dm @@ -369,6 +369,10 @@ desc = "A direction sign, pointing out which way the Supply Department is." icon_state = "direction_supply" +/obj/structure/sign/directions/service + desc = "A direction sign, pointing out which way the Service Department is." + icon_state = "direction_service" + /obj/structure/sign/explosives name = "\improper HIGH EXPLOSIVES" desc = "A warning sign which reads 'HIGH EXPLOSIVES'." diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index 054ea1bf822..b349b39b73e 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -148,7 +148,7 @@ /obj/structure/bed/roller/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/roller_holder)) if(has_buckled_mobs()) - if(buckled_mobs.len > 1) + if(length(buckled_mobs) > 1) unbuckle_all_mobs() user.visible_message("[user] unbuckles all creatures from [src].") else diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 284b39dd50f..9cfbaa16307 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -31,7 +31,7 @@ return if(cistern && !open) - if(!contents.len) + if(!length(contents)) to_chat(user, "The cistern is empty.") return else diff --git a/code/game/turfs/simulated/river.dm b/code/game/turfs/simulated/river.dm index b5b9a7d8acc..b8182433df2 100644 --- a/code/game/turfs/simulated/river.dm +++ b/code/game/turfs/simulated/river.dm @@ -44,7 +44,7 @@ var/list/river_nodes = list() var/num_spawned = 0 var/list/possible_locs = block(locate(min_x, min_y, target_z), locate(max_x, max_y, target_z)) - while(num_spawned < nodes && possible_locs.len) + while(num_spawned < nodes && length(possible_locs)) var/turf/T = pick(possible_locs) var/area/A = get_area(T) if(!istype(A, whitelist_area_type) || (T.flags & NO_LAVA_GEN)) diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 8dab455021b..d4c41a5fd55 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -116,9 +116,9 @@ . += dent_decals return - var/overlay = round(damage / damage_cap * damage_overlays.len) + 1 - if(overlay > damage_overlays.len) - overlay = damage_overlays.len + var/overlay = round(damage / damage_cap * length(damage_overlays)) + 1 + if(overlay > length(damage_overlays)) + overlay = length(damage_overlays) if(length(dent_decals)) . += dent_decals @@ -127,9 +127,9 @@ . += dent_decals /turf/simulated/wall/proc/generate_overlays() - var/alpha_inc = 256 / damage_overlays.len + var/alpha_inc = 256 / length(damage_overlays) - for(var/i = 1; i <= damage_overlays.len; i++) + for(var/i = 1; i <= length(damage_overlays); i++) var/image/img = image(icon = 'icons/turf/walls.dmi', icon_state = "overlay_damage") img.blend_mode = BLEND_MULTIPLY img.alpha = (i * alpha_inc) - 1 diff --git a/code/game/turfs/simulated/walls_mineral.dm b/code/game/turfs/simulated/walls_mineral.dm index 517e5dad0c5..c5a0cad1ea5 100644 --- a/code/game/turfs/simulated/walls_mineral.dm +++ b/code/game/turfs/simulated/walls_mineral.dm @@ -243,7 +243,7 @@ /turf/simulated/wall/mineral/titanium/interior/copyTurf(turf/T) if(T.type != type) T.ChangeTurf(type) - if(underlays.len) + if(length(underlays)) T.underlays = underlays if(T.icon_state != icon_state) T.icon_state = icon_state @@ -343,7 +343,7 @@ /turf/simulated/wall/mineral/plastitanium/interior/copyTurf(turf/T) if(T.type != type) T.ChangeTurf(type) - if(underlays.len) + if(length(underlays)) T.underlays = underlays if(T.icon_state != icon_state) T.icon_state = icon_state diff --git a/code/game/turfs/space/space_turf.dm b/code/game/turfs/space/space_turf.dm index 2cef6597e29..f5815136862 100644 --- a/code/game/turfs/space/space_turf.dm +++ b/code/game/turfs/space/space_turf.dm @@ -147,7 +147,7 @@ if(!cur_pos) return cur_x = cur_pos["x"] cur_y = cur_pos["y"] - next_x = (--cur_x||GLOB.global_map.len) + next_x = (--cur_x||length(GLOB.global_map)) y_arr = GLOB.global_map[next_x] target_z = y_arr[cur_y] /* @@ -172,7 +172,7 @@ if(!cur_pos) return cur_x = cur_pos["x"] cur_y = cur_pos["y"] - next_x = (++cur_x > GLOB.global_map.len ? 1 : cur_x) + next_x = (++cur_x > length(GLOB.global_map) ? 1 : cur_x) y_arr = GLOB.global_map[next_x] target_z = y_arr[cur_y] /* @@ -197,7 +197,7 @@ cur_x = cur_pos["x"] cur_y = cur_pos["y"] y_arr = GLOB.global_map[cur_x] - next_y = (--cur_y||y_arr.len) + next_y = (--cur_y||length(y_arr)) target_z = y_arr[next_y] /* //debug @@ -222,7 +222,7 @@ cur_x = cur_pos["x"] cur_y = cur_pos["y"] y_arr = GLOB.global_map[cur_x] - next_y = (++cur_y > y_arr.len ? 1 : cur_y) + next_y = (++cur_y > length(y_arr) ? 1 : cur_y) target_z = y_arr[next_y] /* //debug diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index a6701f650a5..043e2d7b690 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -91,7 +91,7 @@ GLOBAL_VAR_INIT(admin_ooc_colour, "#b82e00") display_name = holder.fakekey if(GLOB.configuration.general.enable_ooc_emoji) - msg = "[msg]" + msg = emoji_parse(msg) to_chat(C, "OOC: [display_name]: [msg]") diff --git a/code/game/verbs/randomtip.dm b/code/game/verbs/randomtip.dm index 25cc996c8fe..90a0447183d 100644 --- a/code/game/verbs/randomtip.dm +++ b/code/game/verbs/randomtip.dm @@ -7,9 +7,9 @@ var/list/randomtips = file2list("strings/tips.txt") var/list/memetips = file2list("strings/sillytips.txt") - if(randomtips.len && prob(95)) + if(length(randomtips) && prob(95)) m = pick(randomtips) - else if(memetips.len) + else if(length(memetips)) m = pick(memetips) if(m) diff --git a/code/game/world.dm b/code/game/world.dm index 37226335dd3..e934067c084 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -185,7 +185,7 @@ GLOBAL_LIST_EMPTY(world_topic_handlers) /world/proc/load_mode() var/list/Lines = file2list("data/mode.txt") - if(Lines.len) + if(length(Lines)) if(Lines[1]) GLOB.master_mode = Lines[1] log_game("Saved mode is '[GLOB.master_mode]'") diff --git a/code/modules/admin/admin_memo.dm b/code/modules/admin/admin_memo.dm index 846d4fc0f0e..1f88ee3f7bf 100644 --- a/code/modules/admin/admin_memo.dm +++ b/code/modules/admin/admin_memo.dm @@ -152,7 +152,7 @@ memolist += "[ckey]" qdel(query_memodellist) - if(!memolist.len) + if(!length(memolist)) to_chat(src, "No memos found in database.") return diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index c07c71a4a2a..49d8b4f0817 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -871,7 +871,7 @@ GLOBAL_LIST_INIT(view_runtimes_verbs, list( for(var/datum/job/J in SSjobs.occupations) if(J.current_positions >= J.total_positions && J.total_positions != -1) jobs += J.title - if(!jobs.len) + if(!length(jobs)) to_chat(usr, "There are no fully staffed jobs.") return var/job = input("Please select job slot to free", "Free Job Slot") as null|anything in jobs diff --git a/code/modules/admin/banjob.dm b/code/modules/admin/banjob.dm index 384fef47a08..86718b4b673 100644 --- a/code/modules/admin/banjob.dm +++ b/code/modules/admin/banjob.dm @@ -35,7 +35,7 @@ /** * Lists all active jobbans for src client * - * from_client_connection - If true, user will not recieve any info in chat if they have no job bans, used when a player loads into to the lobby. + * from_client_connection - If true, user will not receive any info in chat if they have no job bans, used when a player loads into to the lobby. */ /client/proc/display_job_bans(from_client_connection = FALSE) if(!from_client_connection) // Only reload if this is being checked by a user manually, as we load job bans at client new anyway diff --git a/code/modules/admin/misc_admin_procs.dm b/code/modules/admin/misc_admin_procs.dm index 86370f2220b..40729ea7e0f 100644 --- a/code/modules/admin/misc_admin_procs.dm +++ b/code/modules/admin/misc_admin_procs.dm @@ -111,9 +111,9 @@ GLOBAL_VAR_INIT(nologevent, 0) body += "SEND ALERT\]
    " body += "Mob type: [M.type]
    " if(M.client) - if(M.client.related_accounts_cid.len) + if(length(M.client.related_accounts_cid)) body += "Related accounts by CID: [jointext(M.client.related_accounts_cid, " - ")]
    " - if(M.client.related_accounts_ip.len) + if(length(M.client.related_accounts_ip)) body += "Related accounts by IP: [jointext(M.client.related_accounts_ip, " - ")]

    " if(M.ckey) @@ -726,11 +726,11 @@ GLOBAL_VAR_INIT(nologevent, 0) if(copytext("[path]", -needle_length) == object) matches += path - if(matches.len==0) + if(length(matches)==0) return var/chosen - if(matches.len==1) + if(length(matches)==1) chosen = matches[1] else chosen = input("Select an atom type", "Spawn Atom", matches[1]) as null|anything in matches diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index bcf88a9d935..ca98106ea1b 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -366,7 +366,7 @@ dat += "[SSticker.delay_end ? "End Round Normally" : "Delay Round End"]
    " dat += "
    Antagonist Teams
    " dat += "View Teams
    " - if(SSticker.mode.syndicates.len) + if(length(SSticker.mode.syndicates)) dat += "
    " for(var/datum/mind/N in SSticker.mode.syndicates) var/mob/M = N.current @@ -413,65 +413,65 @@ dat += "
    Syndicates
    " - if(SSticker.mode.blob_overminds.len) + if(length(SSticker.mode.blob_overminds)) dat += check_role_table("Blob Overminds", SSticker.mode.blob_overminds) dat += "Blob Tiles: [length(GLOB.blobs)]" - if(SSticker.mode.changelings.len) + if(length(SSticker.mode.changelings)) dat += check_role_table("Changelings", SSticker.mode.changelings) - if(SSticker.mode.wizards.len) + if(length(SSticker.mode.wizards)) dat += check_role_table("Wizards", SSticker.mode.wizards) - if(SSticker.mode.apprentices.len) + if(length(SSticker.mode.apprentices)) dat += check_role_table("Apprentices", SSticker.mode.apprentices) - /*if(ticker.mode.ninjas.len) + /*if(length(ticker.mode.ninjas)) dat += check_role_table("Ninjas", ticker.mode.ninjas)*/ if(SSticker.mode.cult_team) dat += check_role_table("Cultists", SSticker.mode.cult_team.members) dat += "View Cult Team & Controls
    " - if(SSticker.mode.traitors.len) + if(length(SSticker.mode.traitors)) dat += check_role_table("Traitors", SSticker.mode.traitors) - if(SSticker.mode.implanted.len) + if(length(SSticker.mode.implanted)) dat += check_role_table("Mindslaves", SSticker.mode.implanted) - if(SSticker.mode.abductors.len) + if(length(SSticker.mode.abductors)) dat += check_role_table("Abductors", SSticker.mode.abductors) - if(SSticker.mode.abductees.len) + if(length(SSticker.mode.abductees)) dat += check_role_table("Abductees", SSticker.mode.abductees) - if(SSticker.mode.vampires.len) + if(length(SSticker.mode.vampires)) dat += check_role_table("Vampires", SSticker.mode.vampires) - if(SSticker.mode.vampire_enthralled.len) + if(length(SSticker.mode.vampire_enthralled)) dat += check_role_table("Vampire Thralls", SSticker.mode.vampire_enthralled) - if(SSticker.mode.xenos.len) + if(length(SSticker.mode.xenos)) dat += check_role_table("Xenos", SSticker.mode.xenos) - if(SSticker.mode.superheroes.len) + if(length(SSticker.mode.superheroes)) dat += check_role_table("Superheroes", SSticker.mode.superheroes) - if(SSticker.mode.supervillains.len) + if(length(SSticker.mode.supervillains)) dat += check_role_table("Supervillains", SSticker.mode.supervillains) - if(SSticker.mode.greyshirts.len) + if(length(SSticker.mode.greyshirts)) dat += check_role_table("Greyshirts", SSticker.mode.greyshirts) - if(SSticker.mode.eventmiscs.len) + if(length(SSticker.mode.eventmiscs)) dat += check_role_table("Event Roles", SSticker.mode.eventmiscs) - if(GLOB.ts_spiderlist.len) + if(length(GLOB.ts_spiderlist)) var/list/spider_minds = list() for(var/mob/living/simple_animal/hostile/poison/terror_spider/S in GLOB.ts_spiderlist) if(S.ckey) spider_minds += S.mind - if(spider_minds.len) + if(length(spider_minds)) dat += check_role_table("Terror Spiders", spider_minds) var/count_eggs = 0 @@ -486,7 +486,7 @@ count_infected = length(GLOB.ts_infected_list) dat += "
    Growing TS on-station: [count_eggs] egg\s, [count_spiderlings] spiderling\s, [count_infected] infected
    " - if(SSticker.mode.ert.len) + if(length(SSticker.mode.ert)) dat += check_role_table("ERT", SSticker.mode.ert) //list active security force count, so admins know how bad things are diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 26ea1891470..2f89291bc38 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -269,7 +269,7 @@ else if(task == "rank") var/new_rank - if(GLOB.admin_ranks.len) + if(length(GLOB.admin_ranks)) new_rank = input("Please select a rank", "New rank", null, null) as null|anything in (GLOB.admin_ranks|"*New Rank*") else new_rank = input("Please select a rank", "New rank", null, null) as null|anything in list("Mentor", "Trial Admin", "Game Admin", "*New Rank*") @@ -287,7 +287,7 @@ to_chat(usr, "Error: Topic 'editrights': Invalid rank") return if(!GLOB.configuration.admin.use_database_admins) - if(GLOB.admin_ranks.len) + if(length(GLOB.admin_ranks)) if(new_rank in GLOB.admin_ranks) rights = GLOB.admin_ranks[new_rank] //we typed a rank which already exists, use its rights else @@ -757,7 +757,7 @@ notbannedlist += job //Banning comes first - if(notbannedlist.len) //at least 1 unbanned job exists in joblist so we have stuff to ban. + if(length(notbannedlist)) //at least 1 unbanned job exists in joblist so we have stuff to ban. switch(alert("Temporary Ban of [M.ckey]?", null,"Yes","No", "Cancel")) if("Yes") var/mins = input(usr,"How long (in minutes)?","Ban time",1440) as num|null @@ -1991,7 +1991,7 @@ return var/list/mob/dead/observer/candidates = SSghost_spawns.poll_candidates("Play as the special event pet [H]?", poll_time = 20 SECONDS, min_hours = 10, source = petchoice) var/mob/dead/observer/theghost = null - if(candidates.len) + if(length(candidates)) var/mob/living/simple_animal/pet/P = new petchoice(H.loc) theghost = pick(candidates) P.key = theghost.key @@ -2148,7 +2148,7 @@ if(player.current) if(ismindshielded(player.current)) possible_traitors -= player - if(possible_traitors.len) + if(length(possible_traitors)) var/datum/mind/newtraitormind = pick(possible_traitors) var/datum/objective/assassinate/kill_objective = new() @@ -2678,9 +2678,9 @@ var/list/offset = splittext(href_list["offset"],",") var/number = dd_range(1, 100, text2num(href_list["object_count"])) - var/X = offset.len > 0 ? text2num(offset[1]) : 0 - var/Y = offset.len > 1 ? text2num(offset[2]) : 0 - var/Z = offset.len > 2 ? text2num(offset[3]) : 0 + var/X = length(offset) > 0 ? text2num(offset[1]) : 0 + var/Y = length(offset) > 1 ? text2num(offset[2]) : 0 + var/Z = length(offset) > 2 ? text2num(offset[3]) : 0 var/tmp_dir = href_list["object_dir"] var/obj_dir = tmp_dir ? text2num(tmp_dir) : 2 if(!obj_dir || !(obj_dir in list(1,2,4,8,5,6,9,10))) @@ -3276,7 +3276,7 @@ var/dat = "Admin Log
    " for(var/l in GLOB.admin_log) dat += "
  • [l]
  • " - if(!GLOB.admin_log.len) + if(!length(GLOB.admin_log)) dat += "No-one has done anything this round!" usr << browse(dat, "window=admin_log") if("maint_ACCESS_BRIG") @@ -3520,7 +3520,7 @@ message_admins("[key_name_admin(mob)] is sending a ([dresscode]) to [killthem ? "assassinate" : "protect"] [key_name_admin(H)]...") var/image/source = image('icons/obj/cardboard_cutout.dmi', "cutout_traitor") var/list/candidates = SSghost_spawns.poll_candidates("Play as a [killthem ? "murderous" : "protective"] [dresscode]?", ROLE_TRAITOR, TRUE, source = source, role_cleanname = "[killthem ? "murderous" : "protective"] [dresscode]") - if(!candidates.len) + if(!length(candidates)) to_chat(usr, "ERROR: Could not create eventmob. No valid candidates.") return var/mob/C = pick(candidates) diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm index 204385167c7..cddac52cea9 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm @@ -32,12 +32,12 @@ var/list/query_list = SDQL2_tokenize(query_text) - if(!query_list || query_list.len < 1) + if(!query_list || length(query_list) < 1) return var/list/querys = SDQL_parse(query_list) - if(!querys || querys.len < 1) + if(!querys || length(querys) < 1) return var/query_log = "executed SDQL query: \"[query_text]\"." @@ -129,7 +129,7 @@ var/datum/temp = d var/i = 0 for(var/v in sets) - if(++i == sets.len) + if(++i == length(sets)) if(isturf(temp) && (v == "x" || v == "y" || v == "z")) continue if(!temp.vv_edit_var(v, SDQL_expression(d, set_list[sets]))) @@ -156,7 +156,7 @@ for(var/val in query_list) if(val == ";") do_parse = 1 - else if(pos >= query_list.len) + else if(pos >= length(query_list)) query_tree += val do_parse = 1 @@ -164,7 +164,7 @@ parser.query = query_tree var/list/parsed_tree parsed_tree = parser.parse() - if(parsed_tree.len > 0) + if(length(parsed_tree) > 0) querys.len = querys_pos querys[querys_pos] = parsed_tree querys_pos++ @@ -282,7 +282,7 @@ var/result = 0 var/val - for(var/i = start, i <= expression.len, i++) + for(var/i = start, i <= length(expression), i++) var/op = "" if(i > start) @@ -337,7 +337,7 @@ var/i = start var/val = null - if(i > expression.len) + if(i > length(expression)) return list("val" = null, "i" = i) if(istype(expression[i], /list)) @@ -375,14 +375,14 @@ else val = SDQL_var(object, expression, i, object) - i = expression.len + i = length(expression) return list("val" = val, "i" = i) /proc/SDQL_var(datum/object, list/expression, start = 1, source) var/v - var/long = start < expression.len + var/long = start < length(expression) if(object == world && long && expression[start + 1] == ".") to_chat(usr, "Sorry, but global variables are not supported at the moment.") @@ -431,7 +431,7 @@ else if(expression[start + 1] == "\[" && islist(v)) var/list/L = v var/index = SDQL_expression(source, expression[start + 2]) - if(isnum(index) && (!ISINTEGER(index) || L.len < index)) + if(isnum(index) && (!ISINTEGER(index) || length(L) < index)) to_chat(world, "Invalid list index: [index]") return null return L[index] diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm b/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm index 98334649315..e9378b62932 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm @@ -61,7 +61,7 @@ /datum/SDQL_parser/proc/parse_error(error_message) error = 1 to_chat(usr, "SDQL2 Parsing Error: [error_message]") - return query.len + 1 + return length(query) + 1 /datum/SDQL_parser/proc/parse() tree = list() @@ -73,14 +73,14 @@ return tree /datum/SDQL_parser/proc/token(i) - if(i <= query.len) + if(i <= length(query)) return query[i] else return null /datum/SDQL_parser/proc/tokens(i, num) - if(i + num <= query.len) + if(i + num <= length(query)) return query.Copy(i, i + num) else diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index c55322a17c1..6d8ad148178 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -78,7 +78,7 @@ adminhelp(msg) //admin we are replying to left. adminhelp instead return - /*if(C && C.last_pm_recieved + config.simultaneous_pm_warning_timeout > world.time && holder) + /*if(C && C.last_pm_received + config.simultaneous_pm_warning_timeout > world.time && holder) //send a warning to admins, but have a delay popup for mods if(holder.rights & R_ADMIN) to_chat(src, "Simultaneous PMs warning: that player has been PM'd in the last [config.simultaneous_pm_warning_timeout / 10] seconds by: [C.ckey_last_pm]") @@ -113,21 +113,21 @@ msg = admin_pencode_to_html(msg) var/send_span - var/recieve_span + var/receive_span var/send_pm_type = " " - var/recieve_pm_type = "Player" + var/receive_pm_type = "Player" var/message_type var/datum/controller/subsystem/tickets/tickets_system // We treat PMs as mentorhelps if we were explicitly so, or if neither // party is an admin. if(type == "Mentorhelp" || !(check_rights(R_ADMIN|R_MOD, 0, C.mob) || check_rights(R_ADMIN|R_MOD, 0, mob))) send_span = "mentorhelp" - recieve_span = "mentorhelp" + receive_span = "mentorhelp" message_type = MESSAGE_TYPE_MENTORPM tickets_system = SSmentor_tickets else send_span = "adminhelp" - recieve_span = "adminhelp" + receive_span = "adminhelp" message_type = MESSAGE_TYPE_ADMINPM tickets_system = SStickets @@ -135,22 +135,22 @@ if(holder) //PMs sent from admins and mods display their rank send_pm_type = holder.rank + " " - recieve_pm_type = holder.rank + receive_pm_type = holder.rank else if(!C.holder) to_chat(src, "Error: Admin-PM: Non-admin to non-admin PM communication is forbidden.") return - var/recieve_message = "" + var/receive_message = "" pm_tracker.add_message(C, src, msg, mob) C.pm_tracker.add_message(src, src, msg, C.mob) if(holder && !C.holder) - recieve_message = "-- Click the [recieve_pm_type]'s name to reply --\n" + receive_message = "-- Click the [receive_pm_type]'s name to reply --\n" if(C.adminhelped) window_flash(C) - to_chat(C, recieve_message) + to_chat(C, receive_message) C.adminhelped = 0 //AdminPM popup for ApocStation and anybody else who wants to use it. Set it with POPUP_ADMIN_PM in config.txt ~Carn @@ -158,7 +158,7 @@ spawn(0) //so we don't hold the caller proc up var/sender = src var/sendername = key - var/reply = clean_input(msg,"[recieve_pm_type] [type] from-[sendername]", "", C) //show message and await a reply + var/reply = clean_input(msg,"[receive_pm_type] [type] from-[sendername]", "", C) //show message and await a reply if(C && reply) if(sender) C.cmd_admin_pm(sender,reply) //sender is still about, let's reply to them @@ -176,17 +176,17 @@ ticket_link = "(TICKET)" var/emoji_msg = "[msg]" - var/recieve_window_link = "(WINDOW)" + var/receive_window_link = "(WINDOW)" if(message_type == MESSAGE_TYPE_MENTORPM && check_rights(R_ADMIN|R_MENTOR, 0, C.mob)) - recieve_window_link = ticket_link + receive_window_link = ticket_link else if(message_type == MESSAGE_TYPE_ADMINPM && check_rights(R_ADMIN, 0, C.mob)) - recieve_window_link = ticket_link - recieve_message = "[type] from-[recieve_pm_type] [C.holder ? key_name(src, TRUE, type, ticket_id = ticket_id) : key_name_hidden(src, TRUE, type, ticket_id = ticket_id)]:

    [emoji_msg][C.holder ? "
    [ping_link] [recieve_window_link] [alert_link]" : ""]
    " + receive_window_link = ticket_link + receive_message = "[type] from-[receive_pm_type] [C.holder ? key_name(src, TRUE, type, ticket_id = ticket_id) : key_name_hidden(src, TRUE, type, ticket_id = ticket_id)]:

    [emoji_msg][C.holder ? "
    [ping_link] [receive_window_link] [alert_link]" : ""]
    " if(message_type == MESSAGE_TYPE_MENTORPM) - recieve_message = chat_box_mhelp(recieve_message) + receive_message = chat_box_mhelp(receive_message) else - recieve_message = chat_box_ahelp(recieve_message) - to_chat(C, recieve_message) + receive_message = chat_box_ahelp(receive_message) + to_chat(C, receive_message) var/send_window_link = "(WINDOW)" if(message_type == MESSAGE_TYPE_MENTORPM && check_rights(R_ADMIN|R_MENTOR, 0, mob)) send_window_link = ticket_link diff --git a/code/modules/admin/verbs/adminsay.dm b/code/modules/admin/verbs/adminsay.dm index a970f55675f..663a6b7eacb 100644 --- a/code/modules/admin/verbs/adminsay.dm +++ b/code/modules/admin/verbs/adminsay.dm @@ -1,10 +1,12 @@ /client/proc/cmd_admin_say(msg as text) set name = "Asay" //Gave this shit a shorter name so you only have to time out "asay" rather than "admin say" to use it --NeoFite set hidden = 1 - if(!check_rights(R_ADMIN)) return + if(!check_rights(R_ADMIN)) + return - msg = sanitize(copytext_char(msg, 1, MAX_MESSAGE_LEN)) - if(!msg) return + msg = emoji_parse(copytext_char(sanitize(msg), 1, MAX_MESSAGE_LEN)) + if(!msg) + return var/datum/asays/asay = new(usr.ckey, usr.client.holder.rank, msg, world.timeofday) GLOB.asays += asay @@ -60,7 +62,7 @@ else if(!check_rights(R_ADMIN|R_MOD)) // Catch any other non-admins trying to use this proc return - msg = sanitize(copytext_char(msg, 1, MAX_MESSAGE_LEN)) + msg = emoji_parse(copytext_char(sanitize(msg), 1, MAX_MESSAGE_LEN)) log_mentorsay(msg, src) mob.create_log(OOC_LOG, "MSAY: [msg]") diff --git a/code/modules/admin/verbs/atmosdebug.dm b/code/modules/admin/verbs/atmosdebug.dm index 96661c16e5d..df327f41329 100644 --- a/code/modules/admin/verbs/atmosdebug.dm +++ b/code/modules/admin/verbs/atmosdebug.dm @@ -47,12 +47,12 @@ SSblackbox.record_feedback("tally", "admin_verb", 1, "Check Power") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! for(var/datum/regional_powernet/PN in SSmachines.powernets) - if(!PN.nodes || !PN.nodes.len) - if(PN.cables && (PN.cables.len > 1)) + if(!PN.nodes || !length(PN.nodes)) + if(PN.cables && (length(PN.cables) > 1)) var/obj/structure/cable/C = PN.cables[1] to_chat(usr, "Powernet with no nodes! (number [PN.number]) - example cable at [C.x], [C.y], [C.z] in area [get_area(C.loc)]") - if(!PN.cables || (PN.cables.len < 10)) - if(PN.cables && (PN.cables.len > 1)) + if(!PN.cables || (length(PN.cables) < 10)) + if(PN.cables && (length(PN.cables) > 1)) var/obj/structure/cable/C = PN.cables[1] to_chat(usr, "Powernet with fewer than 10 cables! (number [PN.number]) - example cable at [C.x], [C.y], [C.z] in area [get_area(C.loc)]") diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 85cdf1ffc3e..6e3753a705c 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -64,13 +64,13 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that if(!target) to_chat(usr, "Error: callproc(): owner of proc no longer exists.") return - message_admins("[key_name_admin(src)] called [target]'s [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"].") - log_admin("[key_name(src)] called [target]'s [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"].") + message_admins("[key_name_admin(src)] called [target]'s [procname]() with [length(lst) ? "the arguments [list2params(lst)]":"no arguments"].") + log_admin("[key_name(src)] called [target]'s [procname]() with [length(lst) ? "the arguments [list2params(lst)]":"no arguments"].") returnval = WrapAdminProcCall(target, procname, lst) // Pass the lst as an argument list to the proc else //this currently has no hascall protection. wasn't able to get it working. - message_admins("[key_name_admin(src)] called [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"]") - log_admin("[key_name(src)] called [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"]") + message_admins("[key_name_admin(src)] called [procname]() with [length(lst) ? "the arguments [list2params(lst)]":"no arguments"]") + log_admin("[key_name(src)] called [procname]() with [length(lst) ? "the arguments [list2params(lst)]":"no arguments"]") returnval = WrapAdminProcCall(GLOBAL_PROC, procname, lst) // Pass the lst as an argument list to the proc to_chat(usr, "[procname] returned: [!isnull(returnval) ? returnval : "null"]") @@ -173,8 +173,8 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) if(!A || !IsValidSrc(A)) to_chat(src, "Error: callproc_datum(): owner of proc no longer exists.") return - message_admins("[key_name_admin(src)] called [A]'s [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"]") - log_admin("[key_name(src)] called [A]'s [procname]() with [lst.len ? "the arguments [list2params(lst)]":"no arguments"]") + message_admins("[key_name_admin(src)] called [A]'s [procname]() with [length(lst) ? "the arguments [list2params(lst)]":"no arguments"]") + log_admin("[key_name(src)] called [A]'s [procname]() with [length(lst) ? "the arguments [list2params(lst)]":"no arguments"]") spawn() var/returnval = WrapAdminProcCall(A, procname, lst) // Pass the lst as an argument list to the proc @@ -800,6 +800,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) if(I.hard_deletes) dellog += "
  • Total Hard Deletes [I.hard_deletes]
  • " dellog += "
  • Time Spent Hard Deleting: [I.hard_delete_time]ms
  • " + dellog += "
  • Average References During Hardel: [I.reference_average] references.
  • " if(I.slept_destroy) dellog += "
  • Sleeps: [I.slept_destroy]
  • " if(I.no_respect_force) diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm index af538663c44..3d672ab6ef3 100644 --- a/code/modules/admin/verbs/diagnostics.dm +++ b/code/modules/admin/verbs/diagnostics.dm @@ -92,7 +92,7 @@ if(!f) output += "  [filters[filter]]: ERROR
    " continue - output += "  [filters[filter]]: [f.len]
    " + output += "  [filters[filter]]: [length(f)]
    " for(var/device in f) if(isobj(device)) output += "    [device] ([device:x],[device:y],[device:z] in area [get_area(device:loc)])
    " diff --git a/code/modules/admin/verbs/gimmick_team.dm b/code/modules/admin/verbs/gimmick_team.dm index 7210606ba31..783eb958b02 100644 --- a/code/modules/admin/verbs/gimmick_team.dm +++ b/code/modules/admin/verbs/gimmick_team.dm @@ -47,7 +47,7 @@ if(!G.client.is_afk()) if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD)) possible_ghosts += G - for(var/i=teamsize,(i>0&&possible_ghosts.len),i--) //Decrease with every member selected. + for(var/i=teamsize,(i>0&&length(possible_ghosts)),i--) //Decrease with every member selected. var/candidate = input("Pick characters to spawn. This will go on until there either no more ghosts to pick from, or the slots are full.", "Active Players") as null|anything in possible_ghosts // auto-picks if only one candidate possible_ghosts -= candidate players_to_spawn += candidate @@ -55,7 +55,7 @@ to_chat(src, "Polling candidates...") players_to_spawn = SSghost_spawns.poll_candidates("Do you want to play as \a [initial(O.name)]?") - if(!players_to_spawn.len) + if(!length(players_to_spawn)) to_chat(src, "Nobody volunteered.") return 0 diff --git a/code/modules/admin/verbs/infiltratorteam_syndicate.dm b/code/modules/admin/verbs/infiltratorteam_syndicate.dm index a8c21cda320..e0d12efd6d2 100644 --- a/code/modules/admin/verbs/infiltratorteam_syndicate.dm +++ b/code/modules/admin/verbs/infiltratorteam_syndicate.dm @@ -49,7 +49,7 @@ GLOBAL_VAR_INIT(sent_syndicate_infiltration_team, 0) if(!G.client.is_afk()) if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD)) possible_ghosts += G - for(var/i=teamsize,(i>0&&possible_ghosts.len),i--) //Decrease with every SIT member selected. + for(var/i=teamsize,(i>0&&length(possible_ghosts)),i--) //Decrease with every SIT member selected. var/candidate = input("Pick characters to spawn as a SIT member. This will go on until there either no more ghosts to pick from, or the slots are full.", "Active Players") as null|anything in possible_ghosts // auto-picks if only one candidate possible_ghosts -= candidate infiltrators += candidate @@ -58,7 +58,7 @@ GLOBAL_VAR_INIT(sent_syndicate_infiltration_team, 0) var/image/I = new('icons/obj/cardboard_cutout.dmi', "cutout_sit") infiltrators = SSghost_spawns.poll_candidates("Do you want to play as a Syndicate infiltrator?", ROLE_TRAITOR, TRUE, source = I, role_cleanname = "Syndicate infiltrator") - if(!infiltrators.len) + if(!length(infiltrators)) to_chat(src, "Nobody volunteered.") return 0 @@ -76,10 +76,10 @@ GLOBAL_VAR_INIT(sent_syndicate_infiltration_team, 0) var/num_spawned = 1 var/team_leader = null for(var/obj/effect/landmark/L in sit_spawns) - if(!infiltrators.len && !spawn_dummies) break + if(!length(infiltrators) && !spawn_dummies) break syndicate_leader_selected = num_spawned == 1?1:0 var/mob/living/carbon/human/new_syndicate_infiltrator = create_syndicate_infiltrator(L, syndicate_leader_selected, tcamount, 0) - if(infiltrators.len) + if(length(infiltrators)) var/mob/theguy = pick(infiltrators) if(theguy.key != key) new_syndicate_infiltrator.key = theguy.key diff --git a/code/modules/admin/verbs/logging_view.dm b/code/modules/admin/verbs/logging_view.dm index 636378df1ab..89bfc79ad43 100644 --- a/code/modules/admin/verbs/logging_view.dm +++ b/code/modules/admin/verbs/logging_view.dm @@ -14,7 +14,7 @@ GLOBAL_LIST_EMPTY(open_logging_views) else if(clear_view) cur_view.clear_all() - if(mobs_to_add?.len) + if(length(mobs_to_add)) cur_view.add_mobs(mobs_to_add) cur_view.show_ui(usr) diff --git a/code/modules/admin/verbs/massmodvar.dm b/code/modules/admin/verbs/massmodvar.dm index 38cf541e001..f953d1b3c1e 100644 --- a/code/modules/admin/verbs/massmodvar.dm +++ b/code/modules/admin/verbs/massmodvar.dm @@ -111,7 +111,7 @@ if(VV_RESTORE_DEFAULT) to_chat(src, "Finding items...") var/list/items = get_all_of_type(O.type, method) - to_chat(src, "Changing [items.len] items...") + to_chat(src, "Changing [length(items)] items...") for(var/thing in items) if(!thing) continue @@ -126,7 +126,7 @@ var/list/varsvars = vv_parse_text(O, new_value) var/pre_processing = new_value var/unique - if(varsvars && varsvars.len) + if(varsvars && length(varsvars)) unique = alert(usr, "Process vars unique to each instance, or same for all?", "Variable Association", "Unique", "Same") if(unique == "Unique") unique = TRUE @@ -137,7 +137,7 @@ to_chat(src, "Finding items...") var/list/items = get_all_of_type(O.type, method) - to_chat(src, "Changing [items.len] items...") + to_chat(src, "Changing [length(items)] items...") for(var/thing in items) if(!thing) continue @@ -165,7 +165,7 @@ var/type = value["type"] to_chat(src, "Finding items...") var/list/items = get_all_of_type(O.type, method) - to_chat(src, "Changing [items.len] items...") + to_chat(src, "Changing [length(items)] items...") for(var/thing in items) if(!thing) continue @@ -183,7 +183,7 @@ else to_chat(src, "Finding items...") var/list/items = get_all_of_type(O.type, method) - to_chat(src, "Changing [items.len] items...") + to_chat(src, "Changing [length(items)] items...") for(var/thing in items) if(!thing) continue diff --git a/code/modules/admin/verbs/modifyvariables.dm b/code/modules/admin/verbs/modifyvariables.dm index 51b5cdae310..0597f2dbf86 100644 --- a/code/modules/admin/verbs/modifyvariables.dm +++ b/code/modules/admin/verbs/modifyvariables.dm @@ -282,9 +282,9 @@ GLOBAL_PROTECT(VVmaint_only) if(!ispath(type)) return var/list/subtypes = subtypesof(type) - if(!subtypes || !subtypes.len) + if(!subtypes || !length(subtypes)) return FALSE - if(subtypes && subtypes.len) + if(subtypes && length(subtypes)) switch(alert("Strict object type detection?", "Type detection", "Strictly this type","This type and subtypes", "Cancel")) if("Strictly this type") return FALSE @@ -374,7 +374,7 @@ GLOBAL_PROTECT(VVmaint_only) to_chat(src, "Not a List.") return - if(L.len > 1000) + if(length(L) > 1000) var/confirm = alert(src, "The list you're trying to edit is very long, continuing may crash the server.", "Warning", "Continue", "Abort") if(confirm != "Continue") return @@ -382,7 +382,7 @@ GLOBAL_PROTECT(VVmaint_only) var/list/names = list() - for(var/i in 1 to L.len) + for(var/i in 1 to length(L)) var/key = L[i] var/value if(IS_NORMAL_LIST(L) && !isnum(key)) diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index 72f5de0b056..6654de33853 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -60,8 +60,8 @@ if(CandCheck(ROLE_TRAITOR, applicant, temp)) candidates += applicant - if(candidates.len) - var/numTraitors = min(candidates.len, antnum) + if(length(candidates)) + var/numTraitors = min(length(candidates), antnum) for(var/i = 0, iError: create_xeno(): no suitable candidates.") if(!istext(ckey)) return 0 var/alien_caste = input(usr, "Please choose which caste to spawn.","Pick a caste",null) as null|anything in list("Queen","Hunter","Sentinel","Drone","Larva") - var/obj/effect/landmark/spawn_here = GLOB.xeno_spawn.len ? pick(GLOB.xeno_spawn) : pick(GLOB.latejoin) + var/obj/effect/landmark/spawn_here = length(GLOB.xeno_spawn) ? pick(GLOB.xeno_spawn) : pick(GLOB.latejoin) var/mob/living/carbon/alien/new_xeno switch(alien_caste) if("Queen") new_xeno = new /mob/living/carbon/alien/humanoid/queen/large(spawn_here) diff --git a/code/modules/antagonists/_common/antag_datum.dm b/code/modules/antagonists/_common/antag_datum.dm index 41813bd2e71..28c6d0ce9ec 100644 --- a/code/modules/antagonists/_common/antag_datum.dm +++ b/code/modules/antagonists/_common/antag_datum.dm @@ -1,3 +1,5 @@ +RESTRICT_TYPE(/datum/antagonist) + GLOBAL_LIST_EMPTY(antagonists) #define SUCCESSFUL_DETACH "dont touch this string numbnuts" @@ -314,7 +316,7 @@ GLOBAL_LIST_EMPTY(antagonists) owner.special_role = A.special_role /** - * Checks if the person trying to recieve this datum is role banned from it. + * Checks if the person trying to receive this datum is role banned from it. */ /datum/antagonist/proc/is_banned(mob/M) if(!M) diff --git a/code/modules/antagonists/_common/antag_spawner.dm b/code/modules/antagonists/_common/antag_spawner.dm index b28f460e4f5..588064b21bd 100644 --- a/code/modules/antagonists/_common/antag_spawner.dm +++ b/code/modules/antagonists/_common/antag_spawner.dm @@ -203,7 +203,7 @@ type = "laughter" var/list/candidates = SSghost_spawns.poll_candidates("Do you want to play as a [type] demon summoned by [user.real_name]?", ROLE_DEMON, TRUE, 10 SECONDS, source = demon_type) - if(candidates.len > 0) + if(length(candidates) > 0) var/mob/C = pick(candidates) spawn_antag(C, get_turf(src.loc), initial(demon_type.name), user) dust_if_respawnable(C) @@ -292,7 +292,7 @@ var/list/candidates = SSghost_spawns.poll_candidates("Do you want to play as a magical morph awakened by [user.real_name]?", ROLE_MORPH, 1, 10 SECONDS, source = morph_type) - if(candidates.len > 0) + if(length(candidates) > 0) var/mob/C = pick(candidates) spawn_antag(C, get_turf(src.loc), initial(morph_type.name), user) dust_if_respawnable(C) diff --git a/code/modules/antagonists/changeling/datum_changeling.dm b/code/modules/antagonists/changeling/datum_changeling.dm index edf430caee9..5822374b983 100644 --- a/code/modules/antagonists/changeling/datum_changeling.dm +++ b/code/modules/antagonists/changeling/datum_changeling.dm @@ -1,3 +1,5 @@ +RESTRICT_TYPE(/datum/antagonist/changeling) + /datum/antagonist/changeling name = "Changeling" roundend_category = "changelings" @@ -440,8 +442,5 @@ else to_chat(L, "While our current form may be lifeless, this is not the end for us as we can still regenerate!") -/proc/ischangeling(mob/M) - return M.mind?.has_antag_datum(/datum/antagonist/changeling) - /datum/antagonist/changeling/custom_blurb() return "We awaken on the [station_name()], [get_area_name(owner.current, TRUE)]...\nWe have our tasks to attend to..." diff --git a/code/modules/antagonists/changeling/powers/absorb.dm b/code/modules/antagonists/changeling/powers/absorb.dm index 1674c5729cf..a7115d0e929 100644 --- a/code/modules/antagonists/changeling/powers/absorb.dm +++ b/code/modules/antagonists/changeling/powers/absorb.dm @@ -64,8 +64,8 @@ //Recent as opposed to all because rounds tend to have a LOT of text. var/list/recent_speech = list() - if(target.say_log.len > CHANGELING_ABSORB_RECENT_SPEECH) - recent_speech = target.say_log.Copy(target.say_log.len-CHANGELING_ABSORB_RECENT_SPEECH+1,0) //0 so len-LING_ARS+1 to end of list + if(length(target.say_log) > CHANGELING_ABSORB_RECENT_SPEECH) + recent_speech = target.say_log.Copy(length(target.say_log)-CHANGELING_ABSORB_RECENT_SPEECH+1,0) //0 so len-LING_ARS+1 to end of list else recent_speech = target.say_log.Copy() diff --git a/code/modules/antagonists/cult/datum_cultist.dm b/code/modules/antagonists/cult/datum_cultist.dm index 41f3e898ea0..105b66256be 100644 --- a/code/modules/antagonists/cult/datum_cultist.dm +++ b/code/modules/antagonists/cult/datum_cultist.dm @@ -1,3 +1,5 @@ +RESTRICT_TYPE(/datum/antagonist/cultist) + /datum/antagonist/cultist name = "Cultist" job_rank = ROLE_CULTIST diff --git a/code/modules/antagonists/cult/team_cult.dm b/code/modules/antagonists/cult/team_cult.dm index fcc26a00dc0..f6c31962fee 100644 --- a/code/modules/antagonists/cult/team_cult.dm +++ b/code/modules/antagonists/cult/team_cult.dm @@ -1,3 +1,5 @@ +RESTRICT_TYPE(/datum/team/cult) + /datum/team/cult name = "Cult" antag_datum_type = /datum/antagonist/cultist diff --git a/code/modules/antagonists/revolutionary/datum_headrev.dm b/code/modules/antagonists/revolutionary/datum_headrev.dm index 5f98e11c7b4..1f229266bad 100644 --- a/code/modules/antagonists/revolutionary/datum_headrev.dm +++ b/code/modules/antagonists/revolutionary/datum_headrev.dm @@ -1,3 +1,4 @@ +RESTRICT_TYPE(/datum/antagonist/rev/head) /datum/antagonist/rev/head name = "Head Revolutionary" diff --git a/code/modules/antagonists/revolutionary/datum_revolutionary.dm b/code/modules/antagonists/revolutionary/datum_revolutionary.dm index 9f9ffd95e0f..920d56483fd 100644 --- a/code/modules/antagonists/revolutionary/datum_revolutionary.dm +++ b/code/modules/antagonists/revolutionary/datum_revolutionary.dm @@ -1,3 +1,5 @@ +RESTRICT_TYPE(/datum/antagonist/rev) + /datum/antagonist/rev name = "Revolutionary" roundend_category = "revs" diff --git a/code/modules/antagonists/revolutionary/team_revolution.dm b/code/modules/antagonists/revolutionary/team_revolution.dm index 87a9bb3deb1..989654a598b 100644 --- a/code/modules/antagonists/revolutionary/team_revolution.dm +++ b/code/modules/antagonists/revolutionary/team_revolution.dm @@ -1,3 +1,5 @@ +RESTRICT_TYPE(/datum/team/revolution) + /datum/team/revolution name = "Revolution" antag_datum_type = /datum/antagonist/rev diff --git a/code/modules/antagonists/traitor/datum_mindslave.dm b/code/modules/antagonists/traitor/datum_mindslave.dm index e511df1ad0b..fde537bd8af 100644 --- a/code/modules/antagonists/traitor/datum_mindslave.dm +++ b/code/modules/antagonists/traitor/datum_mindslave.dm @@ -1,3 +1,4 @@ +RESTRICT_TYPE(/datum/antagonist/mindslave) // For Mindslaves and Zealots /datum/antagonist/mindslave @@ -87,7 +88,3 @@ slaved.serv -= owner slaved.leave_serv_hud(owner) owner.som = null - -// Helper proc that determines if a mob is a mindslave. -/proc/ismindslave(mob/living/carbon/human/H) - return istype(H) && H.mind.has_antag_datum(/datum/antagonist/mindslave, FALSE) diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index a33f14f52dd..367054b0616 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -1,3 +1,4 @@ +RESTRICT_TYPE(/datum/antagonist/traitor) // Syndicate Traitors. /datum/antagonist/traitor diff --git a/code/modules/antagonists/vampire/vamp_datum.dm b/code/modules/antagonists/vampire/vamp_datum.dm index 7ad89d6ef86..251c758c6dc 100644 --- a/code/modules/antagonists/vampire/vamp_datum.dm +++ b/code/modules/antagonists/vampire/vamp_datum.dm @@ -1,3 +1,5 @@ +RESTRICT_TYPE(/datum/antagonist/vampire) + /datum/antagonist/vampire name = "Vampire" antag_hud_type = ANTAG_HUD_VAMPIRE @@ -33,27 +35,6 @@ blurb_b = 138 blurb_a = 1 -/datum/antagonist/mindslave/thrall - name = "Vampire Thrall" - antag_hud_type = ANTAG_HUD_VAMPIRE - antag_hud_name = "vampthrall" - -/datum/antagonist/mindslave/thrall/add_owner_to_gamemode() - SSticker.mode.vampire_enthralled += owner - -/datum/antagonist/mindslave/thrall/remove_owner_from_gamemode() - SSticker.mode.vampire_enthralled -= owner - -/datum/antagonist/mindslave/thrall/apply_innate_effects(mob/living/mob_override) - mob_override = ..() - var/datum/mind/M = mob_override.mind - M.AddSpell(new /datum/spell/vampire/thrall_commune) - -/datum/antagonist/mindslave/thrall/remove_innate_effects(mob/living/mob_override) - mob_override = ..() - var/datum/mind/M = mob_override.mind - M.RemoveSpell(/datum/spell/vampire/thrall_commune) - /datum/antagonist/vampire/Destroy(force, ...) owner.current.create_log(CONVERSION_LOG, "De-vampired") draining = null @@ -361,9 +342,7 @@ mob_override.dna?.species.hunger_icon = 'icons/mob/screen_hunger_vampire.dmi' check_vampire_upgrade(FALSE) -/datum/hud/proc/remove_vampire_hud() - static_inventory -= vampire_blood_display - QDEL_NULL(vampire_blood_display) + /datum/antagonist/vampire/custom_blurb() return "On the date [GLOB.current_date_string], at [station_time_timestamp()],\n in the [station_name()], [get_area_name(owner.current, TRUE)]...\nThe hunt begins again..." diff --git a/code/modules/antagonists/vampire/vamp_thrall.dm b/code/modules/antagonists/vampire/vamp_thrall.dm new file mode 100644 index 00000000000..112e9517332 --- /dev/null +++ b/code/modules/antagonists/vampire/vamp_thrall.dm @@ -0,0 +1,22 @@ +RESTRICT_TYPE(/datum/antagonist/mindslave/thrall) + +/datum/antagonist/mindslave/thrall + name = "Vampire Thrall" + antag_hud_type = ANTAG_HUD_VAMPIRE + antag_hud_name = "vampthrall" + +/datum/antagonist/mindslave/thrall/add_owner_to_gamemode() + SSticker.mode.vampire_enthralled += owner + +/datum/antagonist/mindslave/thrall/remove_owner_from_gamemode() + SSticker.mode.vampire_enthralled -= owner + +/datum/antagonist/mindslave/thrall/apply_innate_effects(mob/living/mob_override) + mob_override = ..() + var/datum/mind/M = mob_override.mind + M.AddSpell(new /datum/spell/vampire/thrall_commune) + +/datum/antagonist/mindslave/thrall/remove_innate_effects(mob/living/mob_override) + mob_override = ..() + var/datum/mind/M = mob_override.mind + M.RemoveSpell(/datum/spell/vampire/thrall_commune) diff --git a/code/modules/antagonists/wizard/datum_wizard.dm b/code/modules/antagonists/wizard/datum_wizard.dm index 90a5fb17e85..f3e1f622eb1 100644 --- a/code/modules/antagonists/wizard/datum_wizard.dm +++ b/code/modules/antagonists/wizard/datum_wizard.dm @@ -116,3 +116,11 @@ /datum/antagonist/wizard/proc/full_on_wizard() return TRUE + +/datum/antagonist/wizard/proc/wizard_is_alive() // fun fact did you know underscore make proc calls slower? + for(var/datum/spell/lichdom/S in owner.spell_list) + if(S.is_revive_possible()) // This must occur before the == DEAD check + return TRUE + if(!iscarbon(owner.current) || owner.current.stat == DEAD) + return FALSE + return TRUE diff --git a/code/modules/arcade/mob_hunt/mob_datums.dm b/code/modules/arcade/mob_hunt/mob_datums.dm index 2621201f086..fc60e17bbbe 100644 --- a/code/modules/arcade/mob_hunt/mob_datums.dm +++ b/code/modules/arcade/mob_hunt/mob_datums.dm @@ -65,10 +65,10 @@ /datum/mob_hunt/proc/select_spawn() var/list/possible_areas = get_possible_areas() - if(!possible_areas.len) + if(!length(possible_areas)) log_admin("No possible areas to spawn [type] found. Possible code/mapping error?") return 0 - while(possible_areas.len) + while(length(possible_areas)) //randomly select an area from our possible_areas list to try spawning in, then remove it from possible_areas so it won't get picked over and over forever. var/spawn_area_path = pickweight(possible_areas) var/area/spawn_area = locate(spawn_area_path) @@ -77,7 +77,7 @@ break //clear and generate a fresh list of turfs in the selected area, weighted based on white/black lists var/list/possible_turfs = get_possible_turfs(spawn_area) - if(!possible_turfs.len) //If we don't have any possible turfs, this attempt was a failure. Try again. + if(!length(possible_turfs)) //If we don't have any possible turfs, this attempt was a failure. Try again. continue //if we got this far, we're spawning on this attempt, hooray! spawn_point = pickweight(possible_turfs) diff --git a/code/modules/asset_cache/asset_list.dm b/code/modules/asset_cache/asset_list.dm index 4674bf24ce6..1eb088800c6 100644 --- a/code/modules/asset_cache/asset_list.dm +++ b/code/modules/asset_cache/asset_list.dm @@ -240,7 +240,7 @@ GLOBAL_LIST_EMPTY(asset_datums) for(var/icon_state_name in icon_states(I)) for(var/direction in directions) - var/prefix2 = length(directions) ? "[dir2text(direction)]-" : "" + var/prefix2 = length(directions) > 1 ? "[dir2text(direction)]-" : "" Insert("[prefix][prefix2][icon_state_name]", I, icon_state=icon_state_name, dir=direction) /datum/asset/spritesheet/proc/css_tag() @@ -311,7 +311,7 @@ GLOBAL_LIST_EMPTY(asset_datums) if(!asset) continue asset = fcopy_rsc(asset) //dedupe - var/prefix2 = (directions.len > 1) ? "[dir2text(direction)]." : "" + var/prefix2 = (length(directions) > 1) ? "[dir2text(direction)]." : "" var/asset_name = "[prefix].[prefix2][icon_state_name].png" if(generic_icon_names) asset_name = "[GENERATE_ASSET_NAME(asset)].png" diff --git a/code/modules/asset_cache/assets/asset_emoji.dm b/code/modules/asset_cache/assets/asset_emoji.dm new file mode 100644 index 00000000000..2693de77a01 --- /dev/null +++ b/code/modules/asset_cache/assets/asset_emoji.dm @@ -0,0 +1,5 @@ +/datum/asset/spritesheet/emoji + name = "emoji" + +/datum/asset/spritesheet/emoji/create_spritesheets() + InsertAll("emoji", EMOJI_SET) diff --git a/code/modules/asset_cache/assets/asset_safe.dm b/code/modules/asset_cache/assets/asset_safe.dm index 007226cf952..882dae800f6 100644 --- a/code/modules/asset_cache/assets/asset_safe.dm +++ b/code/modules/asset_cache/assets/asset_safe.dm @@ -1,5 +1,5 @@ /datum/asset/simple/safe keep_local_name = TRUE assets = list( - "safe_dial.png" = 'icons/safe_dial.png' + "safe_dial.png" = 'icons/ui_icons/safe_dial.png' ) diff --git a/code/modules/atmospherics/environmental/LINDA_fire.dm b/code/modules/atmospherics/environmental/LINDA_fire.dm index 42dc9c3fb25..aae9e9ba296 100644 --- a/code/modules/atmospherics/environmental/LINDA_fire.dm +++ b/code/modules/atmospherics/environmental/LINDA_fire.dm @@ -247,7 +247,7 @@ if(falloff) max_dist = min((temp - (T0C + 60)) / falloff, radius) open[Ce] = 0 - while(open.len) + while(length(open)) var/turf/T = open[1] var/dist = open[T] open -= T diff --git a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm index 1edf6db0921..a5cd8cd86a6 100644 --- a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm +++ b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm @@ -126,7 +126,7 @@ //cache for sanic speed var/list/adjacent_turfs = atmos_adjacent_turfs var/datum/excited_group/our_excited_group = excited_group - var/adjacent_turfs_length = adjacent_turfs.len + var/adjacent_turfs_length = length(adjacent_turfs) if(planetary_atmos) adjacent_turfs_length++ diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index cb62033952a..2c438e38d20 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -744,24 +744,24 @@ for(var/g in gas_names) thresholds += list(list("name" = gas_names[g], "settings" = list())) selected = TLV[g] - thresholds[thresholds.len]["settings"] += list(list("env" = g, "val" = "min2", "selected" = selected.min2)) - thresholds[thresholds.len]["settings"] += list(list("env" = g, "val" = "min1", "selected" = selected.min1)) - thresholds[thresholds.len]["settings"] += list(list("env" = g, "val" = "max1", "selected" = selected.max1)) - thresholds[thresholds.len]["settings"] += list(list("env" = g, "val" = "max2", "selected" = selected.max2)) + thresholds[length(thresholds)]["settings"] += list(list("env" = g, "val" = "min2", "selected" = selected.min2)) + thresholds[length(thresholds)]["settings"] += list(list("env" = g, "val" = "min1", "selected" = selected.min1)) + thresholds[length(thresholds)]["settings"] += list(list("env" = g, "val" = "max1", "selected" = selected.max1)) + thresholds[length(thresholds)]["settings"] += list(list("env" = g, "val" = "max2", "selected" = selected.max2)) selected = TLV["pressure"] thresholds += list(list("name" = "Pressure", "settings" = list())) - thresholds[thresholds.len]["settings"] += list(list("env" = "pressure", "val" = "min2", "selected" = selected.min2)) - thresholds[thresholds.len]["settings"] += list(list("env" = "pressure", "val" = "min1", "selected" = selected.min1)) - thresholds[thresholds.len]["settings"] += list(list("env" = "pressure", "val" = "max1", "selected" = selected.max1)) - thresholds[thresholds.len]["settings"] += list(list("env" = "pressure", "val" = "max2", "selected" = selected.max2)) + thresholds[length(thresholds)]["settings"] += list(list("env" = "pressure", "val" = "min2", "selected" = selected.min2)) + thresholds[length(thresholds)]["settings"] += list(list("env" = "pressure", "val" = "min1", "selected" = selected.min1)) + thresholds[length(thresholds)]["settings"] += list(list("env" = "pressure", "val" = "max1", "selected" = selected.max1)) + thresholds[length(thresholds)]["settings"] += list(list("env" = "pressure", "val" = "max2", "selected" = selected.max2)) selected = TLV["temperature"] thresholds += list(list("name" = "Temperature", "settings" = list())) - thresholds[thresholds.len]["settings"] += list(list("env" = "temperature", "val" = "min2", "selected" = selected.min2)) - thresholds[thresholds.len]["settings"] += list(list("env" = "temperature", "val" = "min1", "selected" = selected.min1)) - thresholds[thresholds.len]["settings"] += list(list("env" = "temperature", "val" = "max1", "selected" = selected.max1)) - thresholds[thresholds.len]["settings"] += list(list("env" = "temperature", "val" = "max2", "selected" = selected.max2)) + thresholds[length(thresholds)]["settings"] += list(list("env" = "temperature", "val" = "min2", "selected" = selected.min2)) + thresholds[length(thresholds)]["settings"] += list(list("env" = "temperature", "val" = "min1", "selected" = selected.min1)) + thresholds[length(thresholds)]["settings"] += list(list("env" = "temperature", "val" = "max1", "selected" = selected.max1)) + thresholds[length(thresholds)]["settings"] += list(list("env" = "temperature", "val" = "max2", "selected" = selected.max2)) return thresholds diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index 52f39fb316e..4e696bc6025 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -253,7 +253,7 @@ data["beakerVolume"] = 0 if(beaker) data["beakerLabel"] = beaker.label_text ? beaker.label_text : null - if(beaker.reagents && beaker.reagents.reagent_list.len) + if(beaker.reagents && length(beaker.reagents.reagent_list)) for(var/datum/reagent/R in beaker.reagents.reagent_list) data["beakerVolume"] += R.volume data["cooldownProgress"] = round(clamp((world.time - last_injection) / injection_cooldown, 0, 1) * 100) diff --git a/code/modules/atmospherics/machinery/datum_pipeline.dm b/code/modules/atmospherics/machinery/datum_pipeline.dm index 7a4b3b77a12..3da561d9fcf 100644 --- a/code/modules/atmospherics/machinery/datum_pipeline.dm +++ b/code/modules/atmospherics/machinery/datum_pipeline.dm @@ -40,12 +40,12 @@ if(!air) air = new var/list/possible_expansions = list(base) - while(possible_expansions.len>0) + while(length(possible_expansions)>0) for(var/obj/machinery/atmospherics/borderline in possible_expansions) var/list/result = borderline.pipeline_expansion(src) - if(result.len>0) + if(length(result)>0) for(var/obj/machinery/atmospherics/P in result) if(istype(P, /obj/machinery/atmospherics/pipe)) var/obj/machinery/atmospherics/pipe/item = P @@ -186,7 +186,7 @@ var/list/datum/pipeline/PL = list() PL += src - for(var/i=1;i<=PL.len;i++) + for(var/i=1;i<=length(PL);i++) var/datum/pipeline/P = PL[i] if(!P) return diff --git a/code/modules/atmospherics/machinery/pipes/pipe.dm b/code/modules/atmospherics/machinery/pipes/pipe.dm index e2d946cfc3c..2d3eb724fe0 100644 --- a/code/modules/atmospherics/machinery/pipes/pipe.dm +++ b/code/modules/atmospherics/machinery/pipes/pipe.dm @@ -33,7 +33,7 @@ qdel(meter) // if we're somehow by ourself - if(parent && !QDELETED(parent) && parent.members.len == 1 && parent.members[1] == src) + if(parent && !QDELETED(parent) && length(parent.members) == 1 && parent.members[1] == src) qdel(parent) parent = null diff --git a/code/modules/awaymissions/loot.dm b/code/modules/awaymissions/loot.dm index 266eb53c815..faaeff82e9a 100644 --- a/code/modules/awaymissions/loot.dm +++ b/code/modules/awaymissions/loot.dm @@ -9,9 +9,9 @@ ..() var/list/things = params2list(loot) - if(things && things.len) + if(things && length(things)) for(var/i = lootcount, i > 0, i--) - if(!things.len) + if(!length(things)) return var/loot_spawn = pick(things) diff --git a/code/modules/awaymissions/maploader/reader.dm b/code/modules/awaymissions/maploader/reader.dm index ae543a4f967..7a0a2d52edc 100644 --- a/code/modules/awaymissions/maploader/reader.dm +++ b/code/modules/awaymissions/maploader/reader.dm @@ -98,18 +98,18 @@ GLOBAL_DATUM_INIT(_preloader, /datum/dmm_suite/preloader, new()) var/list/gridLines = splittext(dmmRegex.group[6], "\n") var/leadingBlanks = 0 - while(leadingBlanks < gridLines.len && gridLines[++leadingBlanks] == "") + while(leadingBlanks < length(gridLines) && gridLines[++leadingBlanks] == "") if(leadingBlanks > 1) gridLines.Cut(1, leadingBlanks) // Remove all leading blank lines. - if(!gridLines.len) // Skip it if only blank lines exist. + if(!length(gridLines)) // Skip it if only blank lines exist. continue - if(gridLines.len && gridLines[gridLines.len] == "") - gridLines.Cut(gridLines.len) // Remove only one blank line at the end. + if(length(gridLines) && gridLines[length(gridLines)] == "") + gridLines.Cut(length(gridLines)) // Remove only one blank line at the end. bounds[MAP_MINY] = min(bounds[MAP_MINY], ycrd) - ycrd += gridLines.len - 1 // Start at the top and work down + ycrd += length(gridLines) - 1 // Start at the top and work down if(!shouldCropMap && ycrd > world.maxy) if(!measureOnly) @@ -253,7 +253,7 @@ GLOBAL_DATUM_INIT(_preloader, /datum/dmm_suite/preloader, new()) // The next part of the code assumes there's ALWAYS an /area AND a /turf on a given tile // first instance the /area and remove it from the members list - index = members.len + index = length(members) var/turf/crds = locate(xcrd, ycrd, zcrd) if(members[index] != /area/template_noop) @@ -285,7 +285,7 @@ GLOBAL_DATUM_INIT(_preloader, /datum/dmm_suite/preloader, new()) if(T) // if others /turf are presents, simulates the underlays piling effect index = first_turf_index + 1 - var/mlen = members.len - 1 + var/mlen = length(members) - 1 while(index <= mlen) // Last item is an /area var/underlay if(isturf(T)) // I blame this on the stupid clown who coded the BYOND map editor @@ -432,7 +432,7 @@ GLOBAL_DATUM_INIT(_preloader, /datum/dmm_suite/preloader, new()) var/json_ready = 0 /datum/dmm_suite/preloader/proc/setup(list/the_attributes, path) - if(the_attributes.len) + if(length(the_attributes)) json_ready = 0 if("map_json_data" in the_attributes) json_ready = 1 diff --git a/code/modules/buildmode/submodes/link.dm b/code/modules/buildmode/submodes/link.dm index dfe986b0d01..f3424124882 100644 --- a/code/modules/buildmode/submodes/link.dm +++ b/code/modules/buildmode/submodes/link.dm @@ -54,7 +54,7 @@ speed_execute() return if(!M.normaldoorcontrol) - if(link_lines.len && alert(user, "Warning: This will disable links to connected pod doors. Continue?", "Buildmode", "Yes", "No") == "No") + if(length(link_lines) && alert(user, "Warning: This will disable links to connected pod doors. Continue?", "Buildmode", "Yes", "No") == "No") speed_execute() return M.normaldoorcontrol = TRUE @@ -76,7 +76,7 @@ speed_execute() return if(M.normaldoorcontrol) - if(link_lines.len && alert(user, "Warning: This will disable links to connected airlocks. Continue?", "Buildmode", "Yes", "No") == "No") + if(length(link_lines) && alert(user, "Warning: This will disable links to connected airlocks. Continue?", "Buildmode", "Yes", "No") == "No") speed_execute() return M.normaldoorcontrol = FALSE diff --git a/code/modules/client/preference/link_processing.dm b/code/modules/client/preference/link_processing.dm index 7dbf65fa62e..b7c832a9952 100644 --- a/code/modules/client/preference/link_processing.dm +++ b/code/modules/client/preference/link_processing.dm @@ -807,11 +807,11 @@ var/datum/robolimb/L = new limb_type() if(limb in L.parts) //Make sure that only models that provide the parts the user needs populate the list. robolimb_models[L.company] = L - if(robolimb_models.len == 1) //If there's only one model available in the list, autoselect it to avoid having to bother the user with a dialog that provides only one option. + if(length(robolimb_models) == 1) //If there's only one model available in the list, autoselect it to avoid having to bother the user with a dialog that provides only one option. subchoice = L.company //If there ends up being more than one model populating the list, subchoice will be overwritten later anyway, so this isn't a problem. if(second_limb in L.parts) //If the child limb of the limb the user selected is also present in the model's parts list, state it's been found so the second limb can be set later. in_model = 1 - if(robolimb_models.len > 1) //If there's more than one model in the list that can provide the part the user wants, let them choose. + if(length(robolimb_models) > 1) //If there's more than one model in the list that can provide the part the user wants, let them choose. subchoice = tgui_input_list(user, "Which model of [choice] [limb_name] do you wish to use?", "[limb_name] - Prosthesis - Model", robolimb_models) if(subchoice) choice = subchoice diff --git a/code/modules/client/preference/loadout/gear_tweaks.dm b/code/modules/client/preference/loadout/gear_tweaks.dm index 2dbda39a926..459279c6175 100644 --- a/code/modules/client/preference/loadout/gear_tweaks.dm +++ b/code/modules/client/preference/loadout/gear_tweaks.dm @@ -81,14 +81,14 @@ /datum/gear_tweak/contents/get_default() . = list() - for(var/i = 1 to valid_contents.len) + for(var/i = 1 to length(valid_contents)) . += "Random" /datum/gear_tweak/contents/get_metadata(user, list/metadata) . = list() - for(var/i = metadata.len to valid_contents.len) + for(var/i = length(metadata) to length(valid_contents)) metadata += "Random" - for(var/i = 1 to valid_contents.len) + for(var/i = 1 to length(valid_contents)) var/entry = input(user, "Choose an entry.", "Character Preference", metadata[i]) as null|anything in (valid_contents[i] + list("Random", "None")) if(entry) . += entry @@ -96,9 +96,9 @@ return metadata /datum/gear_tweak/contents/tweak_item(obj/item/I, list/metadata) - if(metadata.len != valid_contents.len) + if(length(metadata) != length(valid_contents)) return - for(var/i = 1 to valid_contents.len) + for(var/i = 1 to length(valid_contents)) var/path var/list/contents = valid_contents[i] if(metadata[i] == "Random") diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 56b896f9379..5f230c1a48e 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -826,7 +826,7 @@ data["accessories"] = accessories_list for(var/obj/item/clothing/accessory/A in accessories) accessories_list.len++ - accessories_list[accessories_list.len] = A.serialize() + accessories_list[length(accessories_list)] = A.serialize() return data diff --git a/code/modules/clothing/spacesuits/alien_suits.dm b/code/modules/clothing/spacesuits/alien_suits.dm index 5713d1ff5fd..748427fd9a6 100644 --- a/code/modules/clothing/spacesuits/alien_suits.dm +++ b/code/modules/clothing/spacesuits/alien_suits.dm @@ -219,7 +219,7 @@ return var/mob/living/carbon/human/H = user if(H.shoes != src) - to_chat(user, "You will have to put on [src] before you can do that.") return flags |= NODROP //kinda hard to take off magclaws when you are gripping them tightly. to_chat(user, "You dig your claws deeply into the flooring, bracing yourself.") diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm index 276f49e03e8..19cc8dbd095 100644 --- a/code/modules/clothing/under/accessories/accessory.dm +++ b/code/modules/clothing/under/accessories/accessory.dm @@ -815,10 +815,10 @@ item_color = "corset_blue" /proc/english_accessory_list(obj/item/clothing/under/U) - if(!istype(U) || !U.accessories.len) + if(!istype(U) || !length(U.accessories)) return var/list/A = U.accessories - var/total = A.len + var/total = length(A) if(total == 1) return "\a [A[1]]" else if(total == 2) diff --git a/code/modules/crafting/craft.dm b/code/modules/crafting/craft.dm index 2c3c0d11512..ad25bf04f7b 100644 --- a/code/modules/crafting/craft.dm +++ b/code/modules/crafting/craft.dm @@ -107,7 +107,7 @@ .["toolsother"][I] += 1 /datum/personal_crafting/proc/check_tools(mob/user, datum/crafting_recipe/R, list/contents) - if(!R.tools.len) //does not run if no tools are needed + if(!length(R.tools)) //does not run if no tools are needed return TRUE var/list/possible_tools = list() var/list/tools_used = list() @@ -133,7 +133,7 @@ return TRUE /datum/personal_crafting/proc/check_pathtools(mob/user, datum/crafting_recipe/R, list/contents) - if(!R.pathtools.len) //does not run if no tools are needed + if(!length(R.pathtools)) //does not run if no tools are needed return TRUE var/list/other_possible_tools = list() for(var/obj/item/I in user.contents) // searchs the inventory of the mob @@ -384,34 +384,34 @@ /datum/personal_crafting/proc/next_cat(readonly = TRUE) if(!readonly) viewing_subcategory = 1 - . = viewing_category % categories.len + 1 + . = viewing_category % length(categories) + 1 /datum/personal_crafting/proc/next_subcat() if(islist(subcategories[viewing_category])) var/list/subs = subcategories[viewing_category] - . = viewing_subcategory % subs.len + 1 + . = viewing_subcategory % length(subs) + 1 //Previous can go fuck itself /datum/personal_crafting/proc/prev_cat(readonly = TRUE) if(!readonly) viewing_subcategory = 1 - if(viewing_category == categories.len) + if(viewing_category == length(categories)) . = viewing_category-1 else - . = viewing_category % categories.len - 1 + . = viewing_category % length(categories) - 1 if(. <= 0) - . = categories.len + . = length(categories) /datum/personal_crafting/proc/prev_subcat() if(islist(subcategories[viewing_category])) var/list/subs = subcategories[viewing_category] - if(viewing_subcategory == subs.len) + if(viewing_subcategory == length(subs)) . = viewing_subcategory-1 else - . = viewing_subcategory % subs.len - 1 + . = viewing_subcategory % length(subs) - 1 if(. <= 0) - . = subs.len + . = length(subs) else . = null diff --git a/code/modules/detective_work/evidence.dm b/code/modules/detective_work/evidence.dm index 104e1130d23..a8b7d047825 100644 --- a/code/modules/detective_work/evidence.dm +++ b/code/modules/detective_work/evidence.dm @@ -33,7 +33,7 @@ to_chat(user, "[I] won't fit in [src].") return - if(contents.len) + if(length(contents)) to_chat(user, "[src] already has something inside it.") return @@ -66,7 +66,7 @@ return 1 /obj/item/evidencebag/attack_self(mob/user) - if(contents.len) + if(length(contents)) var/obj/item/I = contents[1] user.visible_message("[user] takes [I] out of [src].", "You take [I] out of [src].",\ "You hear someone rustle around in a plastic bag, and remove something.") diff --git a/code/modules/economy/economy_events/economy_events.dm b/code/modules/economy/economy_events/economy_events.dm index b8f37e99fc9..63a65958c1d 100644 --- a/code/modules/economy/economy_events/economy_events.dm +++ b/code/modules/economy/economy_events/economy_events.dm @@ -8,7 +8,7 @@ /datum/event/economic_event/start() affected_dest = pickweight(GLOB.weighted_randomevent_locations) - if(affected_dest.viable_random_events.len) + if(length(affected_dest.viable_random_events)) endWhen = rand(60,300) event_type = pick(affected_dest.viable_random_events) diff --git a/code/modules/economy/economy_events/economy_events_mundane.dm b/code/modules/economy/economy_events/economy_events_mundane.dm index f9974c1ca29..4085f1c4e6c 100644 --- a/code/modules/economy/economy_events/economy_events_mundane.dm +++ b/code/modules/economy/economy_events/economy_events_mundane.dm @@ -5,7 +5,7 @@ /datum/event/mundane_news/announce() var/datum/trade_destination/affected_dest = pickweight(GLOB.weighted_mundaneevent_locations) var/event_type = 0 - if(affected_dest.viable_mundane_events.len) + if(length(affected_dest.viable_mundane_events)) event_type = pick(affected_dest.viable_mundane_events) if(!event_type) diff --git a/code/modules/economy/money_account.dm b/code/modules/economy/money_account.dm index 4ce226fff00..2202838ac06 100644 --- a/code/modules/economy/money_account.dm +++ b/code/modules/economy/money_account.dm @@ -27,7 +27,7 @@ var/suspended = FALSE ///Type of account this is var/account_type = ACCOUNT_TYPE_PERSONAL - ///the amount this account recieves every payday + ///the amount this account receives every payday var/payday_amount = CREW_BASE_PAY_LOW ///The nanobank programs associated with this account, used for notifying crew members through PDA, this is a lazy list diff --git a/code/modules/emoji/emoji_parse.dm b/code/modules/emoji/emoji_parse.dm new file mode 100644 index 00000000000..6dc56b19551 --- /dev/null +++ b/code/modules/emoji/emoji_parse.dm @@ -0,0 +1,32 @@ +/// Turns :ai: into an emoji in text. +/proc/emoji_parse(text) + if(!text) + return text + . = text + var/static/list/emojis = icon_states(icon(EMOJI_SET)) + var/parsed = "" + var/pos = 1 + var/search = 0 + var/emoji = "" + while(TRUE) + search = findtext(text, ":", pos) + parsed += copytext(text, pos, search) + if(search) + pos = search + search = findtext(text, ":", pos + length(text[pos])) + if(search) + emoji = lowertext(copytext(text, pos + length(text[pos]), search)) + var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/emoji) + var/tag = sheet.icon_tag("emoji-[emoji]") + if(tag) + parsed += tag + pos = search + length(text[pos]) + else + parsed += copytext(text, pos, search) + pos = search + emoji = "" + continue + else + parsed += copytext(text, pos, search) + break + return parsed diff --git a/code/modules/emoji/emojipedia.dm b/code/modules/emoji/emojipedia.dm new file mode 100644 index 00000000000..62fb05a8eb5 --- /dev/null +++ b/code/modules/emoji/emojipedia.dm @@ -0,0 +1,37 @@ +/client/verb/emojipedia() + set name = "Emojipedia" + set category = "OOC" + set desc = "Literally an emojipedia, a list of all the emoji available for OOC use." + + var/datum/ui_module/emojipedia/emojipedia = new() + emojipedia.ui_interact(usr) + +/datum/ui_module/emojipedia + name = "Emojipedia" + /// Store the list of potential emojis here. + var/static/list/emoji_list = icon_states(icon(EMOJI_SET)) + +/datum/ui_module/emojipedia/ui_state(mob/user) + return GLOB.always_state + +/datum/ui_module/emojipedia/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "Emojipedia", name) + ui.autoupdate = FALSE + ui.open() + +/datum/ui_module/emojipedia/ui_static_data(mob_user) + var/list/data = list() + + for(var/emoji in emoji_list) + data["emoji_list"] += list(list( + "name" = emoji, + )) + + return data + +/datum/ui_module/emojipedia/ui_assets(mob/user) + return list( + get_asset_datum(/datum/asset/spritesheet/emoji), + ) diff --git a/code/modules/error_handler/error_handler.dm b/code/modules/error_handler/error_handler.dm index 2ecb9e20e86..475610825f3 100644 --- a/code/modules/error_handler/error_handler.dm +++ b/code/modules/error_handler/error_handler.dm @@ -99,7 +99,7 @@ GLOBAL_VAR_INIT(total_runtimes_skipped, 0) // I apologize in advance var/list/splitlines = splittext(e.desc, "\n") var/list/desclines = list() - if(splitlines.len > 2) // If there aren't at least three lines, there's no info + if(length(splitlines) > 2) // If there aren't at least three lines, there's no info for(var/line in splitlines) if(length(line) < 3) continue // Blank line, skip it diff --git a/code/modules/events/abductor_event.dm b/code/modules/events/abductor_event.dm index 0557f3f131f..aef93f7ef78 100644 --- a/code/modules/events/abductor_event.dm +++ b/code/modules/events/abductor_event.dm @@ -11,7 +11,7 @@ /datum/event/abductor/proc/makeAbductorTeam() var/list/mob/dead/observer/candidates = SSghost_spawns.poll_candidates("Do you wish to be considered for an Abductor Team?", ROLE_ABDUCTOR, TRUE) - if(candidates.len >= 2) + if(length(candidates) >= 2) //Oh god why we can't have static functions var/number = SSticker.mode.abductor_teams + 1 diff --git a/code/modules/events/blob/blob_powers.dm b/code/modules/events/blob/blob_powers.dm index b5e8492a3a8..d8bf6e3765e 100644 --- a/code/modules/events/blob/blob_powers.dm +++ b/code/modules/events/blob/blob_powers.dm @@ -22,9 +22,9 @@ set name = "Jump to Node" set desc = "Transport back to a selected node." - if(GLOB.blob_nodes.len) + if(length(GLOB.blob_nodes)) var/list/nodes = list() - for(var/i = 1; i <= GLOB.blob_nodes.len; i++) + for(var/i = 1; i <= length(GLOB.blob_nodes); i++) var/obj/structure/blob/node/B = GLOB.blob_nodes[i] nodes["Blob Node #[i] ([get_location_name(B)])"] = B var/node_name = tgui_input_list(src, "Choose a node to jump to.", "Node Jump", nodes) @@ -362,7 +362,7 @@ to_chat(src, "You rally your spores.") var/list/surrounding_turfs = block(locate(T.x - 1, T.y - 1, T.z), locate(T.x + 1, T.y + 1, T.z)) - if(!surrounding_turfs.len) + if(!length(surrounding_turfs)) return for(var/mob/living/simple_animal/hostile/blob/blobspore/BS in GLOB.alive_mob_list) diff --git a/code/modules/events/blob/blob_structures/factory.dm b/code/modules/events/blob/blob_structures/factory.dm index 8f5930fb2d2..6bbf5d34f59 100644 --- a/code/modules/events/blob/blob_structures/factory.dm +++ b/code/modules/events/blob/blob_structures/factory.dm @@ -16,7 +16,7 @@ return ..() /obj/structure/blob/factory/run_action() - if(spores.len >= max_spores) + if(length(spores) >= max_spores) return if(spore_delay > world.time) return diff --git a/code/modules/events/blob/theblob.dm b/code/modules/events/blob/theblob.dm index bc06566df54..c8d6f3da473 100644 --- a/code/modules/events/blob/theblob.dm +++ b/code/modules/events/blob/theblob.dm @@ -114,7 +114,7 @@ GLOBAL_LIST_EMPTY(blob_minions) var/list/dirs = list(1,2,4,8) dirs.Remove(origin_dir)//Dont pulse the guy who pulsed us for(var/i = 1 to 4) - if(!dirs.len) break + if(!length(dirs)) break var/dirn = pick(dirs) dirs.Remove(dirn) var/turf/T = get_step(src, dirn) diff --git a/code/modules/events/blob_spawn.dm b/code/modules/events/blob_spawn.dm index 544d9ac1e96..1fbc9a4a0b9 100644 --- a/code/modules/events/blob_spawn.dm +++ b/code/modules/events/blob_spawn.dm @@ -5,7 +5,7 @@ /datum/event/blob/announce(false_alarm) if(successSpawn || false_alarm) - GLOB.major_announcement.Announce("Unknown biological growth detected aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/AI/outbreak_blob.ogg') + GLOB.major_announcement.Announce("Unknown biological growth detected aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", 'sound/effects/siren-spooky.ogg', new_sound2 = 'sound/AI/outbreak_blob.ogg') else log_and_message_admins("Warning: Could not spawn any mobs for event Blob") diff --git a/code/modules/events/carp_migration.dm b/code/modules/events/carp_migration.dm index c38d2c2e25c..d63270785c6 100644 --- a/code/modules/events/carp_migration.dm +++ b/code/modules/events/carp_migration.dm @@ -21,7 +21,7 @@ /datum/event/carp_migration/start() if(severity == EVENT_LEVEL_MAJOR) - spawn_fish(GLOB.landmarks_list.len) + spawn_fish(length(GLOB.landmarks_list)) else if(severity == EVENT_LEVEL_MODERATE) spawn_fish(rand(4, 6)) //12 to 30 carp, in small groups else @@ -33,7 +33,7 @@ for(var/thing in GLOB.carplist) spawn_locations.Add(get_turf(thing)) spawn_locations = shuffle(spawn_locations) - num_groups = min(num_groups, spawn_locations.len) + num_groups = min(num_groups, length(spawn_locations)) var/i = 1 while(i <= num_groups) diff --git a/code/modules/events/electrical_storm.dm b/code/modules/events/electrical_storm.dm index f9f61e7232b..8eba69e9802 100644 --- a/code/modules/events/electrical_storm.dm +++ b/code/modules/events/electrical_storm.dm @@ -13,12 +13,12 @@ for(var/obj/effect/landmark/lightsout/newEpicentre in GLOB.landmarks_list) if(!(newEpicentre in epicentreList)) possibleEpicentres += newEpicentre - if(possibleEpicentres.len) + if(length(possibleEpicentres)) epicentreList += pick(possibleEpicentres) else break - if(!epicentreList.len) + if(!length(epicentreList)) return for(var/thing in epicentreList) diff --git a/code/modules/events/event_container.dm b/code/modules/events/event_container.dm index f2490d10c32..250a6089130 100644 --- a/code/modules/events/event_container.dm +++ b/code/modules/events/event_container.dm @@ -58,7 +58,7 @@ GLOBAL_LIST_EMPTY(event_last_fired) /datum/event_container/proc/acquire_event() - if(available_events.len == 0) + if(length(available_events) == 0) return var/active_with_role = number_active_with_role() @@ -79,7 +79,7 @@ GLOBAL_LIST_EMPTY(event_last_fired) else possible_events -= event_meta - if(possible_events.len == 0) + if(length(possible_events) == 0) return null // Select an event and remove it from the pool of available events @@ -97,7 +97,7 @@ GLOBAL_LIST_EMPTY(event_last_fired) // Otherwise, follow the standard setup process else var/playercount_modifier = 1 - switch(GLOB.player_list.len) + switch(length(GLOB.player_list)) if(0 to 10) playercount_modifier = 1.2 if(11 to 15) diff --git a/code/modules/events/event_procs.dm b/code/modules/events/event_procs.dm index c5ded25b5f0..d0af4971ec2 100644 --- a/code/modules/events/event_procs.dm +++ b/code/modules/events/event_procs.dm @@ -64,7 +64,7 @@ active_with_role["Cyborg"] = 0 active_with_role["Janitor"] = 0 active_with_role["Botanist"] = 0 - active_with_role["Any"] = GLOB.player_list.len + active_with_role["Any"] = length(GLOB.player_list) for(var/mob/M in GLOB.player_list) if(!M.mind || !M.client || M.client.inactivity > 10 * 10 * 60) // longer than 10 minutes AFK counts them as inactive diff --git a/code/modules/events/ion_storm.dm b/code/modules/events/ion_storm.dm index 130e1410b52..a7e3a48439b 100644 --- a/code/modules/events/ion_storm.dm +++ b/code/modules/events/ion_storm.dm @@ -502,7 +502,7 @@ continue players += player.real_name var/random_player = "The Captain" - if(players.len) + if(length(players)) random_player = pick(players) //Random player's name, to be used in laws. var/random_department = "Science" diff --git a/code/modules/events/money_spam.dm b/code/modules/events/money_spam.dm index e9f398377e3..c6988e16471 100644 --- a/code/modules/events/money_spam.dm +++ b/code/modules/events/money_spam.dm @@ -35,7 +35,7 @@ continue viables.Add(check_pda) - if(!viables.len) + if(!length(viables)) return var/obj/item/pda/P = pick(viables) var/datum/data/pda/app/messenger/PM = P.find_program(/datum/data/pda/app/messenger) @@ -78,6 +78,7 @@ "We are happy to inform you that due to the delay, we have been instructed to IMMEDIATELY deposit all funds into your account",\ "Dear fund beneficiary, We have please to inform you that overdue funds payment has finally been approved and released for payment",\ "Due to my lack of agents I require an off-world financial account to immediately deposit the sum of 1 POINT FIVE MILLION credits.",\ + // Intentional errors here, please do not fix. "Greetings sir, I regretfully to inform you that as I lay dying here due to my lack ofheirs I have chosen you to recieve the full sum of my lifetime savings of 1.5 billion credits") if(6) sender = pick("Nanotrasen Morale Divison","Feeling Lonely?","Bored?","www.wetskrell.nt") diff --git a/code/modules/events/prison_break.dm b/code/modules/events/prison_break.dm index a31683fe1f8..637dd3a254c 100644 --- a/code/modules/events/prison_break.dm +++ b/code/modules/events/prison_break.dm @@ -44,7 +44,7 @@ if(is_type_in_list(A,areaType) && !is_type_in_list(A,areaNotType)) areas += A - if(areas && areas.len > 0) + if(areas && length(areas) > 0) var/my_department = "[station_name()] firewall subroutines" var/rc_message = "An unknown malicious program has been detected in the [english_list(areaName)] lighting and airlock control systems at [station_time_timestamp()]. Systems will be fully compromised within approximately three minutes. Direct intervention is required immediately.
    " for(var/obj/machinery/message_server/MS in GLOB.machines) @@ -58,7 +58,7 @@ /datum/event/prison_break/tick() if(activeFor == releaseWhen) - if(areas && areas.len > 0) + if(areas && length(areas) > 0) for(var/area/A in areas) for(var/obj/machinery/light/L in A) L.forced_flicker(10) diff --git a/code/modules/events/rogue_drones.dm b/code/modules/events/rogue_drones.dm index 281a085dfe1..c4fe2d40650 100644 --- a/code/modules/events/rogue_drones.dm +++ b/code/modules/events/rogue_drones.dm @@ -38,7 +38,7 @@ qdel(D) num_recovered++ - if(num_recovered > drones_list.len * 0.75) + if(num_recovered > length(drones_list) * 0.75) GLOB.minor_announcement.Announce("Icarus drone control reports the malfunctioning wing has been recovered safely.", "Rogue drone alert") else GLOB.minor_announcement.Announce("Icarus drone control registers disappointment at the loss of the drones, but the survivors have been recovered.", "Rogue drone alert") diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index b8403cef9c3..94c5f21a236 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -10,12 +10,12 @@ qdel(SV) - if(turfs.len) //Pick a turf to spawn at if we can + if(length(turfs)) //Pick a turf to spawn at if we can var/turf/T = pick(turfs) var/obj/structure/spacevine_controller/SC = new /obj/structure/spacevine_controller(T, null, rand(30,70),rand(5,2)) //spawn a controller at turf // Make the event start fun - give the vine a random hostile mutation - if(SC.vines.len) + if(length(SC.vines)) SV = SC.vines[1] var/list/mutations = subtypesof(/datum/spacevine_mutation) while(mutations) @@ -429,7 +429,7 @@ if(master) master.vines -= src master.growth_queue -= src - if(!master.vines.len) + if(!length(master.vines)) var/obj/item/seeds/kudzu/KZ = new(loc) for(var/mutation in mutations) KZ.mutations += mutation @@ -591,7 +591,7 @@ SM.on_birth(SV) /obj/structure/spacevine_controller/process() - if(!vines || !vines.len) + if(!vines || !length(vines)) qdel(src) //space vines exterminated. Remove the controller return if(!growth_queue) @@ -600,7 +600,7 @@ var/length = 0 - length = min( spread_cap , max( 1 , vines.len / spread_multiplier ) ) + length = min( spread_cap , max( 1 , length(vines) / spread_multiplier ) ) var/i = 0 var/list/obj/structure/spacevine/queue_end = list() @@ -663,7 +663,7 @@ for(var/SM_type in mutations) var/datum/spacevine_mutation/SM = mutations[SM_type] spread_search |= SM.on_search(src) - while(dir_list.len) + while(length(dir_list)) var/direction = pick(dir_list) dir_list -= direction var/turf/stepturf = get_step(src,direction) diff --git a/code/modules/events/traders.dm b/code/modules/events/traders.dm index 384978c872f..3b1427bed87 100644 --- a/code/modules/events/traders.dm +++ b/code/modules/events/traders.dm @@ -10,7 +10,7 @@ GLOBAL_LIST_INIT(unused_trade_stations, list("sol")) var/list/trader_objectives = list() /datum/event/traders/setup() - if(GLOB.unused_trade_stations.len) + if(length(GLOB.unused_trade_stations)) station = pick_n_take(GLOB.unused_trade_stations) /datum/event/traders/fake_announce() @@ -34,7 +34,7 @@ GLOBAL_LIST_INIT(unused_trade_stations, list("sol")) var/list/spawnlocs = list() for(var/obj/effect/landmark/spawner/soltrader/S in GLOB.landmarks_list) spawnlocs += get_turf(S) - if(!spawnlocs.len) + if(!length(spawnlocs)) return trader_objectives = forge_trader_objectives() diff --git a/code/modules/events/undead_event.dm b/code/modules/events/undead_event.dm index 4685cefffce..3b79018b9c0 100644 --- a/code/modules/events/undead_event.dm +++ b/code/modules/events/undead_event.dm @@ -25,9 +25,9 @@ if(okay) turflist += T - if(!turflist.len) continue - var/turfs = round(turflist.len * spawn_prob/100,1) - while(turfs > 0 && turflist.len) // safety + if(!length(turflist)) continue + var/turfs = round(length(turflist) * spawn_prob/100,1) + while(turfs > 0 && length(turflist)) // safety turfs-- var/turf/T = pick_n_take(turflist) var/undeadtype = pick(/mob/living/simple_animal/hostile/retaliate/skeleton, diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index 2bacfbac964..793f0c83b63 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -12,7 +12,7 @@ endWhen = rand(25, 100) for(var/obj/machinery/atmospherics/unary/vent_scrubber/temp_vent in GLOB.machines) if(is_station_level(temp_vent.loc.z)) - if(temp_vent.parent.other_atmosmch.len > 50) + if(length(temp_vent.parent.other_atmosmch) > 50) vents += temp_vent /datum/event/vent_clog/tick() diff --git a/code/modules/events/wormholes.dm b/code/modules/events/wormholes.dm index 9bb4b88ae1c..855989a13a1 100644 --- a/code/modules/events/wormholes.dm +++ b/code/modules/events/wormholes.dm @@ -52,7 +52,7 @@ return FALSE var/turf/target - if(GLOB.portals.len) + if(length(GLOB.portals)) var/obj/effect/portal/P = pick(GLOB.portals) if(P && isturf(P.loc)) target = P.loc diff --git a/code/modules/flufftext/Dreaming.dm b/code/modules/flufftext/Dreaming.dm index a5aaa9280cd..f2b392d091d 100644 --- a/code/modules/flufftext/Dreaming.dm +++ b/code/modules/flufftext/Dreaming.dm @@ -10,14 +10,14 @@ for(var/i in 1 to rand(3, rand(5, 10))) dream_images += pick_n_take(dreams) dreaming++ - for(var/i in 1 to dream_images.len) + for(var/i in 1 to length(dream_images)) addtimer(CALLBACK(src, PROC_REF(experience_dream), dream_images[i], FALSE), ((i - 1) * rand(30,60))) return TRUE /mob/living/carbon/proc/custom_dreams(list/dreamlist, mob/user) var/list/newlist = dreamlist.Copy() - for(var/i in 1 to newlist.len) + for(var/i in 1 to length(newlist)) newlist[i] = replacetext(newlist[i], "DREAMER", "[user.name]") return newlist @@ -32,7 +32,7 @@ for(var/i in 1 to rand(3, rand(5, 10))) dream_images += pick_n_take(nightmares) nightmare++ - for(var/i in 1 to dream_images.len) + for(var/i in 1 to length(dream_images)) addtimer(CALLBACK(src, PROC_REF(experience_dream), dream_images[i], TRUE), ((i - 1) * rand(30,60))) return TRUE diff --git a/code/modules/food_and_drinks/drinks/bottler/bottler.dm b/code/modules/food_and_drinks/drinks/bottler/bottler.dm index 4baba043cf1..d9c7654729b 100644 --- a/code/modules/food_and_drinks/drinks/bottler/bottler.dm +++ b/code/modules/food_and_drinks/drinks/bottler/bottler.dm @@ -35,7 +35,7 @@ var/datum/bottler_recipe/recipe = new type if(recipe.result) // Ignore recipe subtypes that lack a result available_recipes += recipe - for(var/i = 1, i <= recipe.ingredients.len, i++) + for(var/i = 1, i <= length(recipe.ingredients), i++) acceptable_items |= recipe.ingredients[i] else qdel(recipe) @@ -95,7 +95,7 @@ to_chat(user, "[src] is full, please remove or process the contents first.") return var/slot_inserted = 0 - for(var/i = 1, i <= slots.len, i++) + for(var/i = 1, i <= length(slots), i++) if(!slots[i]) slots[i] = O slot_inserted = i @@ -111,7 +111,7 @@ /obj/machinery/bottler/proc/eject_items(slot) var/obj/item/O = null if(!slot) - for(var/i = 1, i <= slots.len, i++) + for(var/i = 1, i <= length(slots), i++) if(slots[i]) O = slots[i] O.forceMove(loc) @@ -205,7 +205,7 @@ /obj/machinery/bottler/proc/select_recipe() for(var/datum/bottler_recipe/recipe in available_recipes) var/number_matches = 0 - for(var/i = 1, i <= slots.len, i++) + for(var/i = 1, i <= length(slots), i++) var/obj/item/O = slots[i] if(istype(O, recipe.ingredients[i])) number_matches++ @@ -335,7 +335,7 @@ dat += "" dat += "" - for(var/i = 1, i <= slots.len, i++) + for(var/i = 1, i <= length(slots), i++) var/obj/O = slots[i] if(O) dat += "[bicon(O)]
    [O.name]" @@ -349,7 +349,7 @@ dat += "" dat += "" - for(var/i = 1, i <= slots.len, i++) + for(var/i = 1, i <= length(slots), i++) if(slots[i]) dat += "Eject" else diff --git a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm index 35f67923976..66a06e0b0d4 100644 --- a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm +++ b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm @@ -40,7 +40,7 @@ /obj/item/reagent_containers/drinks/drinkingglass/on_reagent_change() overlays.Cut() - if(reagents.reagent_list.len) + if(length(reagents.reagent_list)) var/datum/reagent/R = reagents.get_master_reagent() name = R.drink_name desc = R.drink_desc diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm index 49408392340..4f552f3d360 100644 --- a/code/modules/food_and_drinks/food/condiment.dm +++ b/code/modules/food_and_drinks/food/condiment.dm @@ -96,9 +96,9 @@ to_chat(user, "You transfer [trans] units of the condiment to [target].") /obj/item/reagent_containers/condiment/on_reagent_change() - if(!possible_states.len) + if(!length(possible_states)) return - if(reagents.reagent_list.len > 0) + if(length(reagents.reagent_list) > 0) var/main_reagent = reagents.get_master_reagent_id() if(main_reagent in possible_states) var/list/temp_list = possible_states[main_reagent] @@ -110,7 +110,7 @@ name = "[originalname] bottle" main_reagent = reagents.get_master_reagent_name() desc = "Looks like it is [lowertext(main_reagent)], but you are not sure." - if(reagents.reagent_list.len==1) + if(length(reagents.reagent_list)==1) desc = "A mixture of various condiments. [lowertext(main_reagent)] is one of them." icon_state = "mixedcondiments" else @@ -332,7 +332,7 @@ qdel(src) /obj/item/reagent_containers/condiment/pack/on_reagent_change() - if(reagents.reagent_list.len > 0) + if(length(reagents.reagent_list) > 0) var/main_reagent = reagents.get_master_reagent_id() if(main_reagent in possible_states) var/list/temp_list = possible_states[main_reagent] diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm index 00339c2d31a..a748cdfe490 100644 --- a/code/modules/food_and_drinks/food/customizables.dm +++ b/code/modules/food_and_drinks/food/customizables.dm @@ -481,15 +481,15 @@ do {\ for(var/ings in sorteditems) //add the non-basename items to the name, sorting out the , and the and c++ - if(c == sorteditems.len - 1) + if(c == length(sorteditems) - 1) seperator = " and " - else if(c == sorteditems.len) + else if(c == length(sorteditems)) seperator = " " else seperator = ", " - if(sorteditems[ings] > levels.len) - sorteditems[ings] = levels.len + if(sorteditems[ings] > length(levels)) + sorteditems[ings] = length(levels) if(sorteditems[ings] <= 1) sendback +="[ings][seperator]" @@ -497,10 +497,10 @@ do {\ sendback +="[levels[sorteditems[ings]]] [ings][seperator]" for(var/ingtype in sortedtypes) // now add the types basenames, keeping the src one seperate so it can go on the end - if(sortedtypes[ingtype] > levels.len) - sortedtypes[ingtype] = levels.len + if(sortedtypes[ingtype] > length(levels)) + sortedtypes[ingtype] = length(levels) if(ingtype == basename) - if(sortedtypes[ingtype] < levels.len) + if(sortedtypes[ingtype] < length(levels)) sortedtypes[ingtype]++ endpart = "[levels[sortedtypes[ingtype]]] decker [basename]" continue diff --git a/code/modules/food_and_drinks/food/foods/pizza.dm b/code/modules/food_and_drinks/food/foods/pizza.dm index d2bda7925fb..9cdc5cddb6f 100644 --- a/code/modules/food_and_drinks/food/foods/pizza.dm +++ b/code/modules/food_and_drinks/food/foods/pizza.dm @@ -268,9 +268,9 @@ . = ..() if(open && pizza) desc = "A box suited for pizzas. It appears to have a [pizza.name] inside." - else if(boxes.len > 0) - desc = "A pile of boxes suited for pizzas. There appears to be [boxes.len + 1] boxes in the pile." - var/obj/item/pizzabox/top_box = boxes[boxes.len] + else if(length(boxes) > 0) + desc = "A pile of boxes suited for pizzas. There appears to be [length(boxes) + 1] boxes in the pile." + var/obj/item/pizzabox/top_box = boxes[length(boxes)] var/top_tag = top_box.box_tag if(top_tag != "") desc = "[desc] The box on top has a tag, it reads: '[top_tag]'." @@ -298,8 +298,8 @@ else // Stupid code because byondcode sucks var/set_tag = TRUE - if(boxes.len > 0) - var/obj/item/pizzabox/top_box = boxes[boxes.len] + if(length(boxes) > 0) + var/obj/item/pizzabox/top_box = boxes[length(boxes)] if(top_box.box_tag != "") set_tag = TRUE else @@ -307,7 +307,7 @@ set_tag = TRUE if(!open && set_tag) var/image/tag = image("food/pizza.dmi", icon_state = "pizzabox_tag") - tag.pixel_y = boxes.len * 3 + tag.pixel_y = length(boxes) * 3 . += tag /obj/item/pizzabox/attack_hand(mob/user) @@ -318,11 +318,11 @@ update_appearance(UPDATE_DESC|UPDATE_ICON) return - if(boxes.len > 0) + if(length(boxes) > 0) if(user.is_in_inactive_hand(src)) ..() return - var/obj/item/pizzabox/box = boxes[boxes.len] + var/obj/item/pizzabox/box = boxes[length(boxes)] boxes -= box user.put_in_hands(box) to_chat(user, "You remove the topmost [src] from your hand.") @@ -339,7 +339,7 @@ update_appearance(UPDATE_DESC|UPDATE_ICON) /obj/item/pizzabox/attack_self(mob/user) - if(boxes.len > 0) + if(length(boxes) > 0) return open = !open if(open && pizza) @@ -355,7 +355,7 @@ boxestoadd += box for(var/obj/item/pizzabox/i in box.boxes) boxestoadd += i - if((boxes.len+1) + boxestoadd.len <= 5) + if((boxes.len+1) + length(boxestoadd) <= 5) user.drop_item() box.loc = src box.boxes = list() // Clear the box boxes so we don't have boxes inside boxes. - Xzibit @@ -389,8 +389,8 @@ if(!t) return var/obj/item/pizzabox/boxtotagto = src - if(boxes.len > 0) - boxtotagto = boxes[boxes.len] + if(length(boxes) > 0) + boxtotagto = boxes[length(boxes)] boxtotagto.box_tag = copytext("[t]", 1, 30) update_appearance(UPDATE_DESC|UPDATE_ICON) return diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index 52d69b2eaa8..cccfab34edc 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -92,7 +92,7 @@ var/obj/item/kitchen/utensil/U = W - if(U.contents.len >= U.max_contents) + if(length(U.contents) >= U.max_contents) to_chat(user, "You cannot fit anything else on your [U].") return diff --git a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm index 8ad20838c4e..5896e70e42d 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm @@ -349,7 +349,7 @@ RefreshParts() /obj/machinery/gibber/autogibber/process() - if(!lturf || occupant || locked || operating || victim_targets.len) + if(!lturf || occupant || locked || operating || length(victim_targets)) return if(acceptdir != lastacceptdir) @@ -362,7 +362,7 @@ for(var/mob/living/carbon/human/H in lturf) victim_targets += H - if(victim_targets.len) + if(length(victim_targets)) visible_message({"\The [src] states, "Food detected!""}) sleep(consumption_delay) for(var/mob/living/carbon/H in victim_targets) diff --git a/code/modules/food_and_drinks/kitchen_machinery/kitchen_machine.dm b/code/modules/food_and_drinks/kitchen_machinery/kitchen_machine.dm index 06597129b2e..2058df28982 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/kitchen_machine.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/kitchen_machine.dm @@ -250,7 +250,7 @@ var/list/recipes_to_make = choose_recipes() - if(recipes_to_make.len == 1 && recipes_to_make[1][2] == RECIPE_FAIL) + if(length(recipes_to_make) == 1 && recipes_to_make[1][2] == RECIPE_FAIL) //This only runs if there is a single recipe source to be made and it is a failure (the machine was loaded with only 1 mixing bowl that results in failure OR was directly loaded with ingredients that results in failure). //If there are multiple sources, this bit gets skipped. dirty += 1 @@ -305,7 +305,7 @@ var/datum/recipe/recipe_src = select_recipe(GLOB.cooking_recipes[recipe_type], src, ignored_items = list(/obj/item/mixing_bowl)) //check the machine's directly-inserted ingredients for possible recipes as well, ignoring the mixing bowls when selecting recipe if(recipe_src) //if we found a valid recipe for directly-inserted ingredients, add that to our list recipes_to_make.Add(list(list(src, recipe_src))) - else if(!recipes_to_make.len) //if the machine has no mixing bowls to make recipes from AND also doesn't have a valid recipe of directly-inserted ingredients, return a failure so we can make a burned mess + else if(!length(recipes_to_make)) //if the machine has no mixing bowls to make recipes from AND also doesn't have a valid recipe of directly-inserted ingredients, return a failure so we can make a burned mess recipes_to_make.Add(list(list(src, RECIPE_FAIL))) return recipes_to_make diff --git a/code/modules/food_and_drinks/kitchen_machinery/processor.dm b/code/modules/food_and_drinks/kitchen_machinery/processor.dm index 41b5cf9bcc2..5514f6fb545 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/processor.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/processor.dm @@ -233,7 +233,7 @@ to_chat(user, "\the [src] is already processing something!") return 1 - if(contents.len == 0) + if(length(contents) == 0) to_chat(user, "\the [src] is empty.") return 1 processing = TRUE diff --git a/code/modules/games/tarot.dm b/code/modules/games/tarot.dm index da99f76b2fd..eba209dd892 100644 --- a/code/modules/games/tarot.dm +++ b/code/modules/games/tarot.dm @@ -17,7 +17,7 @@ var/mob/living/user = usr if(cooldown < world.time - 1 SECONDS) var/list/newcards = list() - while(cards.len) + while(length(cards)) var/datum/playingcard/P = pick(cards) P.name = replacetext(P.name," reversed","") if(prob(50)) diff --git a/code/modules/hydroponics/beekeeping/beebox.dm b/code/modules/hydroponics/beekeeping/beebox.dm index 3df3c4f5c3e..01fb9c6111b 100644 --- a/code/modules/hydroponics/beekeeping/beebox.dm +++ b/code/modules/hydroponics/beekeeping/beebox.dm @@ -93,16 +93,16 @@ /obj/structure/beebox/process() if(queen_bee) - if(bee_resources >= BEE_RESOURCE_HONEYCOMB_COST && honeycombs.len < get_max_honeycomb()) + if(bee_resources >= BEE_RESOURCE_HONEYCOMB_COST && length(honeycombs) < get_max_honeycomb()) bee_resources = max(bee_resources-BEE_RESOURCE_HONEYCOMB_COST, 0) var/obj/item/food/snacks/honeycomb/HC = new(src) if(queen_bee.beegent) HC.set_reagent(queen_bee.beegent.id) honeycombs += HC - if(bees.len < get_max_bees()) + if(length(bees) < get_max_bees()) var/freebee = FALSE //a freebee, geddit?, hahaha HAHAHAHA - if(bees.len <= 1) //there's always one set of worker bees, this isn't colony collapse disorder its 2d spessmen + if(length(bees) <= 1) //there's always one set of worker bees, this isn't colony collapse disorder its 2d spessmen freebee = TRUE if((bee_resources >= BEE_RESOURCE_NEW_BEE_COST && prob(BEE_PROB_NEW_BEE)) || freebee) if(!freebee) @@ -131,25 +131,25 @@ . += "There is no queen bee! There won't bee any honeycomb without a queen!" var/half_bee = get_max_bees()*0.5 - if(half_bee && (bees.len >= half_bee)) + if(half_bee && (length(bees) >= half_bee)) . += "This place is a BUZZ with activity... there are lots of bees!" . += "[bee_resources]/100 resource supply." . += "[bee_resources]% towards a new honeycomb." . += "[bee_resources*2]% towards a new bee." - if(honeycombs.len) - var/plural = honeycombs.len > 1 - . += "There [plural? "are" : "is"] [honeycombs.len] uncollected honeycomb[plural ? "s":""] in the apiary." + if(length(honeycombs)) + var/plural = length(honeycombs) > 1 + . += "There [plural? "are" : "is"] [length(honeycombs)] uncollected honeycomb[plural ? "s":""] in the apiary." - if(honeycombs.len >= get_max_honeycomb()) + if(length(honeycombs) >= get_max_honeycomb()) . += "there's no room for more honeycomb!" /obj/structure/beebox/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/honey_frame)) var/obj/item/honey_frame/HF = I - if(honey_frames.len < BEEBOX_MAX_FRAMES) + if(length(honey_frames) < BEEBOX_MAX_FRAMES) if(!user.unEquip(HF)) return visible_message("[user] adds a frame to the apiary.") @@ -227,7 +227,7 @@ return switch(option) if("Remove a Honey Frame") - if(!honey_frames.len) + if(!length(honey_frames)) to_chat(user, "There are no honey frames to remove!") return @@ -239,7 +239,7 @@ var/amtH = HF.honeycomb_capacity var/fallen = 0 - while(honeycombs.len && amtH) //let's pretend you always grab the frame with the most honeycomb on it + while(length(honeycombs) && amtH) //let's pretend you always grab the frame with the most honeycomb on it var/obj/item/food/snacks/honeycomb/HC = pick_n_take(honeycombs) if(HC) HC.forceMove(get_turf(src)) diff --git a/code/modules/hydroponics/grown/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm index 415e06f5dc9..48f7ef5358d 100644 --- a/code/modules/hydroponics/grown/kudzu.dm +++ b/code/modules/hydroponics/grown/kudzu.dm @@ -55,7 +55,7 @@ for(var/datum/spacevine_mutation/SM in mutations) if(initial(SM.quality) == SPACEVINE_MUTATION_NEGATIVE) temp_mut_list += SM - if(prob(20) && temp_mut_list.len) + if(prob(20) && length(temp_mut_list)) mutations.Remove(pick(temp_mut_list)) temp_mut_list.Cut() @@ -63,7 +63,7 @@ for(var/datum/spacevine_mutation/SM in mutations) if(initial(SM.quality) == SPACEVINE_MUTATION_POSITIVE) temp_mut_list += SM - if(prob(20) && temp_mut_list.len) + if(prob(20) && length(temp_mut_list)) mutations.Remove(pick(temp_mut_list)) temp_mut_list.Cut() @@ -71,7 +71,7 @@ for(var/datum/spacevine_mutation/SM in mutations) if(initial(SM.quality) == SPACEVINE_MUTATION_MINOR_NEGATIVE) temp_mut_list += SM - if(prob(20) && temp_mut_list.len) + if(prob(20) && length(temp_mut_list)) mutations.Remove(pick(temp_mut_list)) temp_mut_list.Cut() diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index 8bdba0b43e2..1b8250a8728 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -475,8 +475,31 @@ /obj/item/seeds/proc/add_random_traits(lower = 0, upper = 2) var/amount_random_traits = rand(lower, upper) + var/list/name_to_path = list( + "Liquid Contents" = /datum/plant_gene/trait/squash, + "Slippery Skin" = /datum/plant_gene/trait/slip, + "Electrical Activity" = /datum/plant_gene/trait/cell_charge, + "Bioluminescence" = /datum/plant_gene/trait/glow, + "Shadow Emission" = /datum/plant_gene/trait/glow/shadow, + "Red Electrical Glow" = /datum/plant_gene/trait/glow/red, + "Strong Bioluminescence" = /datum/plant_gene/trait/glow/berry, + "Bluespace Activity" = /datum/plant_gene/trait/teleport, + "Densified Chemicals" = /datum/plant_gene/trait/maxchem, + "Perennial Growth" = /datum/plant_gene/trait/repeated_harvest, + "Capacitive Cell Production" = /datum/plant_gene/trait/battery, + "Hypodermic Prickles" = /datum/plant_gene/trait/stinging, + "gaseous decomposition" = /datum/plant_gene/trait/smoke, + "Fire Resistance" = /datum/plant_gene/trait/fire_resistance, + ) for(var/i in 1 to amount_random_traits) - var/random_trait = pick((subtypesof(/datum/plant_gene/trait)-typesof(/datum/plant_gene/trait/plant_type))) + var/list/possible_traits = (subtypesof(/datum/plant_gene/trait) - typesof(/datum/plant_gene/trait/plant_type)) + //removing existing traits and conflicting traits be added from the list of traits to choose from + for(var/datum/plant_gene/trait/j in genes) + var/trait_name = j.name + possible_traits -= list(name_to_path[trait_name]) + if(trait_name == "Red Electrical Glow"|| trait_name == "Strong Bioluminescence"||trait_name == "Shadow Emission"||trait_name == "Bioluminescence") + possible_traits -= typesof(/datum/plant_gene/trait/glow) + var/random_trait = pick(possible_traits) var/datum/plant_gene/trait/T = new random_trait if(T.can_add(src)) genes += T diff --git a/code/modules/mining/equipment/wormhole_jaunter.dm b/code/modules/mining/equipment/wormhole_jaunter.dm index 2ceca3a04fe..50e08b83566 100644 --- a/code/modules/mining/equipment/wormhole_jaunter.dm +++ b/code/modules/mining/equipment/wormhole_jaunter.dm @@ -37,7 +37,7 @@ return var/list/L = get_destinations(user) - if(!L.len) + if(!length(L)) to_chat(user, "[src] found no beacons in the world to anchor a wormhole to.") return var/chosen_beacon = pick(L) diff --git a/code/modules/mining/fulton.dm b/code/modules/mining/fulton.dm index f8dbebab453..11bec33326e 100644 --- a/code/modules/mining/fulton.dm +++ b/code/modules/mining/fulton.dm @@ -24,7 +24,7 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons) if(EP.beacon_network in beacon_networks) possible_beacons += EP - if(!possible_beacons.len) + if(!length(possible_beacons)) to_chat(user, "There are no extraction beacons in existence!") return diff --git a/code/modules/mining/lavaland/loot/colossus_loot.dm b/code/modules/mining/lavaland/loot/colossus_loot.dm index 44423056c45..7c2002d2706 100644 --- a/code/modules/mining/lavaland/loot/colossus_loot.dm +++ b/code/modules/mining/lavaland/loot/colossus_loot.dm @@ -139,7 +139,7 @@ if(O.air) var/datum/gas_mixture/G = O.air G.copy_from(O.air) - if(prob(florachance) && NewFlora.len && !is_blocked_turf(O)) + if(prob(florachance) && length(NewFlora) && !is_blocked_turf(O)) var/atom/Picked = pick(NewFlora) new Picked(O) continue diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index 6f9a0885d28..13c348d1ef8 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -192,7 +192,7 @@ generate_mineral(alloy.build_path) /obj/machinery/mineral/processing_unit/proc/can_smelt(datum/design/D) - if(D.make_reagents.len) + if(length(D.make_reagents)) return FALSE var/build_amount = SMELT_AMOUNT diff --git a/code/modules/mining/minebot.dm b/code/modules/mining/minebot.dm index 070713dd758..fcd5f801580 100644 --- a/code/modules/mining/minebot.dm +++ b/code/modules/mining/minebot.dm @@ -195,7 +195,7 @@ O.forceMove(src) /mob/living/simple_animal/hostile/mining_drone/proc/DropOre(message = 1) - if(!contents.len) + if(!length(contents)) if(message) to_chat(src, "You attempt to dump your stored ore, but you have none.") return diff --git a/code/modules/mob/dead/observer/observer_say.dm b/code/modules/mob/dead/observer/observer_say.dm index 2f3c2dc68d2..3b97ab5d834 100644 --- a/code/modules/mob/dead/observer/observer_say.dm +++ b/code/modules/mob/dead/observer/observer_say.dm @@ -4,6 +4,9 @@ if(!message) return + if(GLOB.configuration.general.enable_ooc_emoji) + message = emoji_parse(message) + return say_dead(message) /mob/dead/observer/handle_track(message, verb = "says", mob/speaker = null, speaker_name, atom/follow_target, hard_to_hear) diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm index c00b0667daa..b8d064d5d0c 100644 --- a/code/modules/mob/hear_say.dm +++ b/code/modules/mob/hear_say.dm @@ -177,8 +177,8 @@ message = strip_html_properly(message) var/list/punctuation = list(",", "!", ".", ";", "?") var/list/messages = splittext(message, " ") - if(messages.len > 0) - var/R = rand(1, messages.len) + if(length(messages) > 0) + var/R = rand(1, length(messages)) var/heardword = messages[R] if(copytext(heardword,1, 1) in punctuation) heardword = copytext(heardword,2) diff --git a/code/modules/mob/language.dm b/code/modules/mob/language.dm index 9994faf145a..33ded157189 100644 --- a/code/modules/mob/language.dm +++ b/code/modules/mob/language.dm @@ -24,7 +24,7 @@ var/join_override /datum/language/proc/get_random_name(gender, name_count=2, syllable_count=4) - if(!syllables || !syllables.len || english_names) + if(!syllables || !length(syllables) || english_names) if(gender==FEMALE) return capitalize(pick(GLOB.first_names_female)) + " " + capitalize(pick(GLOB.last_names)) else @@ -43,7 +43,7 @@ /datum/language/proc/scramble(input) - if(!syllables || !syllables.len) + if(!syllables || !length(syllables)) return stars(input) // If the input is cached already, move it to the end of the cache and return it @@ -82,8 +82,8 @@ // Add it to cache, cutting old entries if the list is too long scramble_cache[input] = scrambled_text - if(scramble_cache.len > SCRAMBLE_CACHE_LEN) - scramble_cache.Cut(1, scramble_cache.len-SCRAMBLE_CACHE_LEN-1) + if(length(scramble_cache) > SCRAMBLE_CACHE_LEN) + scramble_cache.Cut(1, length(scramble_cache)-SCRAMBLE_CACHE_LEN-1) return scrambled_text diff --git a/code/modules/mob/living/brain/robotic_brain.dm b/code/modules/mob/living/brain/robotic_brain.dm index 3771163bc08..6df62bcd671 100644 --- a/code/modules/mob/living/brain/robotic_brain.dm +++ b/code/modules/mob/living/brain/robotic_brain.dm @@ -81,7 +81,7 @@ name = "[src] ([brainmob.name])" to_chat(brainmob, "You are a [src], brought into existence on [station_name()].") - to_chat(brainmob, "As a non-sentient synthetic intelligence, you answer to [imprinted_master], unless otherwise placed inside of a lawed synthetic structure or mech.") + to_chat(brainmob, "As a non-sapient synthetic intelligence, you answer to [imprinted_master], unless otherwise placed inside of a lawed synthetic structure or mech.") to_chat(brainmob, "Remember, the purpose of your existence is to serve [imprinted_master]'s every word, unless lawed or placed into a mech in the future.") brainmob.mind.assigned_role = "Positronic Brain" @@ -121,7 +121,7 @@ to_chat(user, "You cannot be \a [src].") return transfer_personality(user) - + /obj/item/mmi/robotic_brain/proc/validity_checks(mob/dead/observer/O) if(istype(O)) if(!O.check_ahud_rejoin_eligibility()) @@ -137,8 +137,8 @@ return FALSE /obj/item/mmi/robotic_brain/examine(mob/user) - . += "Its speaker is turned [silenced ? "off" : "on"]." . = ..() + . += "Its speaker is turned [silenced ? "off" : "on"]." var/list/msg = list("") diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm index fffd5c5e98e..41a63358c21 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -84,7 +84,7 @@ // he will become the alien but if he doesn't then we will set the stage // to 2, so we don't do a process heavy check everytime. - if(candidates.len) + if(length(candidates)) C = pick(candidates) else if(owner.client) C = owner.client diff --git a/code/modules/mob/living/carbon/carbon_life.dm b/code/modules/mob/living/carbon/carbon_life.dm index 3310c5211dc..ea63a7763df 100644 --- a/code/modules/mob/living/carbon/carbon_life.dm +++ b/code/modules/mob/living/carbon/carbon_life.dm @@ -355,7 +355,7 @@ clear_fullscreen("brute") /mob/living/carbon/proc/handle_patches() - var/multiple_patch_multiplier = processing_patches.len > 1 ? (processing_patches.len * 1.5) : 1 + var/multiple_patch_multiplier = length(processing_patches) > 1 ? (length(processing_patches) * 1.5) : 1 var/applied_amount = 0.35 * multiple_patch_multiplier for(var/patch in processing_patches) diff --git a/code/modules/mob/living/carbon/carbon_procs.dm b/code/modules/mob/living/carbon/carbon_procs.dm index f6b17c19cf8..fd665b3a777 100644 --- a/code/modules/mob/living/carbon/carbon_procs.dm +++ b/code/modules/mob/living/carbon/carbon_procs.dm @@ -908,7 +908,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven if(I == handcuffed) if(istype(I, /obj/item/restraints/handcuffs/twimsts)) playsound(loc, 'sound/items/eatfood.ogg', 50, FALSE) - if(I.reagents && I.reagents.reagent_list.len) + if(I.reagents && length(I.reagents.reagent_list)) taste(I.reagents) I.reagents.reaction(src, REAGENT_INGEST) I.reagents.trans_to(src, I.reagents.total_volume) diff --git a/code/modules/mob/living/carbon/human/appearance.dm b/code/modules/mob/living/carbon/human/appearance.dm index 9f9ad50fe92..e9e304b4a4b 100644 --- a/code/modules/mob/living/carbon/human/appearance.dm +++ b/code/modules/mob/living/carbon/human/appearance.dm @@ -154,7 +154,7 @@ if(!H) return var/list/valid_hairstyles = generate_valid_hairstyles() - if(valid_hairstyles.len) + if(length(valid_hairstyles)) H.h_style = pick(valid_hairstyles) else //this shouldn't happen @@ -173,7 +173,7 @@ if(!H) return var/list/valid_facial_hairstyles = generate_valid_facial_hairstyles() - if(valid_facial_hairstyles.len) + if(length(valid_facial_hairstyles)) H.f_style = pick(valid_facial_hairstyles) else //this shouldn't happen @@ -185,7 +185,7 @@ if(location) valid_markings = generate_valid_markings(location) - if(valid_markings.len) + if(length(valid_markings)) m_styles[location] = pick(valid_markings) else //this shouldn't happen @@ -193,7 +193,7 @@ else for(var/m_location in list("head", "body", "tail")) valid_markings = generate_valid_markings(m_location) - if(valid_markings.len) + if(length(valid_markings)) m_styles[m_location] = pick(valid_markings) else //this shouldn't happen @@ -207,7 +207,7 @@ if(!H) return var/list/valid_head_accessories = generate_valid_head_accessories() - if(valid_head_accessories.len) + if(length(valid_head_accessories)) H.ha_style = pick(valid_head_accessories) else //this shouldn't happen @@ -350,9 +350,9 @@ var/list/valid_species = new() for(var/current_species_name in GLOB.all_species) if(check_whitelist && !check_rights(R_ADMIN, FALSE, src)) //If we're using the whitelist, make sure to check it! - if(whitelist.len && !(current_species_name in whitelist)) + if(length(whitelist) && !(current_species_name in whitelist)) continue - if(blacklist.len && (current_species_name in blacklist)) + if(length(blacklist) && (current_species_name in blacklist)) continue if(!can_use_species(src, current_species_name)) continue diff --git a/code/modules/mob/living/carbon/human/body_accessories.dm b/code/modules/mob/living/carbon/human/body_accessories.dm index 3d59dbec9be..364626c0dff 100644 --- a/code/modules/mob/living/carbon/human/body_accessories.dm +++ b/code/modules/mob/living/carbon/human/body_accessories.dm @@ -12,7 +12,7 @@ GLOBAL_LIST_EMPTY(body_accessory_by_species) GLOB.body_accessory_by_species["[species]"] = list() GLOB.body_accessory_by_species["[species]"]["[accessory.name]"] = accessory - if(GLOB.body_accessory_by_species.len) + if(length(GLOB.body_accessory_by_species)) return TRUE return FALSE diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index cc304453716..565d09412c5 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -241,7 +241,7 @@ //It automatically updates health status /mob/living/carbon/human/heal_organ_damage(brute, burn, updating_health = TRUE) var/list/obj/item/organ/external/parts = get_damaged_organs(brute,burn) - if(!parts.len) + if(!length(parts)) return var/obj/item/organ/external/picked = pick(parts) if(picked.heal_damage(brute,burn, updating_health)) @@ -252,7 +252,7 @@ //It automatically updates health status /mob/living/carbon/human/take_organ_damage(brute, burn, updating_health = TRUE, sharp = FALSE, edge = 0) var/list/obj/item/organ/external/parts = get_damageable_organs() - if(!parts.len) + if(!length(parts)) return var/obj/item/organ/external/picked = pick(parts) if(picked.receive_damage(brute, burn, sharp, updating_health)) @@ -264,7 +264,7 @@ var/list/obj/item/organ/external/parts = get_damaged_organs(brute,burn) var/update = 0 - while(parts.len && ( brute > 0 || burn > 0)) + while(length(parts) && ( brute > 0 || burn > 0)) var/obj/item/organ/external/picked = pick(parts) var/brute_was = picked.brute_dam @@ -289,10 +289,10 @@ var/list/obj/item/organ/external/parts = get_damageable_organs() var/update = 0 - while(parts.len && (brute>0 || burn>0)) + while(length(parts) && (brute>0 || burn>0)) var/obj/item/organ/external/picked = pick(parts) - var/brute_per_part = brute/parts.len - var/burn_per_part = burn/parts.len + var/brute_per_part = brute / length(parts) + var/burn_per_part = burn / length(parts) var/brute_was = picked.brute_dam var/burn_was = picked.burn_dam diff --git a/code/modules/mob/living/carbon/human/human_examine.dm b/code/modules/mob/living/carbon/human/human_examine.dm index 165353221e9..acae13a999c 100644 --- a/code/modules/mob/living/carbon/human/human_examine.dm +++ b/code/modules/mob/living/carbon/human/human_examine.dm @@ -228,7 +228,7 @@ criminal = R.fields["criminal"] if(LAZYLEN(R.fields["comments"])) //if the commentlist is present var/list/comments = R.fields["comments"] - commentLatest = LAZYACCESS(comments, comments.len) //get the latest entry from the comment log + commentLatest = LAZYACCESS(comments, length(comments)) //get the latest entry from the comment log if(islist(commentLatest)) commentLatest = "[commentLatest["header"]]: [commentLatest["text"]]" else diff --git a/code/modules/mob/living/carbon/human/human_inventory.dm b/code/modules/mob/living/carbon/human/human_inventory.dm index 9368caf61c1..3b39a48a1f0 100644 --- a/code/modules/mob/living/carbon/human/human_inventory.dm +++ b/code/modules/mob/living/carbon/human/human_inventory.dm @@ -201,7 +201,7 @@ update_hair() //rebuild hair update_fhair() update_head_accessory() - if(hud_list.len) + if(length(hud_list)) sec_hud_set_ID() wear_mask_update(I, toggle_off = TRUE) update_inv_wear_mask() @@ -222,7 +222,7 @@ update_inv_belt() if(SLOT_HUD_WEAR_ID) wear_id = I - if(hud_list.len) + if(length(hud_list)) sec_hud_set_ID() update_inv_wear_id() if(SLOT_HUD_WEAR_PDA) diff --git a/code/modules/mob/living/carbon/human/human_life.dm b/code/modules/mob/living/carbon/human/human_life.dm index ab18b3fd2b8..b1aa99b34b0 100644 --- a/code/modules/mob/living/carbon/human/human_life.dm +++ b/code/modules/mob/living/carbon/human/human_life.dm @@ -635,7 +635,7 @@ if(healthdoll) if(stat == DEAD) healthdoll.icon_state = "healthdoll_DEAD" - if(healthdoll.overlays.len) + if(length(healthdoll.overlays)) healthdoll.overlays.Cut() else var/list/new_overlays = list() diff --git a/code/modules/mob/living/carbon/human/human_mob.dm b/code/modules/mob/living/carbon/human/human_mob.dm index c79acbd6c07..7296e27c278 100644 --- a/code/modules/mob/living/carbon/human/human_mob.dm +++ b/code/modules/mob/living/carbon/human/human_mob.dm @@ -555,7 +555,7 @@ if(setmedical != "Cancel") R.fields["p_stat"] = setmedical modified = TRUE - if(GLOB.PDA_Manifest.len) + if(length(GLOB.PDA_Manifest)) GLOB.PDA_Manifest.Cut() if(!modified) @@ -864,7 +864,7 @@ obscured |= SLOT_HUD_RIGHT_EAR obscured |= SLOT_HUD_LEFT_EAR - if(obscured.len > 0) + if(length(obscured) > 0) return obscured else return null diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm index 9584796cd3a..8ba0a96fcc7 100644 --- a/code/modules/mob/living/carbon/human/human_organs.dm +++ b/code/modules/mob/living/carbon/human/human_organs.dm @@ -18,7 +18,7 @@ if(!IS_HORIZONTAL(src) && world.time - l_move_time < 15) //Moving around with fractured ribs won't do you any good - if(E.is_broken() && E.internal_organs && E.internal_organs.len && prob(15)) + if(E.is_broken() && E.internal_organs && length(E.internal_organs) && prob(15)) var/obj/item/organ/internal/I = pick(E.internal_organs) E.custom_pain("You feel broken bones moving in your [E.name]!") I.receive_damage(rand(3, 5)) diff --git a/code/modules/mob/living/carbon/human/human_say.dm b/code/modules/mob/living/carbon/human/human_say.dm index f8d56e8934d..0041ca03dbf 100644 --- a/code/modules/mob/living/carbon/human/human_say.dm +++ b/code/modules/mob/living/carbon/human/human_say.dm @@ -13,7 +13,7 @@ //These only pertain to common. Languages are handled by mob/say_understands() if(!speaking) if(isnymph(other)) - if(other.languages.len >= 2) //They've sucked down some blood and can speak common now. + if(length(other.languages) >= 2) //They've sucked down some blood and can speak common now. return 1 if(issilicon(other)) return 1 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 f24d67e8346..9c743a9e373 100644 --- a/code/modules/mob/living/carbon/human/human_update_icons.dm +++ b/code/modules/mob/living/carbon/human/human_update_icons.dm @@ -590,7 +590,7 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) bloodsies.color = w_uniform.blood_color standing.overlays += bloodsies - if(w_uniform.accessories.len) //WE CHECKED THE TYPE ABOVE. THIS REALLY SHOULD BE FINE. // oh my god kys whoever made this if statement jfc :gun: + if(length(w_uniform.accessories)) //WE CHECKED THE TYPE ABOVE. THIS REALLY SHOULD BE FINE. // oh my god kys whoever made this if statement jfc :gun: for(var/obj/item/clothing/accessory/A in w_uniform:accessories) var/tie_color = A.item_color if(!tie_color) diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm index 1d6d67f995d..483c58b8ae8 100644 --- a/code/modules/mob/living/carbon/human/species/_species.dm +++ b/code/modules/mob/living/carbon/human/species/_species.dm @@ -858,13 +858,13 @@ if(SLOT_HUD_IN_BACKPACK) if(H.back && istype(H.back, /obj/item/storage/backpack)) var/obj/item/storage/backpack/B = H.back - if(B.contents.len < B.storage_slots && I.w_class <= B.max_w_class) + if(length(B.contents) < B.storage_slots && I.w_class <= B.max_w_class) return TRUE if(H.back && ismodcontrol(H.back)) var/obj/item/mod/control/C = H.back if(C.bag) var/obj/item/storage/backpack/B = C.bag - if(B.contents.len < B.storage_slots && I.w_class <= B.max_w_class) + if(length(B.contents) < B.storage_slots && I.w_class <= B.max_w_class) return TRUE return FALSE if(SLOT_HUD_TIE) diff --git a/code/modules/mob/living/carbon/human/species/golem.dm b/code/modules/mob/living/carbon/human/species/golem.dm index eb8f49a4414..747eec39daa 100644 --- a/code/modules/mob/living/carbon/human/species/golem.dm +++ b/code/modules/mob/living/carbon/human/species/golem.dm @@ -53,7 +53,7 @@ // 3% chance that our golem has a human surname, because cultural contamination if(prob(human_surname_chance)) golem_surname = pick(GLOB.last_names) - else if(special_names && special_names.len && prob(special_name_chance)) + else if(special_names && length(special_names) && prob(special_name_chance)) golem_surname = pick(special_names) var/golem_name = "[prefix] [golem_surname]" @@ -448,7 +448,7 @@ if(T.y>world.maxy-tele_range || T.yworld.maxy-tele_range || T.yYou're not missing any limbs!") return diff --git a/code/modules/mob/living/carbon/superheroes.dm b/code/modules/mob/living/carbon/superheroes.dm index e3bc02451f1..b5f2f797b38 100644 --- a/code/modules/mob/living/carbon/superheroes.dm +++ b/code/modules/mob/living/carbon/superheroes.dm @@ -34,7 +34,7 @@ singlemutcheck(H, mutation, MUTCHK_FORCED) /datum/superheroes/proc/assign_spells(mob/living/carbon/human/H) - if(default_spells.len) + if(length(default_spells)) for(var/spell in default_spells) var/datum/spell/S = spell if(!S) @@ -161,7 +161,7 @@ return T /datum/spell/recruit/can_cast(mob/user = usr, charge_check = TRUE, show_message = FALSE) - if(SSticker.mode.greyshirts.len >= 3) + if(length(SSticker.mode.greyshirts) >= 3) if(show_message) to_chat(user, "You have already recruited the maximum number of henchmen.") return FALSE diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 97312fe3906..406d4154a65 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1010,7 +1010,7 @@ if(client) if(new_z) SSmobs.clients_by_zlevel[new_z] += src - for(var/I in length(SSidlenpcpool.idle_mobs_by_zlevel[new_z]) to 1 step -1) //Backwards loop because we're removing (guarantees optimal rather than worst-case performance), it's fine to use .len here but doesn't compile on 511 + for(var/I in length(SSidlenpcpool.idle_mobs_by_zlevel[new_z]) to 1 step -1) //Backwards loop because we're removing (guarantees optimal rather than worst-case performance) var/mob/living/simple_animal/SA = SSidlenpcpool.idle_mobs_by_zlevel[new_z][I] if(SA) SA.toggle_ai(AI_ON) // Guarantees responsiveness for when appearing right next to mobs diff --git a/code/modules/mob/living/living_emote.dm b/code/modules/mob/living/living_emote.dm index dbcb4c4add6..dc75d8cf9df 100644 --- a/code/modules/mob/living/living_emote.dm +++ b/code/modules/mob/living/living_emote.dm @@ -208,7 +208,7 @@ message_param = "tries to point at %t with a leg." else // nugget - message_param = "bumps [user.p_their()] head on the ground trying to motion towards %t." return ..() diff --git a/code/modules/mob/living/living_say.dm b/code/modules/mob/living/living_say.dm index 8ada26d0baa..f1af846f40d 100644 --- a/code/modules/mob/living/living_say.dm +++ b/code/modules/mob/living/living_say.dm @@ -113,7 +113,10 @@ GLOBAL_LIST_EMPTY(channel_to_radio_key) if(sanitize) if(speaks_ooc) - message = sanitize(message) + if(GLOB.configuration.general.enable_ooc_emoji) + message = emoji_parse(sanitize(message)) + else + message = sanitize(message) else message = sanitize_for_ic(message) @@ -207,7 +210,7 @@ GLOBAL_LIST_EMPTY(channel_to_radio_key) var/message_range = world.view //speaking into radios - if(used_radios.len) + if(length(used_radios)) italics = TRUE message_range = 1 if(first_piece.speaking) @@ -437,7 +440,7 @@ GLOBAL_LIST_EMPTY(channel_to_radio_key) if(M.client) speech_bubble_recipients.Add(M.client) - if(eavesdropping.len) + if(length(eavesdropping)) stars_all(message_pieces) //hopefully passing the message twice through stars() won't hurt... I guess if you already don't understand the language, when they speak it too quietly to hear normally you would be able to catch even less. for(var/mob/M in eavesdropping) M.hear_say(message_pieces, verb, italics, src, use_voice = FALSE) @@ -446,7 +449,7 @@ GLOBAL_LIST_EMPTY(channel_to_radio_key) speech_bubble("[bubble_icon][speech_bubble_test]", src, speech_bubble_recipients) - if(watching.len) + if(length(watching)) var/rendered = "[name] [not_heard]." for(var/mob/M in watching) M.show_message(rendered, 2) diff --git a/code/modules/mob/living/silicon/ai/ai_mob.dm b/code/modules/mob/living/silicon/ai/ai_mob.dm index f707fe927a9..89ad5bed7c4 100644 --- a/code/modules/mob/living/silicon/ai/ai_mob.dm +++ b/code/modules/mob/living/silicon/ai/ai_mob.dm @@ -155,7 +155,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( while(!pickedName) pickedName = pick(GLOB.ai_names) for(var/mob/living/silicon/ai/A in GLOB.mob_list) - if(A.real_name == pickedName && possibleNames.len > 1) //fixing the theoretically possible infinite loop + if(A.real_name == pickedName && length(possibleNames) > 1) //fixing the theoretically possible infinite loop possibleNames -= pickedName pickedName = null @@ -273,11 +273,11 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( to_chat(src, "For department channels, use the following say commands:") var/radio_text = "" - for(var/i = 1 to aiRadio.channels.len) + for(var/i = 1 to length(aiRadio.channels)) var/channel = aiRadio.channels[i] var/key = get_radio_key_from_channel(channel) radio_text += "[key] - [channel]" - if(i != aiRadio.channels.len) + if(i != length(aiRadio.channels)) radio_text += ", " to_chat(src, radio_text) @@ -324,10 +324,10 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( dat += "-- [area_name] ([(dat2 != "") ? dat2 : "No Camera"])" else dat += "-- [area_name] (No Camera)" - if(sources.len > 1) + if(length(sources) > 1) dat += "- [length(sources)] sources" dat += "
    \n" - if(!L.len) + if(!length(L)) dat += "-- All Systems Nominal
    \n" dat += "
    \n" @@ -883,9 +883,9 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( return TRUE if(O) var/obj/machinery/camera/C = locateUID(O[1]) - if(O.len == 1 && !QDELETED(C) && C.can_use()) + if(length(O) == 1 && !QDELETED(C) && C.can_use()) queueAlarm("--- [class] alarm detected in [A.name]! ([C.c_tag])", class) - else if(O && O.len) + else if(O && length(O)) var/foo = 0 var/dat2 = "" for(var/thing in O) @@ -951,7 +951,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( continue var/list/tempnetwork = difflist(C.network,GLOB.restricted_camera_networks,1) - if(tempnetwork.len) + if(length(tempnetwork)) for(var/i in tempnetwork) cameralist[i] = i var/old_network = network @@ -1034,7 +1034,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( for(var/datum/data/record/t in GLOB.data_core.general)//Look in data core general. personnel_list["[t.fields["name"]]: [t.fields["rank"]]"] = t.fields["photo"]//Pull names, rank, and id photo. - if(personnel_list.len) + if(length(personnel_list)) input = tgui_input_list(usr, "Select a crew member", "Change Hologram", personnel_list) var/icon/character_icon = personnel_list[input] if(character_icon) diff --git a/code/modules/mob/living/silicon/ai/latejoin.dm b/code/modules/mob/living/silicon/ai/latejoin.dm index 495f8d9372f..bb69a2e2cef 100644 --- a/code/modules/mob/living/silicon/ai/latejoin.dm +++ b/code/modules/mob/living/silicon/ai/latejoin.dm @@ -63,7 +63,7 @@ GLOBAL_LIST_EMPTY(empty_playable_ai_cores) // Before calling this, make sure an empty core exists, or this will no-op /mob/living/silicon/ai/proc/moveToEmptyCore() - if(!GLOB.empty_playable_ai_cores.len) + if(!length(GLOB.empty_playable_ai_cores)) CRASH("moveToEmptyCore called without any available cores") // IsJobAvailable for AI checks that there is an empty core available in this list diff --git a/code/modules/mob/living/silicon/pai/pai_death.dm b/code/modules/mob/living/silicon/pai/pai_death.dm index 281fc25d279..e7f041de10c 100644 --- a/code/modules/mob/living/silicon/pai/pai_death.dm +++ b/code/modules/mob/living/silicon/pai/pai_death.dm @@ -3,7 +3,7 @@ if(!cleanWipe) force_fold_out() - visible_message("[src] emits a dull beep before it loses power and collapses.", "You hear a dull beep followed by the sound of glass crunching.") + visible_message("[src] emits a dull beep before it loses power and collapses.", "You hear a dull beep followed by the sound of glass crunching.") name = "pAI debris" desc = "The unfortunate remains of some poor personal AI device." icon_state = "[chassis]_dead" diff --git a/code/modules/mob/living/silicon/robot/drone/drone_items.dm b/code/modules/mob/living/silicon/robot/drone/drone_items.dm index e19be02507f..09e6f0a9abe 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_items.dm @@ -107,10 +107,10 @@ gripped_item?.afterattack(target, user, 1, params) //If gripped_item either didn't get deleted, or it failed to be transfered to its target - if(!gripped_item && contents.len) + if(!gripped_item && length(contents)) gripped_item = contents[1] return FALSE - else if(gripped_item && !contents.len) + else if(gripped_item && !length(contents)) gripped_item = null else if(isitem(target)) //Check that we're not pocketing a mob. diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm index b6d53e6875d..b397601193b 100644 --- a/code/modules/mob/living/silicon/robot/robot_defense.dm +++ b/code/modules/mob/living/silicon/robot/robot_defense.dm @@ -30,7 +30,7 @@ damage = rand(20, 40) else damage = rand(5, 35) - damage = round(damage / 2) // borgs recieve half damage + damage = round(damage / 2) // borgs receive half damage adjustBruteLoss(damage) return diff --git a/code/modules/mob/living/silicon/robot/robot_mob.dm b/code/modules/mob/living/silicon/robot/robot_mob.dm index 2891de7530b..959c3e8a6ab 100644 --- a/code/modules/mob/living/silicon/robot/robot_mob.dm +++ b/code/modules/mob/living/silicon/robot/robot_mob.dm @@ -742,7 +742,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( dat += "" dat += "-- [area_name]" dat += "
    \n" - if(!L.len) + if(!length(L)) dat += "-- All Systems Nominal
    \n" dat += "
    \n" diff --git a/code/modules/mob/living/silicon/robot/robot_movement.dm b/code/modules/mob/living/silicon/robot/robot_movement.dm index 99caad61a71..8f933aec0b1 100644 --- a/code/modules/mob/living/silicon/robot/robot_movement.dm +++ b/code/modules/mob/living/silicon/robot/robot_movement.dm @@ -1,14 +1,17 @@ /mob/living/silicon/robot/Process_Spacemove(movement_dir = 0) if(ionpulse()) - return 1 + return TRUE if(..()) - return 1 - return 0 + return TRUE + return FALSE //No longer needed, but I'll leave it here incase we plan to re-use it. /mob/living/silicon/robot/movement_delay() . = ..() . += speed + // Counteract magboot slow in 0G. + if(!has_gravity(src) && HAS_TRAIT(src, TRAIT_MAGPULSE)) + . -= 2 // The slowdown value on the borg magpulse. if(module_active && istype(module_active,/obj/item/borg/destroyer/mobility)) . -= 3 . += GLOB.configuration.movement.robot_delay diff --git a/code/modules/mob/living/silicon/silicon_mob.dm b/code/modules/mob/living/silicon/silicon_mob.dm index 9a374ea0f88..a487def354f 100644 --- a/code/modules/mob/living/silicon/silicon_mob.dm +++ b/code/modules/mob/living/silicon/silicon_mob.dm @@ -133,7 +133,7 @@ return /mob/living/silicon/proc/queueAlarm(message, type, incoming = TRUE) - var/in_cooldown = (alarms_to_show.len > 0 || alarms_to_clear.len > 0) + var/in_cooldown = (length(alarms_to_show) > 0 || length(alarms_to_clear) > 0) if(incoming) alarms_to_show += message alarm_types_show[type] += 1 @@ -147,7 +147,7 @@ addtimer(CALLBACK(src, PROC_REF(show_alarms)), 3 SECONDS) /mob/living/silicon/proc/show_alarms() - if(alarms_to_show.len < 5) + if(length(alarms_to_show) < 5) for(var/msg in alarms_to_show) to_chat(src, msg) else if(length(alarms_to_show)) @@ -173,11 +173,11 @@ var/msg_text = msg.Join("") to_chat(src, msg_text) - if(alarms_to_clear.len < 3) + if(length(alarms_to_clear) < 3) for(var/msg in alarms_to_clear) to_chat(src, msg) - else if(alarms_to_clear.len) + else if(length(alarms_to_clear)) var/list/msg = list("--- ") if(alarm_types_clear["Motion"]) diff --git a/code/modules/mob/living/simple_animal/bot/bot_construction.dm b/code/modules/mob/living/simple_animal/bot/bot_construction.dm index 875fc6e1a45..79cd8ab61e7 100644 --- a/code/modules/mob/living/simple_animal/bot/bot_construction.dm +++ b/code/modules/mob/living/simple_animal/bot/bot_construction.dm @@ -254,7 +254,7 @@ return if(!istype(src, /obj/item/storage/toolbox)) return - if(contents.len >= 1) + if(length(contents) >= 1) to_chat(user, "They won't fit in, as there is already stuff inside.") return if(T.use(10)) @@ -332,7 +332,7 @@ robot_arm = I.type //Making a medibot! - if(contents.len) + if(length(contents)) to_chat(user, "You need to empty [src] out first!") return @@ -618,7 +618,7 @@ else robot_arm = W.type - if(contents.len) + if(length(contents)) to_chat(user, "You need to empty [src] out first!") return diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index 9b7c3e74d4c..b96a046710e 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -482,7 +482,7 @@ if(C.stat==2) continue targets += C - if(targets.len) + if(length(targets)) if(prob(50)) var/mob/toshoot = pick(targets) if(toshoot) @@ -496,7 +496,7 @@ else shootAt(toshoot) else if(prob(50)) - if(targets.len) + if(length(targets)) var/mob/toarrest = pick(targets) if(toarrest) target = toarrest diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm index 1f2e5904177..f7188f1a3be 100644 --- a/code/modules/mob/living/simple_animal/bot/floorbot.dm +++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm @@ -17,7 +17,7 @@ req_access = list(ACCESS_CONSTRUCTION, ACCESS_ROBOTICS) window_id = "autofloor" window_name = "Automatic Station Floor Repairer v1.1" - /// Determines what to do when process_scan() recieves a target. See process_scan() for details. + /// Determines what to do when process_scan() receives a target. See process_scan() for details. var/process_type /// Tiles in inventory var/amount = 10 diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index 221ca0d017d..8db8e6c708d 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -672,7 +672,7 @@ var/obj/effect/decal/cleanable/blood/tracks/B = locate() in next if(!B) B = new /obj/effect/decal/cleanable/blood/tracks(loc) - if(blood_DNA && blood_DNA.len) + if(blood_DNA && length(blood_DNA)) B.blood_DNA |= blood_DNA.Copy() B.basecolor = currentBloodColor var/newdir = get_dir(next, loc) diff --git a/code/modules/mob/living/simple_animal/friendly/diona_nymph.dm b/code/modules/mob/living/simple_animal/friendly/diona_nymph.dm index ff76eef3957..635fbbbc7f1 100644 --- a/code/modules/mob/living/simple_animal/friendly/diona_nymph.dm +++ b/code/modules/mob/living/simple_animal/friendly/diona_nymph.dm @@ -173,7 +173,7 @@ if(stat != CONSCIOUS) return FALSE - if(donors.len < evolve_donors) + if(length(donors) < evolve_donors) to_chat(src, "You need more blood in order to ascend to a new state of consciousness...") return FALSE @@ -259,12 +259,12 @@ update_progression() /mob/living/simple_animal/diona/proc/update_progression() - if(stat != CONSCIOUS || !donors.len) + if(stat != CONSCIOUS || !length(donors)) return FALSE - if(donors.len == evolve_donors) + if(length(donors) == evolve_donors) to_chat(src, "You feel ready to move on to your next stage of growth.") - else if(donors.len == awareness_donors) + else if(length(donors) == awareness_donors) universal_understand = TRUE to_chat(src, "You feel your awareness expand, and realize you know how to understand the creatures around you.") else 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 089dacb4750..c7479382f93 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -43,10 +43,10 @@ /mob/living/simple_animal/hostile/retaliate/goat/handle_automated_movement() . = ..() //chance to go crazy and start wacking stuff - if(!enemies.len && prob(1)) + if(!length(enemies) && prob(1)) Retaliate() - if(enemies.len && prob(10)) + if(length(enemies) && prob(10)) enemies = list() LoseTarget() visible_message("[src] calms down.") diff --git a/code/modules/mob/living/simple_animal/hide_action.dm b/code/modules/mob/living/simple_animal/hide_action.dm index 90a18959041..c3835690b65 100644 --- a/code/modules/mob/living/simple_animal/hide_action.dm +++ b/code/modules/mob/living/simple_animal/hide_action.dm @@ -11,13 +11,13 @@ if(owner.layer != layer_to_change_to) owner.layer = layer_to_change_to - owner.visible_message("[owner] scurries to the ground!", "You are now hiding.") + owner.visible_message("[owner] scurries to the ground!", "You are now hiding.") if(istype(simplemob) && simplemob.pass_door_while_hidden || isdrone(simplemob)) simplemob.pass_flags |= PASSDOOR return simplemob.layer = layer_to_change_from - owner.visible_message("[owner] slowly peeks up from the ground...", "You have stopped hiding.") + owner.visible_message("[owner] slowly peeks up from the ground...", "You have stopped hiding.") if(istype(simplemob) && simplemob.pass_door_while_hidden || isdrone(simplemob)) simplemob.pass_flags &= ~PASSDOOR diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm index e501bf3d528..5d05c17c5eb 100644 --- a/code/modules/mob/living/simple_animal/hostile/bees.dm +++ b/code/modules/mob/living/simple_animal/hostile/bees.dm @@ -236,7 +236,7 @@ target = beehome if(!beehome) //add ourselves to a beebox (of the same reagent) if we have no home for(var/obj/structure/beebox/BB in view(vision_range, src)) - if(reagent_incompatible(BB.queen_bee) || BB.bees.len >= BB.get_max_bees()) + if(reagent_incompatible(BB.queen_bee) || length(BB.bees) >= BB.get_max_bees()) continue BB.bees |= src beehome = BB diff --git a/code/modules/mob/living/simple_animal/hostile/floorcluwne.dm b/code/modules/mob/living/simple_animal/hostile/floorcluwne.dm index 45e18dfd550..11c9de2d711 100644 --- a/code/modules/mob/living/simple_animal/hostile/floorcluwne.dm +++ b/code/modules/mob/living/simple_animal/hostile/floorcluwne.dm @@ -151,7 +151,7 @@ /mob/living/simple_animal/hostile/floor_cluwne/proc/Acquire_Victim(specific) var/list/players_copy = GLOB.player_list.Copy() - while(players_copy.len) + while(length(players_copy)) var/mob/living/carbon/human/H = pick_n_take(players_copy) if(!ishuman(H)) continue diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index db9ea7ed9d0..0d104ab1d01 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -179,7 +179,7 @@ var/possible_target_distance = get_dist(targets_from, A) if(target_dist < possible_target_distance) Targets -= A - if(!Targets.len)//We didnt find nothin! + if(!length(Targets))//We didnt find nothin! return var/chosen_target = pick(Targets)//Pick the remaining targets (if any) at random return chosen_target @@ -333,7 +333,7 @@ /mob/living/simple_animal/hostile/proc/Aggro() vision_range = aggro_vision_range - if(target && emote_taunt.len && prob(taunt_chance)) + if(target && length(emote_taunt) && prob(taunt_chance)) custom_emote(EMOTE_VISIBLE, "[pick(emote_taunt)] at [target].") taunt_chance = max(taunt_chance-7,2) @@ -537,7 +537,7 @@ if(!T) return - if(!length(SSmobs.clients_by_zlevel[T.z])) // It's fine to use .len here but doesn't compile on 511 + if(!length(SSmobs.clients_by_zlevel[T.z])) toggle_ai(AI_Z_OFF) return diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm index 5483c9390c9..94af1932245 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm @@ -254,12 +254,12 @@ Difficulty: Hard . = list() for(var/mob/living/L in targets) var/list/bloodpool = get_pools(get_turf(L), 0) - if(bloodpool.len && (!faction_check_mob(L) || L.stat == DEAD)) + if(length(bloodpool) && (!faction_check_mob(L) || L.stat == DEAD)) . += L /mob/living/simple_animal/hostile/megafauna/bubblegum/proc/try_bloodattack() var/list/targets = get_mobs_on_blood() - if(targets.len) + if(length(targets)) INVOKE_ASYNC(src, PROC_REF(bloodattack), targets, prob(enraged ? 75 : 50)) return TRUE return FALSE @@ -268,7 +268,7 @@ Difficulty: Hard var/mob/living/target_one = pick_n_take(targets) var/turf/target_one_turf = get_turf(target_one) var/mob/living/target_two - if(targets.len) + if(length(targets)) target_two = pick_n_take(targets) var/turf/target_two_turf = get_turf(target_two) if(target_two.stat != CONSCIOUS || prob(10)) @@ -278,7 +278,7 @@ Difficulty: Hard if(target_one) var/list/pools = get_pools(get_turf(target_one), 0) - if(pools.len) + if(length(pools)) target_one_turf = get_turf(target_one) if(target_one_turf) if(target_one.stat != CONSCIOUS || prob(10)) @@ -288,7 +288,7 @@ Difficulty: Hard if(!target_two && target_one) var/list/poolstwo = get_pools(get_turf(target_one), 0) - if(poolstwo.len) + if(length(poolstwo)) target_one_turf = get_turf(target_one) if(target_one_turf) if(target_one.stat != CONSCIOUS || prob(10)) @@ -333,13 +333,13 @@ Difficulty: Hard if(Adjacent(target)) return FALSE var/list/can_jaunt = get_pools(get_turf(src), 1) - if(!can_jaunt.len) + if(!length(can_jaunt)) return FALSE var/list/pools = get_pools(get_turf(target), 5) var/list/pools_to_remove = get_pools(get_turf(target), 4) pools -= pools_to_remove - if(!pools.len) + if(!length(pools)) return FALSE var/obj/effect/temp_visual/decoy/DA = new /obj/effect/temp_visual/decoy(loc,src) @@ -357,7 +357,7 @@ Difficulty: Hard pools = get_pools(get_turf(target), 5) pools_to_remove = get_pools(get_turf(target), 4) pools -= pools_to_remove - if(pools.len) + if(length(pools)) shuffle_inplace(pools) found_bloodpool = pick(pools) if(found_bloodpool) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm index 2ef2491296e..7e98435c073 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm @@ -175,7 +175,7 @@ Difficulty: Hard possibilities = list("chaser_swarm") else possibilities += "chaser_swarm" - if(possibilities.len) + if(length(possibilities)) switch(pick(possibilities)) if("blink_spam") //blink either once or multiple times. blink_spam(blink_counter, target_slowness, cross_counter) @@ -277,9 +277,9 @@ Difficulty: Hard SLEEP_CHECK_DEATH(6) var/list/targets = ListTargets() var/list/cardinal_copy = GLOB.cardinal.Copy() - while(targets.len && cardinal_copy.len) + while(length(targets) && length(cardinal_copy)) var/mob/living/pickedtarget = pick(targets) - if(targets.len >= cardinal_copy.len) + if(length(targets) >= length(cardinal_copy)) pickedtarget = pick_n_take(targets) if(!istype(pickedtarget) || pickedtarget.stat == DEAD) pickedtarget = target diff --git a/code/modules/mob/living/simple_animal/hostile/mimic_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mimic_mobs.dm index 0e6ef877eb8..33356c1d36d 100644 --- a/code/modules/mob/living/simple_animal/hostile/mimic_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mimic_mobs.dm @@ -315,11 +315,11 @@ GLOBAL_LIST_INIT(protected_objects, list(/obj/structure/table, /obj/structure/ca visible_message("The [src] clears a jam!") Pewgun.chambered.loc = loc //rip revolver immersions, blame shotgun snowflake procs Pewgun.chambered = null - if(Pewgun.magazine && Pewgun.magazine.stored_ammo.len) + if(Pewgun.magazine && length(Pewgun.magazine.stored_ammo)) Pewgun.chambered = Pewgun.magazine.get_round(0) Pewgun.chambered.loc = Pewgun Pewgun.update_icon() - else if(Pewgun.magazine && Pewgun.magazine.stored_ammo.len) //only true for pumpguns i think + else if(Pewgun.magazine && length(Pewgun.magazine.stored_ammo)) //only true for pumpguns i think Pewgun.chambered = Pewgun.magazine.get_round(0) Pewgun.chambered.loc = Pewgun visible_message("The [src] cocks itself!") diff --git a/code/modules/mob/living/simple_animal/hostile/mining/goldgrub.dm b/code/modules/mob/living/simple_animal/hostile/mining/goldgrub.dm index d28b936adeb..c6021bab7c4 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining/goldgrub.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining/goldgrub.dm @@ -42,7 +42,7 @@ /mob/living/simple_animal/hostile/asteroid/goldgrub/GiveTarget(new_target) target = new_target if(target != null) - if(istype(target, /obj/item/stack/ore) && loot.len < 10) + if(istype(target, /obj/item/stack/ore) && length(loot) < 10) visible_message("[src] looks at [target.name] with hungry eyes.") else if(isliving(target)) Aggro() diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/retaliate.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/retaliate.dm index bbc45c0b7fd..2cd5dddf990 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/retaliate.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/retaliate.dm @@ -14,7 +14,7 @@ return A /mob/living/simple_animal/hostile/retaliate/ListTargets() - if(!enemies.len) + if(!length(enemies)) return list() var/list/see = ..() see &= enemies // Remove all entries that aren't in enemies diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate_mobs.dm b/code/modules/mob/living/simple_animal/hostile/syndicate_mobs.dm index afd4595d3bd..36ffb309a1d 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate_mobs.dm @@ -126,7 +126,7 @@ if(!ranged) playsound(loc, 'sound/weapons/saberon.ogg', 35, 1) if(alert_on_shield_breach) - if(depotarea.shield_list.len) + if(length(depotarea.shield_list)) raise_alert("[name] reports that [target] is trying to breach the armory shield!") alert_on_shield_breach = FALSE raised_alert = FALSE @@ -282,7 +282,7 @@ var/list/key_candidates = list() for(var/mob/living/simple_animal/hostile/syndicate/melee/autogib/depot/officer/O in GLOB.alive_mob_list) key_candidates += O - if(key_candidates.len) + if(length(key_candidates)) var/mob/living/simple_animal/hostile/syndicate/melee/autogib/depot/officer/O = pick(key_candidates) O.shield_key = TRUE depotarea.shields_up() diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/reproduction.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/reproduction.dm index b406f470d33..8cf7af301e1 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/reproduction.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/reproduction.dm @@ -111,7 +111,7 @@ if(temp_vent.welded) // no point considering a vent we can't even use continue vents.Add(temp_vent) - if(!vents.len) + if(!length(vents)) entry_vent = null return var/obj/machinery/atmospherics/unary/vent_pump/exit_vent = pick(vents) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_ai.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_ai.dm index 07276a401f4..5134355baf4 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_ai.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_ai.dm @@ -68,9 +68,9 @@ targets2 += M else targets3 += M - if(targets1.len) + if(length(targets1)) return targets1 - if(targets2.len) + if(length(targets2)) return targets2 return targets3 @@ -275,7 +275,7 @@ var/list/vents = list() for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in entry_vent.parent.other_atmosmch) vents.Add(temp_vent) - if(!vents.len) + if(!length(vents)) entry_vent = null return var/obj/machinery/atmospherics/unary/vent_pump/exit_vent = pick(vents) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm index 81d166eedab..35a3ad73b20 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/terror_spiders.dm @@ -377,7 +377,7 @@ GLOBAL_LIST_EMPTY(ts_infected_list) to_chat(T, "TerrorSense: [msgtext]") /mob/living/simple_animal/hostile/poison/terror_spider/proc/CheckFaction() - if(faction.len != 2 || (!("terrorspiders" in faction)) || master_commander != null) + if(length(faction) != 2 || (!("terrorspiders" in faction)) || master_commander != null) to_chat(src, "Your connection to the hive mind has been severed!") stack_trace("Terror spider with incorrect faction list at: [atom_loc_line(src)]") gib() diff --git a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm index a6a840906f8..84ee41256fc 100644 --- a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm +++ b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm @@ -90,7 +90,7 @@ step(L,get_dir(L,src)) //reel them in L.Weaken(6 SECONDS) //you can't get away now~ - if(grasping.len < max_grasps) + if(length(grasping) < max_grasps) grasping: for(var/mob/living/L in view(grasp_range, src)) if(L == src || faction_check_mob(L) || (L in grasping) || L == target) diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 21552a5898b..591053c3b11 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -249,8 +249,8 @@ Phrases that the parrot hears in mob/living/say() get added to speach_buffer. Every once in a while, the parrot picks one of the lines from the buffer and replaces an element of the 'speech' list. Then it clears the buffer to make sure they dont magically remember something from hours ago. */ - if(speech_buffer.len && prob(10)) - if(clean_speak.len) + if(length(speech_buffer) && prob(10)) + if(length(clean_speak)) clean_speak -= pick(clean_speak) clean_speak += pick(speech_buffer) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 06020517b73..f2ff761520e 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -258,33 +258,33 @@ set waitfor = FALSE if(speak_chance) if(prob(speak_chance) || override) - if(speak && speak.len) - if((emote_hear && emote_hear.len) || (emote_see && emote_see.len)) - var/length = speak.len - if(emote_hear && emote_hear.len) - length += emote_hear.len - if(emote_see && emote_see.len) - length += emote_see.len + if(speak && length(speak)) + if((emote_hear && length(emote_hear)) || (emote_see && length(emote_see))) + var/length = length(speak) + if(emote_hear && length(emote_hear)) + length += length(emote_hear) + if(emote_see && length(emote_see)) + length += length(emote_see) var/randomValue = rand(1,length) - if(randomValue <= speak.len) + if(randomValue <= length(speak)) say(pick(speak)) else - randomValue -= speak.len - if(emote_see && randomValue <= emote_see.len) + randomValue -= length(speak) + if(emote_see && randomValue <= length(emote_see)) custom_emote(EMOTE_VISIBLE, pick(emote_see)) else custom_emote(EMOTE_AUDIBLE, pick(emote_hear)) else say(pick(speak)) else - if(!(emote_hear && emote_hear.len) && (emote_see && emote_see.len)) + if(!(emote_hear && length(emote_hear)) && (emote_see && length(emote_see))) custom_emote(EMOTE_VISIBLE, pick(emote_see)) - if((emote_hear && emote_hear.len) && !(emote_see && emote_see.len)) + if((emote_hear && length(emote_hear)) && !(emote_see && length(emote_see))) custom_emote(EMOTE_AUDIBLE, pick(emote_hear)) - if((emote_hear && emote_hear.len) && (emote_see && emote_see.len)) - var/length = emote_hear.len + emote_see.len + if((emote_hear && length(emote_hear)) && (emote_see && length(emote_see))) + var/length = length(emote_hear) + length(emote_see) var/pick = rand(1,length) - if(pick <= emote_see.len) + if(pick <= length(emote_see)) custom_emote(EMOTE_VISIBLE, pick(emote_see)) else custom_emote(EMOTE_AUDIBLE, pick(emote_hear)) @@ -361,7 +361,7 @@ /mob/living/simple_animal/say_quote(message) var/verb = "says" - if(speak_emote.len) + if(length(speak_emote)) verb = pick(speak_emote) return verb diff --git a/code/modules/mob/living/simple_animal/slime/slime_life.dm b/code/modules/mob/living/simple_animal/slime/slime_life.dm index 67d15345bea..b15e5cefeb6 100644 --- a/code/modules/mob/living/simple_animal/slime/slime_life.dm +++ b/code/modules/mob/living/simple_animal/slime/slime_life.dm @@ -9,7 +9,7 @@ handle_nutrition() if(QDELETED(src)) // Stop if the slime split during handle_nutrition() return - reagents.remove_all(0.5 * REAGENTS_METABOLISM * reagents.reagent_list.len) //Slimes are such snowflakes + reagents.remove_all(0.5 * REAGENTS_METABOLISM * length(reagents.reagent_list)) //Slimes are such snowflakes handle_targets() if(!ckey) handle_mood() @@ -319,7 +319,7 @@ targets += L // Possible target found! - if(targets.len > 0) + if(length(targets) > 0) if(attacked || rabid || hungry == 2) Target = targets[1] // I am attacked and am fighting back or so hungry I don't even care else 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 2e4fca91f6f..20282318580 100644 --- a/code/modules/mob/living/simple_animal/slime/slime_mob.dm +++ b/code/modules/mob/living/simple_animal/slime/slime_mob.dm @@ -337,7 +337,7 @@ discipline_slime(M) else - if(stat == DEAD && surgeries.len) + if(stat == DEAD && length(surgeries)) if(M.a_intent == INTENT_HELP || M.a_intent == INTENT_DISARM) for(var/datum/surgery/S in surgeries) if(S.next_step(M, src)) @@ -353,7 +353,7 @@ /mob/living/simple_animal/slime/attackby(obj/item/I, mob/living/user, params) - if(stat == DEAD && surgeries.len) + if(stat == DEAD && length(surgeries)) if(user.a_intent == INTENT_HELP || user.a_intent == INTENT_DISARM) for(var/datum/surgery/S in surgeries) if(S.next_step(user, src)) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 36958d7be1e..cd74386bdd7 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -523,7 +523,7 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list( \ if(SLOT_HUD_IN_BACKPACK) if(H.back && istype(H.back, /obj/item/storage/backpack)) var/obj/item/storage/backpack/B = H.back - if(B.contents.len < B.storage_slots && w_class <= B.max_w_class) + if(length(B.contents) < B.storage_slots && w_class <= B.max_w_class) return 1 return 0 return 0 //Unsupported slot @@ -1221,8 +1221,8 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list( \ //That makes the logs easier to read, but because all of this is stored in strings, weird things have to be used to get it all out. var/new_log = "\[[time_stamp()]] [text]" - if(target.len)//if there are other logs already present - var/previous_log = target[target.len]//get the latest log + if(length(target))//if there are other logs already present + var/previous_log = target[length(target)]//get the latest log var/last_log_is_range = (copytext(previous_log, 10, 11) == "-") //whether the last log is a time range or not. The "-" will be an indicator that it is. var/x_sign_position = findtext(previous_log, "x") @@ -1247,7 +1247,7 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list( \ rep = text2num(copytext(previous_log, 44, x_sign_position))//get whatever number is right before the 'x' new_log = "\[[old_timestamp]-[time_stamp()]][rep?rep+1:2]x [text]" - target -= target[target.len]//remove the last log + target -= target[length(target)]//remove the last log target += new_log diff --git a/code/modules/mob/mob_emote.dm b/code/modules/mob/mob_emote.dm index 497031a8d65..28ad98a0d3b 100644 --- a/code/modules/mob/mob_emote.dm +++ b/code/modules/mob/mob_emote.dm @@ -134,7 +134,8 @@ var/mob/living/L = user if(IS_HORIZONTAL(L)) - message = "flops and flails around on the floor." + var/turf = get_turf(L) + message = "flops and flails around [isspaceturf(turf) ? "in space" : "on the floor"]." return ..() else if(params) message_param = "flips in %t's general direction." @@ -166,10 +167,10 @@ "As you flip your hat falls off!") if(prob(5) && ishuman(user)) - message = "attempts a flip and crashes to the floor!" - sleep(0.3 SECONDS) + var/turf = get_turf(L) + message = "attempts a flip and [isspaceturf(turf) ? "loses balance" : "crashes to the floor"]!" if(istype(L)) - L.Weaken(4 SECONDS) + addtimer(CALLBACK(L, TYPE_PROC_REF(/mob/living, Weaken), 4 SECONDS), 0.3 SECONDS) return ..() . = ..() diff --git a/code/modules/mob/mob_holder.dm b/code/modules/mob/mob_holder.dm index 127563083b5..47366ef8b49 100644 --- a/code/modules/mob/mob_holder.dm +++ b/code/modules/mob/mob_holder.dm @@ -15,7 +15,7 @@ /obj/item/holder/process() - if(isturf(loc) || !(contents.len)) + if(isturf(loc) || !(length(contents))) for(var/mob/M in contents) diff --git a/code/modules/mob/mob_login_base.dm b/code/modules/mob/mob_login_base.dm index bae72a943d3..238057a92cd 100644 --- a/code/modules/mob/mob_login_base.dm +++ b/code/modules/mob/mob_login_base.dm @@ -74,7 +74,7 @@ add_click_catcher() - if(viewing_alternate_appearances && viewing_alternate_appearances.len) + if(viewing_alternate_appearances && length(viewing_alternate_appearances)) for(var/datum/alternate_appearance/AA in viewing_alternate_appearances) AA.display_to(list(src)) diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 7016ca01e57..f7f5e5a38c8 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -197,7 +197,7 @@ ///Called by client/Move() ///Checks to see if you are being grabbed and if so attemps to break it /client/proc/Process_Grab() - if(mob.grabbed_by.len) + if(length(mob.grabbed_by)) if(mob.incapacitated(FALSE, TRUE)) // Can't break out of grabs if you're incapacitated return TRUE if(HAS_TRAIT(mob, TRAIT_IMMOBILIZED)) diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 195daa1a173..f1b21c4e32d 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -389,7 +389,7 @@ for(var/mob/living/silicon/ai/A in GLOB.alive_mob_list) if(A.announce_arrivals) ailist += A - if(ailist.len) + if(length(ailist)) var/mob/living/silicon/ai/announcer = pick(ailist) if(character.mind) if((character.mind.assigned_role != "Cyborg") && (character.mind.assigned_role != character.mind.special_role)) @@ -421,7 +421,7 @@ var/ailist[] = list() for(var/mob/living/silicon/ai/A in GLOB.alive_mob_list) ailist += A - if(ailist.len) + if(length(ailist)) var/mob/living/silicon/ai/announcer = pick(ailist) if(character.mind) if(character.mind.assigned_role != character.mind.special_role) diff --git a/code/modules/mod/modules/module_pathfinder.dm b/code/modules/mod/modules/module_pathfinder.dm index 2b9a95508d9..b0f89fd2bea 100644 --- a/code/modules/mod/modules/module_pathfinder.dm +++ b/code/modules/mod/modules/module_pathfinder.dm @@ -40,7 +40,7 @@ to_chat(user, "Unable to implant [target]!") return if(target == user) - to_chat(user, "") + to_chat(user, "You implant yourself with [implant].") else target.visible_message("[user] implants [target].", "[user] implants you with [implant].") playsound(src, 'sound/effects/spray.ogg', 30, TRUE, -6) @@ -119,7 +119,7 @@ if(!length(path)) //Cannot reach target. Give up and announce the issue. to_chat(H, "No viable path found!") return FALSE - to_chat(H, "Suit on route!") animate(module.mod, 0.2 SECONDS, pixel_x = 0, pixel_y = 0) module.mod.add_overlay(jet_icon) RegisterSignal(module.mod, COMSIG_MOVABLE_MOVED, PROC_REF(on_move)) diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm index d97c3d11315..556208bbc3f 100644 --- a/code/modules/paperwork/folders.dm +++ b/code/modules/paperwork/folders.dm @@ -31,7 +31,7 @@ /obj/item/folder/update_overlays() . = ..() - if(contents.len) + if(length(contents)) . += "folder_paper" /obj/item/folder/attackby(obj/item/W as obj, mob/user as mob, params) diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index 132a0888755..eef2ba38905 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -69,8 +69,8 @@ update_icon() var/obj/item/paper/P - if(papers.len > 0) //If there's any custom paper on the stack, use that instead of creating a new paper. - P = papers[papers.len] + if(length(papers) > 0) //If there's any custom paper on the stack, use that instead of creating a new paper. + P = papers[length(papers)] papers.Remove(P) else if(letterhead_type && alert("Choose a style", null,"Letterhead","Blank")=="Letterhead") @@ -133,8 +133,8 @@ update_icon() var/obj/item/paper/carbon/P - if(papers.len > 0) //If there's any custom paper on the stack, use that instead of creating a new paper. - P = papers[papers.len] + if(length(papers) > 0) //If there's any custom paper on the stack, use that instead of creating a new paper. + P = papers[length(papers)] papers.Remove(P) else P = new /obj/item/paper/carbon diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 855fdf38103..a13b8c3d12d 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -87,8 +87,8 @@ c.offset_y = copy.offset_y var/list/temp_overlays = copy.stamp_overlays //Iterates through stamps var/image/img //and puts a matching - for(var/j = 1, j <= temp_overlays.len, j++) //gray overlay onto the copy - if(copy.ico.len) + for(var/j = 1, j <= length(temp_overlays), j++) //gray overlay onto the copy + if(length(copy.ico)) if(findtext(copy.ico[j], "cap") || findtext(copy.ico[j], "cent") || findtext(copy.ico[j], "rep")) img = image('icons/obj/bureaucracy.dmi', "paper_stamp-circle") else if(findtext(copy.ico[j], "deny")) diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index c3cc150362a..77ea69bf8ca 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -285,7 +285,7 @@ GLOBAL_LIST_INIT(SpookyGhosts, list("ghost","shade","shade2","ghost-narsie","hor continue else//not invisable, not a spookyghost add it. var/disguised = null - if(user.viewing_alternate_appearances && user.viewing_alternate_appearances.len && ishuman(A) && A.alternate_appearances && A.alternate_appearances.len) //This whole thing and the stuff below just checks if the atom is a Solid Snake cosplayer. + if(user.viewing_alternate_appearances && length(user.viewing_alternate_appearances) && ishuman(A) && A.alternate_appearances && length(A.alternate_appearances)) //This whole thing and the stuff below just checks if the atom is a Solid Snake cosplayer. for(var/datum/alternate_appearance/alt_appearance in user.viewing_alternate_appearances) if(alt_appearance.owner == A) //If it turns out they are, don't blow their cover. That'd be rude. atoms.Add(image(alt_appearance.img, A.loc, layer = 4, dir = A.dir)) //Render their disguise. @@ -299,7 +299,7 @@ GLOBAL_LIST_INIT(SpookyGhosts, list("ghost","shade","shade2","ghost-narsie","hor // Sort the atoms into their layers var/list/sorted = sort_atoms_by_layer(atoms) var/center_offset = (size-1)/2 * 32 + 1 - for(var/i; i <= sorted.len; i++) + for(var/i; i <= length(sorted); i++) var/atom/A = sorted[i] if(A) var/icon/img = getFlatIcon(A)//build_composite_icon(A) @@ -508,7 +508,7 @@ GLOBAL_LIST_INIT(SpookyGhosts, list("ghost","shade","shade2","ghost-narsie","hor addtimer(CALLBACK(src, PROC_REF(reset_cooldown)), 6.4 SECONDS) // magic numbers here too /obj/item/camera/digital/captureimage(atom/target, mob/user, flag) - if(saved_pictures.len >= max_storage) + if(length(saved_pictures) >= max_storage) to_chat(user, "Maximum photo storage capacity reached.") return to_chat(user, "Picture saved.") @@ -664,7 +664,7 @@ GLOBAL_LIST_INIT(SpookyGhosts, list("ghost","shade","shade2","ghost-narsie","hor /obj/item/camera/proc/sort_atoms_by_layer(list/atoms) // Comb sort icons based on levels var/list/result = atoms.Copy() - var/gap = result.len + var/gap = length(result) var/swapped = 1 while(gap > 1 || swapped) swapped = 0 @@ -672,7 +672,7 @@ GLOBAL_LIST_INIT(SpookyGhosts, list("ghost","shade","shade2","ghost-narsie","hor gap = round(gap / 1.3) // 1.3 is the emperic comb sort coefficient if(gap < 1) gap = 1 - for(var/i = 1; gap + i <= result.len; i++) + for(var/i = 1; gap + i <= length(result); i++) var/atom/l = result[i] //Fucking hate var/atom/r = result[gap+i] //how lists work here if(l.layer > r.layer) //no "result[i].layer" for me diff --git a/code/modules/paperwork/silicon_photography.dm b/code/modules/paperwork/silicon_photography.dm index aba7263615e..8b40a6b1df0 100644 --- a/code/modules/paperwork/silicon_photography.dm +++ b/code/modules/paperwork/silicon_photography.dm @@ -45,7 +45,7 @@ var/list/nametemp = list() var/find - if(cam.aipictures.len == 0) + if(length(cam.aipictures) == 0) to_chat(usr, "No images saved") return for(var/datum/picture/t in cam.aipictures) diff --git a/code/modules/pda/app.dm b/code/modules/pda/app.dm index cb4c4e19213..9e5a26f0ff5 100644 --- a/code/modules/pda/app.dm +++ b/code/modules/pda/app.dm @@ -46,7 +46,7 @@ /datum/data/pda/proc/unnotify() if(src in pda.notifying_programs) pda.notifying_programs -= src - if(!pda.notifying_programs.len) + if(!length(pda.notifying_programs)) pda.update_icon(UPDATE_OVERLAYS) // An app has a button on the home screen and its own UI diff --git a/code/modules/pda/cart_apps.dm b/code/modules/pda/cart_apps.dm index f34c992d99b..2dd57fe8d5a 100644 --- a/code/modules/pda/cart_apps.dm +++ b/code/modules/pda/cart_apps.dm @@ -313,7 +313,7 @@ var/area/our_area = get_area(B) mulebotsData[++mulebotsData.len] = list("Name" = sanitize(B.name), "Location" = our_area.name, "uid" = "[B.UID()]") - if(!mulebotsData.len) + if(!length(mulebotsData)) mulebotsData[++mulebotsData.len] = list("Name" = "No bots found", "Location" = "Invalid", "uid"= null) muleData["bots"] = mulebotsData @@ -378,7 +378,7 @@ supplyOrderCount++ supplyOrderData[++supplyOrderData.len] = list("Number" = SO.ordernum, "Name" = html_encode(SO.object.name), "ApprovedBy" = SO.orderedby, "Comment" = html_encode(SO.comment)) - if(!supplyOrderData.len) + if(!length(supplyOrderData)) supplyOrderData[++supplyOrderData.len] = list("Number" = null, "Name" = null, "OrderedBy"=null) supplyData["approved"] = supplyOrderData @@ -391,7 +391,7 @@ requestCount++ requestData[++requestData.len] = list("Number" = SO.ordernum, "Name" = html_encode(SO.object.name), "OrderedBy" = SO.orderedby, "Comment" = html_encode(SO.comment)) - if(!requestData.len) + if(!length(requestData)) requestData[++requestData.len] = list("Number" = null, "Name" = null, "orderedBy" = null, "Comment" = null) supplyData["requests"] = requestData @@ -460,10 +460,10 @@ var/direction_from_user = get_dir(pda, janicart) JaniCartData[++JaniCartData.len] = list("x" = janicart_loc.x, "y" = janicart_loc.y, "direction_from_user" = uppertext(dir2text(direction_from_user))) - JaniData["mops"] = MopData.len ? MopData : null - JaniData["buckets"] = BucketData.len ? BucketData : null - JaniData["cleanbots"] = CbotData.len ? CbotData : null - JaniData["carts"] = CartData.len ? CartData : null - JaniData["janicarts"] = JaniCartData.len ? JaniCartData : null + JaniData["mops"] = length(MopData) ? MopData : null + JaniData["buckets"] = length(BucketData) ? BucketData : null + JaniData["cleanbots"] = length(CbotData) ? CbotData : null + JaniData["carts"] = length(CartData) ? CartData : null + JaniData["janicarts"] = length(JaniCartData) ? JaniCartData : null data["janitor"] = JaniData diff --git a/code/modules/pda/messenger.dm b/code/modules/pda/messenger.dm index c83d8535584..5057c5ef838 100644 --- a/code/modules/pda/messenger.dm +++ b/code/modules/pda/messenger.dm @@ -167,13 +167,13 @@ if(sendable && receivable) break - if(!sendable) // Are we in the range of a reciever? + if(!sendable) // Are we in the range of a receiver? to_chat(U, "ERROR: No connection to server.") if(!pda.silent) playsound(pda, 'sound/machines/terminal_error.ogg', 15, TRUE) return - if(!receivable) // Is our recipient in the range of a reciever? + if(!receivable) // Is our recipient in the range of a receiver? to_chat(U, "ERROR: No connection to recipient.") if(!pda.silent) playsound(pda, 'sound/machines/terminal_error.ogg', 15, TRUE) diff --git a/code/modules/pda/mob_hunt_game_app.dm b/code/modules/pda/mob_hunt_game_app.dm index 7ac6efca355..73eab8cf1a5 100644 --- a/code/modules/pda/mob_hunt_game_app.dm +++ b/code/modules/pda/mob_hunt_game_app.dm @@ -96,16 +96,16 @@ data["connected"] = 1 data["wild_captures"] = wild_captures data["no_collection"] = 0 - if(!my_collection.len) + if(!length(my_collection)) data["no_collection"] = 1 return var/datum/mob_hunt/mob_info if(!current_index) current_index = 1 - if(current_index > my_collection.len) + if(current_index > length(my_collection)) current_index = 1 if(current_index < 1) - current_index = my_collection.len + current_index = length(my_collection) mob_info = my_collection[current_index] var/list/entry = list( "nickname" = mob_info.nickname, @@ -121,7 +121,7 @@ data["entry"] = entry /datum/data/pda/app/mob_hunter_game/proc/assign_nickname() - if(!my_collection.len) + if(!length(my_collection)) return var/datum/mob_hunt/mob_info = my_collection[current_index] var/old_name = mob_info.mob_name @@ -130,13 +130,13 @@ mob_info.nickname = tgui_input_text(usr, "Give a nickname to [old_name]?", "Nickname", old_name) /datum/data/pda/app/mob_hunter_game/proc/release() - if(!my_collection.len) + if(!length(my_collection)) return if(tgui_alert(usr, "Are you sure you want to release this mob back into the wild?", "Confirm Release", list("Yes", "No")) == "Yes") remove_mob() /datum/data/pda/app/mob_hunter_game/proc/print_card() - if(!pda || !my_collection.len) + if(!pda || !length(my_collection)) return var/obj/item/nanomob_card/card = new/obj/item/nanomob_card(null) var/datum/mob_hunt/mob_info = my_collection[current_index] @@ -168,7 +168,7 @@ current_index = collection_length /datum/data/pda/app/mob_hunter_game/proc/set_trap() - if(!my_collection.len || !pda || !hacked) + if(!length(my_collection) || !pda || !hacked) return var/datum/mob_hunt/bait = my_collection[current_index] bait = bait.type @@ -189,12 +189,12 @@ release() if("Next") current_index++ - if(current_index > my_collection.len) + if(current_index > length(my_collection)) current_index = 1 if("Prev") current_index-- if(current_index < 1) - current_index = my_collection.len + current_index = length(my_collection) if("Reconnect") reconnect() if("Disconnect") diff --git a/code/modules/pda/utilities.dm b/code/modules/pda/utilities.dm index 8642d0782df..37ac90e1159 100644 --- a/code/modules/pda/utilities.dm +++ b/code/modules/pda/utilities.dm @@ -107,8 +107,8 @@ /datum/data/pda/utility/scanmode/reagent/scan_atom(atom/A as mob|obj|turf|area, mob/user as mob) var/list/messages = list() if(!isnull(A.reagents)) - if(A.reagents.reagent_list.len > 0) - var/reagents_length = A.reagents.reagent_list.len + if(length(A.reagents.reagent_list) > 0) + var/reagents_length = length(A.reagents.reagent_list) messages.Add("[reagents_length] chemical agent[reagents_length > 1 ? "s" : ""] found.") for(var/datum/reagent/R in A.reagents.reagent_list) if(R.id != "blood") diff --git a/code/modules/power/apc/apc.dm b/code/modules/power/apc/apc.dm index fe4b65e06c2..c61b5e28a1b 100644 --- a/code/modules/power/apc/apc.dm +++ b/code/modules/power/apc/apc.dm @@ -52,7 +52,7 @@ /*** APC Status Vars ***/ /// The wire panel associated with this APC var/datum/wires/apc/wires = null - /// Can the APC recieve/transmit power? Determined by the condition of the 2 Main Power Wires + /// Can the APC receive/transmit power? Determined by the condition of the 2 Main Power Wires var/shorted = FALSE /// Is the APC on and transmitting power to enabled breakers? Think of this var as the master breaker for the APC var/operating = TRUE @@ -79,7 +79,7 @@ var/locked = TRUE /// If TRUE, the APC will automatically draw power from connect terminal, if FALSE it will not charge var/chargemode = TRUE - /// Counter var, ticks up when the APC recieves power from terminal and resets to 0 when not charging, used for the `var/charging` var + /// Counter var, ticks up when the APC receives power from terminal and resets to 0 when not charging, used for the `var/charging` var var/chargecount = 0 var/report_power_alarm = TRUE diff --git a/code/modules/power/engines/singularity/field_generator.dm b/code/modules/power/engines/singularity/field_generator.dm index cc75a1e7378..5e27ef46dc6 100644 --- a/code/modules/power/engines/singularity/field_generator.dm +++ b/code/modules/power/engines/singularity/field_generator.dm @@ -45,7 +45,7 @@ GLOBAL_LIST_EMPTY(field_generator_fields) . = ..() if(warming_up) . += "+a[warming_up]" - if(fields.len) + if(length(fields)) . += "+on" if(power_level) . += "+p[power_level]" @@ -182,7 +182,7 @@ GLOBAL_LIST_EMPTY(field_generator_fields) /obj/machinery/field/generator/proc/calc_power() - var/power_draw = 2 + fields.len + var/power_draw = 2 + length(fields) if(draw_power(round(power_draw/2, 1))) check_power_level() @@ -333,11 +333,11 @@ GLOBAL_LIST_EMPTY(field_generator_fields) O.last_warning = world.time /obj/machinery/field/generator/shock_field(mob/living/user) - if(fields.len) + if(length(fields)) ..() /obj/machinery/field/generator/bump_field(atom/movable/AM as mob|obj) - if(fields.len) + if(length(fields)) ..() #undef FG_UNSECURED diff --git a/code/modules/power/generators/solar.dm b/code/modules/power/generators/solar.dm index 7a9aa7eb9bb..8af1ed8f693 100644 --- a/code/modules/power/generators/solar.dm +++ b/code/modules/power/generators/solar.dm @@ -102,7 +102,7 @@ panel.transform = M . += panel -//calculates the fraction of the sunlight that the panel recieves +//calculates the fraction of the sunlight that the panel receives /obj/machinery/power/solar/proc/update_solar_exposure() if(obscured) sunfrac = 0 @@ -385,13 +385,13 @@ /obj/machinery/power/solar_control/ui_data(mob/user) var/list/data = list() data["generated"] = round(lastgen) //generated power by all connected panels - data["generated_ratio"] = data["generated"] / round(max(connected_panels.len, 1) * SSsun.solar_gen_rate) //power generation ratio. Used for the power bar + data["generated_ratio"] = data["generated"] / round(max(length(connected_panels), 1) * SSsun.solar_gen_rate) //power generation ratio. Used for the power bar data["direction"] = angle2text(cdir) //current orientation of the panels data["cdir"] = cdir //current orientation of the of the panels in degrees data["tracking_state"] = track //tracker status: TRACKER_OFF, TRACKER_TIMED, TRACKER_AUTO data["tracking_rate"] = trackrate //rotation speed of tracker in degrees/h data["rotating_direction"] = (trackrate < 0 ? "Counter clockwise" : "Clockwise") //direction of tracker - data["connected_panels"] = connected_panels.len + data["connected_panels"] = length(connected_panels) data["connected_tracker"] = (connected_tracker ? TRUE : FALSE) return data diff --git a/code/modules/power/powernets/local_powernet.dm b/code/modules/power/powernets/local_powernet.dm index cad1158a1aa..1e9ce8f34b9 100644 --- a/code/modules/power/powernets/local_powernet.dm +++ b/code/modules/power/powernets/local_powernet.dm @@ -2,7 +2,7 @@ * # local_powernet * * Manages all power related mechanics for a single /area - * Machines in areas will directly register to this datum in order to recieve power + * Machines in areas will directly register to this datum in order to receive power * * Machine/Turf/Item -> Local Powernet -> APC -> Terminal -> Wirenet * diff --git a/code/modules/power/powernets/powernet_helpers.dm b/code/modules/power/powernets/powernet_helpers.dm index 0a11352a5c3..94d1a9c5cf7 100644 --- a/code/modules/power/powernets/powernet_helpers.dm +++ b/code/modules/power/powernets/powernet_helpers.dm @@ -40,7 +40,7 @@ return //We assume net1 is larger. If net2 is in fact larger we are just going to make them switch places to reduce on code. - if(net1.cables.len < net2.cables.len) //net2 is larger than net1. Let's switch them around + if(length(net1.cables) < length(net2.cables)) //net2 is larger than net1. Let's switch them around var/temp = net1 net1 = net2 net2 = temp diff --git a/code/modules/procedural_mapping/mapGenerator.dm b/code/modules/procedural_mapping/mapGenerator.dm index ecb9698fee1..5d3d2af498c 100644 --- a/code/modules/procedural_mapping/mapGenerator.dm +++ b/code/modules/procedural_mapping/mapGenerator.dm @@ -83,7 +83,7 @@ //Requests the mapGeneratorModule(s) to (re)generate /datum/mapGenerator/proc/generate() syncModules() - if(!modules || !modules.len) + if(!modules || !length(modules)) return for(var/datum/mapGeneratorModule/mod in modules) spawn(0) @@ -95,7 +95,7 @@ if(!T) return syncModules() - if(!modules || !modules.len) + if(!modules || !length(modules)) return for(var/datum/mapGeneratorModule/mod in modules) spawn(0) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 6b52313e991..0e33fbc6ef4 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -210,7 +210,7 @@ /obj/item/gun/proc/can_trigger_gun(mob/living/user) if(!user.can_use_guns(src)) return 0 - if(restricted_species && restricted_species.len && !is_type_in_list(user.dna.species, restricted_species)) + if(restricted_species && length(restricted_species) && !is_type_in_list(user.dna.species, restricted_species)) to_chat(user, "[src] is incompatible with your biology!") return 0 return 1 diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index 9502b94bdb3..9bc6e43ec82 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -46,7 +46,7 @@ . = TRUE if(!max_mod_capacity) return - if(!modkits.len) + if(!length(modkits)) to_chat(user, "There are no modifications currently installed.") return if(!I.use_tool(src, user, 0, volume = I.tool_volume)) diff --git a/code/modules/projectiles/guns/energy_guns.dm b/code/modules/projectiles/guns/energy_guns.dm index eea499c0be2..67f2d45398c 100644 --- a/code/modules/projectiles/guns/energy_guns.dm +++ b/code/modules/projectiles/guns/energy_guns.dm @@ -61,7 +61,7 @@ /obj/item/gun/energy/proc/update_ammo_types() var/obj/item/ammo_casing/energy/shot select = clamp(select, 1, length(ammo_type)) // If we decrease ammo types while selecting a removed one, we want to make sure it doesnt try to select an out of bounds index - for(var/i = 1, i <= ammo_type.len, i++) + for(var/i = 1, i <= length(ammo_type), i++) var/shottype = ammo_type[i] shot = new shottype(src) ammo_type[i] = shot @@ -90,7 +90,7 @@ newshot() /obj/item/gun/energy/attack_self(mob/living/user as mob) - if(ammo_type.len > 1) + if(length(ammo_type) > 1) select_fire(user) update_icon() if(ishuman(user)) //This has to be here or else if you toggle modes by clicking the gun in hand @@ -127,7 +127,7 @@ /obj/item/gun/energy/proc/select_fire(mob/living/user) select++ - if(select > ammo_type.len) + if(select > length(ammo_type)) select = 1 var/obj/item/ammo_casing/energy/shot = ammo_type[select] fire_sound = shot.fire_sound diff --git a/code/modules/projectiles/guns/grenade_launcher.dm b/code/modules/projectiles/guns/grenade_launcher.dm index a2c4e3bd46d..0f581dd75d3 100644 --- a/code/modules/projectiles/guns/grenade_launcher.dm +++ b/code/modules/projectiles/guns/grenade_launcher.dm @@ -16,17 +16,17 @@ /obj/item/gun/grenadelauncher/examine(mob/user) . = ..() if(get_dist(user, src) <= 2) - . += "[grenades.len] / [max_grenades] grenades." + . += "[length(grenades)] / [max_grenades] grenades." /obj/item/gun/grenadelauncher/attackby(obj/item/I as obj, mob/user as mob, params) if((istype(I, /obj/item/grenade))) - if(grenades.len < max_grenades) + if(length(grenades) < max_grenades) if(!user.unEquip(I)) return I.loc = src grenades += I to_chat(user, "You put the grenade in [src].") - to_chat(user, "[grenades.len] / [max_grenades] grenades.") + to_chat(user, "[length(grenades)] / [max_grenades] grenades.") else to_chat(user, "The grenade launcher cannot hold more grenades.") else @@ -36,7 +36,7 @@ if(target == user) return - if(grenades.len) + if(length(grenades)) fire_grenade(target,user) else to_chat(user, "The grenade launcher is empty.") diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index 5558b2ed2fd..9963f90cc99 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -357,7 +357,7 @@ return ..() /obj/item/gun/projectile/shotgun/automatic/dual_tube/attack_self(mob/living/user) - if(!chambered && magazine.contents.len) + if(!chambered && length(magazine.contents)) pump() else toggle_tube(user) diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index 8b6e5b9f907..43781e87570 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -192,7 +192,7 @@ /obj/item/ammo_box/magazine/toy/sniper_rounds/update_overlays() . = ..() var/ammo = ammo_count() - if(ammo && istype(contents[contents.len], /obj/item/ammo_casing/caseless/foam_dart/sniper/riot)) + if(ammo && istype(contents[length(contents)], /obj/item/ammo_casing/caseless/foam_dart/sniper/riot)) . += ".50mag-r" else if(ammo) . += ".50mag-f" diff --git a/code/modules/projectiles/guns/syringe_gun.dm b/code/modules/projectiles/guns/syringe_gun.dm index 390e2693f84..7c678e630ca 100644 --- a/code/modules/projectiles/guns/syringe_gun.dm +++ b/code/modules/projectiles/guns/syringe_gun.dm @@ -41,7 +41,7 @@ /obj/item/gun/syringe/examine(mob/user) . = ..() - var/num_syringes = syringes.len + (chambered.BB ? 1 : 0) + var/num_syringes = length(syringes) + (chambered.BB ? 1 : 0) . += "Can hold [max_syringes] syringe\s. Has [num_syringes] syringe\s remaining." /obj/item/gun/syringe/attack_self(mob/living/user) diff --git a/code/modules/projectiles/guns/throw.dm b/code/modules/projectiles/guns/throw.dm index 36483a237f8..0a7a246b16b 100644 --- a/code/modules/projectiles/guns/throw.dm +++ b/code/modules/projectiles/guns/throw.dm @@ -25,7 +25,7 @@ return /obj/item/gun/throw/proc/get_ammocount(include_loaded = 1) - var/count = loaded_projectiles.len + var/count = length(loaded_projectiles) if(include_loaded && to_launch) count++ return count @@ -63,7 +63,7 @@ to_chat(user, "You cannot load [I] into [src]!") /obj/item/gun/throw/process_chamber() - if(!to_launch && loaded_projectiles.len) + if(!to_launch && length(loaded_projectiles)) to_launch = loaded_projectiles[1] loaded_projectiles -= to_launch return diff --git a/code/modules/projectiles/projectile_base.dm b/code/modules/projectiles/projectile_base.dm index 6d1b57c6615..2bea14964e6 100644 --- a/code/modules/projectiles/projectile_base.dm +++ b/code/modules/projectiles/projectile_base.dm @@ -295,7 +295,7 @@ var/list/mobs_list = list() for(var/mob/living/L in target_turf) mobs_list += L - if(mobs_list.len) + if(length(mobs_list)) var/mob/living/picked_mob = pick(mobs_list) prehit(picked_mob) picked_mob.bullet_act(src, def_zone) @@ -529,7 +529,7 @@ thing.set_light(muzzle_flash_range, muzzle_flash_intensity, muzzle_flash_color_override? muzzle_flash_color_override : color) QDEL_IN(thing, duration) if(impacting && impact_type && duration > 0) - var/datum/point_precise/p = beam_segments[beam_segments[beam_segments.len]] + var/datum/point_precise/p = beam_segments[beam_segments[length(beam_segments)]] var/atom/movable/thing = new impact_type p.move_atom_to_src(thing) var/matrix/matrix = new diff --git a/code/modules/reagents/chem_splash.dm b/code/modules/reagents/chem_splash.dm index e15c57d068e..c092c049c2b 100644 --- a/code/modules/reagents/chem_splash.dm +++ b/code/modules/reagents/chem_splash.dm @@ -6,7 +6,7 @@ /proc/chem_splash(turf/epicenter, affected_range = 3, list/datum/reagents/reactants = list(), extra_heat = 0, threatscale = 1, adminlog = 1) - if(!isturf(epicenter) || !reactants.len || threatscale <= 0) + if(!isturf(epicenter) || !length(reactants) || threatscale <= 0) return var/has_reagents var/total_reagents @@ -25,7 +25,7 @@ for(var/datum/reagents/R in reactants) R.trans_to(splash_holder, R.total_volume, threatscale, 1, 1) total_temp += R.chem_temp - splash_holder.set_reagent_temp((total_temp / reactants.len) + extra_heat) // Average temperature of reagents + extra heat. + splash_holder.set_reagent_temp((total_temp / length(reactants)) + extra_heat) // Average temperature of reagents + extra heat. if(splash_holder.total_volume && affected_range >= 0) //The possible reactions didnt use up all reagents, so we spread it around. var/datum/effect_system/steam_spread/steam = new /datum/effect_system/steam_spread() @@ -63,7 +63,7 @@ reactable |= A if(extra_heat >= 300) T.hotspot_expose(extra_heat*2, 5) - if(!reactable.len) //Nothing to react with. Probably means we're in nullspace. + if(!length(reactable)) //Nothing to react with. Probably means we're in nullspace. return for(var/thing in reactable) var/atom/A = thing diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index 96eb6f637b2..c20c2c4cdaa 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -165,7 +165,7 @@ var/beakerContents[0] var/beakerCurrentVolume = 0 - if(beaker && beaker.reagents && beaker.reagents.reagent_list.len) + if(beaker && beaker.reagents && length(beaker.reagents.reagent_list)) for(var/datum/reagent/R in beaker.reagents.reagent_list) beakerContents.Add(list(list("name" = R.name, "id"=R.id, "volume" = R.volume))) // list in a list because Byond merges the first list... beakerCurrentVolume += R.volume diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index 78b8fe058d0..67d620b2e7e 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -435,7 +435,7 @@ data["loaded_pill_bottle"] = loaded_pill_bottle ? TRUE : FALSE if(loaded_pill_bottle) data["loaded_pill_bottle_name"] = loaded_pill_bottle.name - data["loaded_pill_bottle_contents_len"] = loaded_pill_bottle.contents.len + data["loaded_pill_bottle_contents_len"] = length(loaded_pill_bottle.contents) data["loaded_pill_bottle_storage_slots"] = loaded_pill_bottle.storage_slots data["loaded_pill_bottle_style"] = loaded_pill_bottle.wrapper_color diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm index 92f15a54547..51862c1a89c 100644 --- a/code/modules/reagents/chemistry/machinery/pandemic.dm +++ b/code/modules/reagents/chemistry/machinery/pandemic.dm @@ -28,7 +28,7 @@ /obj/machinery/computer/pandemic/proc/GetVirusByIndex(index) if(beaker && beaker.reagents) - if(beaker.reagents.reagent_list.len) + if(length(beaker.reagents.reagent_list)) var/datum/reagent/blood/BL = locate() in beaker.reagents.reagent_list if(BL) if(BL.data && BL.data["viruses"]) @@ -37,7 +37,7 @@ /obj/machinery/computer/pandemic/proc/GetResistancesByIndex(index) if(beaker && beaker.reagents) - if(beaker.reagents.reagent_list.len) + if(length(beaker.reagents.reagent_list)) var/datum/reagent/blood/BL = locate() in beaker.reagents.reagent_list if(BL) if(BL.data && BL.data["resistances"]) @@ -258,7 +258,7 @@ if(B) Blood = B break - if(!R.total_volume||!R.reagent_list.len) + if(!R.total_volume||!length(R.reagent_list)) dat += "The beaker is empty
    " else if(!Blood) dat += "No blood sample found in beaker." @@ -272,7 +272,7 @@ if(Blood.data["viruses"]) var/list/vir = Blood.data["viruses"] - if(vir.len) + if(length(vir)) var/i = 0 for(var/thing in Blood.data["viruses"]) var/datum/disease/D = thing @@ -314,7 +314,7 @@ dat += "
    Contains antibodies to: " if(Blood.data["resistances"]) var/list/res = Blood.data["resistances"] - if(res.len) + if(length(res)) dat += "
      " var/i = 0 for(var/type in Blood.data["resistances"]) @@ -335,7 +335,7 @@ dat += "nothing
      " else dat += "nothing
      " - dat += "
      Eject beaker[((R.total_volume&&R.reagent_list.len) ? "-- Empty and eject beaker":"")]
      " + dat += "
      Eject beaker[((R.total_volume&&length(R.reagent_list)) ? "-- Empty and eject beaker":"")]
      " dat += "Close" var/datum/browser/popup = new(user, "pandemic", name, 575, 400) diff --git a/code/modules/reagents/chemistry/reagents/alcohol.dm b/code/modules/reagents/chemistry/reagents/alcohol.dm index e72a81a8a68..f5fc09e778d 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol.dm @@ -1454,7 +1454,7 @@ alcohol_description = "watery" //How the hell did you get negative boozepwr? var/list/fruits = list() - if(names_in_order.len <= 3) + if(length(names_in_order) <= 3) fruits = names_in_order else for(var/i in 1 to 3) @@ -1464,10 +1464,10 @@ description = "A [alcohol_description] wine brewed from [fruit_list]." var/flavor = "" - if(!primary_tastes.len) + if(!length(primary_tastes)) primary_tastes = list("[alcohol_description] alcohol") flavor += english_list(primary_tastes) - if(secondary_tastes.len) + if(length(secondary_tastes)) flavor += ", with a hint of " flavor += english_list(secondary_tastes) taste_description = flavor diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index 28e66a573fd..d17094ef38b 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -52,7 +52,7 @@ data = counterlist_normalise(supplied_data) /datum/reagent/consumable/nutriment/on_merge(list/newdata, newvolume) - if(!islist(newdata) || !newdata.len) + if(!islist(newdata) || !length(newdata)) return var/list/taste_amounts = list() var/list/other_taste_amounts = newdata.Copy() diff --git a/code/modules/reagents/chemistry/reagents/medicine.dm b/code/modules/reagents/chemistry/reagents/medicine.dm index 5e779a76070..fbda929a599 100644 --- a/code/modules/reagents/chemistry/reagents/medicine.dm +++ b/code/modules/reagents/chemistry/reagents/medicine.dm @@ -979,7 +979,7 @@ var/mob/living/carbon/human/H = M if(volume < 20) if(prob(10)) - to_chat(H, "You cough up some congealed blood.") H.vomit(blood = TRUE, should_confuse = FALSE) //mostly visual else if(prob(10)) var/overdose_message = pick("Your vision is tinted red for a moment.", "You can hear your heart beating.") diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 40b999c4013..b37c3078c1a 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -163,7 +163,7 @@ /obj/item/reagent_containers/hypospray/autoinjector/examine() . = ..() - if(reagents && reagents.reagent_list.len) + if(reagents && length(reagents.reagent_list)) . += "It is currently loaded." else . += "It is spent." diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index fe802e47b96..5745bbb9542 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -57,7 +57,7 @@ if(reagents.chem_temp > 300 || reagents.chem_temp < 280) //harmful temperature attack_log_type = ATKLOG_MOST - if(reagents.reagent_list.len == 1 && reagents.has_reagent("cleaner")) // Only create space cleaner logs if it's burning people from being too hot or cold + if(length(reagents.reagent_list) == 1 && reagents.has_reagent("cleaner")) // Only create space cleaner logs if it's burning people from being too hot or cold if(attack_log_type == ATKLOG_ALMOSTALL) return @@ -245,7 +245,7 @@ var/turf/T2 = get_step(T,turn(direction, -90)) var/list/the_targets = list(T,T1,T2) - for(var/i=1, i<=Sprays.len, i++) + for(var/i=1, i<=length(Sprays), i++) spawn() var/obj/effect/decal/chempuff/D = Sprays[i] if(!D) continue diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 2cad9ad15e3..38b67f3c086 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -101,7 +101,7 @@ var/obj/item/storage/S = I if(!S.removal_allowed_check(user)) return - if((S.allow_quick_empty || S.allow_quick_gather) && S.contents.len) + if((S.allow_quick_empty || S.allow_quick_gather) && length(S.contents)) S.hide_from(user) user.visible_message("[user] empties \the [S] into \the [src].", "You empty \the [S] into \the [src].") for(var/obj/item/O in S.contents) @@ -140,7 +140,7 @@ . = TRUE if(!I.use_tool(src, user, 0, volume = I.tool_volume)) return - if(contents.len > 0) + if(length(contents) > 0) to_chat(user, "Eject the items first!") return if(mode==0) // It's off but still not unscrewed @@ -154,7 +154,7 @@ if(mode != required_mode_to_deconstruct) return . = TRUE - if(contents.len > 0) + if(length(contents) > 0) to_chat(user, "Eject the items first!") return if(!I.tool_use_check(user, 0)) @@ -379,7 +379,7 @@ return // check for items in disposal - occupied light - if(contents.len > 0) + if(length(contents) > 0) . += "dispover-full" underlays += emissive_appearance(icon, "dispover-full") @@ -403,7 +403,7 @@ flush_count++ if(flush_count >= flush_every_ticks) - if(contents.len) + if(length(contents)) if(mode == 2) spawn(0) flush() diff --git a/code/modules/redis/redis_callback.dm b/code/modules/redis/redis_callback.dm index 5288a5b9959..db41707895c 100644 --- a/code/modules/redis/redis_callback.dm +++ b/code/modules/redis/redis_callback.dm @@ -14,7 +14,7 @@ /** * Message handler callback * - * This callback is ran when a message is recieved on the assigned channel. + * This callback is ran when a message is received on the assigned channel. * Make sure you override it on subtypes or it wont work. * * Arguments: diff --git a/code/modules/research/designs/janitorial_designs.dm b/code/modules/research/designs/janitorial_designs.dm index 966e5e20e72..4743fb63a17 100644 --- a/code/modules/research/designs/janitorial_designs.dm +++ b/code/modules/research/designs/janitorial_designs.dm @@ -21,16 +21,6 @@ build_path = /obj/item/storage/bag/trash/bluespace category = list("Janitorial") -/datum/design/buffer - name = "Floor Buffer Upgrade" - desc = "A floor buffer that can be attached to vehicular janicarts." - id = "buffer" - req_tech = list("materials" = 4, "engineering" = 4) - build_type = PROTOLATHE - materials = list(MAT_METAL = 3000, MAT_GLASS = 200) - build_path = /obj/item/janiupgrade - category = list("Janitorial") - /datum/design/holosign name = "Janitorial Holographic Sign Projector" desc = "A holograpic projector used to project wet warning signs." diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index 3c93fb8ce41..1de90e4c64d 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -1125,7 +1125,7 @@ build_type = MECHFAB build_path = /obj/item/borg/upgrade/floorbuffer req_tech = list("materials" = 4, "engineering" = 4) - materials = list(MAT_METAL=15000, MAT_GLASS=15000) + materials = list(MAT_METAL = 9000, MAT_GLASS = 7600) construction_time = 12 SECONDS category = list("Cyborg Upgrade Modules") diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index f708fb27d93..476fa574fcf 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -124,7 +124,7 @@ /datum/design/mmi name = "Man-Machine Interface" - desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity." + desc = "A compact, highly portable self-contained life support system, capable of housing a single brain and allowing it to seamlessly interface with whatever it is installed into." id = "mmi" req_tech = list("programming" = 3, "biotech" = 2, "engineering" = 2) build_type = PROTOLATHE | MECHFAB @@ -135,7 +135,7 @@ /datum/design/robotic_brain name = "Robotic Brain" - desc = "The latest in non-sentient Artificial Intelligences." + desc = "The latest in non-sapient Artificial Intelligences." id = "mmi_robotic" req_tech = list("programming" = 5, "biotech" = 4, "plasmatech" = 3) build_type = PROTOLATHE | MECHFAB diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index e1bb1e43354..4b1dd9d3eae 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -74,7 +74,7 @@ Note: Must be placed within 3 tiles of the R&D Console to_chat(user, "This doesn't seem to have a tech origin!") return var/list/temp_tech = ConvertReqString2List(O.origin_tech) - if(temp_tech.len == 0) + if(length(temp_tech) == 0) to_chat(user, "You cannot deconstruct this item!") return if(!user.drop_item()) diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index 20196a821e1..ce515e4ffe2 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -119,7 +119,7 @@ to_chat(user, "This doesn't seem to have a tech origin!") return var/list/temp_tech = ConvertReqString2List(O.origin_tech) - if(temp_tech.len == 0) + if(length(temp_tech) == 0) to_chat(user, "You cannot experiment on this item!") return if(!user.drop_item()) @@ -229,7 +229,7 @@ if(prob(probtocheck)) result = TRUE return from[counter+1] - if(counter + 2 < from.len) + if(counter + 2 < length(from)) counter = counter + 2 else counter = 1 @@ -458,7 +458,7 @@ for(var/atom/movable/AM in oview(7,src)) if(!AM.anchored) throwAt.Add(AM) - for(var/counter = 1, counter < throwAt.len, ++counter) + for(var/counter = 1, counter < length(throwAt), ++counter) var/atom/movable/cast = throwAt[counter] spawn(0) cast.throw_at(pick(throwAt),10,1) diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index b0d3fd76996..20c192a0b3a 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -385,7 +385,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, message_admins("[machine] exploit attempted by [key_name(usr, TRUE)]!") return - if(being_built.make_reagents.len) // build_type should equal BIOGENERATOR though.. + if(length(being_built.make_reagents)) // build_type should equal BIOGENERATOR though.. return var/max_amount = is_lathe ? 10 : 1 diff --git a/code/modules/research/research.dm b/code/modules/research/research.dm index 18468233723..2680f8c821c 100644 --- a/code/modules/research/research.dm +++ b/code/modules/research/research.dm @@ -77,7 +77,7 @@ research holder datum. //Checks to see if tech has all the required pre-reqs. //Input: datum/tech; Output: 0/1 (false/true) /datum/research/proc/TechHasReqs(datum/tech/T) - if(T.req_tech.len == 0) + if(length(T.req_tech) == 0) return TRUE for(var/req in T.req_tech) var/datum/tech/known = known_tech[req] @@ -92,7 +92,7 @@ research holder datum. return FALSE if(D.requires_whitelist && !(known_designs[D.id])) return FALSE - if(D.req_tech.len == 0) + if(length(D.req_tech) == 0) return TRUE for(var/req in D.req_tech) var/datum/tech/known = known_tech[req] diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index acb29011863..3d3f71e5174 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -59,12 +59,12 @@ if(!files) files = new /datum/research(src) var/list/temp_list - if(!id_with_upload.len) + if(!length(id_with_upload)) temp_list = list() temp_list = splittext(id_with_upload_string, ";") for(var/N in temp_list) id_with_upload += text2num(N) - if(!id_with_download.len) + if(!length(id_with_download)) temp_list = list() temp_list = splittext(id_with_download_string, ";") for(var/N in temp_list) diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index caaa7f0bec2..fde9a420793 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -239,7 +239,7 @@ if(QDELETED(src) || QDELETED(SM)) return - if(candidates.len) + if(length(candidates)) var/mob/C = pick(candidates) SM.key = C.key dust_if_respawnable(C) diff --git a/code/modules/response_team/ert.dm b/code/modules/response_team/ert.dm index b1bf75e3c95..65893025fc1 100644 --- a/code/modules/response_team/ert.dm +++ b/code/modules/response_team/ert.dm @@ -112,10 +112,10 @@ GLOBAL_LIST_EMPTY(ert_request_messages) /proc/dispatch_response_team(list/response_team_members, list/datum/async_input/ert_gender_prefs, list/datum/async_input/ert_species_prefs, list/datum/async_input/ert_role_prefs) var/spawn_index = 1 - for(var/i = 1, i <= response_team_members.len, i++) - if(spawn_index > GLOB.emergencyresponseteamspawn.len) + for(var/i = 1, i <= length(response_team_members), i++) + if(spawn_index > length(GLOB.emergencyresponseteamspawn)) break - if(!GLOB.active_team.get_slot_list().len) + if(!length(GLOB.active_team.get_slot_list())) break var/gender_pref = ert_gender_prefs[i].result var/species_pref = ert_species_prefs[i].result diff --git a/code/modules/ruins/lavalandruin_code/puzzle.dm b/code/modules/ruins/lavalandruin_code/puzzle.dm index 8c529f5811d..882390fe9f5 100644 --- a/code/modules/ruins/lavalandruin_code/puzzle.dm +++ b/code/modules/ruins/lavalandruin_code/puzzle.dm @@ -57,7 +57,7 @@ if(finished) return - if(elements.len < 8) //Someone broke it + if(length(elements) < 8) //Someone broke it qdel(src) //Check if everything is in place @@ -98,9 +98,9 @@ current_ordering += E.id var/swap_tally = 0 - for(var/i in 1 to current_ordering.len) + for(var/i in 1 to length(current_ordering)) var/checked_value = current_ordering[i] - for(var/j in i to current_ordering.len) + for(var/j in i to length(current_ordering)) if(current_ordering[j] < checked_value) swap_tally++ diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index 10a708a107c..cea1e0fae7d 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -54,7 +54,7 @@ return var/list/cardaccess = W:access - if(!istype(cardaccess, /list) || !cardaccess.len) //no access + if(!istype(cardaccess, /list) || !length(cardaccess)) //no access to_chat(user, "The access level of [W:registered_name]\'s card is not high enough. ") return @@ -74,10 +74,10 @@ if("Authorize") if(!authorized.Find(W:registered_name)) authorized += W:registered_name - if(auth_need - authorized.len > 0) + if(auth_need - length(authorized) > 0) message_admins("[key_name_admin(user)] has authorized early shuttle launch.") log_game("[key_name(user)] has authorized early shuttle launch in ([x], [y], [z]).") - GLOB.minor_announcement.Announce("[auth_need - authorized.len] more authorization(s) needed until shuttle is launched early") + GLOB.minor_announcement.Announce("[auth_need - length(authorized)] more authorization(s) needed until shuttle is launched early") else message_admins("[key_name_admin(user)] has launched the emergency shuttle [seconds] seconds before launch.") log_game("[key_name(user)] has launched the emergency shuttle in ([x], [y], [z]) [seconds] seconds before launch.") @@ -86,10 +86,10 @@ if("Repeal") if(authorized.Remove(W:registered_name)) - GLOB.minor_announcement.Announce("[auth_need - authorized.len] authorizations needed until shuttle is launched early") + GLOB.minor_announcement.Announce("[auth_need - length(authorized)] authorizations needed until shuttle is launched early") if("Abort") - if(authorized.len) + if(length(authorized)) GLOB.minor_announcement.Announce("All authorizations to launch the shuttle early have been revoked.") authorized.Cut() @@ -341,7 +341,7 @@ // The emergency shuttle doesn't work like others so this // ripple check is slightly different - if(!ripples.len && (time_left <= SHUTTLE_RIPPLE_TIME) && ((mode == SHUTTLE_CALL) || (mode == SHUTTLE_ESCAPE))) + if(!length(ripples) && (time_left <= SHUTTLE_RIPPLE_TIME) && ((mode == SHUTTLE_CALL) || (mode == SHUTTLE_ESCAPE))) var/destination if(mode == SHUTTLE_CALL) destination = SSshuttle.getDock("emergency_home") diff --git a/code/modules/shuttle/navigation_computer.dm b/code/modules/shuttle/navigation_computer.dm index 68b254a349d..efefbf9a7eb 100644 --- a/code/modules/shuttle/navigation_computer.dm +++ b/code/modules/shuttle/navigation_computer.dm @@ -41,7 +41,7 @@ return ..() /obj/machinery/computer/camera_advanced/shuttle_docker/GrantActions(mob/living/user) - if(jumpto_ports.len) + if(length(jumpto_ports)) jump_action = new /datum/action/innate/camera_jump/shuttle_docker ..() if(place_action) @@ -165,7 +165,7 @@ var/mob/camera/aiEye/remote/shuttle_docker/the_eye = eyeobj var/list/image_cache = the_eye.placement_images the_eye.setDir(turn(the_eye.dir, -90)) - for(var/i in 1 to image_cache.len) + for(var/i in 1 to length(image_cache)) var/image/pic = image_cache[i] var/list/coords = image_cache[pic] var/Tmp = coords[1] @@ -187,7 +187,7 @@ var/list/bounds = shuttle_port.return_coords(the_eye.x - x_offset, the_eye.y - y_offset, the_eye.dir) var/list/overlappers = SSshuttle.get_dock_overlap(bounds[1], bounds[2], bounds[3], bounds[4], the_eye.z) var/list/image_cache = the_eye.placement_images - for(var/i in 1 to image_cache.len) + for(var/i in 1 to length(image_cache)) var/image/I = image_cache[i] var/list/coords = image_cache[I] var/turf/T = locate(eyeturf.x + coords[1], eyeturf.y + coords[2], eyeturf.z) @@ -227,7 +227,7 @@ return SHUTTLE_DOCKER_BLOCKED // Checking for overlapping dock boundaries - for(var/i in 1 to overlappers.len) + for(var/i in 1 to length(overlappers)) var/obj/docking_port/port = overlappers[i] if(port == my_port || locate(port) in jumpto_ports) continue diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index 824574ac011..13fcbb8952c 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -173,9 +173,9 @@ SSshuttle.stationary += src if(!id) - id = "[SSshuttle.stationary.len]" + id = "[length(SSshuttle.stationary)]" if(name == "dock") - name = "dock[SSshuttle.stationary.len]" + name = "dock[length(SSshuttle.stationary)]" #ifdef DOCKING_PORT_HIGHLIGHT highlight("#f00") @@ -254,7 +254,7 @@ register() shuttle_areas = list() var/list/all_turfs = return_ordered_turfs(x, y, z, dir) - for(var/i in 1 to all_turfs.len) + for(var/i in 1 to length(all_turfs)) var/turf/curT = all_turfs[i] var/area/cur_area = curT.loc if(istype(cur_area, areaInstance)) @@ -267,9 +267,9 @@ SSshuttle.mobile += src if(!id) - id = "[SSshuttle.mobile.len]" + id = "[length(SSshuttle.mobile)]" if(name == "shuttle") - name = "shuttle[SSshuttle.mobile.len]" + name = "shuttle[length(SSshuttle.mobile)]" return 1 @@ -393,7 +393,7 @@ var/list/L0 = return_ordered_turfs(x, y, z, dir, areaInstance) //remove area surrounding docking port - if(areaInstance.contents.len) + if(length(areaInstance.contents)) var/area/A0 = locate("[area_type]") if(!A0) A0 = new area_type(null) @@ -414,7 +414,7 @@ ripples += new /obj/effect/temp_visual/ripple(i) /obj/docking_port/mobile/proc/remove_ripples() - if(ripples.len) + if(length(ripples)) for(var/i in ripples) qdel(i) ripples.Cut() @@ -426,7 +426,7 @@ var/list/ripple_turfs = list() - for(var/i in 1 to L0.len) + for(var/i in 1 to length(L0)) var/turf/T0 = L0[i] if(!T0) continue @@ -474,7 +474,7 @@ rotation = SIMPLIFY_DEGREES(rotation) //remove area surrounding docking port - if(areaInstance.contents.len) + if(length(areaInstance.contents)) var/area/A0 = locate("[area_type]") if(!A0) A0 = new area_type(null) @@ -487,7 +487,7 @@ //move or squish anything in the way ship at destination roadkill(L0, L1, S1.dir) - for(var/i in 1 to L0.len) + for(var/i in 1 to length(L0)) var/turf/T0 = L0[i] if(!T0) continue @@ -610,7 +610,7 @@ A.unlock() /obj/docking_port/mobile/proc/roadkill(list/L0, list/L1, dir) - for(var/i in 1 to L0.len) + for(var/i in 1 to length(L0)) var/turf/T0 = L0[i] var/turf/T1 = L1[i] if(!T0 || !T1) @@ -667,7 +667,7 @@ destination = null /obj/docking_port/mobile/proc/check_effects() - if(!ripples.len) + if(!length(ripples)) if((mode == SHUTTLE_CALL) || (mode == SHUTTLE_RECALL)) var/tl = timeLeft(1) if(tl <= SHUTTLE_RIPPLE_TIME) @@ -835,7 +835,7 @@ if(!M.check_dock(S)) continue docking_ports[++docking_ports.len] = list("name" = S.name, "id" = S.id) - data["docking_ports_len"] = docking_ports.len + data["docking_ports_len"] = length(docking_ports) data["admin_controlled"] = admin_controlled return data @@ -989,11 +989,11 @@ /turf/proc/copyTurf(turf/T) if(T.type != type) var/obj/O - if(underlays.len) //we have underlays, which implies some sort of transparency, so we want to a snapshot of the previous turf as an underlay + if(length(underlays)) //we have underlays, which implies some sort of transparency, so we want to a snapshot of the previous turf as an underlay O = new() O.underlays.Add(T) T.ChangeTurf(type, keep_icon = FALSE) - if(underlays.len) + if(length(underlays)) T.underlays = O.underlays if(T.icon_state != icon_state) T.icon_state = icon_state diff --git a/code/modules/shuttle/shuttle_manipulator.dm b/code/modules/shuttle/shuttle_manipulator.dm index 2103fed8513..c8417758b61 100644 --- a/code/modules/shuttle/shuttle_manipulator.dm +++ b/code/modules/shuttle/shuttle_manipulator.dm @@ -198,7 +198,7 @@ if(mdp) usr.forceMove(get_turf(mdp)) message_admins("[key_name_admin(usr)] loaded [mdp] with the shuttle manipulator.") - log_admin("[key_name(usr)] loaded [mdp] with the shuttle manipulator.") + log_admin("[key_name(usr)] loaded [mdp] with the shuttle manipulator.") /obj/machinery/shuttle_manipulator/proc/action_load(datum/map_template/shuttle/loading_template) if(isnull(loading_template)) diff --git a/code/modules/space_management/space_level.dm b/code/modules/space_management/space_level.dm index 44c692363af..5512447e346 100644 --- a/code/modules/space_management/space_level.dm +++ b/code/modules/space_management/space_level.dm @@ -165,11 +165,11 @@ GLOBAL_LIST_INIT(maploader_typecache, typecacheof(/obj/effect/landmark/map_loade SSatoms.InitializeAtoms(our_atoms, FALSE) log_debug("Primary initialization finished in [stop_watch(watch)]s.") our_atoms.Cut() - if(pipes.len) + if(length(pipes)) do_pipes(pipes) - if(cables.len) + if(length(cables)) do_cables(cables) - if(late_maps.len) + if(length(late_maps)) do_late_maps(late_maps) /datum/space_level/proc/do_pipes(list/pipes) diff --git a/code/modules/space_management/space_transition.dm b/code/modules/space_management/space_transition.dm index f6030cfdf5d..195e100f414 100644 --- a/code/modules/space_management/space_transition.dm +++ b/code/modules/space_management/space_transition.dm @@ -200,8 +200,8 @@ /datum/spacewalk_grid/Destroy() for(var/datum/point/P in filled_nodes) release_node(P) - if(available_nodes.len > 1) - log_debug("Multiple nodes left behind after SW grid qdel: [available_nodes.len]") + if(length(available_nodes) > 1) + log_debug("Multiple nodes left behind after SW grid qdel: [length(available_nodes)]") for(var/datum/point/P in available_nodes) log_debug("([P.x],[P.y])") return ..() @@ -337,7 +337,7 @@ // Now, we pop entries in a random order from our list of space levels // and assign its connections based on the grid - while(crosslinks.len) + while(length(crosslinks)) D = pick(crosslinks) crosslinks.Remove(D) // Add it to our space grid diff --git a/code/modules/space_management/zlevel_manager.dm b/code/modules/space_management/zlevel_manager.dm index 5582288a813..ab9cc4b92a9 100644 --- a/code/modules/space_management/zlevel_manager.dm +++ b/code/modules/space_management/zlevel_manager.dm @@ -17,7 +17,7 @@ GLOBAL_DATUM_INIT(space_manager, /datum/zlev_manager, new()) // Populate our space level list // and prepare space transitions /datum/zlev_manager/proc/initialize() - var/num_official_z_levels = GLOB.map_transition_config.len + var/num_official_z_levels = length(GLOB.map_transition_config) var/k = 1 // First take care of "Official" z levels, without visiting levels outside of the list @@ -146,9 +146,9 @@ GLOBAL_DATUM_INIT(space_manager, /datum/zlev_manager, new()) /datum/zlev_manager/proc/allocate_space(width, height) if(width > world.maxx || height > world.maxy) throw EXCEPTION("Too much space requested! \[[width],[height]\]") - if(!heaps.len) + if(!length(heaps)) heaps.len++ - heaps[heaps.len] = add_new_heap() + heaps[length(heaps)] = add_new_heap() var/datum/space_level/heap/our_heap var/weve_got_vacancy = 0 for(our_heap in heaps) @@ -160,7 +160,7 @@ GLOBAL_DATUM_INIT(space_manager, /datum/zlev_manager, new()) if(!weve_got_vacancy) heaps.len++ our_heap = add_new_heap() - heaps[heaps.len] = our_heap + heaps[length(heaps)] = our_heap return our_heap.allocate(width, height) /datum/zlev_manager/proc/free_space(datum/space_chunk/C) diff --git a/code/modules/station_goals/dna_vault.dm b/code/modules/station_goals/dna_vault.dm index 794b0f1fadc..f2c6c00fc3b 100644 --- a/code/modules/station_goals/dna_vault.dm +++ b/code/modules/station_goals/dna_vault.dm @@ -53,7 +53,7 @@ if(..()) return TRUE for(var/obj/machinery/dna_vault/V in GLOB.machines) - if(V.animals.len >= animal_count && V.plants.len >= plant_count && V.dna.len >= human_count && is_station_contact(V.z)) + if(length(V.animals) >= animal_count && length(V.plants) >= plant_count && length(V.dna) >= human_count && is_station_contact(V.z)) return TRUE return FALSE @@ -268,7 +268,7 @@ GLOBAL_LIST_INIT(non_simple_animals, typecacheof(list(/mob/living/carbon/human/m return TRUE /obj/machinery/dna_vault/proc/check_goal() - if(plants.len >= plants_max && animals.len >= animals_max && dna.len >= dna_max) + if(length(plants) >= plants_max && length(animals) >= animals_max && length(dna) >= dna_max) completed = TRUE /obj/machinery/dna_vault/attackby(obj/item/I, mob/user, params) diff --git a/code/modules/station_goals/shield.dm b/code/modules/station_goals/shield.dm index 254ef1d2dfc..a1e487034ab 100644 --- a/code/modules/station_goals/shield.dm +++ b/code/modules/station_goals/shield.dm @@ -32,7 +32,7 @@ if(!A.active || !is_station_level(A.z)) continue coverage |= view(A.kill_range, A) - return coverage.len + return length(coverage) /obj/item/circuitboard/computer/sat_control board_name = "Satellite Network Control" diff --git a/code/modules/supply/supply_console.dm b/code/modules/supply/supply_console.dm index 91c8fe26171..83f08bcdbd8 100644 --- a/code/modules/supply/supply_console.dm +++ b/code/modules/supply/supply_console.dm @@ -282,8 +282,7 @@ return amount = clamp(round(num_input), 1, MULTIPLE_CRATE_MAX) - var/timeout = world.time + (60 SECONDS) // If you dont type the reason within a minute, theres bigger problems here - var/reason = tgui_input_text(user, "Reason", "Why do you require this item?", encode = FALSE, timeout = timeout) + var/reason = tgui_input_text(user, "Reason", "Why do you require this item?", encode = FALSE, timeout = 60 SECONDS) if(!reason || (!is_public && !is_authorized(user)) || ..()) return reason = sanitize(copytext_char(reason, 1, 75)) // very long reasons are bad diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index f95877c9a22..0088aaa7fdc 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -146,7 +146,7 @@ return TRUE /obj/item/organ/internal/cyberimp/arm/ui_action_click() - if(crit_fail || (!holder && !contents.len)) + if(crit_fail || (!holder && !length(contents))) to_chat(owner, "The implant doesn't respond. It seems to be broken...") return @@ -157,7 +157,7 @@ if(!holder || (holder in src)) holder = null - if(contents.len == 1) + if(length(contents) == 1) Extend(contents[1]) else radial_menu(owner) diff --git a/code/modules/surgery/organs/blood.dm b/code/modules/surgery/organs/blood.dm index c3b4c13111f..a74fbc7ea4e 100644 --- a/code/modules/surgery/organs/blood.dm +++ b/code/modules/surgery/organs/blood.dm @@ -58,9 +58,9 @@ if(BP.is_robotic()) continue - //We want an accurate reading of .len + //We want an accurate reading of length() listclearnulls(BP.embedded_objects) - temp_bleed += 0.5*BP.embedded_objects.len + temp_bleed += 0.5 * length(BP.embedded_objects) if(brutedamage >= 20) temp_bleed += (brutedamage * 0.013) @@ -191,7 +191,7 @@ blood_data["viruses"] += D.Copy() blood_data["blood_DNA"] = copytext(dna.unique_enzymes,1,0) - if(resistances && resistances.len) + if(resistances && length(resistances)) blood_data["resistances"] = resistances.Copy() var/list/temp_chem = list() for(var/datum/reagent/R in reagents.reagent_list) diff --git a/code/modules/surgery/organs/brain.dm b/code/modules/surgery/organs/brain.dm index e3eab10548c..833ee9ceca5 100644 --- a/code/modules/surgery/organs/brain.dm +++ b/code/modules/surgery/organs/brain.dm @@ -148,7 +148,7 @@ to_chat(owner, "Your head feels foggy.") else if(prob(4)) owner.vomit() - to_chat(owner, "") + to_chat(owner, "'You feel nauseous.") /obj/item/organ/internal/brain/proc/handle_moderate_brain_damage() if(prob(4)) @@ -158,17 +158,17 @@ owner.EyeBlurry(15 SECONDS) to_chat(owner, "Your vision unfocuses.") else if(prob(3)) - owner.Drowsy(20 SECONDS) - to_chat(owner, "You're getting tired.") + owner.Slur(60 SECONDS) + owner.Stuttering(60 SECONDS) + to_chat(owner, "You can't form your words properly.") /obj/item/organ/internal/brain/proc/handle_severe_brain_damage() if(prob(5)) owner.Hallucinate(60 SECONDS) to_chat(owner, "You start losing your grip on reality.") - else if(prob(10)) - owner.Slur(60 SECONDS) - owner.Stuttering(60 SECONDS) - to_chat(owner, "You can't form your words properly.") + else if(prob(3)) + owner.Drowsy(20 SECONDS) + to_chat(owner, "You're getting tired.") else if(prob(2)) owner.Stun(5 SECONDS) to_chat(owner, "You stare forward in a stupor.") diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index 889fabfc84f..8f313f51f10 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -254,7 +254,7 @@ // High brute damage or sharp objects may damage internal organs if(internal_organs && (brute_dam >= max_limb_damage || (((sharp && brute >= LIMB_SHARP_THRESH_INT_DMG) || brute >= LIMB_THRESH_INT_DMG) && prob(LIMB_DMG_PROB)))) // Damage an internal organ - if(internal_organs && internal_organs.len) + if(internal_organs && length(internal_organs)) var/obj/item/organ/internal/I = pick(internal_organs) I.receive_damage(brute * 0.5) @@ -304,9 +304,9 @@ for(var/organ in children) if(organ) possible_points += organ - if(forbidden_limbs.len) + if(length(forbidden_limbs)) possible_points -= forbidden_limbs - if(possible_points.len) + if(length(possible_points)) //And pass the pain around var/obj/item/organ/external/target = pick(possible_points) target.receive_damage(brute, burn, sharp, used_weapon, forbidden_limbs + src, ignore_resists = TRUE) //If the damage was reduced before, don't reduce it again @@ -464,7 +464,7 @@ Note that amputating the affected organ does in fact remove the infection from t for(var/obj/item/organ/internal/I in internal_organs) if(I.germ_level < germ_level) candidate_organs |= I - if(candidate_organs.len) + if(length(candidate_organs)) target_organ = pick(candidate_organs) if(target_organ) diff --git a/code/modules/surgery/organs/organ_icon.dm b/code/modules/surgery/organs/organ_icon.dm index fa5d3f53d58..6d4c69f1fec 100644 --- a/code/modules/surgery/organs/organ_icon.dm +++ b/code/modules/surgery/organs/organ_icon.dm @@ -5,7 +5,7 @@ child_icons.Cut() // This is a kludge, only one icon has more than one generation of children though. for(var/obj/item/organ/external/organ in contents) - if(organ.children && organ.children.len) + if(organ.children && length(organ.children)) for(var/obj/item/organ/external/child in organ.children) overlays += child.mob_icon child_icons += child.mob_icon diff --git a/code/modules/surgery/organs/subtypes/tajaran_organs.dm b/code/modules/surgery/organs/subtypes/tajaran_organs.dm index 0615bf28c8e..2f83bad01b6 100644 --- a/code/modules/surgery/organs/subtypes/tajaran_organs.dm +++ b/code/modules/surgery/organs/subtypes/tajaran_organs.dm @@ -6,7 +6,7 @@ /obj/item/organ/internal/eyes/tajaran icon = 'icons/obj/species_organs/tajaran.dmi' name = "tajaran eyeballs" - colourblind_matrix = MATRIX_TAJ_CBLIND //The colour matrix and darksight parameters that the mob will recieve when they get the disability. + colourblind_matrix = MATRIX_TAJ_CBLIND //The colour matrix and darksight parameters that the mob will receive when they get the disability. replace_colours = TRITANOPIA_COLOR_REPLACE see_in_dark = 4 diff --git a/code/modules/surgery/organs/subtypes/vulpkanin_organs.dm b/code/modules/surgery/organs/subtypes/vulpkanin_organs.dm index 326996284c3..92af49afb25 100644 --- a/code/modules/surgery/organs/subtypes/vulpkanin_organs.dm +++ b/code/modules/surgery/organs/subtypes/vulpkanin_organs.dm @@ -6,7 +6,7 @@ /obj/item/organ/internal/eyes/vulpkanin name = "vulpkanin eyeballs" icon = 'icons/obj/species_organs/vulpkanin.dmi' - colourblind_matrix = MATRIX_VULP_CBLIND //The colour matrix and darksight parameters that the mob will recieve when they get the disability. + colourblind_matrix = MATRIX_VULP_CBLIND //The colour matrix and darksight parameters that the mob will receive when they get the disability. replace_colours = PROTANOPIA_COLOR_REPLACE see_in_dark = 4 diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index 8bd59f17ec9..807f645a082 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -168,7 +168,7 @@ GLOBAL_DATUM_INIT(multispin_words, /regex, regex("like a record baby")) continue listeners += L - if(!listeners.len) + if(!length(listeners)) next_command = world.time + cooldown_none return @@ -209,9 +209,9 @@ GLOBAL_DATUM_INIT(multispin_words, /regex, regex("like a record baby")) //Cut out the job so it doesn't trigger commands found_string = L.mind.assigned_role - if(specific_listeners.len) + if(length(specific_listeners)) listeners = specific_listeners - power_multiplier *= (1 + (1/specific_listeners.len)) //2x on a single guy, 1.5x on two and so on + power_multiplier *= (1 + (1/length(specific_listeners))) //2x on a single guy, 1.5x on two and so on message = copytext(message, 0, 1)+copytext(message, 1 + length(found_string), length(message) + 1) //STUN diff --git a/code/modules/telesci/gps.dm b/code/modules/telesci/gps.dm index d12fb7780f6..21393d49fc1 100644 --- a/code/modules/telesci/gps.dm +++ b/code/modules/telesci/gps.dm @@ -228,7 +228,7 @@ GLOBAL_LIST_EMPTY(GPS_list) tagged |= T /obj/item/gps/visible_debug/proc/clear() - while(tagged.len) + while(length(tagged)) var/turf/T = pop(tagged) T.color = initial(T.color) T.maptext = initial(T.maptext) diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm index 0e3461145a2..8c0397ad2ed 100644 --- a/code/modules/telesci/telesci_computer.dm +++ b/code/modules/telesci/telesci_computer.dm @@ -112,7 +112,7 @@ t += "Set Power" t += "
      " - for(var/i = 1; i <= power_options.len; i++) + for(var/i = 1; i <= length(power_options); i++) if(crystals + telepad.efficiency < i) t += "[power_options[i]]" continue diff --git a/code/modules/tgs/core/tgs_version.dm b/code/modules/tgs/core/tgs_version.dm index a5dae1241a3..310e7ab55cb 100644 --- a/code/modules/tgs/core/tgs_version.dm +++ b/code/modules/tgs/core/tgs_version.dm @@ -4,11 +4,11 @@ var/list/version_bits = splittext(deprefixed_parameter, ".") suite = text2num(version_bits[1]) - if(version_bits.len > 1) + if(length(version_bits) > 1) minor = text2num(version_bits[2]) - if(version_bits.len > 2) + if(length(version_bits) > 2) patch = text2num(version_bits[3]) - if(version_bits.len == 4) + if(length(version_bits) == 4) deprecated_patch = text2num(version_bits[4]) /datum/tgs_version/proc/Valid(allow_wildcards = FALSE) diff --git a/code/modules/tgs/v3210/v3_api.dm b/code/modules/tgs/v3210/v3_api.dm index ac5e8e4cf6d..09e18f29f61 100644 --- a/code/modules/tgs/v3210/v3_api.dm +++ b/code/modules/tgs/v3210/v3_api.dm @@ -64,17 +64,17 @@ instance_name = "TG Station Server" //maybe just upgraded var/list/logs = TGS_FILE2LIST(".git/logs/HEAD") - if(logs.len) - logs = splittext(logs[logs.len], " ") - if(logs.len >= 2) + if(length(logs)) + logs = splittext(logs[length(logs)], " ") + if(length(logs) >= 2) commit = logs[2] else TGS_ERROR_LOG("Error parsing commit logs") logs = TGS_FILE2LIST(".git/logs/refs/remotes/origin/master") - if(logs.len) - logs = splittext(logs[logs.len], " ") - if(logs.len >= 2) + if(length(logs)) + logs = splittext(logs[length(logs)], " ") + if(length(logs) >= 2) originmastercommit = logs[2] else TGS_ERROR_LOG("Error parsing origin commmit logs") diff --git a/code/modules/tgui/modules/ert_manager.dm b/code/modules/tgui/modules/ert_manager.dm index d68f42cd520..d204d60b34b 100644 --- a/code/modules/tgui/modules/ert_manager.dm +++ b/code/modules/tgui/modules/ert_manager.dm @@ -36,7 +36,7 @@ data["cyb"] = cyborg_slots data["secborg"] = cyborg_security data["total"] = commander_slots + security_slots + medical_slots + engineering_slots + janitor_slots + paranormal_slots + cyborg_slots - data["spawnpoints"] = GLOB.emergencyresponseteamspawn.len + data["spawnpoints"] = length(GLOB.emergencyresponseteamspawn) data["ert_request_messages"] = GLOB.ert_request_messages return data diff --git a/code/modules/tgui/modules/law_manager.dm b/code/modules/tgui/modules/law_manager.dm index 65f4c23f78d..001a8bdc31c 100644 --- a/code/modules/tgui/modules/law_manager.dm +++ b/code/modules/tgui/modules/law_manager.dm @@ -198,7 +198,7 @@ for(var/datum/ai_law/AL in laws) packaged_laws[++packaged_laws.len] = list("law" = AL.law, "index" = AL.get_index(), "state" = owner.laws.get_state_law(AL), "ref" = "\ref[AL]") data[field] = packaged_laws - data["has_[field]"] = packaged_laws.len + data["has_[field]"] = length(packaged_laws) /datum/ui_module/law_manager/proc/package_multiple_laws(list/datum/ai_laws/laws) var/list/law_sets = list() diff --git a/code/modules/tgui/tgui_input/alert_input.dm b/code/modules/tgui/tgui_input/alert_input.dm index ef1afd04630..f349dd48c76 100644 --- a/code/modules/tgui/tgui_input/alert_input.dm +++ b/code/modules/tgui/tgui_input/alert_input.dm @@ -62,6 +62,8 @@ var/start_time /// The lifespan of the tgui_alert, after which the window will close and delete itself. var/timeout + /// The attached timer that handles this objects timeout deletion + var/deletion_timer /// The bool that controls if this modal should grab window focus var/autofocus /// Boolean field describing if the tgui_alert was closed by the user. @@ -79,11 +81,12 @@ if(timeout) src.timeout = timeout start_time = world.time - QDEL_IN(src, timeout) + deletion_timer = QDEL_IN(src, timeout) /datum/tgui_alert/Destroy(force) SStgui.close_uis(src) state = null + deltimer(deletion_timer) return ..() /** diff --git a/code/modules/tgui/tgui_input/list_input.dm b/code/modules/tgui/tgui_input/list_input.dm index dd642861baf..f43ceffdaaf 100644 --- a/code/modules/tgui/tgui_input/list_input.dm +++ b/code/modules/tgui/tgui_input/list_input.dm @@ -65,6 +65,8 @@ var/start_time /// The lifespan of the tgui_list_input, after which the window will close and delete itself. var/timeout + /// The attached timer that handles this objects timeout deletion + var/deletion_timer /// Boolean field describing if the tgui_list_input was closed by the user. var/closed /// The TGUI UI state that will be returned in ui_state(). Default: always_state @@ -98,11 +100,12 @@ if(timeout) src.timeout = timeout start_time = world.time - QDEL_IN(src, timeout) + deletion_timer = QDEL_IN(src, timeout) /datum/tgui_list_input/Destroy(force) SStgui.close_uis(src) state = null + deltimer(deletion_timer) return ..() /** diff --git a/code/modules/tgui/tgui_input/number_input.dm b/code/modules/tgui/tgui_input/number_input.dm index 7e4a49832a3..5afa06d6516 100644 --- a/code/modules/tgui/tgui_input/number_input.dm +++ b/code/modules/tgui/tgui_input/number_input.dm @@ -66,6 +66,8 @@ var/start_time /// The lifespan of the number input, after which the window will close and delete itself. var/timeout + /// The attached timer that handles this objects timeout deletion + var/deletion_timer /// The title of the TGUI window var/title /// The TGUI UI state that will be returned in ui_state(). Default: always_state @@ -83,7 +85,7 @@ if(timeout) src.timeout = timeout start_time = world.time - QDEL_IN(src, timeout) + deletion_timer = QDEL_IN(src, timeout) /// Checks for empty numbers - bank accounts, etc. if(max_value == 0) @@ -101,6 +103,7 @@ /datum/tgui_input_number/Destroy(force) SStgui.close_uis(src) state = null + deltimer(deletion_timer) return ..() /** diff --git a/code/modules/tgui/tgui_input/text_input.dm b/code/modules/tgui/tgui_input/text_input.dm index 9e00d25414a..b3a7d32b090 100644 --- a/code/modules/tgui/tgui_input/text_input.dm +++ b/code/modules/tgui/tgui_input/text_input.dm @@ -74,6 +74,8 @@ var/start_time /// The lifespan of the text input, after which the window will close and delete itself. var/timeout + /// The attached timer that handles this objects timeout deletion + var/deletion_timer /// The title of the TGUI window var/title /// The TGUI UI state that will be returned in ui_state(). Default: always_state @@ -91,11 +93,12 @@ if(timeout) src.timeout = timeout start_time = world.time - QDEL_IN(src, timeout) + deletion_timer = QDEL_IN(src, timeout) /datum/tgui_input_text/Destroy(force) SStgui.close_uis(src) state = null + deltimer(deletion_timer) return ..() /** diff --git a/code/modules/tgui/tgui_panel/README.md b/code/modules/tgui/tgui_panel/README.md index 95f28ae0e8c..71acb47c458 100644 --- a/code/modules/tgui/tgui_panel/README.md +++ b/code/modules/tgui/tgui_panel/README.md @@ -19,11 +19,11 @@ TgChat handles sending messages from the server to the client through the use of ### Reliability -In the past there have been issues where BYOND will silently and without reason lose a message we sent to the client, to detect this and recover from it seamlessly TgChat also has a baked in reliability layer. This reliability layer is very primitive, and simply keeps track of recieved sequence numbers. Should the client recieve an unexpected sequence number TgChat asks the server to resend any missing packets. +In the past there have been issues where BYOND will silently and without reason lose a message we sent to the client, to detect this and recover from it seamlessly TgChat also has a baked in reliability layer. This reliability layer is very primitive, and simply keeps track of received sequence numbers. Should the client receive an unexpected sequence number TgChat asks the server to resend any missing packets. ### Ping System -TgChat supports a round trip time ping measurement, which is displayed to the client so they can know how long it takes for their commands and inputs to reach the server. This is done by sending the client a ping request, `ping/soft`, which tells the client to send a ping to the server. When the server recieves said ping it sends a reply, `ping/reply`, to the client with a payload containing the current DateTime which the client can reference against the initial ping request. +TgChat supports a round trip time ping measurement, which is displayed to the client so they can know how long it takes for their commands and inputs to reach the server. This is done by sending the client a ping request, `ping/soft`, which tells the client to send a ping to the server. When the server receives said ping it sends a reply, `ping/reply`, to the client with a payload containing the current DateTime which the client can reference against the initial ping request. ### Chat Tabs, Local Storage, and Highlighting diff --git a/code/modules/tgui/tgui_panel/telemetry.dm b/code/modules/tgui/tgui_panel/telemetry.dm index 6b63903d224..d0ba2f5218b 100644 --- a/code/modules/tgui/tgui_panel/telemetry.dm +++ b/code/modules/tgui/tgui_panel/telemetry.dm @@ -67,7 +67,7 @@ return var/list/row = telemetry_connections[i] // Check for a malformed history object - if(!row || row.len < 3 || (!row["ckey"] || !row["address"] || !row["computer_id"])) + if(!row || length(row) < 3 || (!row["ckey"] || !row["address"] || !row["computer_id"])) return if(world.IsBanned(row["ckey"], row["address"], row["computer_id"], FALSE, FALSE, FALSE, FALSE, FALSE)) found = row diff --git a/code/modules/tgui/tgui_panel/tgui_panel.dm b/code/modules/tgui/tgui_panel/tgui_panel.dm index 8c43e71bab7..9229de1da49 100644 --- a/code/modules/tgui/tgui_panel/tgui_panel.dm +++ b/code/modules/tgui/tgui_panel/tgui_panel.dm @@ -57,6 +57,7 @@ get_asset_datum(/datum/asset/simple/tgui_panel), )) window.send_asset(get_asset_datum(/datum/asset/simple/namespaced/fontawesome)) + window.send_asset(get_asset_datum(/datum/asset/spritesheet/emoji)) request_telemetry() addtimer(CALLBACK(src, PROC_REF(on_initialize_timed_out)), 5 SECONDS) diff --git a/code/modules/vehicle/janivehicle.dm b/code/modules/vehicle/janivehicle.dm index 2be7e94a239..f17278cb982 100644 --- a/code/modules/vehicle/janivehicle.dm +++ b/code/modules/vehicle/janivehicle.dm @@ -43,13 +43,6 @@ desc = "A keyring with a small steel key, and a pink fob reading \"Pussy Wagon\"." icon_state = "keyjanitor" -/obj/item/janiupgrade - name = "floor buffer upgrade" - desc = "An upgrade for mobile janicarts." - icon = 'icons/obj/vehicles.dmi' - icon_state = "upgrade" - origin_tech = "materials=3;engineering=4" - /datum/action/floor_buffer name = "Toggle Floor Buffer" desc = "Movement speed is decreased while active." @@ -111,7 +104,7 @@ mybag = I update_icon(UPDATE_OVERLAYS) return - if(istype(I, /obj/item/janiupgrade)) + if(istype(I, /obj/item/borg/upgrade/floorbuffer)) if(buffer_installed) to_chat(user, fail_msg) return diff --git a/icons/_nanomaps/MetaStation_nanomap_z1.png b/icons/_nanomaps/MetaStation_nanomap_z1.png index fbef36582aa..767c69c695c 100644 Binary files a/icons/_nanomaps/MetaStation_nanomap_z1.png and b/icons/_nanomaps/MetaStation_nanomap_z1.png differ diff --git a/icons/obj/decals.dmi b/icons/obj/decals.dmi index 3ee35bc0b33..da32a49f5b3 100644 Binary files a/icons/obj/decals.dmi and b/icons/obj/decals.dmi differ diff --git a/icons/ui_icons/emoji.dmi b/icons/ui_icons/emoji.dmi new file mode 100644 index 00000000000..b0adcba15e5 Binary files /dev/null and b/icons/ui_icons/emoji.dmi differ diff --git a/icons/safe_dial.png b/icons/ui_icons/safe_dial.png similarity index 100% rename from icons/safe_dial.png rename to icons/ui_icons/safe_dial.png diff --git a/paradise.dme b/paradise.dme index 50ffe7ecf94..922db58d828 100644 --- a/paradise.dme +++ b/paradise.dme @@ -711,7 +711,7 @@ #include "code\game\gamemodes\miniantags\abduction\machinery\pad.dm" #include "code\game\gamemodes\miniantags\demons\demon.dm" #include "code\game\gamemodes\miniantags\demons\shadow_demon\shadow_demon.dm" -#include "code\game\gamemodes\miniantags\demons\slaughter demon\slaughter.dm" +#include "code\game\gamemodes\miniantags\demons\slaughter_demon\slaughter.dm" #include "code\game\gamemodes\miniantags\guardian\guardian.dm" #include "code\game\gamemodes\miniantags\guardian\host_actions.dm" #include "code\game\gamemodes\miniantags\guardian\types\assassin.dm" @@ -1469,6 +1469,7 @@ #include "code\modules\antagonists\traitor\contractor\items\contractor_uplink.dm" #include "code\modules\antagonists\traitor\contractor\items\extraction_items.dm" #include "code\modules\antagonists\vampire\vamp_datum.dm" +#include "code\modules\antagonists\vampire\vamp_thrall.dm" #include "code\modules\antagonists\vampire\vampire_subclasses.dm" #include "code\modules\antagonists\vampire\vampire_powers\dantalion_powers.dm" #include "code\modules\antagonists\vampire\vampire_powers\gargantua_powers.dm" @@ -1510,6 +1511,7 @@ #include "code\modules\asset_cache\assets\asset_claw_game.dm" #include "code\modules\asset_cache\assets\asset_cloning.dm" #include "code\modules\asset_cache\assets\asset_common.dm" +#include "code\modules\asset_cache\assets\asset_emoji.dm" #include "code\modules\asset_cache\assets\asset_jquery.dm" #include "code\modules\asset_cache\assets\asset_materials.dm" #include "code\modules\asset_cache\assets\asset_mob_hunt.dm" @@ -1743,6 +1745,8 @@ #include "code\modules\economy\economy_machinery\atm.dm" #include "code\modules\economy\economy_machinery\economy_machinery.dm" #include "code\modules\economy\economy_machinery\eftpos.dm" +#include "code\modules\emoji\emoji_parse.dm" +#include "code\modules\emoji\emojipedia.dm" #include "code\modules\error_handler\error_handler.dm" #include "code\modules\error_handler\error_viewer.dm" #include "code\modules\events\abductor_event.dm" diff --git a/prof.dll b/prof.dll index c0bc34532e4..279f16de361 100644 Binary files a/prof.dll and b/prof.dll differ diff --git a/tgui/docs/component-reference.md b/tgui/docs/component-reference.md index 02af4e3aee9..af744b61793 100644 --- a/tgui/docs/component-reference.md +++ b/tgui/docs/component-reference.md @@ -29,6 +29,8 @@ Make sure to add new items to this list if you document new components. - [`Grid.Column`](#gridcolumn) - [`Icon`](#icon) - [`Icon.Stack`](#iconstack) + - [`ImageButton`](#imagebutton) + - [`ImageButton.Item`](#imagebuttonitem) - [`Input`](#input) - [`Knob`](#knob) - [`LabeledControls`](#labeledcontrols) @@ -545,6 +547,67 @@ Renders children icons on top of each other in order to make your own icon. - See inherited props: [Box](#box) - `children: Icon` - Icons to stack. +### `ImageButton` + +A Robust button is specifically for sticking a picture in it. +Has support for base64, spritesheets and URLs. + +**Props:** + +- See inherited props: [Box](#box) +- `asset: boolean` - Enables spritesheets support. +- `vertical: boolean` - Makes the button a inlined vertical rectangle. +- `color: string` - By default, the button is semi-transparent. You can change the overall colour, +all colours are available in KitchenSink in the corresponding section. +- `title: string` - The top text, it will always be bold, and also adds a divider between title and content. +Disabled if there is no content. +- `content: string|any` - All main content, usually text, but you can put in other components if you like. +Makes the vertical button square if empty. +- `selected: boolean` - Makes button selected (green) if true. +- `disabled: boolean` - Makes button disabled (red) if true. Also disables onClick. +- `disabledContent: string` - If button disabled and disabledContent filled, it will be used instead content. +- `image: string` - Base64 image, simple. Disabled if asset support enabled. +- `imageUrl: string` - PNG image or other asset. Make sure you use existing simple asset! Example: imageUrl={'image.png'} +- `imageAsset: string` - If you have enabled asset support, write here which spritesheet to use. +Example: imageAsset={'spritesheet_name64x64'} +- `imageSize: string` - Sets the size of the image and adjusts the size of the button itself accordingly. +Example: imageSize={'64px'} +- `tooltip: string` - A fancy, boxy tooltip, which appears when hovering +over the button. +- `tooltipPosition: string` - Position of the tooltip. See [`Popper`](#Popper) for valid options. +- `ellipsis: boolean` - If button width is constrained, button text will +be truncated with an ellipsis. Be careful however, because this prop breaks +the baseline alignment. +- `children: ImageButton.Item|any` - Items that are added to the right of the horizontal button. +- `onClick: function` - Called when element is clicked. Also enables hover effects. + +### `ImageButton.Item` + +Additional button/s for ImageButton. + +> Try not to add ImageButton.Item in large quantities. They reduce rendering speed very much +> Available only in horizontal mode, if you try add it to vertical, you're gonna be disappointed + +**Props:** +- See inherited props: [Box](#box) +- `color: string` - By default, the button is semi-transparent. You can change the overall colour, +all colours are available in KitchenSink in the corresponding section. +- `content: string|any` - All main content, usually text, but you can put in other components if you like. +Try to not make it too long. +- `selected: boolean` - Makes button selected (green) if true. +- `disabled: boolean` - Makes button disabled (red) if true. Also disables onClick. +- `disabledContent: string` - If button disabled and disabledContent filled, it will be used instead content. +- `tooltip: string` - A fancy, boxy tooltip, which appears when hovering +over the button. +- `tooltipPosition: string` - Position of the tooltip. See [`Popper`](#Popper) for valid options. +- `icon: string` - Adds an icon to the button. By default it will be under content. +- `iconColor: string` - Paints icon if it used. +- `iconPosition: string` - You can make an icon above the content. +Example: iconPosition={'top'} +- `iconSize: number` - Adjusts the size of the icon. +- `children: any` - Similar to content. +- `onClick: function` - Called when element is clicked. + ### `Input` A basic text input, which allow users to enter text into a UI. diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss index 26a44a6ac67..996aacc3bf1 100644 --- a/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss +++ b/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss @@ -23,6 +23,10 @@ img.icon { vertical-align: bottom; } +.emoji16x16 { + vertical-align: middle; +} + a { color: #397ea5; } diff --git a/tgui/packages/tgui/components/ImageButton.js b/tgui/packages/tgui/components/ImageButton.js new file mode 100644 index 00000000000..2b7258497fa --- /dev/null +++ b/tgui/packages/tgui/components/ImageButton.js @@ -0,0 +1,234 @@ +/** + * @file + * @copyright 2024 Aylong (https://github.com/AyIong) + * @license MIT + */ + +import { resolveAsset } from '../assets'; +import { classes, pureComponentHooks } from 'common/react'; +import { computeBoxClassName, computeBoxProps } from './Box'; +import { Icon } from './Icon'; +import { Tooltip } from './Tooltip'; + +export const ImageButton = (props) => { + const { + className, + asset, + color, + title, + vertical, + content, + selected, + disabled, + disabledContent, + image, + imageUrl, + imageAsset, + imageSize, + tooltip, + tooltipPosition, + ellipsis, + children, + onClick, + ...rest + } = props; + rest.onClick = (e) => { + if (!disabled && onClick) { + onClick(e); + } + }; + let buttonContent = ( +
      +
      + {asset ? ( +
      + ) : ( + + )} +
      + {content && + (vertical ? ( +
      + {disabled && disabledContent ? disabledContent : content} +
      + ) : ( +
      + {title && ( +
      + {title} +
      +
      + )} +
      + {content} +
      +
      + ))} +
      + ); + + if (tooltip) { + buttonContent = ( + + {buttonContent} + + ); + } + + return ( +
      + {buttonContent} + {children} +
      + ); +}; + +ImageButton.defaultHooks = pureComponentHooks; + +/** + * That's VERY fucking expensive thing! + * Use it only in places, where it really needed. + * Otherwise, the window opening time may increase by a third! + * Most of the blame is on Icon. + * Maybe it's also because I'm a bit crooked. + * (с) Aylong + */ +export const ImageButtonItem = (props) => { + const { + className, + color, + content, + horizontal, + selected, + disabled, + disabledContent, + tooltip, + tooltipPosition, + icon, + iconColor, + iconPosition, + iconRotation, + iconSize, + onClick, + children, + ...rest + } = props; + rest.onClick = (e) => { + if (!disabled && onClick) { + onClick(e); + } + }; + let itemContent = ( +
      +
      +
      + {icon && (iconPosition === 'top' || iconPosition === 'left') && ( + + )} +
      + {disabled && disabledContent ? disabledContent : content} + {children} +
      + {icon && !(iconPosition === 'top' || iconPosition === 'left') && ( + + )} +
      +
      +
      + ); + if (tooltip) { + itemContent = ( + + {itemContent} + + ); + } + + return itemContent; +}; + +ImageButton.Item = ImageButtonItem; diff --git a/tgui/packages/tgui/components/index.js b/tgui/packages/tgui/components/index.js index 8d51f2a6d56..8876792dc99 100644 --- a/tgui/packages/tgui/components/index.js +++ b/tgui/packages/tgui/components/index.js @@ -22,6 +22,7 @@ export { Dropdown } from './Dropdown'; export { Flex } from './Flex'; export { Grid } from './Grid'; export { Icon } from './Icon'; +export { ImageButton } from './ImageButton'; export { Input } from './Input'; export { Knob } from './Knob'; export { LabeledControls } from './LabeledControls'; diff --git a/tgui/packages/tgui/interfaces/Emojipedia.tsx b/tgui/packages/tgui/interfaces/Emojipedia.tsx new file mode 100644 index 00000000000..4095ef96b24 --- /dev/null +++ b/tgui/packages/tgui/interfaces/Emojipedia.tsx @@ -0,0 +1,72 @@ +import { classes } from 'common/react'; +import { useBackend, useLocalState } from '../backend'; +import { Button, Input, Section } from '../components'; +import { Window } from '../layouts'; + +type Data = { + emoji_list: Emoji[]; +}; + +type Emoji = { + name: string; +}; + +export const Emojipedia = (props, context) => { + const { data } = useBackend(context); + const { emoji_list } = data; + const [searchText, setSearchText] = useLocalState(context, 'searchText', ''); + const filteredEmoji = emoji_list.filter((emoji) => + emoji.name.toLowerCase().includes(searchText.toLowerCase()) + ); + + return ( + + +
      + setSearchText(value)} + /> +
      +
      +
      + ); +}; + +const copyText = (text: string) => { + const input = document.createElement('input'); + const formattedText = `:${text}:`; + input.value = formattedText; + document.body.appendChild(input); + input.select(); + document.execCommand('copy'); + document.body.removeChild(input); +}; diff --git a/tgui/packages/tgui/interfaces/PrizeCounter.tsx b/tgui/packages/tgui/interfaces/PrizeCounter.tsx index bbb075248c0..448ad1c4216 100644 --- a/tgui/packages/tgui/interfaces/PrizeCounter.tsx +++ b/tgui/packages/tgui/interfaces/PrizeCounter.tsx @@ -1,6 +1,6 @@ import { classes } from 'common/react'; import { useBackend, useLocalState } from '../backend'; -import { Button, Section, Stack, Input } from '../components'; +import { Button, Section, Stack, ImageButton, Input } from '../components'; import { Window } from '../layouts'; type Prize = { @@ -59,41 +59,30 @@ export const PrizeCounter = (props, context) => { {filteredPrizes.map((prize) => { const disabled = prize.cost > tickets; return ( - - -
      - - - - - {prize.name} - - - {prize.desc} - - - -