diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index fd3d755f2c..67f66a2d22 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -8,10 +8,10 @@ /code/__DEFINES/clockcult.dm @ChangelingRain /code/datums/antagonists/datum_clockcult.dm @ChangelingRain -/code/game/gamemodes/blob/* @ChangelingRain -/code/game/gamemodes/clock_cult/* @ChangelingRain -/code/game/gamemodes/miniantags/revenant* @ChangelingRain -/code/game/objects/effects/temporary_visuals/* @ChangelingRain +/code/game/gamemodes/blob/ @ChangelingRain +/code/game/gamemodes/clock_cult/ @ChangelingRain +/code/game/gamemodes/miniantags/revenant/ @ChangelingRain +/code/game/objects/effects/temporary_visuals/ @ChangelingRain /code/modules/reagents/chemistry/reagents/blob_reagents.dm @ChangelingRain # Cyberboss @@ -24,14 +24,14 @@ /code/controllers/subsystem/mapping.dm @Cyberboss /code/controllers/globals.dm @Cyberboss /code/datums/helper_datums/getrev.dm @Cyberboss -/code/datums/components/* @Cyberboss +/code/datums/components/ @Cyberboss /code/datums/map_config.dm @Cyberboss /code/datums/forced_movement.dm @Cyberboss /code/datums/holocall.dm @Cyberboss /code/modules/admin/verbs/adminhelp.dm @Cyberboss /code/modules/admin/verbs/adminpm.dm @Cyberboss -/code/modules/server_tools/* @Cyberboss -/code/modules/mapping/* @Cyberboss +/code/modules/server_tools/ @Cyberboss +/code/modules/mapping/ @Cyberboss # duncathan @@ -40,9 +40,9 @@ # Jordie0608 -/SQL/* @Jordie0608 +/SQL/ @Jordie0608 /code/controllers/subsystem/dbcore.dm @Jordie0608 -/tools/SQLAlertEmail/* @Jordie0608 +/tools/SQLAlertEmail/ @Jordie0608 # MrStonedOne @@ -57,9 +57,10 @@ # ninjanomnom /code/controllers/subsystem/shuttle.dm @ninjanomnom -/code/modules/shuttle/* @ninjanomnom +/code/modules/shuttle/ @ninjanomnom # ShizCalev + /_maps/ @ShizCalev /sound/ @ShizCalev diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index fc1ee4d47a..78755fc69c 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -306,6 +306,12 @@ Like all languages, Dream Maker has its quirks, some of them are beneficial to u HOWEVER, if either ```some_value``` or ```i``` changes within the body of the for (underneath the ```for(...)``` header) or if you are looping over a list AND changing the length of the list then you can NOT use this type of for-loop! +### for(var/A in list) VS for(var/i in 1 to list.len) +The former is faster than the latter, as shown by the following profile results: +https://file.house/zy7H.png +Code used for the test in a readable format: +https://pastebin.com/w50uERkG + #### Istypeless for loops A name for a differing syntax for writing for-each style loops in DM. It's NOT DM's standard syntax, hence why this is considered a quirk. Take a look at this: @@ -314,7 +320,7 @@ var/list/bag_of_items = list(sword, apple, coinpouch, sword, sword) var/obj/item/sword/best_sword for(var/obj/item/sword/S in bag_of_items) if(!best_sword || S.damage > best_sword.damage) - best_sword = S + best_sword = S ``` The above is a simple proc for checking all swords in a container and returning the one with the highest damage, and it uses DM's standard syntax for a for-loop by specifying a type in the variable of the for's header that DM interprets as a type to filter by. It performs this filter using ```istype()``` (or some internal-magic similar to ```istype()``` - this is BYOND, after all). This is fine in its current state for ```bag_of_items```, but if ```bag_of_items``` contained ONLY swords, or only SUBTYPES of swords, then the above is inefficient. For example: ```DM @@ -322,7 +328,7 @@ var/list/bag_of_swords = list(sword, sword, sword, sword) var/obj/item/sword/best_sword for(var/obj/item/sword/S in bag_of_swords) if(!best_sword || S.damage > best_sword.damage) - best_sword = S + best_sword = S ``` specifies a type for DM to filter by. @@ -334,7 +340,7 @@ var/obj/item/sword/best_sword for(var/s in bag_of_swords) var/obj/item/sword/S = s if(!best_sword || S.damage > best_sword.damage) - best_sword = S + best_sword = S ``` Of course, if the list contains data of a mixed type then the above optimisation is DANGEROUS, as it will blindly typecast all data in the list as the specified type, even if it isn't really that type, causing runtime errors. @@ -355,9 +361,9 @@ DM has a var keyword, called global. This var keyword is for vars inside of type ```DM mob - var - global - thing = TRUE + var + global + thing = TRUE ``` This does NOT mean that you can access it everywhere like a global var. Instead, it means that that var will only exist once for all instances of its type, in this case that var will only exist once for all mobs - it's shared across everything in its type. (Much more like the keyword `static` in other languages like PHP/C++/C#/Java) @@ -385,7 +391,7 @@ There is no strict process when it comes to merging pull requests. Pull requests If you are porting features/tools from other codebases, you must give them credit where it's due. Typically, crediting them in your pull request and the changelog is the recommended way of doing it. Take note of what license they use though, porting stuff from AGPLv3 and GPLv3 codebases are allowed. -Regarding sprites & sounds, you must credit the artist and possibly the codebase. All /tg/station assets including icons and sound are under a [Creative Commons 3.0 BY-SA license](https://creativecommons.org/licenses/by-sa/3.0/) license unless otherwise indicated. However if you are porting assets from GoonStation or usually any assets under the [Creative Commons 3.0 BY-NC-SA license](https://creativecommons.org/licenses/by-nc-sa/3.0/) license are to go into the 'goon' folder of the /tg/station codebase. +Regarding sprites & sounds, you must credit the artist and possibly the codebase. All /tg/station assets including icons and sound are under a [Creative Commons 3.0 BY-SA license](https://creativecommons.org/licenses/by-sa/3.0/) unless otherwise indicated. However if you are porting assets from GoonStation or usually any assets under the [Creative Commons 3.0 BY-NC-SA license](https://creativecommons.org/licenses/by-nc-sa/3.0/) are to go into the 'goon' folder of the /tg/station codebase. ## Banned content Do not add any of the following in a Pull Request or risk getting the PR closed: diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 10f60767bb..949f1c4c44 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,9 +1,9 @@ -[Directions]: # (If you discovered this issue from playing tgstation hosted servers +[Round ID]: # (If you discovered this issue from playing tgstation hosted servers:) +[Round ID]: # (**INCLUDE THE ROUND ID**) +[Round ID]: # (It can be found in the Status panel or retrieved from https://atlantaned.space/statbus/round.php ! The round id let's us look up valuable information and logs for the round the bug happened.) +[Testmerges]: # (If you believe the issue to be caused by a test merge [OOC tab -> Show Server Revision], report it in the pull request's comment section instead.) -INCLUDE THE ROUND ID +[Reproduction]: # (Explain your issue in detail, including the steps to reproduce it. Issues without proper reproduction steps or explanation are open to being ignored/closed by maintainers.) - -from the Status panel or retrieve it from https://atlantaned.space/statbus/round.php ! If you believe the issue to be caused by a test merge [OOC tab -> Show Server Revision], report it in the pull request's comment section instead. Explain your issue in detail, including the steps to reproduce it.) - -[For Admins]: # (Oddities induced by var-edits and other admin tools are not necessarily bugs. Verify that your issues occur under regular circumstances before reporting them.) +[For Admins]: # (Oddities induced by var-edits and other admin tools are not necessarily bugs. Verify that your issues occur under regular circumstances before reporting them.) \ No newline at end of file diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 1332358e04..7855fd5782 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,5 +1,4 @@ -[Changelogs]: # (Please make a changelog if you're adding, removing or changing content that'll affect players. This includes, but is not limited to, new features, sprites, sounds; balance changes; map edits and important fixes. An example changelog has been provided below for you to edit or remove. If you need help, read https://github.com/tgstation/tgstation/wiki/Changelogs) - +[Changelogs]: # (Your PR should contain a detailed changelog of notable changes, titled and categorized appropriately. This includes, new features, sprites, sounds, balance changes, admin tools, map edits, removals, big refactors, config changes, hosting changes and important fixes. An example changelog has been provided below for you to edit. If you need additional help, read https://github.com/tgstation/tgstation/wiki/Changelogs) :cl: optional name here add: Added new things @@ -8,13 +7,16 @@ del: Removed old things tweak: tweaked a few things balance: rebalanced something fix: fixed a few things -wip: added a few works in progress soundadd: added a new sound thingy sounddel: removed an old sound thingy imageadd: added some icons and images imagedel: deleted some icons and images spellcheck: fixed a few typos -experiment: added an experimental thingy +code: changed some code +refactor: refactored some code +config: changed some config setting +admin: messed with admin stuff +server: something server ops should know /:cl: [why]: # (Please add a short description [two lines down] of why you think these changes would benefit the game. If you can't justify it in words, it might not be worth adding.) diff --git a/README.md b/README.md index 1bdc45fa63..159cab53cd 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,9 @@ ##Citadel Station 13
Based and maintained from /tg/station.
-[![Build Status](https://travis-ci.org/tgstation/tgstation.png)](https://travis-ci.org/tgstation/tgstation) [![Krihelimeter](https://www.krihelinator.xyz/badge/tgstation/tgstation)](https://www.krihelinator.xyz) -[![Percentage of issues still open](https://isitmaintained.com/badge/open/tgstation/tgstation.svg)](https://isitmaintained.com/project/tgstation/tgstation "Percentage of issues still open") [![Average time to resolve an issue](https://isitmaintained.com/badge/resolution/tgstation/tgstation.svg)](https://isitmaintained.com/project/tgstation/tgstation "Average time to resolve an issue") ![Coverage](https://img.shields.io/badge/coverage---2%25-red.svg) -[![forthebadge](https://forthebadge.com/images/badges/built-with-resentment.svg)](https://forthebadge.com) [![forthebadge](https://forthebadge.com/images/badges/contains-technical-debt.svg)](https://forthebadge.com) [![forinfinityandbyond](https://user-images.githubusercontent.com/5211576/29499758-4efff304-85e6-11e7-8267-62919c3688a9.gif)](https://www.reddit.com/r/SS13/comments/5oplxp/what_is_the_main_problem_with_byond_as_an_engine/dclbu1a) +[![forthebadge](http://forthebadge.com/images/badges/60-percent-of-the-time-works-every-time.svg)](https://forthebadge.com) [![forthebadge](http://forthebadge.com/images/badges/pretty-risque.svg)](https://forthebadge.com) [![forthebadge](http://forthebadge.com/images/badges/you-didnt-ask-for-this.svg)](http://forthebadge.com) + +[![forinfinityandbyond](https://user-images.githubusercontent.com/5211576/29499758-4efff304-85e6-11e7-8267-62919c3688a9.gif)](https://www.reddit.com/r/SS13/comments/5oplxp/what_is_the_main_problem_with_byond_as_an_engine/dclbu1a) [![Build Status](https://api.travis-ci.org/Citadel-Station-13/Citadel-Station-13.png)](https://travis-ci.org/Citadel-Station-13/Citadel-Station-13) [![Krihelimeter](http://www.krihelinator.xyz/badge/Citadel-Station-13/Citadel-Station-13)](http://www.krihelinator.xyz) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm index 40f5bfb987..56bc9a0548 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm @@ -1,4 +1,4 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "aa" = ( /turf/template_noop, /area/template_noop) @@ -146,7 +146,7 @@ /area/ruin/powered/beach) "aF" = ( /obj/machinery/vending/boozeomat{ - emagged = 1; + set_obj_flags = "EMAGGED"; req_access_txt = "0" }, /turf/open/floor/wood, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm b/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm index ab405c0927..e1a0283aad 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm @@ -833,15 +833,18 @@ }, /area/ruin/powered/clownplanet) "eX" = ( +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/noslip{ initial_gas_mix = "o2=14;n2=23;TEMP=300" }, /area/lavaland/surface/outdoors/explored) "gX" = ( +/obj/effect/mapping_helpers/no_lava, /turf/open/chasm/lavaland, /area/lavaland/surface/outdoors/explored) "hY" = ( /obj/machinery/light, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/powered/clownplanet) "pv" = ( @@ -856,6 +859,7 @@ "CB" = ( /obj/item/paper/crumpled/bloody/ruins/lavaland/clown_planet/hope, /obj/effect/decal/cleanable/blood/old, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/noslip{ initial_gas_mix = "o2=14;n2=23;TEMP=300" }, @@ -865,6 +869,7 @@ color = "#2F3000"; name = "stealth banana peel" }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors/explored) "LH" = ( @@ -874,11 +879,13 @@ name = "THE TRIAL OF HONKITUDE" }, /obj/structure/disposalpipe/trunk, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/noslip{ initial_gas_mix = "o2=14;n2=23;TEMP=300" }, /area/ruin/powered/clownplanet) "Mv" = ( +/obj/effect/mapping_helpers/no_lava, /mob/living/simple_animal/hostile/retaliate/clown, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors/explored) @@ -886,6 +893,7 @@ /obj/machinery/light{ dir = 8 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/powered/clownplanet) "TD" = ( @@ -893,27 +901,32 @@ /obj/structure/disposaloutlet{ dir = 1 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/noslip{ initial_gas_mix = "o2=14;n2=23;TEMP=300" }, /area/ruin/powered/clownplanet) "Xm" = ( /obj/item/clothing/head/cone, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/noslip{ initial_gas_mix = "o2=14;n2=23;TEMP=300" }, /area/lavaland/surface/outdoors/explored) "XO" = ( +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors/explored) "Yf" = ( /obj/machinery/light{ dir = 1 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/powered/clownplanet) "YI" = ( /obj/machinery/light/small, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/noslip{ initial_gas_mix = "o2=14;n2=23;TEMP=300" }, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm index 9ad1915924..b75d7c5233 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm @@ -3,6 +3,7 @@ /turf/template_noop, /area/template_noop) "ab" = ( +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "ac" = ( @@ -491,7 +492,7 @@ }, /area/ruin/powered/animal_hospital) "bI" = ( -/obj/structure/sign/bluecross_2{ +/obj/structure/sign/departments/medbay/alt{ name = "animal hospital" }, /turf/closed/wall/mineral/titanium/nodiagonal, @@ -558,14 +559,17 @@ "bT" = ( /obj/item/pickaxe, /obj/effect/decal/cleanable/blood/old, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "bU" = ( /obj/effect/decal/remains/human, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "bV" = ( /obj/effect/decal/cleanable/blood/old, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "bW" = ( @@ -686,6 +690,7 @@ /obj/machinery/light{ dir = 4 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "cq" = ( @@ -765,6 +770,7 @@ /obj/machinery/light{ dir = 1 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "cG" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm index 4ce05157f3..b1830b2ad4 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm @@ -496,6 +496,7 @@ dir = 8 }, /obj/item/pickaxe, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "bp" = ( @@ -613,6 +614,7 @@ /obj/structure/stone_tile/block{ dir = 8 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "bB" = ( @@ -640,11 +642,13 @@ /obj/structure/stone_tile/surrounding_tile{ dir = 8 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "bF" = ( /obj/structure/stone_tile/slab, /obj/effect/decal/cleanable/blood, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "bG" = ( @@ -674,22 +678,27 @@ /obj/structure/stone_tile{ dir = 4 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "bM" = ( +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "bN" = ( /obj/structure/stone_tile, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "bO" = ( /obj/structure/stone_tile/cracked, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "bP" = ( /obj/structure/stone_tile/block, /obj/item/twohanded/spear, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "bQ" = ( @@ -700,6 +709,7 @@ /obj/structure/stone_tile{ dir = 1 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "bR" = ( @@ -711,10 +721,12 @@ dir = 4 }, /obj/structure/stone_tile/center, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "bS" = ( /obj/structure/stone_tile/slab, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "bT" = ( @@ -729,6 +741,7 @@ }, /obj/structure/stone_tile/center, /obj/effect/decal/cleanable/blood, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "bU" = ( @@ -739,27 +752,32 @@ /obj/structure/stone_tile{ dir = 4 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "bV" = ( /obj/structure/stone_tile/block/cracked, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "bW" = ( /obj/structure/stone_tile/surrounding_tile/cracked, /obj/structure/ore_box, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "bX" = ( /obj/structure/stone_tile/cracked{ dir = 1 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "bY" = ( /obj/structure/stone_tile{ dir = 8 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "bZ" = ( @@ -769,12 +787,14 @@ /obj/structure/stone_tile/cracked{ dir = 8 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "cb" = ( /obj/structure/stone_tile{ dir = 1 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "cd" = ( @@ -782,6 +802,7 @@ /obj/structure/stone_tile{ dir = 8 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "ce" = ( @@ -791,6 +812,7 @@ /obj/structure/stone_tile/block/cracked{ dir = 4 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "cf" = ( @@ -804,12 +826,14 @@ /obj/item/pickaxe, /obj/item/pickaxe, /obj/item/pickaxe, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "cg" = ( /obj/structure/stone_tile/cracked{ dir = 4 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "ch" = ( @@ -821,6 +845,7 @@ /obj/structure/stone_tile/surrounding_tile/cracked{ dir = 8 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "ci" = ( @@ -832,6 +857,7 @@ /obj/structure/stone_tile/surrounding_tile/cracked{ dir = 4 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "cj" = ( @@ -847,6 +873,7 @@ /obj/structure/stone_tile{ dir = 4 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "cl" = ( @@ -857,12 +884,14 @@ dir = 8 }, /obj/item/twohanded/spear, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "cm" = ( /obj/structure/stone_tile/block{ dir = 4 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "cn" = ( @@ -870,6 +899,7 @@ /obj/structure/stone_tile/block/cracked{ dir = 1 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "co" = ( @@ -877,6 +907,7 @@ /obj/structure/stone_tile/block{ dir = 1 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "cp" = ( @@ -890,6 +921,7 @@ /obj/structure/stone_tile/cracked{ dir = 8 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "cr" = ( @@ -901,12 +933,14 @@ /obj/structure/stone_tile/surrounding_tile/cracked{ dir = 1 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "cs" = ( /obj/structure/stone_tile/block/cracked{ dir = 1 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "ct" = ( @@ -920,12 +954,14 @@ /obj/structure/stone_tile/surrounding_tile/cracked{ dir = 4 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "cu" = ( /obj/structure/stone_tile/block/cracked{ dir = 8 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "cv" = ( @@ -940,6 +976,7 @@ }, /obj/structure/stone_tile/cracked, /obj/effect/decal/cleanable/blood, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "cz" = ( @@ -1005,6 +1042,7 @@ /obj/structure/stone_tile/cracked{ dir = 1 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "cJ" = ( @@ -1012,6 +1050,7 @@ /obj/structure/stone_tile/cracked{ dir = 8 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "cK" = ( @@ -1019,6 +1058,7 @@ /obj/structure/stone_tile/block/cracked{ dir = 1 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "cL" = ( @@ -1126,10 +1166,12 @@ /obj/structure/stone_tile/block{ dir = 4 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "dd" = ( /obj/structure/stone_tile/surrounding_tile/cracked, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "de" = ( @@ -1139,6 +1181,7 @@ /obj/structure/stone_tile/block{ dir = 8 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "df" = ( @@ -1149,11 +1192,13 @@ /obj/structure/stone_tile/cracked{ dir = 4 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "dg" = ( /obj/structure/bonfire/dense, /obj/structure/stone_tile/center, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "di" = ( @@ -1165,6 +1210,7 @@ /obj/structure/stone_tile/cracked{ dir = 1 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "dj" = ( @@ -1172,6 +1218,7 @@ /obj/structure/stone_tile/block{ dir = 1 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "dk" = ( @@ -1179,6 +1226,7 @@ dir = 1 }, /obj/structure/stone_tile/block, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "dl" = ( @@ -1189,6 +1237,7 @@ /obj/structure/stone_tile/cracked{ dir = 8 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "dn" = ( @@ -1198,6 +1247,7 @@ /obj/structure/stone_tile/block/cracked{ dir = 8 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "do" = ( @@ -1205,6 +1255,7 @@ dir = 8 }, /obj/structure/reagent_dispensers/watertank, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "dp" = ( @@ -1212,6 +1263,7 @@ /obj/structure/stone_tile/cracked{ dir = 1 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "dq" = ( @@ -1219,6 +1271,7 @@ /obj/structure/stone_tile{ dir = 4 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "dr" = ( @@ -1230,10 +1283,12 @@ dir = 8 }, /obj/structure/stone_tile/center, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "ds" = ( /obj/structure/stone_tile/block, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "dt" = ( @@ -1245,6 +1300,7 @@ dir = 8 }, /obj/structure/stone_tile/center, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "du" = ( @@ -1269,11 +1325,13 @@ /obj/structure/stone_tile/block/cracked{ dir = 4 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "dx" = ( /obj/item/device/flashlight/lantern, /obj/structure/stone_tile/center, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "dy" = ( @@ -1281,6 +1339,7 @@ /obj/structure/stone_tile/block{ dir = 8 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "dz" = ( @@ -1300,6 +1359,7 @@ dir = 4 }, /obj/structure/stone_tile/center, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "dB" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm index b870db266c..2eab6d5f27 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm @@ -303,6 +303,7 @@ /obj/machinery/light/built{ dir = 1 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/pod/dark{ initial_gas_mix = "o2=14;n2=23;TEMP=300" }, @@ -312,6 +313,10 @@ /obj/structure/fans/tiny, /turf/open/floor/pod/dark, /area/ruin/powered/snow_biodome) +"tb" = ( +/obj/effect/mapping_helpers/no_lava, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/explored) "tl" = ( /turf/open/floor/pod/light, /area/ruin/powered/snow_biodome) @@ -385,6 +390,11 @@ /obj/item/paper_bin, /turf/open/floor/pod/dark, /area/ruin/powered/snow_biodome) +"Qa" = ( +/obj/effect/mapping_helpers/no_lava, +/obj/effect/mapping_helpers/no_lava, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/explored) "QI" = ( /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors/explored) @@ -572,7 +582,7 @@ ak Wg Wg QI -QI +tb aa "} (6,1,1) = {" @@ -604,7 +614,7 @@ ak ak Wg QI -QI +tb aa "} (7,1,1) = {" @@ -636,7 +646,7 @@ ak bM Wg Wg -QI +tb aa "} (8,1,1) = {" @@ -668,8 +678,8 @@ ak az ak Wg -QI -QI +tb +tb "} (9,1,1) = {" aa @@ -701,7 +711,7 @@ ak ak Wg hA -QI +tb "} (10,1,1) = {" Wg @@ -732,8 +742,8 @@ ak ak ak Wg -QI -QI +tb +tb "} (11,1,1) = {" Wg @@ -765,7 +775,7 @@ Wg Wg Wg Wg -QI +tb "} (12,1,1) = {" Wg @@ -797,7 +807,7 @@ Wg Dd Dd Wg -QI +tb "} (13,1,1) = {" Wg @@ -829,7 +839,7 @@ Wg Mp dS Wg -QI +tb "} (14,1,1) = {" Wg @@ -861,7 +871,7 @@ Wg tl tl Wg -QI +tb "} (15,1,1) = {" Wg @@ -893,7 +903,7 @@ aO tl tl Ez -QI +Qa "} (16,1,1) = {" Wg @@ -925,7 +935,7 @@ aP tl tl aP -QI +Qa "} (17,1,1) = {" Wg @@ -957,7 +967,7 @@ Wg tl tl Wg -QI +tb "} (18,1,1) = {" Wg @@ -989,7 +999,7 @@ Wg HP dS Wg -QI +tb "} (19,1,1) = {" Wg @@ -1021,7 +1031,7 @@ Wg QK AM Wg -QI +tb "} (20,1,1) = {" Wg @@ -1053,7 +1063,7 @@ Wg Wg Wg Wg -QI +tb "} (21,1,1) = {" Wg @@ -1084,8 +1094,8 @@ ak ak ak Wg -QI -QI +tb +tb "} (22,1,1) = {" aa @@ -1117,7 +1127,7 @@ ak ak Wg hA -QI +tb "} (23,1,1) = {" aa @@ -1148,8 +1158,8 @@ ak ak ak Wg -QI -QI +tb +tb "} (24,1,1) = {" aa @@ -1180,7 +1190,7 @@ ak bM Wg Wg -QI +tb aa "} (25,1,1) = {" @@ -1212,7 +1222,7 @@ aC ak Wg QI -QI +tb aa "} (26,1,1) = {" diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk1.dmm index 398c4b6c98..430c211c87 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk1.dmm @@ -1,4 +1,4 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/template_noop, /area/template_noop) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk2.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk2.dmm index 3143123d32..82fc034946 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk2.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk2.dmm @@ -1,4 +1,4 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/template_noop, /area/template_noop) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk3.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk3.dmm index adc8bf05dd..138cefc338 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk3.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_blooddrunk3.dmm @@ -1,4 +1,4 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/template_noop, /area/template_noop) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_cube.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_cube.dmm index 59d066dacf..56b68ef60f 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_cube.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_cube.dmm @@ -1,4 +1,4 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/closed/mineral/volcanic/lava_land_surface, /area/lavaland/surface/outdoors) @@ -14,6 +14,7 @@ /area/lavaland/surface/outdoors) "e" = ( /obj/machinery/wish_granter, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm index b2145363fa..eee442825e 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm @@ -89,9 +89,6 @@ "s" = ( /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/unpowered) -"t" = ( -/turf/closed/wall/mineral/cult, -/area/ruin/unpowered) (1,1,1) = {" a @@ -186,7 +183,7 @@ c b b l -t +d k b b diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_envy.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_envy.dmm index 68f86cc20c..62485f8581 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_envy.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_envy.dmm @@ -101,6 +101,10 @@ /obj/machinery/door/airlock/hatch, /turf/open/floor/plating, /area/ruin/unpowered) +"A" = ( +/obj/effect/mapping_helpers/no_lava, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) (1,1,1) = {" a @@ -209,7 +213,7 @@ i i i d -a +A a "} (6,1,1) = {" @@ -231,7 +235,7 @@ i i i p -a +A a "} (7,1,1) = {" diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm index b3b73379ff..14a190040f 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm @@ -234,6 +234,11 @@ /obj/machinery/light/small, /turf/open/floor/mineral/titanium/purple, /area/ruin/powered/golem_ship) +"T" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/titanium, +/turf/open/floor/mineral/titanium/purple, +/area/ruin/powered/golem_ship) "U" = ( /obj/effect/mob_spawn/human/golem/adamantine, /obj/machinery/light/small, @@ -288,12 +293,12 @@ a a b b -b +H b r l G -b +T b b a @@ -517,7 +522,7 @@ f b "} (16,1,1) = {" -b +T e I b @@ -532,10 +537,10 @@ B b V f -b +T "} (17,1,1) = {" -b +T f f b @@ -550,7 +555,7 @@ C b f f -b +T "} (18,1,1) = {" b diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm index c0789e84d1..1422cde1a4 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm @@ -1,4 +1,4 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) @@ -55,7 +55,7 @@ /area/ruin/powered/greed) "k" = ( /obj/machinery/computer/arcade/battle{ - emagged = 1 + set_obj_flags = "EMAGGED" }, /turf/open/floor/engine/cult, /area/ruin/powered/greed) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_hierophant.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_hierophant.dmm index 2e7e02b73e..cad120c3f2 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_hierophant.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_hierophant.dmm @@ -1,4 +1,4 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/closed/indestructible/riveted/hierophant, /area/ruin/unpowered/hierophant) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_random_ripley.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_random_ripley.dmm index 833d619e62..809e520279 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_random_ripley.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_random_ripley.dmm @@ -1,4 +1,4 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/template_noop, /area/lavaland/surface/outdoors) @@ -21,64 +21,36 @@ (1,1,1) = {" a -a -a -a -a -a +b +b +b a "} (2,1,1) = {" -a -a b +c b +c b -a -a "} (3,1,1) = {" -a -b -c -b -c -b -a -"} -(4,1,1) = {" -a b c d e b -a +"} +(4,1,1) = {" +b +c +c +b +b "} (5,1,1) = {" -a b -c -c +b b b a "} -(6,1,1) = {" -a -b -b -b -b -a -a -"} -(7,1,1) = {" -a -a -a -a -a -a -a -"} diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm index a63b837e54..b0df3f7fbb 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm @@ -44,7 +44,7 @@ /obj/machinery/airalarm{ dir = 4; pixel_x = -24; - req_access = 150 + req_access = list(150) }, /turf/open/floor/plasteel/red/side{ dir = 8 @@ -96,9 +96,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/chemistry) -"cO" = ( -/turf/closed/wall/mineral/plastitanium/explosive, -/area/ruin/unpowered/syndicate_lava_base/chemistry) "dc" = ( /obj/machinery/light/small{ dir = 8 @@ -169,7 +166,7 @@ dir = 8; name = "Chemistry APC"; pixel_x = -24; - req_access = 150 + req_access = list(150) }, /obj/structure/cable/yellow{ icon_state = "0-2" @@ -266,7 +263,7 @@ "dL" = ( /obj/machinery/airalarm{ pixel_y = 24; - req_access = 150 + req_access = list(150) }, /obj/structure/closet/crate, /obj/item/extinguisher{ @@ -327,7 +324,7 @@ /turf/closed/wall/mineral/plastitanium/explosive, /area/ruin/unpowered/syndicate_lava_base/cargo) "dQ" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/testlab) "dR" = ( @@ -416,7 +413,7 @@ /obj/machinery/airalarm{ dir = 8; pixel_x = 24; - req_access = 150 + req_access = list(150) }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/white/side{ @@ -508,7 +505,7 @@ dir = 1; name = "Cargo Bay APC"; pixel_y = 24; - req_access = 150 + req_access = list(150) }, /obj/structure/closet/emcloset/anchored, /obj/effect/decal/cleanable/dirt, @@ -1171,7 +1168,7 @@ dir = 1; name = "Virology APC"; pixel_y = 24; - req_access = 150 + req_access = list(150) }, /obj/structure/cable/yellow{ icon_state = "0-2" @@ -1204,7 +1201,7 @@ dir = 2; name = "Experimentation Lab APC"; pixel_y = -24; - req_access = 150 + req_access = list(150) }, /obj/structure/cable/yellow{ icon_state = "0-4" @@ -1358,7 +1355,7 @@ /obj/machinery/airalarm{ dir = 4; pixel_x = -24; - req_access = 150 + req_access = list(150) }, /obj/structure/table, /obj/item/clothing/suit/hazardvest, @@ -1393,7 +1390,7 @@ /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/cargo) "fx" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/cargo) "fy" = ( @@ -1453,7 +1450,7 @@ }, /area/ruin/unpowered/syndicate_lava_base/virology) "fD" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/virology) "fE" = ( @@ -1464,7 +1461,7 @@ }, /obj/machinery/airalarm{ pixel_y = 24; - req_access = 150 + req_access = list(150) }, /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/main) @@ -1583,17 +1580,17 @@ /turf/open/floor/plating, /area/ruin/unpowered/syndicate_lava_base/cargo) "gf" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = -32 }, /obj/machinery/light/small, /turf/open/floor/plating, /area/ruin/unpowered/syndicate_lava_base/cargo) "gg" = ( -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_y = 32 }, -/obj/structure/sign/xeno_warning_mining{ +/obj/structure/sign/warning/xeno_mining{ pixel_y = -32 }, /turf/open/floor/plating, @@ -1962,7 +1959,7 @@ }, /area/ruin/unpowered/syndicate_lava_base/main) "gO" = ( -/obj/structure/sign/cargo, +/obj/structure/sign/departments/cargo, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/cargo) "gP" = ( @@ -2014,7 +2011,7 @@ /obj/machinery/airalarm{ dir = 4; pixel_x = -24; - req_access = 150 + req_access = list(150) }, /obj/structure/sink{ dir = 8; @@ -2263,7 +2260,7 @@ /area/ruin/unpowered/syndicate_lava_base/virology) "hv" = ( /obj/machinery/disposal/bin, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ pixel_x = 32 }, /obj/effect/turf_decal/stripes/red/box, @@ -2286,7 +2283,7 @@ /obj/machinery/airalarm{ dir = 4; pixel_x = -24; - req_access = 150 + req_access = list(150) }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -2376,7 +2373,7 @@ /turf/open/floor/plating, /area/ruin/unpowered/syndicate_lava_base/virology) "hI" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = -32 }, /turf/open/floor/plating, @@ -2389,7 +2386,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_x = 32 }, /obj/structure/closet/emcloset/anchored, @@ -2423,7 +2420,7 @@ /obj/item/ammo_box/magazine/sniper_rounds, /obj/machinery/airalarm{ pixel_y = 24; - req_access = 150 + req_access = list(150) }, /turf/open/floor/plasteel/grimy, /area/ruin/unpowered/syndicate_lava_base/dormitories) @@ -2457,7 +2454,7 @@ /obj/item/ammo_box/magazine/m10mm, /obj/machinery/airalarm{ pixel_y = 24; - req_access = 150 + req_access = list(150) }, /turf/open/floor/plasteel/grimy, /area/ruin/unpowered/syndicate_lava_base/dormitories) @@ -2597,6 +2594,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 9 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating{ baseturfs = /turf/open/lava/smooth/lava_land_surface; initial_gas_mix = "o2=14;n2=23;TEMP=300" @@ -2606,6 +2604,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating{ baseturfs = /turf/open/lava/smooth/lava_land_surface; initial_gas_mix = "o2=14;n2=23;TEMP=300" @@ -2680,7 +2679,7 @@ /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/main) "iq" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/main) "ir" = ( @@ -2711,6 +2710,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating{ baseturfs = /turf/open/lava/smooth/lava_land_surface; initial_gas_mix = "o2=14;n2=23;TEMP=300" @@ -2718,6 +2718,7 @@ /area/lavaland/surface/outdoors) "iv" = ( /obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating{ baseturfs = /turf/open/lava/smooth/lava_land_surface; initial_gas_mix = "o2=14;n2=23;TEMP=300" @@ -2775,7 +2776,7 @@ "iB" = ( /obj/machinery/airalarm{ pixel_y = 24; - req_access = 150 + req_access = list(150) }, /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/effect/decal/cleanable/dirt, @@ -2864,7 +2865,7 @@ /obj/machinery/airalarm{ dir = 8; pixel_x = 24; - req_access = 150 + req_access = list(150) }, /turf/open/floor/circuit/red, /area/ruin/unpowered/syndicate_lava_base/main) @@ -3001,7 +3002,7 @@ dir = 2; name = "Dormitories APC"; pixel_y = -24; - req_access = 150 + req_access = list(150) }, /obj/structure/cable/yellow{ icon_state = "0-8" @@ -3097,6 +3098,7 @@ /obj/effect/turf_decal/stripes/corner{ dir = 4 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating{ baseturfs = /turf/open/lava/smooth/lava_land_surface; initial_gas_mix = "o2=14;n2=23;TEMP=300" @@ -3151,7 +3153,7 @@ dir = 8; name = "Primary Hallway APC"; pixel_x = -24; - req_access = 150 + req_access = list(150) }, /turf/open/floor/plasteel/red/side{ dir = 8 @@ -3161,6 +3163,7 @@ /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/main) "jk" = ( +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating{ baseturfs = /turf/open/lava/smooth/lava_land_surface; initial_gas_mix = "o2=14;n2=23;TEMP=300" @@ -3184,7 +3187,7 @@ }, /obj/machinery/airalarm{ pixel_y = 24; - req_access = 150 + req_access = list(150) }, /turf/open/floor/plasteel/grimy, /area/ruin/unpowered/syndicate_lava_base/dormitories) @@ -3219,7 +3222,7 @@ }, /obj/machinery/airalarm{ pixel_y = 24; - req_access = 150 + req_access = list(150) }, /turf/open/floor/plasteel/grimy, /area/ruin/unpowered/syndicate_lava_base/dormitories) @@ -3414,7 +3417,7 @@ /obj/machinery/airalarm{ dir = 8; pixel_x = 24; - req_access = 150 + req_access = list(150) }, /obj/structure/cable/yellow{ icon_state = "2-8" @@ -3531,7 +3534,7 @@ }, /area/ruin/unpowered/syndicate_lava_base/main) "jU" = ( -/obj/structure/sign/engineering, +/obj/structure/sign/departments/engineering, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/engineering) "jV" = ( @@ -3566,14 +3569,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/engineering) -"jX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, -/turf/closed/wall/mineral/plastitanium/explosive, -/area/ruin/unpowered/syndicate_lava_base/engineering) "jY" = ( /obj/structure/chair{ dir = 1 @@ -3796,7 +3791,7 @@ /obj/machinery/airalarm{ dir = 8; pixel_x = 24; - req_access = 150 + req_access = list(150) }, /obj/machinery/vending/coffee{ extended_inventory = 1 @@ -3899,7 +3894,7 @@ dir = 1; name = "Engineering APC"; pixel_y = 24; - req_access = 150 + req_access = list(150) }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -4064,7 +4059,7 @@ /turf/open/floor/plasteel/white, /area/ruin/unpowered/syndicate_lava_base/medbay) "kT" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/medbay) "kU" = ( @@ -4076,7 +4071,7 @@ }, /obj/machinery/power/smes/engineering, /obj/structure/cable/yellow, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = -32 }, /obj/effect/decal/cleanable/dirt, @@ -4331,6 +4326,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 10 }, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating{ baseturfs = /turf/open/lava/smooth/lava_land_surface; initial_gas_mix = "o2=14;n2=23;TEMP=300" @@ -4338,6 +4334,7 @@ /area/lavaland/surface/outdoors) "lw" = ( /obj/effect/turf_decal/stripes/line, +/obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating{ baseturfs = /turf/open/lava/smooth/lava_land_surface; initial_gas_mix = "o2=14;n2=23;TEMP=300" @@ -4462,7 +4459,7 @@ /obj/machinery/airalarm{ dir = 4; pixel_x = -24; - req_access = 150 + req_access = list(150) }, /obj/machinery/light/small{ dir = 8 @@ -4549,7 +4546,7 @@ /obj/machinery/airalarm{ dir = 4; pixel_x = -24; - req_access = 150 + req_access = list(150) }, /obj/structure/chair/stool, /turf/open/floor/plasteel/vault{ @@ -4641,7 +4638,6 @@ /turf/open/floor/plasteel/dark, /area/ruin/unpowered/syndicate_lava_base/bar) "mc" = ( -/obj/structure/closet/crate, /obj/item/storage/box/donkpockets{ pixel_x = -2; pixel_y = 6 @@ -4665,6 +4661,9 @@ icon_state = "1-8" }, /obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/freezer/kitchen/maintenance{ + req_access = null + }, /turf/open/floor/plasteel/dark, /area/ruin/unpowered/syndicate_lava_base/bar) "md" = ( @@ -4690,7 +4689,7 @@ /obj/machinery/airalarm{ dir = 8; pixel_x = 24; - req_access = 150 + req_access = list(150) }, /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/medbay) @@ -4766,7 +4765,7 @@ /turf/open/floor/plating, /area/ruin/unpowered/syndicate_lava_base/telecomms) "mq" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = -32 }, /turf/open/floor/plating, @@ -4778,7 +4777,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_x = 32 }, /obj/structure/closet/emcloset/anchored, @@ -4809,7 +4808,7 @@ dir = 2; name = "Bar APC"; pixel_y = -24; - req_access = 150 + req_access = list(150) }, /turf/open/floor/wood, /area/ruin/unpowered/syndicate_lava_base/bar) @@ -4955,7 +4954,7 @@ /turf/open/floor/circuit/green, /area/ruin/unpowered/syndicate_lava_base/telecomms) "mN" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/telecomms) "mP" = ( @@ -5115,7 +5114,7 @@ /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/engineering) "nf" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/engineering) "ng" = ( @@ -5258,7 +5257,7 @@ dir = 1; name = "Arrival Hallway APC"; pixel_y = 24; - req_access = 150 + req_access = list(150) }, /obj/structure/cable/yellow{ icon_state = "0-4" @@ -5431,7 +5430,7 @@ /obj/machinery/airalarm{ dir = 4; pixel_x = -24; - req_access = 150 + req_access = list(150) }, /obj/machinery/light/small{ dir = 8 @@ -5448,13 +5447,6 @@ /area/ruin/unpowered/syndicate_lava_base/telecomms) "nJ" = ( /obj/structure/table/reinforced, -/obj/item/device/radio/intercom{ - broadcasting = 0; - dir = 8; - freerange = 1; - listening = 1; - name = "Pirate Radio Listening Channel" - }, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -5644,7 +5636,7 @@ }, /obj/machinery/airalarm{ pixel_y = 24; - req_access = 150 + req_access = list(150) }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -5714,7 +5706,7 @@ dir = 4; name = "Medbay APC"; pixel_x = 24; - req_access = 150 + req_access = list(150) }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/white/side{ @@ -5782,11 +5774,8 @@ "oj" = ( /obj/structure/table/reinforced, /obj/item/device/radio/intercom{ - broadcasting = 1; - dir = 8; freerange = 1; - listening = 0; - name = "Pirate Radio Broadcast Channel" + name = "Syndicate Radio Intercom" }, /turf/open/floor/plasteel/vault{ dir = 5 @@ -5801,7 +5790,7 @@ dir = 2; name = "Telecommunications APC"; pixel_y = -24; - req_access = 150 + req_access = list(150) }, /turf/open/floor/plasteel/vault{ dir = 5 @@ -5904,9 +5893,6 @@ /obj/item/pen, /turf/open/floor/plasteel/dark, /area/ruin/unpowered/syndicate_lava_base/telecomms) -"ow" = ( -/turf/closed/wall/mineral/plastitanium/explosive, -/area/ruin/unpowered/syndicate_lava_base/arrivals) "ox" = ( /obj/structure/grille, /obj/structure/window/plastitanium, @@ -5916,9 +5902,6 @@ }, /turf/open/floor/plating, /area/ruin/unpowered/syndicate_lava_base/arrivals) -"oy" = ( -/turf/closed/wall/mineral/plastitanium/explosive, -/area/ruin/unpowered/syndicate_lava_base/medbay) "oz" = ( /turf/open/floor/engine{ initial_gas_mix = "o2=14;n2=23;TEMP=300" @@ -5943,9 +5926,7 @@ frequency = 1441; id = "syndie_lavaland_inc_in" }, -/obj/structure/sign/vacuum{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /turf/open/floor/engine{ @@ -5962,10 +5943,10 @@ }, /area/ruin/unpowered/syndicate_lava_base/engineering) "oD" = ( -/obj/structure/sign/xeno_warning_mining{ +/obj/structure/sign/warning/xeno_mining{ pixel_x = -32 }, -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_x = 32 }, /turf/open/floor/plating, @@ -5986,7 +5967,7 @@ }, /area/ruin/unpowered/syndicate_lava_base/engineering) "oF" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/arrivals) "oG" = ( @@ -6009,7 +5990,7 @@ }, /area/ruin/unpowered/syndicate_lava_base/engineering) "oI" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = -32 }, /obj/machinery/light/small{ @@ -6018,7 +5999,7 @@ /turf/open/floor/plating, /area/ruin/unpowered/syndicate_lava_base/arrivals) "oP" = ( -/obj/structure/sign/chemistry, +/obj/structure/sign/departments/chemistry, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/testlab) @@ -6320,7 +6301,7 @@ eh eh eh eh -gj +eh eh ab ab @@ -6338,7 +6319,7 @@ ab ab ab mn -mo +mn mN nj mn @@ -6574,8 +6555,8 @@ dG dG lS mn -mo mn +mo nL mn mn @@ -6711,7 +6692,7 @@ je jk jx jx -jP +jy jy jy ms @@ -6719,7 +6700,7 @@ mT no nN ol -ow +mT ab ab ab @@ -6740,7 +6721,7 @@ ac ac ae ae -aL +ae ae fC gw @@ -6782,7 +6763,7 @@ ab ae ae ae -aL +ae ae ae ae @@ -6792,7 +6773,7 @@ ae fD ad eh -gj +eh eh hW dG @@ -6938,10 +6919,10 @@ hK ha ha ha -iN ha ha -jy +ha +jP jM jN jZ @@ -6954,7 +6935,7 @@ jy jy nS on -ow +mT ab ab ab @@ -6981,7 +6962,7 @@ ae gB hb ha -ha +iN ha ii iw @@ -7045,7 +7026,7 @@ lB lY lA mW -jy +jP nT op ox @@ -7111,12 +7092,12 @@ ab ae ae ae +ae +ae aL ae ae ae -ae -ae oP fH gG @@ -7130,7 +7111,7 @@ iR hz jn jA -jP +jy jy jy jy @@ -7236,7 +7217,7 @@ jy nu nX om -ow +mT ab ab ab @@ -7263,7 +7244,7 @@ fO gG hg hz -hO +hz hz hz iB @@ -7277,7 +7258,7 @@ jy jy jy jy -jP +jy jy mX nv @@ -7393,13 +7374,13 @@ ab ab ab as -cO +as as dI dZ ew as -cO +as as gJ hh @@ -7412,7 +7393,7 @@ iX hz jq jA -hO +hz kg kt kQ @@ -7441,7 +7422,7 @@ ab ab ab ac -cO +as as as as @@ -7457,7 +7438,7 @@ hz iF iY hz -hz +hO hz hz kh @@ -7471,7 +7452,7 @@ na nz ob os -oy +kQ ac ab ab @@ -7501,7 +7482,7 @@ hz hz hz hz -hO +hz hz hz jr @@ -7588,7 +7569,7 @@ ec ez eY ft -dy +dP gN hj hj @@ -7650,15 +7631,15 @@ jF jT ju ju +ju +ju +ju kU ju ju ju ju ju -kU -ju -ju ju ju ab @@ -7678,7 +7659,7 @@ ab ab ac dy -dP +dy eA fa dy @@ -7835,7 +7816,7 @@ ha ha ju jJ -jX +kl kl kA kY @@ -7916,7 +7897,7 @@ ab dy eF eF -dP +dy gf dy eF @@ -7980,7 +7961,7 @@ ab ju kD lb -kU +ju kD lb ju diff --git a/_maps/RandomRuins/SpaceRuins/DJstation.dmm b/_maps/RandomRuins/SpaceRuins/DJstation.dmm index c12eef522e..905e795de5 100644 --- a/_maps/RandomRuins/SpaceRuins/DJstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/DJstation.dmm @@ -85,10 +85,7 @@ icon_state = "4-8" }, /obj/item/storage/box/lights/mixed, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /turf/open/floor/plating, @@ -333,11 +330,7 @@ /turf/open/floor/plasteel/cafeteria, /area/ruin/space/djstation) "bh" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /turf/open/floor/plasteel/cafeteria, diff --git a/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm b/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm index 52a5bb9a29..16def0b934 100644 --- a/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm +++ b/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm @@ -1081,11 +1081,11 @@ /turf/closed/wall, /area/ruin/space/derelict/bridge) "dA" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/ruin/space/derelict/singularity_engine) "dB" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/ruin/space/derelict/singularity_engine) "dC" = ( @@ -1099,7 +1099,7 @@ /turf/open/floor/plating/airless, /area/ruin/space/derelict/gravity_generator) "dD" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ name = "ENGINEERING ACCESS" }, /turf/closed/wall/r_wall, @@ -1292,10 +1292,7 @@ /area/ruin/space/derelict/gravity_generator) "ek" = ( /obj/structure/closet/radiation, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; +/obj/structure/sign/warning/radiation/rad_area{ pixel_x = 32 }, /turf/open/floor/plasteel, diff --git a/_maps/RandomRuins/SpaceRuins/abandonedteleporter.dmm b/_maps/RandomRuins/SpaceRuins/abandonedteleporter.dmm index 1403cfdd16..cdbdab34b5 100644 --- a/_maps/RandomRuins/SpaceRuins/abandonedteleporter.dmm +++ b/_maps/RandomRuins/SpaceRuins/abandonedteleporter.dmm @@ -122,10 +122,6 @@ /obj/structure/girder, /turf/open/floor/plating/airless, /area/ruin/space/abandoned_tele) -"C" = ( -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) (1,1,1) = {" a @@ -248,7 +244,7 @@ r v m h -C +c c a c diff --git a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm index 74a5d543ff..ff048c3b3c 100644 --- a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm +++ b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm @@ -18,7 +18,7 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/derelictoutpost/cargobay) "af" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = 32 }, /obj/effect/decal/cleanable/cobweb, @@ -31,7 +31,7 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/derelictoutpost/cargobay) "ah" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = 32 }, /turf/open/floor/plasteel, @@ -364,7 +364,7 @@ /turf/open/floor/plasteel, /area/ruin/space/has_grav/derelictoutpost) "bk" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = 32 }, /turf/open/floor/plasteel, @@ -410,7 +410,7 @@ name = "gelatinous floor" }, /obj/structure/glowshroom/single, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = 32 }, /obj/effect/decal/cleanable/blood/old{ diff --git a/_maps/RandomRuins/SpaceRuins/caravanambush.dmm b/_maps/RandomRuins/SpaceRuins/caravanambush.dmm index 2f3a1eb42c..e42bd71814 100644 --- a/_maps/RandomRuins/SpaceRuins/caravanambush.dmm +++ b/_maps/RandomRuins/SpaceRuins/caravanambush.dmm @@ -3,173 +3,260 @@ /turf/template_noop, /area/template_noop) "ab" = ( -/turf/closed/wall/mineral/plastitanium, -/area/ruin/powered) +/obj/structure/girder/displaced, +/turf/template_noop, +/area/template_noop) "ac" = ( -/obj/machinery/door/airlock/external{ - icon_state = "door_locked"; - locked = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/item/stack/sheet/mineral/plastitanium, +/turf/template_noop, +/area/template_noop) "ad" = ( -/turf/closed/wall, -/area/ruin/powered) +/obj/item/wallframe/camera, +/turf/template_noop, +/area/template_noop) "ae" = ( -/turf/closed/wall/mineral/plastitanium{ - dir = 1; - icon_state = "diagonalWall3" +/obj/structure/fluff/broken_flooring{ + icon_state = "plating"; + dir = 4 }, -/area/ruin/powered) +/turf/template_noop, +/area/template_noop) "af" = ( -/obj/machinery/suit_storage_unit, -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/structure/lattice/catwalk, +/turf/template_noop, +/area/template_noop) "ag" = ( -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/structure/lattice/catwalk, +/obj/structure/closet/crate/secure/weapon, +/obj/item/gun/ballistic/automatic/pistol/APS, +/turf/template_noop, +/area/template_noop) "ah" = ( -/turf/open/floor/plating/airless, -/area/ruin/powered) -"ai" = ( -/obj/machinery/door/airlock/external, -/turf/open/floor/plasteel, -/area/ruin/powered) -"aj" = ( -/obj/structure/statue/silver/medborg, -/turf/open/floor/plasteel, -/area/ruin/powered) -"ak" = ( -/mob/living/simple_animal/hostile/pirate/ranged{ +/obj/structure/lattice/catwalk, +/mob/living/simple_animal/hostile/pirate/space{ environment_smash = 0 }, -/turf/open/floor/plasteel, -/area/ruin/powered) +/turf/template_noop, +/area/template_noop) +"ai" = ( +/obj/structure/lattice, +/obj/structure/fluff/broken_flooring{ + dir = 2; + icon_state = "plating" + }, +/turf/template_noop, +/area/template_noop) +"aj" = ( +/obj/machinery/door/airlock/external{ + cyclelinkeddir = 2; + id_tag = "caravanpirate_bolt_port"; + locked = 1 + }, +/obj/docking_port/stationary{ + dir = 2; + dwidth = 14; + height = 13; + id = "caravanpirate_ambush"; + name = "Trade Route"; + width = 22 + }, +/obj/docking_port/mobile{ + callTime = 150; + dir = 2; + dwidth = 14; + height = 13; + id = "caravanpirate"; + movement_force = list("KNOCKDOWN" = 0, "THROW" = 0); + name = "Pirate Cutter"; + port_direction = 8; + preferred_direction = 4; + width = 22 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"ak" = ( +/turf/open/floor/plating/airless{ + icon_state = "platingdmg2" + }, +/area/shuttle/caravan/freighter3) "al" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/structure/lattice, +/obj/structure/fluff/broken_flooring{ + icon_state = "singular" + }, +/turf/template_noop, +/area/shuttle/caravan/freighter1) "am" = ( -/obj/structure/closet{ - name = "pirate outfits" - }, -/obj/item/clothing/head/collectable/pirate, -/obj/item/clothing/suit/pirate, -/obj/item/clothing/under/pirate, -/obj/item/clothing/shoes/jackboots, -/obj/item/clothing/head/bandana, -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/structure/lattice, +/turf/template_noop, +/area/shuttle/caravan/freighter1) "an" = ( -/obj/structure/table, -/obj/item/stack/sheet/mineral/gold{ - amount = 25 +/obj/structure/lattice, +/obj/structure/fluff/broken_flooring{ + icon_state = "plating"; + dir = 4 }, -/obj/item/coin/plasma, -/turf/open/floor/plasteel, -/area/ruin/powered) +/turf/template_noop, +/area/template_noop) "ao" = ( -/obj/structure/table, -/obj/item/stack/sheet/mineral/gold{ - amount = 25 - }, -/obj/item/coin/gold, -/obj/item/coin/gold, -/obj/item/coin/mythril, -/obj/item/coin/plasma, -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/item/stack/sheet/mineral/titanium, +/turf/template_noop, +/area/template_noop) "ap" = ( -/obj/structure/table, -/obj/item/coin/gold, -/obj/item/coin/gold, -/obj/item/coin/gold, -/obj/item/coin/mythril, -/obj/item/coin/plasma, -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/structure/lattice, +/obj/structure/fluff/broken_flooring{ + icon_state = "pile"; + dir = 8 + }, +/turf/template_noop, +/area/template_noop) "aq" = ( -/obj/structure/table, -/mob/living/simple_animal/parrot{ - faction = list("pirate"); - name = "Pegwing" - }, -/turf/open/floor/plasteel, -/area/ruin/powered) +/turf/template_noop, +/area/shuttle/caravan/freighter1) "ar" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/ruin/powered) +/obj/structure/lattice, +/obj/item/stack/sheet/mineral/titanium, +/turf/template_noop, +/area/shuttle/caravan/freighter1) "as" = ( -/obj/structure/shuttle/engine/heater{ - dir = 8 +/obj/structure/fluff/broken_flooring{ + dir = 4; + icon_state = "singular" }, -/turf/closed/wall/mineral/plastitanium, -/area/ruin/powered) +/turf/template_noop, +/area/template_noop) "at" = ( -/obj/structure/bed, -/obj/item/bedsheet/brown, -/turf/open/floor/plasteel, -/area/ruin/powered) -"au" = ( -/obj/structure/chair{ +/obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, /turf/open/floor/plasteel, -/area/ruin/powered) +/area/shuttle/caravan/pirate) +"au" = ( +/mob/living/simple_animal/hostile/pirate, +/turf/open/floor/plasteel, +/area/shuttle/caravan/pirate) "av" = ( -/obj/structure/rack, -/obj/item/storage/bag/money/vault, -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/effect/turf_decal/bot_white/right, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Tiny Freighter APC"; + pixel_x = -24; + req_access = null; + start_charge = 0 + }, +/obj/machinery/button/door{ + id = "caravantrade3_cargo_port"; + name = "Cargo Blast Door Control"; + pixel_y = 24 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) "aw" = ( -/obj/structure/closet/crate/secure/loot, -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/structure/rack, +/obj/item/storage/toolbox/mechanical, +/obj/item/device/flashlight, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/darkblue/side{ + dir = 4; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter3) "ax" = ( -/obj/structure/table, -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/cable/yellow, +/obj/machinery/power/apc{ + dir = 4; + name = "Small Freighter APC"; + pixel_x = 24; + req_access = null; + start_charge = 0 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) "ay" = ( -/obj/machinery/computer, -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/effect/turf_decal/bot, +/obj/machinery/space_heater, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plating/airless{ + icon_state = "platingdmg3" + }, +/area/shuttle/caravan/freighter1) "az" = ( -/obj/structure/table, -/obj/item/storage/bag/money/vault, -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/machinery/door/airlock{ + id_tag = "caravantrade1_cabin2"; + name = "Cabin 2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/vault/airless, +/area/shuttle/caravan/freighter1) "aA" = ( -/obj/structure/closet/crate{ - icon_state = "crateopen"; - opened = 1 +/obj/machinery/door/airlock{ + id_tag = "caravantrade1_cabin1"; + name = "Cabin 1" }, -/obj/item/stack/sheet/mineral/gold{ - amount = 25 - }, -/obj/item/stack/sheet/mineral/bananium{ - amount = 5 - }, -/obj/item/stack/sheet/mineral/silver{ - amount = 25 - }, -/obj/item/stack/sheet/mineral/uranium{ - amount = 10 - }, -/obj/item/stack/sheet/mineral/diamond{ - amount = 5 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/vault/airless, +/area/shuttle/caravan/freighter1) "aB" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/ruin/powered) +/obj/machinery/light/small, +/obj/structure/bed, +/obj/item/bedsheet, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/all_access{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/button/door{ + id = "caravantrade1_cabin2"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + pixel_y = 6; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/vault/airless, +/area/shuttle/caravan/freighter1) "aC" = ( -/turf/closed/mineral, -/area/ruin/unpowered/no_grav) +/obj/machinery/light/small, +/obj/structure/bed, +/obj/item/bedsheet, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/all_access{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/button/door{ + id = "caravantrade1_cabin1"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + pixel_y = 6; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/vault/airless, +/area/shuttle/caravan/freighter1) "aD" = ( /obj/item/stack/rods, /turf/template_noop, @@ -182,73 +269,151 @@ /turf/template_noop, /area/template_noop) "aF" = ( -/mob/living/simple_animal/hostile/pirate, -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/structure/toilet{ + dir = 4 + }, +/obj/structure/sink{ + pixel_y = 24 + }, +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/showroomfloor{ + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) "aG" = ( -/obj/structure/chair{ +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/darkblue/corner{ + dir = 4; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter3) +"aH" = ( +/obj/machinery/door/airlock{ + name = "Restroom" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/showroomfloor{ + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"aI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/frame/computer{ + dir = 8 + }, +/obj/item/shard, +/turf/open/floor/plasteel/darkblue/side{ + dir = 8; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter3) +"aJ" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/effect/decal/cleanable/blood, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/mob/living/simple_animal/hostile/syndicate/ranged/space{ + environment_smash = 0; + name = "Syndicate Salvage Worker" + }, +/turf/open/floor/plasteel/yellow/corner{ + dir = 4; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"aK" = ( +/obj/machinery/button/door{ + id = "caravantrade1_bolt"; + name = "External Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + pixel_y = 8; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/blue/corner{ + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"aL" = ( +/obj/machinery/airalarm/all_access{ + dir = 4; + pixel_x = -24 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"aM" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plasteel/darkblue/corner{ + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter3) +"aN" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter3) +"aO" = ( +/obj/machinery/airalarm/all_access{ + dir = 4; + pixel_x = -24 + }, +/obj/effect/decal/cleanable/blood, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, -/mob/living/simple_animal/hostile/pirate, -/turf/open/floor/plasteel, -/area/ruin/powered) -"aH" = ( -/turf/open/floor/plating/asteroid/airless, -/area/ruin/unpowered/no_grav) -"aI" = ( -/turf/closed/wall/mineral/plastitanium, -/area/ruin/unpowered/no_grav) -"aJ" = ( -/obj/machinery/door/airlock/external{ - icon_state = "door_locked"; - locked = 1 - }, -/turf/open/floor/plating, -/area/ruin/unpowered/no_grav) -"aK" = ( -/turf/closed/wall/mineral/iron, -/area/ruin/unpowered/no_grav) -"aL" = ( -/obj/item/coin/mythril, -/turf/open/floor/plasteel, -/area/ruin/powered) -"aM" = ( -/obj/structure/chair, -/turf/open/floor/plasteel, -/area/ruin/powered) -"aN" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/ruin/unpowered/no_grav) -"aO" = ( -/obj/structure/shuttle/engine/heater{ - dir = 8 - }, -/turf/closed/wall/mineral/plastitanium, -/area/ruin/unpowered/no_grav) +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) "aP" = ( -/obj/structure/chair, -/obj/item/shard, -/obj/item/stack/sheet/metal, -/turf/open/floor/mineral/plastitanium/airless, -/area/ruin/unpowered/no_grav) -"aQ" = ( -/obj/structure/chair, -/obj/effect/decal/cleanable/shreds, -/turf/open/floor/mineral/plastitanium/airless, -/area/ruin/unpowered/no_grav) -"aR" = ( -/obj/item/shard, -/turf/open/floor/mineral/plastitanium/airless, -/area/ruin/unpowered/no_grav) -"aS" = ( -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg1"; - icon_state = "platingdmg1" +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/mob/living/simple_animal/hostile/pirate/space{ + environment_smash = 0 }, -/area/ruin/unpowered/no_grav) +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter2) +"aQ" = ( +/obj/structure/rack, +/obj/item/tank/jetpack/carbondioxide, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/clothing/mask/gas, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/darkblue/side{ + dir = 4; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter3) +"aR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter3) +"aS" = ( +/obj/machinery/power/smes{ + charge = 5e+006 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/shuttle/caravan/syndicate3) "aT" = ( /obj/structure/fluff/broken_flooring{ icon_state = "singular" @@ -256,138 +421,205 @@ /turf/template_noop, /area/template_noop) "aU" = ( -/obj/structure/rack, -/obj/item/tank/internals/plasma/full, -/obj/item/tank/internals/plasma/full, -/obj/item/tank/internals/plasma/full, -/turf/open/floor/plasteel, -/area/ruin/powered) +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/closet/crate, +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/item/stack/sheet/metal/twenty, +/obj/item/stack/sheet/glass{ + amount = 10 + }, +/obj/item/stack/sheet/mineral/plastitanium{ + amount = 20 + }, +/obj/item/storage/box/lights/bulbs, +/obj/item/storage/toolbox/mechanical, +/obj/item/stack/sheet/mineral/plasma{ + amount = 20 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/syndicate3) "aV" = ( -/obj/structure/fluff/broken_flooring{ - icon_state = "singular" +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, -/obj/effect/decal/cleanable/shreds, -/turf/open/floor/mineral/plastitanium/airless, -/area/ruin/unpowered/no_grav) +/obj/structure/cable, +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/item/wrench, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/shuttle/caravan/syndicate3) "aW" = ( -/obj/effect/gibspawner/human, -/turf/open/floor/mineral/plastitanium/airless, -/area/ruin/unpowered/no_grav) -"aX" = ( -/turf/open/floor/plating/airless{ - icon = 'icons/obj/smooth_structures/lattice.dmi'; - icon_plating = "lattice"; - icon_state = "lattice"; - name = "anchor chain" +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/area/template_noop) -"aY" = ( -/obj/structure/statue/gold/cmo, -/turf/open/floor/plasteel, -/area/ruin/powered) -"aZ" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/turf/open/floor/plasteel, -/area/ruin/powered) -"ba" = ( -/obj/structure/table, -/obj/item/stack/sheet/mineral/gold{ - amount = 25 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"bb" = ( -/turf/closed/wall/mineral/plastitanium{ - dir = 4; - icon_state = "diagonalWall3" - }, -/area/ruin/powered) -"bc" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/item/stack/rods, -/obj/effect/gibspawner/human, -/turf/open/floor/mineral/plastitanium/airless, -/area/ruin/unpowered/no_grav) -"bd" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/item/shard, -/obj/item/stack/sheet/metal, -/obj/effect/decal/cleanable/shreds, -/turf/open/floor/mineral/plastitanium/airless, -/area/ruin/unpowered/no_grav) -"be" = ( -/turf/open/floor/mineral/plastitanium/airless, -/area/ruin/unpowered/no_grav) -"bf" = ( -/obj/item/stack/sheet/metal, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/unpowered/no_grav) -"bg" = ( -/turf/open/floor/wood/airless, -/area/ruin/unpowered/no_grav) -"bh" = ( -/obj/structure/closet/crate/secure/weapon, -/obj/item/gun/ballistic/automatic/pistol/APS, -/turf/open/floor/wood/airless, -/area/ruin/unpowered/no_grav) -"bi" = ( -/mob/living/simple_animal/hostile/pirate/space{ - environment_smash = 0 - }, -/turf/open/floor/wood/airless, -/area/ruin/unpowered/no_grav) -"bj" = ( -/obj/structure/closet/crate/secure/weapon, -/obj/item/gun/ballistic/shotgun/automatic/dual_tube, -/turf/open/floor/wood/airless, -/area/ruin/unpowered/no_grav) -"bk" = ( -/obj/structure/girder, -/turf/template_noop, -/area/template_noop) -"bl" = ( -/turf/closed/wall/mineral/titanium, -/area/ruin/unpowered) -"bm" = ( -/obj/machinery/door/poddoor{ - id = "caravantrade1"; - name = "cargo blastdoor" - }, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg2"; - icon_state = "platingdmg2" - }, -/area/ruin/unpowered) -"bn" = ( -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg1"; - icon_state = "platingdmg1" - }, -/area/ruin/unpowered) -"bo" = ( -/obj/structure/door_assembly/door_assembly_titanium{ +/obj/effect/decal/cleanable/dirt, +/obj/structure/door_assembly/door_assembly_com{ + anchored = 1; density = 0; name = "broken airlock" }, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg2"; - icon_state = "platingdmg2" +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"aX" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/door_assembly/door_assembly_min{ + anchored = 1; + density = 0; + name = "broken airlock" }, -/area/ruin/unpowered) -"bp" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/ruin/unpowered) -"bq" = ( -/obj/structure/fluff/broken_flooring{ - icon_state = "pile"; +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter1) +"aY" = ( +/obj/effect/turf_decal/bot_white/right, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Tiny Freighter APC"; + pixel_x = -24; + req_access = null; + start_charge = 0 + }, +/obj/machinery/button/door{ + id = "caravantrade2_cargo_port"; + name = "Cargo Blast Door Control"; + pixel_y = 24 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"aZ" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/door_assembly/door_assembly_com{ + anchored = 1; + density = 0; + name = "broken airlock" + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"ba" = ( +/obj/machinery/door/airlock/hatch{ + id_tag = "caravansyndicate3_bolt_starboard"; + name = "External Airlock"; + normalspeed = 0; + req_access_txt = "150" + }, +/turf/open/floor/plating, +/area/shuttle/caravan/syndicate3) +"bb" = ( +/obj/machinery/porta_turret/syndicate/pod{ + dir = 5; + faction = "pirate" + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/caravan/pirate) +"bc" = ( +/obj/machinery/porta_turret/syndicate/pod{ + dir = 6; + faction = "pirate" + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/caravan/pirate) +"bd" = ( +/turf/open/floor/plating/airless{ + icon_state = "platingdmg3" + }, +/area/shuttle/caravan/freighter3) +"be" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/vault/airless, +/area/shuttle/caravan/freighter1) +"bf" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/vault/airless, +/area/shuttle/caravan/freighter1) +"bg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/all_access{ + dir = 4; + pixel_x = -24 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"bh" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/gibspawner/human, +/turf/open/floor/plating/airless{ + icon_state = "platingdmg3" + }, +/area/shuttle/caravan/freighter2) +"bi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, +/turf/open/floor/plasteel/airless{ + icon_state = "floorscorched1" + }, +/area/shuttle/caravan/freighter2) +"bj" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/button/door{ + id = "caravansyndicate3_bolt_port"; + name = "External Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -24; + pixel_y = 6; + req_access_txt = "150"; + specialfunctions = 4 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/syndicate3) +"bk" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/button/door{ + id = "caravansyndicate3_bolt_starboard"; + name = "External Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -24; + pixel_y = -6; + req_access_txt = "150"; + specialfunctions = 4 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/syndicate3) +"bl" = ( +/mob/living/simple_animal/hostile/carp, /turf/template_noop, /area/template_noop) "br" = ( @@ -398,758 +630,3253 @@ /obj/structure/lattice, /turf/template_noop, /area/template_noop) -"bu" = ( -/obj/item/stack/sheet/metal, -/obj/effect/decal/cleanable/dirt, -/obj/item/stack/rods, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg3"; - icon_state = "platingdmg3" - }, -/area/ruin/unpowered) -"bv" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"bw" = ( -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"bx" = ( -/obj/machinery/button/door{ - pixel_x = 24 - }, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"by" = ( -/obj/structure/bed, -/obj/item/bedsheet/black, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"bz" = ( -/turf/closed/wall/mineral/titanium/interior, -/area/ruin/unpowered) -"bA" = ( -/obj/structure/fluff/broken_flooring{ - icon_state = "pile" - }, -/turf/template_noop, -/area/template_noop) -"bB" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg1"; - icon_state = "platingdmg1" - }, -/area/ruin/unpowered) -"bC" = ( -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg3"; - icon_state = "platingdmg3" - }, -/area/ruin/unpowered) -"bD" = ( -/obj/structure/closet/crate/secure/gear, -/obj/item/ammo_casing/shotgun/techshell, -/obj/item/ammo_casing/shotgun/techshell, -/obj/item/ammo_casing/shotgun/techshell, -/obj/item/ammo_casing/shotgun/pulseslug, -/obj/item/storage/box/lethalshot, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"bE" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"bF" = ( -/mob/living/simple_animal/hostile/pirate/space/ranged{ - environment_smash = 0 - }, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"bG" = ( -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"bH" = ( -/mob/living/simple_animal/hostile/pirate/space{ - environment_smash = 0 - }, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"bI" = ( -/obj/structure/table, -/obj/item/storage/firstaid/regular, -/turf/open/floor/mineral/titanium/blue/airless, +"bt" = ( +/turf/closed/mineral/random, /area/ruin/unpowered) "bJ" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg2"; - icon_state = "platingdmg2" - }, +/turf/closed/wall/mineral/plastitanium, /area/ruin/unpowered) -"bK" = ( -/obj/structure/fluff/broken_flooring{ - icon_state = "plating"; - dir = 1 - }, -/turf/template_noop, -/area/template_noop) -"bL" = ( -/obj/machinery/door/airlock/titanium, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"bM" = ( -/obj/effect/decal/cleanable/blood, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"bN" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"bO" = ( -/obj/machinery/door/airlock/titanium, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg3"; - icon_state = "platingdmg3" - }, -/area/ruin/unpowered) -"bP" = ( -/turf/closed/wall/mineral/plastitanium{ - dir = 8; - icon_state = "diagonalWall3" - }, -/area/ruin/powered) -"bQ" = ( -/obj/structure/fluff/broken_flooring{ - icon_state = "plating"; - dir = 1 - }, -/obj/structure/lattice, -/turf/template_noop, -/area/template_noop) -"bR" = ( -/obj/structure/girder, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg3"; - icon_state = "platingdmg3" - }, -/area/ruin/unpowered) -"bS" = ( -/obj/structure/girder, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg2"; - icon_state = "platingdmg2" - }, -/area/ruin/unpowered) -"bT" = ( -/obj/item/stack/sheet/metal, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg1"; - icon_state = "platingdmg1" - }, -/area/ruin/unpowered) -"bU" = ( -/obj/item/stack/rods, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg3"; - icon_state = "platingdmg3" - }, -/area/ruin/unpowered) -"bV" = ( -/obj/structure/closet/crate/secure/gear, -/obj/item/ammo_casing/shotgun/frag12, -/obj/item/ammo_casing/shotgun/frag12, -/obj/item/ammo_casing/shotgun/frag12, -/obj/item/ammo_casing/shotgun/frag12, -/obj/item/storage/box/beanbag, -/obj/item/storage/box/rubbershot, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"bW" = ( -/obj/structure/closet/crate/secure/gear, -/obj/item/ammo_box/c10mm, -/obj/item/ammo_casing/shotgun/meteorslug, -/obj/item/ammo_casing/shotgun/meteorslug, -/obj/item/ammo_casing/shotgun/meteorslug, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"bX" = ( -/obj/structure/closet/crate/secure/gear, -/obj/item/ammo_box/a40mm, -/obj/item/ammo_box/a40mm, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"bY" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/mob_spawn/human/corpse/nanotrasensoldier, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"bZ" = ( -/obj/machinery/computer{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"ca" = ( -/obj/structure/shuttle/engine/propulsion/burst/left{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/ruin/unpowered) -"cb" = ( -/obj/structure/shuttle/engine/heater{ - dir = 8 - }, -/turf/closed/wall/mineral/titanium, -/area/ruin/unpowered) -"cc" = ( -/obj/structure/table, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"cd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/bed, -/obj/item/bedsheet/black, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"ce" = ( -/obj/structure/table, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"cf" = ( -/obj/machinery/computer, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"cg" = ( -/obj/structure/fluff/broken_flooring{ - icon_state = "plating"; - dir = 4 - }, -/obj/structure/lattice, -/turf/template_noop, -/area/template_noop) "ch" = ( -/obj/item/stack/rods, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg2"; - icon_state = "platingdmg2" - }, -/area/ruin/unpowered) -"ci" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg3"; - icon_state = "platingdmg3" - }, -/area/ruin/unpowered) -"cj" = ( -/turf/open/floor/plating/airless, -/area/ruin/unpowered) -"ck" = ( -/obj/structure/closet/crate/secure/weapon, -/obj/item/gun/ballistic/revolver/grenadelauncher/unrestricted, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cl" = ( -/mob/living/simple_animal/hostile/pirate/space{ - environment_smash = 0 - }, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cm" = ( -/obj/structure/door_assembly/door_assembly_titanium{ - density = 0; - name = "broken airlock" - }, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cn" = ( -/obj/structure/table, -/obj/item/device/gps{ - gpstag = "Distress Signal" - }, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"co" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/ruin/unpowered) -"cp" = ( -/obj/structure/closet/crate/secure/engineering, -/obj/item/storage/toolbox/mechanical, -/obj/item/storage/toolbox/mechanical, -/obj/item/storage/toolbox/electrical, -/obj/item/storage/toolbox/electrical, -/obj/item/clothing/gloves/color/yellow, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cq" = ( -/obj/item/shard, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"cr" = ( -/obj/structure/table_frame, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"cs" = ( -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"ct" = ( -/obj/structure/chair{ - dir = 1 - }, -/mob/living/simple_animal/hostile/syndicate{ - environment_smash = 0; - name = "Syndicate Salvage Pilot" - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"cu" = ( -/obj/structure/closet/crate/secure/engineering, -/obj/item/wrench/caravan, -/obj/item/screwdriver/caravan, -/obj/item/wirecutters/caravan, -/obj/item/crowbar/red/caravan, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"cv" = ( -/obj/effect/decal/cleanable/dirt, -/mob/living/simple_animal/hostile/syndicate/ranged/space{ - environment_smash = 0; - name = "Syndicate Salvage Worker" - }, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"cw" = ( -/obj/item/stack/rods, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg3"; - icon_state = "platingdmg3" - }, -/area/ruin/unpowered) -"cx" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg2"; - icon_state = "platingdmg2" - }, -/area/ruin/unpowered) -"cy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/girder, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg3"; - icon_state = "platingdmg3" - }, -/area/ruin/unpowered) -"cz" = ( -/obj/item/stack/sheet/metal, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg3"; - icon_state = "platingdmg3" - }, -/area/ruin/unpowered) -"cA" = ( -/obj/structure/closet/crate/secure/weapon, -/obj/item/gun/ballistic/shotgun/riot, -/obj/item/gun/ballistic/shotgun/riot, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cB" = ( -/obj/structure/closet/crate/secure/weapon, -/obj/item/gun/syringe/syndicate, -/obj/item/gun/syringe/rapidsyringe, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cC" = ( -/obj/structure/closet/crate/secure/weapon, -/obj/item/gun/ballistic/automatic/c20r/toy/unrestricted/riot, -/obj/item/gun/ballistic/automatic/c20r/toy/unrestricted/riot, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cD" = ( -/mob/living/simple_animal/hostile/pirate/space/ranged{ - environment_smash = 0 - }, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"cE" = ( -/obj/structure/table, -/obj/item/clipboard, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"cF" = ( -/obj/structure/shuttle/engine/propulsion/burst/right{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/ruin/unpowered) -"cG" = ( -/mob/living/simple_animal/hostile/syndicate/melee/space{ - environment_smash = 0; - name = "Syndicate Salvage Worker" - }, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cH" = ( -/obj/item/stack/rods, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg1"; - icon_state = "platingdmg1" - }, -/area/ruin/unpowered) -"cI" = ( -/obj/structure/grille/broken, -/obj/item/shard, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg1"; - icon_state = "platingdmg1" - }, -/area/ruin/unpowered) -"cJ" = ( -/obj/structure/closet/crate/secure/engineering, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/gloves/color/yellow, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"cK" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/plasteel/twenty, -/obj/item/stack/sheet/plasteel/twenty, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cL" = ( -/obj/item/stack/sheet/metal, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cM" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg3"; - icon_state = "platingdmg3" - }, -/area/ruin/unpowered) -"cN" = ( -/obj/structure/closet/crate/secure/plasma, -/obj/item/tank/internals/plasma/full, -/obj/item/tank/internals/plasma/full, -/obj/item/stack/sheet/mineral/plasma{ - amount = 25 - }, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cO" = ( -/obj/item/shard, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"cP" = ( -/obj/item/chair, -/obj/effect/mob_spawn/human/corpse/nanotrasensoldier, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"cQ" = ( -/obj/item/stack/rods, -/obj/item/stack/sheet/metal, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg1"; - icon_state = "platingdmg1" - }, -/area/ruin/unpowered) -"cR" = ( -/obj/structure/fluff/broken_flooring{ - icon_state = "plating"; - dir = 8 - }, -/obj/structure/lattice, -/turf/template_noop, -/area/template_noop) -"cS" = ( -/obj/machinery/door/airlock/external{ - icon_state = "door_locked"; - locked = 1 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"cT" = ( -/obj/machinery/porta_turret/syndicate/pod, -/turf/open/floor/plating/airless, -/area/ruin/powered) -"cU" = ( -/obj/effect/decal/cleanable/dirt, -/mob/living/simple_animal/hostile/syndicate/melee/space/stormtrooper{ - environment_smash = 0; - name = "Syndicate Salvage Leader" - }, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cV" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"cW" = ( -/obj/structure/closet/crate/secure/plasma, -/obj/item/tank/internals/plasma/full, -/obj/item/stack/sheet/mineral/plasma{ - amount = 25 - }, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cX" = ( -/obj/structure/closet/crate/secure/engineering, -/obj/item/organ/cyberimp/arm/toolset, -/obj/item/organ/cyberimp/arm/toolset, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cY" = ( -/obj/structure/closet/crate/secure/plasma, -/obj/item/mecha_parts/mecha_equipment/weapon/energy/plasma, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"cZ" = ( -/mob/living/simple_animal/hostile/syndicate/ranged/space/stormtrooper{ - environment_smash = 0; - name = "Syndicate Salvage Leader" - }, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"da" = ( -/obj/item/stack/rods, -/obj/item/shard, -/mob/living/simple_animal/hostile/syndicate/melee/space{ - environment_smash = 0; - name = "Syndicate Salvage Worker" - }, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"db" = ( -/obj/item/shard, -/turf/open/floor/plating/airless{ - icon_plating = "platingdmg1"; - icon_state = "platingdmg1" - }, -/area/ruin/unpowered) +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/caravan/pirate) "dc" = ( /obj/item/shard, /turf/template_noop, /area/template_noop) -"dd" = ( +"dB" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/caravan/pirate) +"dD" = ( +/turf/open/floor/plating/asteroid/airless, +/area/ruin/unpowered) +"dE" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered) +"dF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/frame/computer, +/obj/item/shard, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/mineral/plastitanium/airless, +/area/ruin/unpowered) +"dG" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/sign/warning/vacuum{ + pixel_x = -32 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"dH" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/obj/machinery/door/poddoor{ + id = "caravanpirate_bridge" + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"dI" = ( +/obj/machinery/atmospherics/components/unary/tank/air, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"dJ" = ( +/obj/machinery/suit_storage_unit/open, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"dK" = ( +/obj/machinery/door/airlock/external{ + cyclelinkeddir = 1; + id_tag = "caravanpirate_bolt_port"; + locked = 1 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"dL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/door_assembly/door_assembly_hatch{ + density = 0; + name = "broken airlock" + }, +/turf/open/floor/plating/airless, +/area/ruin/unpowered) +"dN" = ( +/obj/structure/shuttle/engine/propulsion/burst/left{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/pirate) +"dO" = ( +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/pirate) +"dP" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/item/reagent_containers/glass/bucket, +/obj/item/mop, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"dQ" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/machinery/meter, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"dR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/engineering{ + name = "Engineering" + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"dS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white/side{ + dir = 9 + }, +/area/shuttle/caravan/pirate) +"dT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white/side{ + dir = 1 + }, +/area/shuttle/caravan/pirate) +"dU" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/white/side{ + dir = 1 + }, +/area/shuttle/caravan/pirate) +"dV" = ( +/obj/machinery/button/door{ + id = "caravanpirate_bolt_port"; + name = "External Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -4; + pixel_y = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white/side{ + dir = 1 + }, +/area/shuttle/caravan/pirate) +"dW" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/white/side{ + dir = 1 + }, +/area/shuttle/caravan/pirate) +"dX" = ( +/obj/structure/sign/departments/medbay/alt, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/caravan/pirate) +"dY" = ( +/obj/structure/closet{ + name = "pirate outfits" + }, +/obj/item/clothing/head/collectable/pirate, +/obj/item/clothing/suit/pirate, +/obj/item/clothing/under/pirate, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/head/bandana, +/turf/open/floor/plasteel/dark/side{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"dZ" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/bed, +/obj/item/bedsheet/brown, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/pirate) +"ea" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/pirate) +"eb" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"ec" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"ed" = ( +/obj/structure/sign/departments/engineering, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/caravan/pirate) +"ee" = ( +/obj/structure/table, +/obj/item/circular_saw, +/obj/item/scalpel{ + pixel_y = 12 + }, +/obj/item/cautery{ + pixel_x = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel/white/side{ + dir = 8 + }, +/area/shuttle/caravan/pirate) +"ef" = ( +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/caravan/pirate) +"eh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/caravan/pirate) +"ei" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay" + }, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/caravan/pirate) +"ej" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/side{ + dir = 4 + }, +/area/shuttle/caravan/pirate) +"ek" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"el" = ( +/obj/structure/table, +/obj/machinery/microwave{ + pixel_y = 5 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/pirate) +"em" = ( +/obj/structure/shuttle/engine/propulsion/burst/right{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/pirate) +"en" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/space_heater, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"eo" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"ep" = ( +/obj/structure/table, +/obj/item/retractor, +/obj/item/hemostat, +/turf/open/floor/plasteel/white, +/area/shuttle/caravan/pirate) +"eq" = ( +/obj/structure/table/optable, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/white, +/area/shuttle/caravan/pirate) +"er" = ( +/obj/structure/table, +/obj/item/storage/firstaid/brute{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/firstaid/fire, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/caravan/pirate) +"es" = ( +/obj/machinery/sleeper{ + dir = 1 + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/airalarm/all_access{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/caravan/pirate) +"et" = ( +/obj/structure/closet/crate/freezer/surplus_limbs, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/white, +/area/shuttle/caravan/pirate) +"eu" = ( /obj/structure/chair{ dir = 4 }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"de" = ( -/obj/structure/closet/crate/secure/plasma, -/obj/item/stack/sheet/mineral/plasma{ - amount = 25 +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/mineral/plastitanium/airless, +/area/ruin/unpowered) +"ew" = ( +/obj/effect/gibspawner/human, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/unpowered) +"ex" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/unpowered) +"ez" = ( +/obj/structure/bed, +/obj/item/bedsheet/brown, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 }, -/obj/item/stack/sheet/mineral/plasma{ - amount = 25 +/turf/open/floor/plasteel/dark/side{ + dir = 6 }, -/obj/item/tank/internals/plasma/full, -/obj/item/tank/internals/plasma/full, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"df" = ( -/obj/structure/chair{ +/area/shuttle/caravan/pirate) +"eB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"eC" = ( +/obj/structure/table, +/obj/item/storage/fancy/donut_box{ + pixel_y = 18 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = -6 + }, +/obj/item/reagent_containers/food/drinks/bottle/rum{ + pixel_x = 8; + pixel_y = 3 + }, +/obj/structure/sign/poster/contraband/red_rum{ + pixel_x = 32 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/pirate) +"eD" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/bottle/rum{ + pixel_x = 3; + pixel_y = 6 + }, +/obj/item/reagent_containers/food/drinks/bottle/rum, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/pirate) +"eE" = ( +/obj/structure/table, +/obj/item/coin/gold, +/obj/item/coin/silver, +/obj/item/coin/silver, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/pirate) +"eF" = ( +/obj/structure/closet/crate/secure/loot, +/obj/machinery/airalarm/all_access{ + pixel_y = 24 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/pirate) +"eG" = ( +/obj/item/stack/cable_coil/yellow{ + amount = 1 + }, +/turf/open/floor/plating/airless{ + icon_state = "platingdmg3" + }, +/area/ruin/unpowered) +"eI" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/emergency, +/obj/item/weldingtool, +/turf/open/floor/plasteel/darkred/corner{ + dir = 4 + }, +/area/shuttle/caravan/pirate) +"eJ" = ( +/obj/machinery/computer/camera_advanced/shuttle_docker/caravan/pirate, +/turf/open/floor/plasteel/darkred/side{ + dir = 1 + }, +/area/shuttle/caravan/pirate) +"eK" = ( +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Pirate Cutter APC"; + pixel_x = -24; + req_access = null + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/airalarm/all_access{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"eL" = ( +/obj/machinery/light/small{ dir = 8 }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"dg" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/rglass{ - amount = 20 +/obj/structure/closet/crate/secure/loot, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 }, -/obj/item/stack/sheet/rglass{ - amount = 20 +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 }, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"dh" = ( -/obj/structure/closet/crate{ - icon_state = "crateopen"; - opened = 1 +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/pirate) +"eM" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"eO" = ( /obj/item/stack/sheet/mineral/gold{ amount = 25 }, /obj/item/stack/sheet/mineral/bananium{ amount = 5 }, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"di" = ( -/obj/structure/closet/crate{ - icon_state = "crateopen"; - opened = 1 - }, /obj/item/stack/sheet/mineral/silver{ amount = 25 }, /obj/item/stack/sheet/mineral/uranium{ amount = 10 }, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"dj" = ( -/obj/effect/mob_spawn/human/corpse/nanotrasensoldier, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"dk" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"dl" = ( -/obj/structure/closet/crate/secure/plasma, -/obj/item/stack/sheet/mineral/plasma{ - amount = 25 - }, -/obj/item/tank/internals/plasma/full, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"dm" = ( -/obj/structure/chair, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"dn" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/mineral/gold{ - amount = 25 - }, -/obj/item/stack/sheet/mineral/silver{ - amount = 25 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"do" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"dp" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/mineral/silver{ - amount = 25 - }, -/turf/open/floor/mineral/titanium/yellow/airless, -/area/ruin/unpowered) -"dq" = ( -/mob/living/simple_animal/hostile/syndicate/ranged/space{ - environment_smash = 0; - name = "Syndicate Salvage Worker" - }, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"dr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/clipboard, -/turf/open/floor/mineral/titanium/blue/airless, -/area/ruin/unpowered) -"ds" = ( -/obj/structure/shuttle/engine/heater, -/turf/closed/wall/mineral/plastitanium, -/area/ruin/powered) -"dt" = ( -/obj/structure/closet/crate{ - icon_state = "crateopen"; - opened = 1 - }, /obj/item/stack/sheet/mineral/diamond{ amount = 5 }, -/obj/item/stack/sheet/mineral/gold{ - amount = 25 +/obj/structure/closet/crate, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/silver, +/obj/item/coin/gold, +/obj/item/coin/gold, +/turf/open/floor/plasteel/darkblue/corner, +/area/shuttle/caravan/pirate) +"eP" = ( +/obj/structure/table, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"du" = ( -/obj/structure/chair{ +/obj/item/stack/spacecash/c200, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/pirate) +"eQ" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"eR" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"eS" = ( +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"eT" = ( +/obj/structure/chair/office/dark{ dir = 4 }, +/obj/machinery/turretid{ + icon_state = "control_kill"; + lethal = 1; + locked = 0; + pixel_y = -30; + req_access = null + }, +/mob/living/simple_animal/hostile/pirate/ranged{ + environment_smash = 0 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"eU" = ( +/obj/machinery/computer/shuttle/caravan/pirate{ + dir = 8 + }, +/turf/open/floor/plasteel/darkred/side{ + dir = 8 + }, +/area/shuttle/caravan/pirate) +"eV" = ( +/obj/machinery/power/smes{ + charge = 5e+006 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"eW" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"eX" = ( +/obj/structure/table, +/obj/item/storage/box/lethalshot, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"eY" = ( +/obj/structure/table, +/obj/item/grenade/smokebomb{ + pixel_x = -4 + }, +/obj/item/grenade/smokebomb{ + pixel_x = 2 + }, +/obj/machinery/airalarm/all_access{ + pixel_y = 24 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"eZ" = ( +/obj/structure/tank_dispenser/oxygen, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"fa" = ( +/obj/structure/table, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/door/window/southleft{ + name = "Weapon Storage" + }, +/obj/item/gun/ballistic/shotgun/automatic/combat, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"fb" = ( +/obj/structure/table, +/obj/item/gun/energy/laser{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/energy/laser, +/obj/machinery/door/window/southleft{ + base_state = "right"; + icon_state = "right"; + name = "Weapon Storage" + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"fc" = ( +/obj/structure/bed, +/obj/item/bedsheet/brown, +/obj/machinery/airalarm/all_access{ + dir = 4; + pixel_x = -24 + }, +/turf/open/floor/plasteel/darkred/corner{ + dir = 8 + }, +/area/shuttle/caravan/pirate) +"fd" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"fe" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/darkblue/side{ + dir = 4 + }, +/area/shuttle/caravan/pirate) +"ff" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/command{ + name = "Bridge" + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"fg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/pirate) +"fh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/pirate) +"fi" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger, +/obj/item/melee/classic_baton, +/turf/open/floor/plasteel/darkred/corner, +/area/shuttle/caravan/pirate) +"fj" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + id = "caravanpirate_bridge"; + name = "Bridge Blast Door Control"; + pixel_x = -16 + }, +/turf/open/floor/plasteel/darkred/side, +/area/shuttle/caravan/pirate) +"fk" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/closet/crate, +/obj/item/stack/sheet/metal/twenty, +/obj/item/stack/sheet/glass{ + amount = 10 + }, +/obj/item/storage/toolbox/mechanical, +/obj/item/device/flashlight{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/stack/sheet/mineral/plasma{ + amount = 20 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"fl" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/closet/crate/secure/weapon, +/obj/item/gun/ballistic/revolver/grenadelauncher/unrestricted, +/turf/open/floor/plasteel/red/side{ + dir = 8 + }, +/area/shuttle/caravan/pirate) +"fm" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/caravan/pirate) +"fo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/caravan/pirate) +"fp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security, +/turf/open/floor/plasteel/floorgrime, +/area/shuttle/caravan/pirate) +"fq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/darkred/side{ + dir = 8 + }, +/area/shuttle/caravan/pirate) +"fr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/pirate) +"fs" = ( +/obj/structure/rack, +/obj/item/storage/bag/money/vault, +/mob/living/simple_animal/parrot{ + faction = list("pirate"); + name = "Pegwing" + }, +/turf/open/floor/plasteel/darkblue/corner{ + dir = 4 + }, +/area/shuttle/caravan/pirate) +"ft" = ( +/obj/structure/cable, +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/item/wrench, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"fu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"fv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/red/side{ + dir = 10 + }, +/area/shuttle/caravan/pirate) +"fw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/red/side, +/area/shuttle/caravan/pirate) +"fx" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/red/side, +/area/shuttle/caravan/pirate) +"fy" = ( +/obj/machinery/button/door{ + id = "caravanpirate_bolt_starboard"; + name = "External Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -4; + pixel_y = -25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/red/side, +/area/shuttle/caravan/pirate) +"fz" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/red/side, +/area/shuttle/caravan/pirate) +"fA" = ( +/obj/structure/closet{ + name = "pirate outfits" + }, +/obj/item/clothing/head/collectable/pirate, +/obj/item/clothing/suit/pirate, +/obj/item/clothing/under/pirate, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/head/bandana, +/turf/open/floor/plasteel/darkred/corner{ + dir = 1 + }, +/area/shuttle/caravan/pirate) +"fB" = ( +/obj/machinery/light/small, +/obj/structure/bed, +/obj/item/bedsheet/brown, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/pirate) +"fC" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stack/cable_coil/yellow, +/obj/item/stock_parts/cell/high, +/obj/effect/turf_decal/bot, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"fD" = ( +/obj/machinery/door/airlock/external{ + cyclelinkeddir = 2; + id_tag = "caravanpirate_bolt_starboard"; + locked = 1 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"fF" = ( +/obj/machinery/door/airlock/external{ + cyclelinkeddir = 1; + id_tag = "caravanpirate_bolt_starboard"; + locked = 1 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/pirate) +"fG" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/caravan/freighter1) +"fH" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/caravan/freighter1) +"fI" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/door/poddoor{ + id = "caravantrade1_bridge" + }, +/turf/open/floor/plating, +/area/shuttle/caravan/freighter1) +"fJ" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/turretid{ + ailock = 1; + control_area = null; + desc = "A specially designed set of turret controls. Looks to be covered in protective casing to prevent AI interfacing."; + icon_state = "control_kill"; + lethal = 1; + name = "Shuttle turret control"; + pixel_x = 32; + pixel_y = 32; + req_access = list(150) + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, /mob/living/simple_animal/hostile/syndicate{ environment_smash = 0; name = "Syndicate Salvage Pilot" }, /turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"dv" = ( -/obj/structure/shuttle/engine/propulsion/burst, +/area/shuttle/caravan/syndicate2) +"fK" = ( +/obj/structure/shuttle/engine/propulsion/burst/left{ + dir = 8 + }, /turf/open/floor/plating/airless, -/area/ruin/powered) -"dw" = ( -/obj/structure/chair{ +/area/shuttle/caravan/freighter1) +"fL" = ( +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) +"fN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"dx" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/mineral/diamond{ - amount = 5 +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) +"fO" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/obj/item/stack/sheet/mineral/uranium{ +/obj/machinery/door/airlock/engineering{ + name = "Engine Room" + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) +"fP" = ( +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter1) +"fQ" = ( +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter1) +"fR" = ( +/obj/machinery/airalarm/all_access{ + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter1) +"fS" = ( +/obj/machinery/door/airlock{ + name = "Crew Cabins" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter1) +"fT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/yellow/corner{ + dir = 4; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"fU" = ( +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/yellow/side{ + dir = 1; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"fV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plasteel/yellow/side{ + dir = 1; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"fW" = ( +/obj/structure/closet/secure_closet/freezer{ + locked = 0; + name = "fridge" + }, +/obj/item/reagent_containers/food/drinks/beer{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/drinks/beer, +/obj/item/reagent_containers/food/drinks/beer{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/reagent_containers/glass/beaker/waterbottle{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/reagent_containers/glass/beaker/waterbottle, +/obj/item/reagent_containers/glass/beaker/waterbottle{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/reagent_containers/food/snacks/pizzaslice/margherita{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/snacks/pizzaslice/margherita, +/obj/item/reagent_containers/food/snacks/chocolatebar, +/turf/open/floor/plasteel/yellow/side{ + dir = 5; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"fX" = ( +/obj/structure/table, +/obj/machinery/microwave{ + pixel_y = 5 + }, +/turf/open/floor/plasteel/vault/airless, +/area/shuttle/caravan/freighter1) +"fY" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/sign/warning/vacuum{ + pixel_x = 32 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/freighter1) +"fZ" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/caravan/freighter3) +"ga" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/caravan/freighter3) +"gb" = ( +/obj/machinery/door/poddoor{ + id = "caravantrade3_cargo_port"; + name = "Cargo Blast Door" + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter3) +"gc" = ( +/obj/machinery/door/airlock/external{ + cyclelinkeddir = 8; + req_access_txt = "13" + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter3) +"gd" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/caravan/freighter3) +"ge" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) +"gf" = ( +/obj/machinery/power/smes{ + charge = 0 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) +"gg" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) +"gj" = ( +/obj/machinery/airalarm/all_access{ + dir = 4; + pixel_x = -24 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/mob_spawn/human/corpse/cargo_tech, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter1) +"gk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/fluff/broken_flooring{ + icon_state = "singular" + }, +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/ruin/unpowered) +"gl" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel/yellow/side{ + dir = 4; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"gm" = ( +/obj/structure/table, +/obj/item/storage/box/donkpockets{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/trash/plate{ + pixel_x = -5; + pixel_y = -3 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault/airless, +/area/shuttle/caravan/freighter1) +"gn" = ( +/obj/machinery/door/airlock/external{ + cyclelinkeddir = 1; + id_tag = "caravantrade1_bolt"; + locked = 1 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/freighter1) +"go" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/storage/firstaid/regular, +/turf/open/floor/plasteel/darkblue/side{ + dir = 10; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"gp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/pen{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/folder/yellow{ + pixel_x = -6 + }, +/obj/item/device/gps{ + gpstag = "Distress Signal" + }, +/turf/open/floor/plasteel/darkblue/side{ + dir = 6; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"gq" = ( +/obj/structure/shuttle/engine/propulsion/burst/left{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter3) +"gs" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"gt" = ( +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"gv" = ( +/obj/effect/turf_decal/bot_white, +/obj/structure/closet/crate/secure/engineering, +/obj/item/storage/toolbox/mechanical, +/obj/item/storage/toolbox/mechanical, +/obj/item/storage/toolbox/electrical, +/obj/item/storage/toolbox/electrical, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/item/device/multitool, +/obj/item/device/multitool, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"gw" = ( +/obj/effect/turf_decal/bot_white, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/button/door{ + id = "caravantrade3_cargo_port"; + name = "Cargo Blast Door Control"; + pixel_y = 24 + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"gy" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/sign/warning/vacuum{ + pixel_x = -32; + pixel_y = 32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"gD" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/closet/crate, +/obj/item/stack/sheet/metal/twenty, +/obj/item/stack/sheet/glass{ amount = 10 }, -/obj/item/stack/sheet/mineral/silver{ +/obj/item/stack/rods/ten, +/obj/item/storage/box/lights/bulbs, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) +"gJ" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter1) +"gN" = ( +/obj/effect/decal/cleanable/blood, +/mob/living/simple_animal/hostile/syndicate/melee/space/stormtrooper{ + environment_smash = 0; + name = "Syndicate Salvage Leader" + }, +/turf/open/floor/plasteel/darkblue/corner{ + dir = 4; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"gO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/camera_advanced/shuttle_docker/caravan/trade1{ + dir = 8 + }, +/turf/open/floor/plasteel/darkblue/side{ + dir = 9; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"gP" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter3) +"gQ" = ( +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter3) +"gR" = ( +/obj/machinery/power/smes{ + charge = 0 + }, +/obj/structure/cable/yellow, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter3) +"gT" = ( +/mob/living/simple_animal/hostile/syndicate/melee/space{ + environment_smash = 0; + name = "Syndicate Salvage Worker" + }, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter3) +"gU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter3) +"gV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless{ + icon_state = "floorscorched1" + }, +/area/shuttle/caravan/freighter3) +"gW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/blue/side{ + dir = 4; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter3) +"gY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"ha" = ( +/obj/structure/table/reinforced, +/obj/item/folder/yellow, +/obj/item/pen{ + pixel_x = 6; + pixel_y = 6 + }, +/turf/open/floor/plasteel/darkblue/side{ + dir = 9; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter3) +"hb" = ( +/obj/structure/cable, +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/item/wrench, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) +"hc" = ( +/obj/machinery/airalarm/all_access{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating/airless{ + icon_state = "platingdmg1" + }, +/area/shuttle/caravan/freighter1) +"hd" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter1) +"he" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter1) +"hf" = ( +/obj/machinery/door/airlock{ + name = "Crew Quarters" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter1) +"hg" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/airalarm/all_access{ + pixel_y = 24 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter1) +"hh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/blue/side{ + dir = 4; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"hi" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/command{ + name = "Bridge" + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"hj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"hk" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mob_spawn/human/corpse/cargo_tech, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plasteel/darkblue/corner{ + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"hl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/shuttle/caravan/trade1{ + dir = 8 + }, +/turf/open/floor/plasteel/darkblue/side{ + dir = 10; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"hm" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/caravan/freighter2) +"hn" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/caravan/freighter2) +"ho" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor/preopen{ + id = "caravantrade2_cargo_port"; + name = "Cargo Blast Door" + }, +/turf/open/floor/plating/airless{ + icon_state = "platingdmg3" + }, +/area/shuttle/caravan/freighter2) +"hp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor/preopen{ + id = "caravantrade2_cargo_port"; + name = "Cargo Blast Door" + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"hq" = ( +/obj/machinery/door/poddoor/preopen{ + id = "caravantrade2_cargo_port"; + name = "Cargo Blast Door" + }, +/turf/open/floor/plating/airless{ + icon_state = "platingdmg3" + }, +/area/shuttle/caravan/freighter2) +"hr" = ( +/obj/machinery/door/poddoor/preopen{ + id = "caravantrade2_cargo_port"; + name = "Cargo Blast Door" + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"hs" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/external{ + cyclelinkeddir = 8; + req_access_txt = "13" + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"ht" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/caravan/freighter2) +"hu" = ( +/obj/machinery/space_heater, +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter3) +"hv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter3) +"hw" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 4 + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"hx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/closet/crate/secure/plasma, +/obj/item/tank/internals/plasma/full, +/obj/item/stack/sheet/mineral/plasma{ amount = 25 }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/powered) -"dy" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"hy" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"hz" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel/blue/corner{ + dir = 4; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter3) +"hB" = ( /mob/living/simple_animal/hostile/syndicate/ranged/space/stormtrooper{ environment_smash = 0; name = "Syndicate Salvage Leader" }, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/unpowered/no_grav) -"dz" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "damaged2" + }, +/area/shuttle/caravan/freighter3) +"hD" = ( +/obj/structure/shuttle/engine/propulsion/burst/right{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) +"hE" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/components/unary/tank/air{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) +"hF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/meter, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) +"hG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter1) +"hH" = ( +/obj/structure/rack, +/obj/item/storage/belt/utility, +/obj/structure/extinguisher_cabinet{ + pixel_y = 29 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter1) +"hI" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/table, +/obj/item/stack/packageWrap, +/obj/item/crowbar, +/obj/item/device/flashlight{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/machinery/airalarm/all_access{ + pixel_y = 24 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter1) +"hJ" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/item/stack/cable_coil/yellow{ + pixel_x = 12; + pixel_y = 4 + }, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter1) +"hK" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical, +/obj/item/device/multitool, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter1) +"hM" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter1) +"hN" = ( +/obj/structure/rack, +/obj/item/tank/internals/oxygen, +/obj/item/device/radio, +/obj/item/clothing/mask/gas, +/turf/open/floor/plasteel/blue/corner{ + dir = 4; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"hO" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/storage/toolbox/emergency, +/obj/item/wrench, +/turf/open/floor/plasteel/darkblue/side{ + dir = 9; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"hP" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + id = "caravantrade1_bridge"; + name = "Ship Blast Door Control" + }, +/turf/open/floor/plasteel/darkblue/side{ + dir = 5; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter1) +"hQ" = ( +/obj/structure/shuttle/engine/propulsion/burst/left{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"hS" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged5" + }, +/area/shuttle/caravan/freighter2) +"hT" = ( +/obj/effect/turf_decal/bot_white, +/obj/structure/closet/crate/secure/gear, +/obj/item/ammo_casing/shotgun/ion, +/obj/item/ammo_casing/shotgun/pulseslug, +/obj/item/ammo_casing/shotgun/dragonsbreath, +/obj/item/ammo_casing/shotgun/techshell, +/obj/item/ammo_casing/shotgun/techshell, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"hU" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged2" + }, +/area/shuttle/caravan/freighter2) +"hV" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/secure/gear, +/obj/item/storage/box/lethalshot, +/obj/item/ammo_casing/shotgun/frag12, +/obj/item/ammo_casing/shotgun/frag12, +/obj/item/ammo_casing/shotgun/frag12, +/obj/item/ammo_casing/shotgun/frag12, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"hW" = ( +/obj/effect/turf_decal/bot_white, +/obj/structure/closet/crate/secure/gear, +/obj/machinery/button/door{ + id = "caravantrade2_cargo_port"; + name = "Cargo Blast Door Control"; + pixel_y = 24 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/item/ammo_box/c10mm, +/obj/item/ammo_box/magazine/m10mm{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/ammo_box/magazine/m10mm, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"hX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/sign/warning/vacuum{ + pixel_x = -32; + pixel_y = 32 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"hY" = ( +/obj/structure/rack, +/obj/item/weldingtool, +/obj/item/crowbar, +/obj/item/wirecutters, +/obj/item/wrench, +/obj/item/screwdriver{ + pixel_y = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"hZ" = ( +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/item/wrench, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter3) +"ia" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged2" + }, +/area/shuttle/caravan/freighter3) +"ib" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/obj/structure/closet/crate/secure/plasma, +/obj/item/tank/internals/plasma/full, +/obj/item/stack/sheet/mineral/plasma{ + amount = 25 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter3) +"ic" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged5" + }, +/area/shuttle/caravan/freighter3) +"id" = ( +/obj/effect/turf_decal/box/white/corners, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"ie" = ( +/obj/machinery/airalarm/all_access{ + dir = 8; + pixel_x = 24 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter3) +"if" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"ig" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/mob_spawn/human/corpse/cargo_tech, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"ih" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/frame/computer{ + dir = 8 + }, +/obj/item/shard, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged3" + }, +/area/shuttle/caravan/freighter3) +"ii" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter1) +"ij" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/airless{ + icon_state = "floorscorched1" + }, +/area/shuttle/caravan/freighter1) +"ik" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /mob/living/simple_animal/hostile/syndicate/ranged/space{ environment_smash = 0; name = "Syndicate Salvage Worker" }, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/unpowered/no_grav) -"dA" = ( -/obj/machinery/computer{ +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter1) +"il" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter1) +"im" = ( +/obj/item/stack/sheet/mineral/titanium, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged1" + }, +/area/shuttle/caravan/freighter1) +"in" = ( +/obj/effect/turf_decal/bot_white, +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel/vault/airless, +/area/shuttle/caravan/freighter1) +"io" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"ip" = ( +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"iq" = ( +/obj/machinery/power/smes{ + charge = 0 + }, +/obj/structure/cable/yellow, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"is" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "damaged2" + }, +/area/shuttle/caravan/freighter2) +"it" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter2) +"iu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged3" + }, +/area/shuttle/caravan/freighter2) +"iv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/blue/side{ + dir = 4; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter2) +"ix" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/airless{ + icon_state = "floorscorched1" + }, +/area/shuttle/caravan/freighter2) +"iy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/fluff/broken_flooring{ + icon_state = "pile" + }, +/turf/open/floor/plating/airless{ + icon_state = "platingdmg1" + }, +/area/shuttle/caravan/freighter2) +"iz" = ( +/obj/item/shard, +/turf/open/floor/plating/airless{ + icon_state = "platingdmg3" + }, +/area/shuttle/caravan/freighter3) +"iA" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plating/airless{ + icon_state = "platingdmg1" + }, +/area/shuttle/caravan/freighter3) +"iB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter3) +"iC" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless{ + icon_state = "floorscorched1" + }, +/area/shuttle/caravan/freighter3) +"iD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/mob/living/simple_animal/hostile/syndicate/melee/space{ + environment_smash = 0; + name = "Syndicate Salvage Worker" + }, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter3) +"iF" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"iH" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/turf/open/floor/plasteel/darkblue/side{ + dir = 10; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter3) +"iI" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 4 + }, +/obj/structure/closet/crate, +/obj/item/stack/sheet/mineral/uranium{ + amount = 10 + }, +/obj/item/stack/sheet/mineral/uranium{ + amount = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"iJ" = ( +/obj/effect/turf_decal/box/white/corners{ dir = 1 }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"dC" = ( -/obj/machinery/computer{ +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate, +/obj/item/stack/sheet/mineral/gold{ + amount = 25 + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"iL" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 4 + }, +/obj/structure/closet/crate, +/obj/item/stack/sheet/rglass{ + amount = 20 + }, +/obj/item/stack/sheet/rglass{ + amount = 20 + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"iM" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"iN" = ( +/obj/item/stack/sheet/metal/fifty, +/turf/open/floor/plasteel/airless{ + icon_state = "floorscorched2" + }, +/area/shuttle/caravan/freighter1) +"iO" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 4 + }, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged4" + }, +/area/shuttle/caravan/freighter1) +"iP" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged5" + }, +/area/shuttle/caravan/freighter1) +"iR" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) +"iS" = ( +/obj/structure/girder, +/turf/open/floor/plating/airless{ + icon_state = "platingdmg1" + }, +/area/shuttle/caravan/freighter1) +"iT" = ( +/obj/machinery/space_heater, +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"iU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter2) +"iV" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 4 + }, +/obj/structure/closet/crate/secure/weapon, +/obj/item/gun/ballistic/shotgun/riot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/ballistic/shotgun/riot, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"iW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/secure/weapon, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/item/gun/syringe/rapidsyringe, +/obj/item/gun/syringe/syndicate{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"iX" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"iY" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/plasteel/blue/corner{ + dir = 4; + initial_gas_mix = "TEMP=2.7" + }, +/area/shuttle/caravan/freighter2) +"ja" = ( +/obj/effect/turf_decal/bot_white, +/obj/structure/closet/crate/secure/engineering, +/obj/item/organ/cyberimp/arm/toolset, +/obj/item/organ/cyberimp/eyes/hud/medical, +/obj/item/organ/cyberimp/brain/anti_stun, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"jb" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged3" + }, +/area/shuttle/caravan/freighter3) +"jc" = ( +/obj/effect/turf_decal/bot_white, +/obj/structure/closet/crate/secure/plasma, +/obj/item/mecha_parts/mecha_equipment/weapon/energy/plasma, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"jd" = ( +/obj/effect/turf_decal/bot_white, +/obj/machinery/light/small, +/obj/machinery/button/door{ + id = "caravantrade3_cargo_starboard"; + name = "Cargo Blast Door Control"; + pixel_y = -24 + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"je" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/sign/warning/vacuum{ + pixel_x = -32; + pixel_y = -32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"jg" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/mineral/silver{ + amount = 25 + }, +/obj/item/stack/sheet/mineral/silver{ + amount = 25 + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"jh" = ( +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"ji" = ( +/mob/living/simple_animal/hostile/syndicate/melee/space{ + environment_smash = 0; + name = "Syndicate Salvage Worker" + }, +/turf/open/floor/plasteel/vault/airless, +/area/shuttle/caravan/freighter1) +"jj" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"jk" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/mineral/titanium{ + amount = 20 + }, +/obj/item/stack/sheet/mineral/titanium{ + amount = 20 + }, +/turf/open/floor/plasteel/vault/airless, +/area/shuttle/caravan/freighter1) +"jl" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen"; + opened = 1 + }, +/obj/item/stack/sheet/metal/fifty, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"jm" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged2" + }, +/area/shuttle/caravan/freighter1) +"jp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/item/wrench, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"jq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter2) +"jr" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"js" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"jt" = ( +/obj/effect/turf_decal/box/white/corners, +/obj/structure/closet/crate/secure/weapon, +/obj/item/gun/energy/e_gun/mini{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/energy/e_gun/mini, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"ju" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/all_access{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter2) +"jv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"jy" = ( +/obj/machinery/door/poddoor{ + id = "caravantrade3_cargo_starboard"; + name = "Cargo Blast Door" + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter3) +"jz" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"jA" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/secure/engineering, +/obj/item/wrench/caravan, +/obj/item/wirecutters/caravan, +/obj/item/crowbar/red/caravan, +/obj/item/screwdriver/caravan, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter3) +"jB" = ( +/turf/open/floor/plasteel/vault/airless, +/area/shuttle/caravan/freighter1) +"jC" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"jD" = ( +/obj/effect/turf_decal/box/white/corners, +/obj/structure/closet/crate, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"jE" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged3" + }, +/area/shuttle/caravan/freighter1) +"jF" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/obj/structure/closet/crate, +/obj/item/stack/sheet/plasteel/twenty, +/obj/item/stack/sheet/plasteel/twenty, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged5" + }, +/area/shuttle/caravan/freighter1) +"jH" = ( +/obj/machinery/atmospherics/components/unary/tank/air{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"jI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/airless, +/area/shuttle/caravan/freighter2) +"jJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter2) +"jK" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/airless{ + icon_state = "floorscorched1" + }, +/area/shuttle/caravan/freighter2) +"jL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/mob/living/simple_animal/hostile/pirate/space/ranged{ + environment_smash = 0 + }, +/turf/open/floor/plasteel/airless/floorgrime, +/area/shuttle/caravan/freighter2) +"jN" = ( +/turf/open/floor/plasteel/airless{ + icon_state = "floorscorched1" + }, +/area/shuttle/caravan/freighter2) +"jO" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_animal/hostile/pirate/space/ranged{ + environment_smash = 0 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"jP" = ( +/obj/structure/table/reinforced, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/item/paper_bin{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/pen{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/folder/yellow{ + pixel_x = -6 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"jQ" = ( +/obj/machinery/door/poddoor{ + id = "caravantrade1_cargo"; + name = "Cargo Blast Door" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) +"jR" = ( +/obj/machinery/door/poddoor{ + id = "caravantrade1_cargo"; + name = "Cargo Blast Door" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless{ + icon_state = "platingdmg3" + }, +/area/shuttle/caravan/freighter1) +"jS" = ( +/obj/machinery/door/poddoor{ + id = "caravantrade1_cargo"; + name = "Cargo Blast Door" + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter1) +"jT" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless{ + icon_state = "platingdmg3" + }, +/area/shuttle/caravan/freighter1) +"jV" = ( +/obj/structure/shuttle/engine/propulsion/burst/right{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"jW" = ( +/obj/effect/turf_decal/bot_white/left, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/button/door{ + id = "caravantrade2_cargo_starboard"; + name = "Cargo Blast Door Control"; + pixel_y = -24 + }, +/obj/machinery/light/small, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"jX" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"jY" = ( +/obj/effect/turf_decal/bot_white, +/obj/structure/closet/crate/secure/gear, +/obj/item/ammo_box/a40mm, +/obj/item/ammo_box/a40mm, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"jZ" = ( +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"ka" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/button/door{ + id = "caravantrade2_cargo_starboard"; + name = "Cargo Blast Door Control"; + pixel_y = -24 + }, +/obj/machinery/light/small, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"kb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/sign/warning/vacuum{ + pixel_x = -32; + pixel_y = -32 + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter2) +"kc" = ( +/obj/structure/rack, +/obj/effect/decal/cleanable/dirt, +/obj/item/tank/internals/oxygen, +/obj/item/device/radio, +/obj/item/clothing/mask/gas, +/turf/open/floor/plasteel/airless{ + icon_state = "damaged5" + }, +/area/shuttle/caravan/freighter2) +"kd" = ( +/obj/structure/grille/broken, +/turf/open/floor/plating/airless{ + icon_state = "platingdmg2" + }, +/area/shuttle/caravan/freighter2) +"ke" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor{ + id = "caravantrade2_cargo_starboard"; + name = "Cargo Blast Door" + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"kf" = ( +/obj/machinery/door/poddoor{ + id = "caravantrade2_cargo_starboard"; + name = "Cargo Blast Door" + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/freighter2) +"kg" = ( +/obj/machinery/porta_turret/syndicate/energy{ + dir = 1; + icon_state = "standard_lethal"; + mode = 1 + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/caravan/syndicate2) +"kh" = ( +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/caravan/syndicate1) +"ki" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/caravan/syndicate1) +"kj" = ( +/obj/machinery/porta_turret/syndicate/energy{ + dir = 4; + icon_state = "standard_lethal"; + mode = 1 + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/caravan/syndicate1) +"kk" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/caravan/syndicate2) +"kl" = ( +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/caravan/syndicate2) +"km" = ( +/obj/machinery/camera/xray{ + c_tag = "External View"; + dir = 1; + network = list("caravansyndicate2"); + pixel_y = 32 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/caravan/syndicate2) +"kn" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 8 + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/caravan/syndicate1) +"ko" = ( +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/caravan/syndicate3) +"kp" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/caravan/syndicate3) +"kq" = ( +/obj/machinery/porta_turret/syndicate/energy{ + dir = 1; + icon_state = "standard_lethal"; + mode = 1 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/caravan/syndicate3) +"kr" = ( +/obj/machinery/door/airlock/hatch{ + id_tag = "caravansyndicate3_bolt_port"; + name = "External Airlock"; + normalspeed = 0; + req_access_txt = "150" + }, +/obj/docking_port/stationary{ + dir = 2; + dwidth = 6; + height = 7; + id = "caravansyndicate3_ambush"; + name = "Trade Route"; + width = 15 + }, +/obj/docking_port/mobile{ + dir = 2; + dwidth = 6; + height = 7; + id = "caravansyndicate3"; + name = "Syndicate Drop Ship"; + port_direction = 8; + preferred_direction = 4; + width = 15 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/syndicate3) +"ks" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/obj/machinery/door/poddoor{ + id = "caravansyndicate3_bridge" + }, +/turf/open/floor/plating, +/area/shuttle/caravan/syndicate3) +"kt" = ( +/obj/machinery/computer/shuttle/caravan/syndicate2, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate2) +"ku" = ( +/obj/structure/shuttle/engine/propulsion/burst/left{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/syndicate3) +"kv" = ( +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/syndicate3) +"kw" = ( +/obj/structure/chair, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + dir = 8; + name = "Syndicate Drop Ship APC"; + pixel_x = -24; + req_access = list(150) + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/shuttle/caravan/syndicate3) +"kx" = ( +/obj/structure/chair, +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = list(150) + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/shuttle/caravan/syndicate3) +"ky" = ( +/obj/structure/chair, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/shuttle/caravan/syndicate3) +"kz" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/closet/syndicate/personal{ + anchored = 1 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate3) +"kB" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/closet/syndicate{ + anchored = 1 + }, +/obj/structure/sign/warning/vacuum{ + pixel_y = 32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate3) +"kC" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel/darkred/side{ + dir = 10 + }, +/area/shuttle/caravan/syndicate3) +"kD" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + id = "caravansyndicate3_bridge"; + name = "Bridge Blast Door Control"; + pixel_x = -16; + pixel_y = 5; + req_access_txt = "150" + }, +/obj/machinery/button/door{ + id = "caravansyndicate3_bolt_bridge"; + name = "Bridge Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -16; + pixel_y = -5; + req_access_txt = "150"; + specialfunctions = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/darkred/side{ + dir = 6 + }, +/area/shuttle/caravan/syndicate3) +"kE" = ( +/obj/structure/shuttle/engine/propulsion/burst, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/caravan/syndicate2) +"kF" = ( +/obj/machinery/button/door{ + id = "caravansyndicate2_bolt"; + name = "External Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + req_access_txt = "150"; + specialfunctions = 4 + }, +/obj/machinery/computer/camera_advanced/shuttle_docker/caravan/syndicate2{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate2) +"kG" = ( +/obj/machinery/door/airlock/hatch{ + id_tag = "caravansyndicate1_bolt"; + locked = 1; + name = "External Airlock"; + normalspeed = 0; + req_access_txt = "150" + }, +/obj/effect/decal/cleanable/dirt, +/obj/docking_port/stationary{ + dir = 4; + dwidth = 4; + height = 5; + id = "caravansyndicate1_ambush"; + name = "Trade Route"; + width = 9 + }, +/obj/docking_port/mobile{ + callTime = 50; + dir = 4; + dwidth = 4; + height = 5; + id = "caravansyndicate1"; + ignitionTime = 25; + name = "Syndicate Fighter"; + port_direction = 2; + preferred_direction = 4; + width = 9 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/syndicate1) +"kH" = ( +/obj/machinery/computer/security{ + dir = 8; + network = list("caravansyndicate2") + }, +/obj/machinery/power/apc/highcap/fifteen_k{ + dir = 2; + name = "Syndicate Fighter APC"; + pixel_y = -24; + req_access = list(150) + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate2) +"kI" = ( +/obj/machinery/button/door{ + id = "caravansyndicate1_bolt"; + name = "External Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + req_access_txt = "150"; + specialfunctions = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/camera_advanced/shuttle_docker/caravan/syndicate1, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate1) +"kJ" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/syndicate3) +"kL" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/darkred/side{ + dir = 1 + }, +/area/shuttle/caravan/syndicate3) +"kM" = ( +/turf/open/floor/plasteel/darkred/side{ + dir = 1 + }, +/area/shuttle/caravan/syndicate3) +"kN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/syndicate{ + anchored = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate3) +"kO" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24; + req_access = list(150) + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/syndicate3) +"kP" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/structure/closet/syndicate{ + anchored = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate3) +"kQ" = ( +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24; + req_access = list(150) + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/syndicate3) +"kR" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/obj/machinery/turretid{ + ailock = 1; + control_area = null; + desc = "A specially designed set of turret controls. Looks to be covered in protective casing to prevent AI interfacing."; + icon_state = "control_kill"; + lethal = 1; + name = "Shuttle turret control"; + pixel_y = 34; + req_access = list(150) + }, +/turf/open/floor/plasteel/darkred/corner{ + dir = 4 + }, +/area/shuttle/caravan/syndicate3) +"kS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/camera_advanced/shuttle_docker/caravan/syndicate3{ + dir = 8 + }, +/turf/open/floor/plasteel/darkred/side{ + dir = 10 + }, +/area/shuttle/caravan/syndicate3) +"kT" = ( +/obj/machinery/door/airlock/hatch{ + id_tag = "caravansyndicate2_bolt"; + locked = 1; + name = "External Airlock"; + normalspeed = 0; + req_access_txt = "150" + }, +/obj/docking_port/stationary{ + dir = 1; + dwidth = 4; + height = 5; + id = "caravansyndicate2_ambush"; + name = "Trade Route"; + width = 9 + }, +/obj/docking_port/mobile{ + callTime = 50; + dir = 1; + dwidth = 4; + height = 5; + id = "caravansyndicate2"; + ignitionTime = 25; + name = "Syndicate Fighter"; + port_direction = 2; + preferred_direction = 1; + width = 9 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/syndicate2) +"kU" = ( +/obj/machinery/door/airlock/external{ + cyclelinkeddir = 2; + id_tag = "caravantrade1_bolt"; + locked = 1 + }, +/obj/docking_port/stationary{ + dir = 2; + dwidth = 11; + height = 11; + id = "caravantrade1_ambush"; + name = "Trade Route"; + width = 27 + }, +/obj/docking_port/mobile{ + callTime = 250; + dir = 2; + dwidth = 11; + height = 11; + id = "caravantrade1"; + movement_force = list("KNOCKDOWN" = 0, "THROW" = 0); + name = "Small Freighter"; + port_direction = 8; + preferred_direction = 4; + width = 27 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/freighter1) +"kV" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/turretid{ + ailock = 1; + control_area = null; + desc = "A specially designed set of turret controls. Looks to be covered in protective casing to prevent AI interfacing."; + icon_state = "control_kill"; + lethal = 1; + name = "Shuttle turret control"; + pixel_x = 32; + pixel_y = -28; + req_access = list(150) + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/mob/living/simple_animal/hostile/syndicate{ + environment_smash = 0; + name = "Syndicate Salvage Pilot" + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate1) +"kW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/shuttle/caravan/syndicate1{ dir = 8 }, /turf/open/floor/mineral/plastitanium, -/area/ruin/powered) +/area/shuttle/caravan/syndicate1) +"kX" = ( +/obj/machinery/camera/xray{ + c_tag = "External View"; + dir = 4; + network = list("caravansyndicate1"); + pixel_x = 32 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/caravan/syndicate1) +"kZ" = ( +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/syndicate3) +"la" = ( +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/syndicate3) +"lb" = ( +/obj/machinery/door/airlock/hatch{ + name = "Ready Room"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/syndicate3) +"lc" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/syndicate3) +"ld" = ( +/obj/machinery/door/airlock/hatch{ + id_tag = "caravansyndicate3_bolt_bridge"; + locked = 1; + name = "Bridge"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/syndicate3) +"le" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/mob/living/simple_animal/hostile/syndicate{ + environment_smash = 0; + name = "Syndicate Salvage Pilot" + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/syndicate3) +"lf" = ( +/obj/machinery/computer/shuttle/caravan/syndicate3{ + dir = 8 + }, +/turf/open/floor/plasteel/darkred/side{ + dir = 8 + }, +/area/shuttle/caravan/syndicate3) +"lg" = ( +/obj/machinery/power/apc/highcap/fifteen_k{ + dir = 8; + name = "Syndicate Fighter APC"; + pixel_x = -24; + req_access = list(150) + }, +/obj/machinery/computer/security{ + dir = 1; + network = list("caravansyndicate1") + }, +/obj/structure/cable/yellow, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate1) +"li" = ( +/turf/open/floor/plasteel/darkred/side, +/area/shuttle/caravan/syndicate3) +"lj" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/darkred/side, +/area/shuttle/caravan/syndicate3) +"lk" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/syndicate{ + anchored = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate3) +"ll" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/syndicate3) +"lm" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/syndicate3) +"ln" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/open/floor/plasteel/darkred/corner, +/area/shuttle/caravan/syndicate3) +"lo" = ( +/obj/machinery/computer/crew{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/darkred/side{ + dir = 9 + }, +/area/shuttle/caravan/syndicate3) +"lp" = ( +/obj/structure/shuttle/engine/propulsion/burst/right{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/syndicate3) +"lq" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/shuttle/caravan/syndicate3) +"lr" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/shuttle/caravan/syndicate3) +"ls" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/shuttle/caravan/syndicate3) +"lt" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/syndicate/personal{ + anchored = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate3) +"lv" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/sign/warning/vacuum{ + pixel_y = -32 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/syndicate{ + anchored = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate3) +"lw" = ( +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/emergency, +/obj/item/wrench, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/darkred/side{ + dir = 9 + }, +/area/shuttle/caravan/syndicate3) +"lx" = ( +/obj/structure/table/reinforced, +/obj/item/storage/firstaid/regular, +/obj/item/device/assembly/flash/handheld, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/darkred/side{ + dir = 5 + }, +/area/shuttle/caravan/syndicate3) +"ly" = ( +/obj/machinery/porta_turret/syndicate/energy{ + dir = 2; + icon_state = "standard_lethal"; + mode = 1 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/caravan/syndicate3) +"lB" = ( +/turf/closed/mineral/random/high_chance, +/area/ruin/unpowered) +"lD" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless{ + icon_state = "platingdmg1" + }, +/area/ruin/unpowered) +"lE" = ( +/obj/machinery/light/small, +/obj/effect/turf_decal/box/white/corners, +/obj/machinery/button/door{ + id = "caravantrade1_cargo"; + name = "Cargo Blast Door Control"; + pixel_y = -24 + }, +/obj/structure/closet/crate, +/obj/item/stack/sheet/mineral/diamond{ + amount = 5 + }, +/turf/open/floor/plasteel/airless/dark, +/area/shuttle/caravan/freighter1) +"tH" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 8 + }, +/turf/closed/wall/mineral/plastitanium, +/area/ruin/unpowered) (1,1,1) = {" aa @@ -1167,6 +3894,11 @@ aa aa aa aa +bt +bt +bt +aa +aa aa aa aa @@ -1214,6 +3946,11 @@ aa aa aa aa +bt +bt +bt +bt +aa aa aa aa @@ -1260,7 +3997,12 @@ aa aa aa aa -aa +bt +bt +lB +lB +bt +bt aa aa aa @@ -1307,7 +4049,12 @@ aa aa aa aa -aa +bt +bt +lB +lB +bt +bt aa aa aa @@ -1350,11 +4097,16 @@ aa aa aa aa +bl aa aa aa -aa -aa +bt +bt +lB +lB +bt +bt aa aa aa @@ -1401,7 +4153,12 @@ aa aa aa aa -aa +bt +bt +lB +bt +bt +bt aa aa aa @@ -1449,6 +4206,11 @@ aa aa aa aa +bt +bt +bt +bt +aa aa aa aa @@ -1510,17 +4272,22 @@ aa aa aa aa -ab -ar -ab -ar -ab aa aa aa aa aa aa +kn +ki +kG +ki +kn +aa +aa +aa +aa +aa aa aa aa @@ -1556,19 +4323,24 @@ aa aa aa aa -cT -ab -as -ab -as -ab -cT aa aa aa -aC -aC -aC +aa +aa +aa +kn +ki +kI +kV +lg +ki +kn +aa +aa +aa +aa +aa aa aa aa @@ -1587,6 +4359,9 @@ aa aa aa aa +lB +lB +lB aa aa aa @@ -1604,18 +4379,20 @@ aa aa aa aa -ab -dm -dt -dw -ab aa -aC -aC +kh +ki +ki +ki +kW +ki +ki +ki +kh +aa +aa +aa aa -aC -aC -aC aa aa aa @@ -1634,12 +4411,36 @@ aa aa aa aa +lB +lB +lB +lB +aa +aa +aa +aa +aa +fK +ge +ge +ge +hD +fG aa aa aa aa aa aa +ki +kh +aa +kj +kX +kj +aa +kh +ki aa aa aa @@ -1648,25 +4449,6 @@ aa aa aa aa -aa -aa -aa -ab -dm -cs -dw -ab -aa -aC -aC -aC -aC -aC -aC -aa -aa -aa -aa "} (12,1,1) = {" aa @@ -1678,9 +4460,31 @@ aa aa aa aa -aC -aC -aC +aa +aa +aa +aa +lB +lB +lB +aa +aa +aa +aa +fG +fL +fL +fL +fL +fL +fH +fK +ge +hD +aa +aa +aa +kj aa aa aa @@ -1688,6 +4492,7 @@ aa aa aa aa +kj aa aa aa @@ -1696,24 +4501,6 @@ aa aa aa aa -aa -aa -cS -cs -cs -cs -cS -aa -aa -aC -aC -aC -aC -aa -aa -aa -aa -aa "} (13,1,1) = {" aa @@ -1721,13 +4508,7 @@ aa aa aa aa -aa -aa -aa -aa -aC -aC -aC +bl aa aa aa @@ -1742,19 +4523,30 @@ aa aa aa aa +fH +ay +gf +gD +hb +hE +fH +fL +fL +fL +fG +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa -ab -dn -cs -dx -ab aa aa -aC -aC -aC aa aa aa @@ -1771,12 +4563,6 @@ aa aa aa aa -aH -aH -aC -aC -aC -aC aa aa aa @@ -1789,14 +4575,25 @@ aa aa aa aa +fH +fN +gg +ax +hc +hF +fH +iI +jg +jz +fH +aa +aa +aa +aa +aa aa aa aa -ab -cs -du -cs -ab aa aa aa @@ -1818,13 +4615,6 @@ aa aa aa aa -aH -aH -aC -aC -aC -aC -aC aa aa aa @@ -1837,13 +4627,25 @@ aa aa aa aa +fH +fO +fH +fH +fH +fO +fH +iJ +jh +lE +fH +aa +aa +aa +aa +aa +aa aa aa -ab -ce -dC -ce -ab aa aa aa @@ -1864,14 +4666,6 @@ aa aa aa aa -aC -aH -aH -aC -aC -aC -aC -aC aa aa aa @@ -1885,12 +4679,17 @@ aa aa aa aa -aa -ae +fH +fP +az aB -aB -aB -bb +fH +hG +ii +be +ji +jB +jQ aa aa aa @@ -1902,6 +4701,14 @@ aa aa aa aa +aa +aa +aa +aa +bt +bt +aa +aa "} (17,1,1) = {" aa @@ -1911,30 +4718,30 @@ aa aa aa aa -aC -aH -aH -aC -aC -aC -aC -aC -aH -aH -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aa +aa +aa +aa +aD +aa +aa +aa +aa +aa +aa +aa +aa +fI +fQ +fH +fH +fH +hH +ij +iL +jj +jC +jR aa aa aa @@ -1948,6 +4755,11 @@ aa aa aa aa +bt +bt +bt +bt +bt aa "} (18,1,1) = {" @@ -1958,30 +4770,30 @@ aa aa aa aa +aa +aa +br +aa +aa +aa +aa +bt +aa +aa +aa +aa +aa +fH +fR +aA aC -aH -aH -aC -aC -aC -aC -aC -aH -aH -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +fG +hI +he +iM +jj +jD +jS aa aa aa @@ -1995,6 +4807,11 @@ aa aa aa aa +bt +bt +lB +bt +bt aa "} (19,1,1) = {" @@ -2003,18 +4820,11 @@ aa aa aa aa -aa -aa -aC -aC -aH -aH -aC -aC -aC -aC -aH -aH +tH +dE +dL +dE +bJ aa aa aa @@ -2022,15 +4832,20 @@ aa aa aa aa -bl aa aa aa -bl -aa -aa -aa -bl +fH +fS +fH +fH +fH +hJ +ik +iN +jk +jE +jQ aa aa aa @@ -2043,25 +4858,28 @@ aa aa aa aa +bt +bt +lB +lB +bt +bt +aa "} (20,1,1) = {" aa aa aa aa +tH +dE +dF +eu +eG +bJ +bJ aa -aa -aa -aC -aC -aC -aH -aH -aC -aC -aC -aH -aH +bt aa aa aa @@ -2069,15 +4887,17 @@ aa aa aa aa -bl -ca -co -cF -bl -ca -co -cF -bl +fH +fT +fH +aF +fH +hK +il +iO +jl +jF +jS aa aa aa @@ -2090,41 +4910,48 @@ aa aa aa aa +bt +bt +lB +lB +bt +aa +aa "} (21,1,1) = {" aa aa aa +bJ +dE +dE +dE +gk +lD +bs +bJ +aa +bt +bt aa aa aa aa -aC -aC -aC -aH -aH -aC -aC -aC -aH +aa +aa +fI +fU +fH aH +fH +fH +ij +iP +jm +am +jT aa -aa -aa -aa -aa -aa -aa -bl -cb -cb -cb -bl -cb -cb -cb -bl +aD aa aa aa @@ -2135,6 +4962,11 @@ aa aa aa aa +bt +bt +bt +bt +bt aa aa "} @@ -2142,36 +4974,34 @@ aa aa aa aa +dE +bJ +aa +bJ +bs +bs +aa +ae aa aa aa aa -aC -aC -aC -aC -aH -aH -aC -aC +bt +aa +aa +aa +aa +fI +fV +gj +gJ +hd +aX +im bf -aH -aa -aa -aa -aa -aa -aa -aa -bl -bv -bw -bw -bw -bw -bw -bw -bl +al +aq +ar aa aa aa @@ -2184,41 +5014,53 @@ aa aa aa aa +aa +aa +bt +bt +aa +aa +aa "} (23,1,1) = {" aa aa aa +bJ aa aa aa -aa -aa -aC -aC -aC -aC -aH -aC -aH -aH -aH -aa -aa -aa -aa -aa -aa +ab aa bs -bC -cv -cK -bG -bG -bw -bw -bl +ac +aD +aa +aa +aa +aa +aa +aa +aa +aa +fI +fW +gl +aJ +he +fH +in +iR +am +aq +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -2235,6 +5077,35 @@ aa (24,1,1) = {" aa aa +br +aa +aa +aa +aa +aa +ac +aa +dD +ex +bt +bt +aa +aa +aa +aa +aa +aa +fH +fX +gm +fH +hf +fH +fH +iS +br +aa +aD aa aa aa @@ -2242,30 +5113,6 @@ aa aa aa aa -aC -aC -aC -aH -aC -aH -aH -aa -aa -aa -aa -aa -aa -bA -aa -aa -cg -ci -bE -bG -dg -bG -cc -bl aa aa aa @@ -2282,6 +5129,36 @@ aa (25,1,1) = {" aa aa +bt +bt +aa +aa +aa +aa +ad +bt +dD +bt +bt +bt +bt +bt +aa +aa +aa +aa +fH +fH +fH +fH +hg +hM +fH +aa +aa +aE +aa +ao aa aa aa @@ -2289,37 +5166,12 @@ aa aa aa aa -aC -aC -aC -aH -aH -aH -aH -aa -aa -aa -aa -aa -aa -aa -aD -aT -br -ci -cL -bG -dh -cG -bw -bm -aa -aa -aa -aa -aa aa aa +bt +bt +bt +bt aa aa aa @@ -2328,6 +5180,32 @@ aa "} (26,1,1) = {" aa +bt +bt +bt +aa +aa +aa +ew +bt +bt +dD +bt +bt +bt +bt +bt +aa +aa +aa +aa +kU +fY +gn +aK +hh +hN +fI aa aa aa @@ -2338,36 +5216,15 @@ aa aa aa aa -aC -aC -aH -aH -aC -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -cw -ci -bE -bG -do -bw -bm -aa -aa -aa -aa -aa -aa aa aa +bt +bt +bt +bt +bt +bt +bt aa aa aa @@ -2381,32 +5238,26 @@ aa aa aa aa +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt aa aa aa -aa -aC -aC -aC -aC -aa -aa -aa -aa -aa -aa -bq -aa -aa -aa -bs -cx -cM -cU -bG -bG -bw -bm +fG +fH +fH +fH +hi +fH +fH aa aa aa @@ -2417,10 +5268,48 @@ aa aa aa aa +as +bt +bt +bt +bt +bt +bt +bt +bt +aa +aa aa aa "} (28,1,1) = {" +bt +aa +aa +aa +dD +dD +bt +bt +bt +lB +lB +bt +bt +bt +bt +bt +bt +aa +aa +aa +aa +fH +go +aL +hj +hO +fH aa aa aa @@ -2431,11 +5320,101 @@ aa aa aa aa +bt +bt +bt +dD +dD +dD +dD +bt +bt +bt +bt +aa +aa +"} +(29,1,1) = {" +aa +aa +aa +dD +bt +bt +bt +bt +lB +lB +lB +lB +bt +bt +bt +bt +bt +aa +aa +aa +aa +fI +gp +gN +hk +hP +fI +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +bt +bt +bt +dD +dD +bt +dD +dD +bt +bt +bt +aa +aa +"} +(30,1,1) = {" +aa +aa +aa +bt +bt +bt +bt +lB +lB +lB +lB +lB +bt +bt +bt +bt +aa +aa +aa +aa +aa +fI +fI +gO +hl +fI +fI aa -aC -aC -aC -aC aa aa aa @@ -2445,119 +5424,17 @@ aa aa aa br -aa -bs -ci -cL -bG -di -dp -bx -bm -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(29,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ch -cy -bE -bl -cm -bl -bl -bl -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(30,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aI -aN -aI -aN -aI -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -bq -aa -bB -cz -bG -bG -dj -dq -bw -bO -aa -aa -aa -aa -aC -aa -aa -aC -aa -aa +bt +bt +dD +dD +bt +bt +bt +dD +bt +bt +bt aa aa "} @@ -2565,36 +5442,29 @@ aa aa aa aa +bt +bt +bt +lB +lB +lB +lB +lB +bt +bt +bt +bt aa aa aa aa aa -aI -aO -aI -aO -aI -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -bQ -ci -ci -bw -cV -bw -bw -bw -bl +aa +aa +fI +fI +fI +fI aa aa aa @@ -2605,6 +5475,18 @@ aa aa aa aa +bt +bt +bt +dD +dD +bt +bt +bt +dD +dD +bt +bt aa aa "} @@ -2612,16 +5494,18 @@ aa aa aa aa -aa -aa -aa -aa -aa -aI -aP -aV -bc -aI +bt +bt +bt +bt +lB +lB +lB +bt +bt +bt +bt +bt aa aa aa @@ -2633,42 +5517,47 @@ aa aa aa aa -bR -bz -cc -bN -bZ -cc -cE -bz -bp aa aa aa aa aa aa -aC aa aa aa aa +bt +bt +bt +bt +dD +bt +bt +bt +bt +dD +bt +bt +bt aa "} (33,1,1) = {" aa aa -aa -aa -aa -aa -aa -aa -aI -aQ -aW -bd -aI +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt aa aa aa @@ -2681,15 +5570,6 @@ aa aa aa aa -bp -bJ -bJ -bJ -bJ -bJ -bp -aa -aa aa aa aa @@ -2700,22 +5580,35 @@ aa aa aa aa +bt +bt +bt +dD +bt +bt +bt +bt +dD +dD +dD +bt aa "} (34,1,1) = {" aa aa -aa -aa -aa -aa -aa -aa -aJ -aR -aK -be -aJ +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt aa aa aa @@ -2739,30 +5632,34 @@ aa aa aa aa -aa -aC -aC -aC -aC -aa -aa -aa +bt +bt +bt +dD +dD +bt +bt +bt +bt +dD +dD +dD aa "} (35,1,1) = {" aa aa aa -aa -aa -aa -aa -aa -aI -aK -aK -aK -aI +bt +bt +bt +bt +bt +bt +bt +bt +bt +bt aa aa aa @@ -2788,12 +5685,17 @@ aa aa aa aa -aa -aC -aC -aa -aa -aa +bt +bt +dD +dD +bt +bt +bt +bt +bt +bt +bt aa "} (36,1,1) = {" @@ -2801,16 +5703,9 @@ aa aa aa aa -aa -aa -aa -aa -aK -aS -aK -be -aK -aD +bt +bt +bt aa aa aa @@ -2835,13 +5730,25 @@ aa aa aa aa -aC -aC aa aa aa aa aa +aa +aa +aa +aa +dD +dD +bt +bt +bt +bt +bt +bt +bt +aa "} (37,1,1) = {" aa @@ -2851,12 +5758,6 @@ aa aa aa aa -aD -aa -aT -aK -aS -aI aa aa aa @@ -2889,6 +5790,17 @@ aa aa aa aa +aa +dD +bt +bt +bt +bt +bt +bt +bt +bt +aa "} (38,1,1) = {" aa @@ -2900,10 +5812,6 @@ aa aa aa aa -aD -aK -aa -aa aa aa aa @@ -2935,6 +5843,15 @@ aa aa aa aa +bt +bt +bt +bt +bt +bt +bt +bt +bt aa "} (39,1,1) = {" @@ -2945,13 +5862,6 @@ aa aa aa aa -aE -aa -aa -aX -aD -aa -aT aa aa aa @@ -2983,6 +5893,18 @@ aa aa aa aa +aa +aa +bt +bt +bt +bt +bt +bt +bt +bt +aa +aa "} (40,1,1) = {" aa @@ -2991,12 +5913,13 @@ aa aa aa aa +dN +ea +em aa -aa -aa -aa -aX -aa +dN +ea +em aa aa aa @@ -3027,6 +5950,10 @@ aa aa aa aa +bt +bt +bt +bt aa aa aa @@ -3037,12 +5964,15 @@ aa aa aa aa -aa -aa -aa -aa -aa -aX +ch +dO +dO +dO +dB +dO +dO +dO +ch aa aa aa @@ -3073,6 +6003,8 @@ aa aa aa aa +bt +bt aa aa aa @@ -3083,20 +6015,17 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aX -aa -aa -aa -aa -aa -aa -aa +ch +dB +dP +eb +en +dB +eV +fk +ft +dB +ch aa aa aa @@ -3106,6 +6035,14 @@ aa aa aa aa +hm +hQ +io +io +io +io +jV +hm aa aa aa @@ -3130,20 +6067,17 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aX -aX -aa -aa -aa -aa -aa -aa +dB +dI +dQ +ec +eo +eK +eW +ec +fu +fC +dB aa aa aa @@ -3153,6 +6087,14 @@ aa aa aa aa +hn +hn +ip +ip +ip +ip +hn +hn aa aa aa @@ -3177,6 +6119,17 @@ aa aa aa aa +dB +dB +dR +ed +dB +dB +dB +ed +dR +dB +dB aa aa aa @@ -3184,23 +6137,16 @@ aa aa aa aa -aX -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +aa +aa +hn +aY +iq +iT +jp +jH +jW +hn aa aa aa @@ -3213,6 +6159,7 @@ aa aa aa aa +bl aa aa aa @@ -3224,20 +6171,17 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aX -aa -aa -aa -aa -aa -aa +dB +dJ +dS +ee +ep +dB +eX +fl +fv +dJ +dB aa aa aa @@ -3247,6 +6191,14 @@ aa aa aa aa +ho +hS +aP +iU +jq +jI +jX +ke aa aa aa @@ -3270,6 +6222,35 @@ aa aa aa aa +ch +dB +dB +dT +ef +eq +dB +eY +ef +fw +dB +dB +ch +bs +bs +bs +bs +bs +bs +bs +bs +hp +hT +is +iV +jr +jJ +jY +kf aa aa aa @@ -3278,30 +6259,6 @@ aa aa aa aa -aX -aa -aa -aa -aa -aa -aa -aa -aa -aa -aT -aa -aa -bl -aa -aa -aa -bl -aa -aa -aa -aa -aa -aa aa aa aa @@ -3317,6 +6274,35 @@ aa aa aa aa +aj +dG +dK +dU +at +er +dB +eZ +fm +fx +fD +dG +fF +af +af +af +ag +ah +af +af +af +hq +hU +it +iW +js +jK +jZ +ke aa aa aa @@ -3325,7 +6311,6 @@ aa aa aa aa -aX aa aa aa @@ -3334,29 +6319,6 @@ aa aa aa aa -aT -br -aa -bs -bS -cj -co -cF -bl -aa -aa -aa -aa -aa -aC -aC -aC -aC -aa -aa -aa -aa -aa aa aa "} @@ -3364,6 +6326,35 @@ aa aa aa aa +ch +dB +dB +dV +ef +es +dB +fa +au +fy +dB +dB +ch +bs +bs +bs +bs +bs +bs +bs +bs +hr +hV +iu +iX +jt +jL +jX +kf aa aa aa @@ -3372,7 +6363,6 @@ aa aa aa aa -aX aa aa aa @@ -3381,29 +6371,6 @@ aa aa aa aa -bk -aa -aE -aa -bl -cb -cb -cb -bl -aa -aa -aa -aa -aa -aC -aC -aC -aC -aa -aa -aa -aa -aa aa aa "} @@ -3412,14 +6379,34 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aX +dH +dJ +dW +eh +et +dB +fb +fo +fz +dJ +dH +aa +aa +aa +aa +aa +aa +aa +aa +aa +hn +hW +iv +iY +ju +bi +ka +hn aa aa aa @@ -3428,24 +6415,9 @@ aa aa aa aa -bl -bs -aD -bK -bT -ci -bw -bw -bl aa aa aa -aC -aC -aC -aC -aC -aC aa aa aa @@ -3459,14 +6431,35 @@ aa aa aa aa -aa -ab -aa -aa -aa -aa -ab -aX +ch +dB +dX +ei +dB +dB +dB +fp +dB +dB +ch +aa +aa +aa +aa +aa +aa +aa +aa +aa +hn +hn +aZ +hn +hn +hn +hn +hn +aa aa aa aa @@ -3475,25 +6468,9 @@ aa aa aa aa -bl -ci -bB -bB -bU -bE -bw -bH -bl aa aa aa -aC -aC -aC -aC -aC -aC -aC aa aa aa @@ -3507,13 +6484,41 @@ aa aa aa aa -ad -ar -ar -ar -ar -ad -aX +dB +dY +ej +ez +eL +fc +fq +fA +dB +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +hs +hX +ix +bg +jv +jN +kb +hs +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -3523,29 +6528,6 @@ aa aa aa bl -bu -bC -bC -bV -bG -cA -cc -bl -aa -aa -aC -aC -aC -aC -aC -aC -aC -aC -aa -aa -aa -aa -aa aa "} (52,1,1) = {" @@ -3553,14 +6535,38 @@ aa aa aa aa -ab -ad -as -as -as -as -ad -ad +aa +dB +dZ +ek +eB +eM +fd +fr +fB +dB +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ht +hY +iy +bs +bh +jO +kc +ht +aa +aa +aa +aa aa aa aa @@ -3569,27 +6575,8 @@ aa aa aa aa -bm -bv -bD -bE -bG -ck -cB -bw -bm aa aa -aC -aC -aC -aC -aC -aC -aC -aC -aC -aC aa aa aa @@ -3597,46 +6584,51 @@ aa "} (53,1,1) = {" aa -ab -ad -ab -ab -aj -at -aw -aw -at -aY -ad -ab -ab -ab +aa +aa +aa +aa +bb +dB +el +eC +eO +fe +fs +dB +bc +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +bs +dc +aa +an +jP +ht +ht +aa +aa +aa +aa +aa +aa +aa aa aa aa aa aa -bm -bw -bE -bG -bF -bG -bG -bw -bm aa aa -aH -aC -aC -aC -aC -aC -aC -aC -aC -aC aa aa aa @@ -3644,46 +6636,51 @@ aa "} (54,1,1) = {" aa -ab -af -af -ab -ag -at -aF -aL -at -ag -ab -af -af -ad aa aa aa aa aa -bn -bw -bF -bG -bW -cl -bG -bw -bm +ch +dB +dB +dB +ff +dB +ch +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aD +aa +aa +bs +aa +bs +kd +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa -aH -aC -aC -aC -aC -aH -aH -dz -aH -aC aa aa aa @@ -3691,46 +6688,51 @@ aa "} (55,1,1) = {" aa -ac -ag -ag -ai -ak -ag -ag -ag -ak -ag -ai -ag -ag -ac -bg -bg -bg -bj -bg -bn -bx -bG -bG -bX -bG -cC -bx -bm aa aa -aH -aH -aC -aC -aH -aH -aH -aH -aH -aC +aa +aa +aa +aa +dB +eD +eP +fg +dB +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aT +aa +aD +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -3738,46 +6740,51 @@ aa "} (56,1,1) = {" aa -ac -ag -ag -ai -ag -at -ag -ag -at -ag -ai -ag -ag -ac -bg -bh -bi -bg -bg -bl -bl -bl -bL -bl -cm -bl -bl -bl aa aa -aC -aH -aH -aH -dz -aC -aC -aH -dz -aC +aa +aa +aa +aa +dB +eE +eQ +fg +dB +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +dc +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -3785,46 +6792,51 @@ aa "} (57,1,1) = {" aa -ad -af -af -ad -al -at -ag -ag -at -al -ab -af -af -ad aa aa aa aa aa -bo -bw -bw -bM -bw -bw -bw -bw -bO +aa +dB +eF +eR +fh +dB +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +br +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa -aC -aC -dy -aH -aC -aC -aC -aH -aH -aC aa aa aa @@ -3832,46 +6844,51 @@ aa "} (58,1,1) = {" aa -ae -ab -ab -ad -am -ag -ag -ag -ag -am -ad -ab -ab -bb aa aa aa aa aa -bl -by -bH -bw -bY -bw -cD -bw -bl +aa +dB +eI +eS +fi +dB +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa -aC -aC -aC -aC -aC -aC -aC -aH -aC -aC aa aa aa @@ -3881,16 +6898,35 @@ aa aa aa aa -ah -ad -an -at -ag -ag -at -az -ad -ah +aa +aa +aa +aa +dH +eJ +eT +fj +dH +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -3898,26 +6934,12 @@ aa aa aa aa -bp -bz -bI -bN -bZ -cn -cE -bz -bp aa aa aa aa aa aa -aC -aC -aH -aH -aC aa aa aa @@ -3928,16 +6950,33 @@ aa aa aa aa -ad -ab -ao -at -ag -ag -at -aZ -ab -ad +aa +aa +aa +aa +dH +dH +eU +dH +dH +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -3946,13 +6985,6 @@ aa aa aa aa -bp -bJ -bJ -bJ -bJ -bJ -bp aa aa aa @@ -3960,11 +6992,6 @@ aa aa aa aa -aC -aC -aH -aC -aC aa aa aa @@ -3975,16 +7002,21 @@ aa aa aa aa -ah -ab -ap -ag -ak -ag -aF -ba -ab -ah +aa +aa +aa +aa +aa +dH +dH +dH +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -4022,16 +7054,21 @@ aa aa aa aa -ad -ab -aq -au -ag -ag -aM -az -ab -ad +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -4069,16 +7106,21 @@ aa aa aa aa -ae -ab -ab -ab -ag -ag -ab -ab -ab -bb +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -4117,14 +7159,6 @@ aa aa aa aa -ae -ad -av -ag -ag -aU -ad -bb aa aa aa @@ -4149,11 +7183,24 @@ aa aa aa aa -ab -ar -ab -ar -ab +aa +aa +aa +aa +aa +aa +aa +ku +kJ +kJ +kJ +lp +aa +aa +aa +aa +aa +aa aa aa aa @@ -4165,12 +7212,6 @@ aa aa aa aa -ab -aw -ag -ag -aw -ad aa aa aa @@ -4195,13 +7236,24 @@ aa aa aa aa -cT -ab -as -ab -as -ab -cT +aa +aa +aa +aa +aa +ko +kv +kv +kv +kv +kv +ko +aa +aa +aa +aa +aa +aa aa aa aa @@ -4212,12 +7264,6 @@ aa aa aa aa -ab -ax -ag -ag -ax -ab aa aa aa @@ -4243,11 +7289,22 @@ aa aa aa aa -ab -dm -cs -dw -ab +aa +aa +aa +aa +kp +kp +aS +aU +aV +kp +kp +aa +aa +aa +aa +aa aa aa aa @@ -4259,12 +7316,6 @@ aa aa aa aa -ab -ay -aG -aM -dA -ab aa aa aa @@ -4290,11 +7341,22 @@ aa aa aa aa -ab -dm -cs -dw -ab +aa +aa +aa +aa +kp +kw +kL +kZ +li +lq +kp +aa +aa +aa +aa +aa aa aa aa @@ -4306,12 +7368,6 @@ aa aa aa aa -ab -az -ag -ag -ax -ab aa aa aa @@ -4337,15 +7393,26 @@ aa aa aa aa -cS -cs -cs -cs -cS aa aa aa aa +kp +kx +kM +la +li +lr +kp +aa +aa +aa +aa +bt +bt +bt +aa +aa "} (69,1,1) = {" aa @@ -4353,12 +7420,9 @@ aa aa aa aa -ad -aA -ag -ag -ag -ad +bt +bt +bt aa aa aa @@ -4384,14 +7448,22 @@ aa aa aa aa -ab -cs -cs -cs -ab +aa +kp +ky +kM +la +lj +ls +kp aa aa aa +bt +bt +bt +bt +bt aa "} (70,1,1) = {" @@ -4399,13 +7471,11 @@ aa aa aa aa -aa -ae -aB -aB -aB -aB -bb +bt +bt +bt +bt +bt aa aa aa @@ -4418,34 +7488,46 @@ aa aa aa aa -bl -aa -aa -aa -bl -aa -aa -aa -bl aa aa aa aa -ab -cs -du -cs -ab aa aa aa aa +aa +aa +aa +aa +aa +kp +kz +kN +la +lk +lt +kp +aa +aa +bt +bt +bt +lB +bt +bt +aa "} (71,1,1) = {" aa aa aa aa +bt +bt +bt +bt +bt aa aa aa @@ -4465,34 +7547,40 @@ aa aa aa aa -bl -ca -co -cF -bl -ca -co -cF -bl aa aa aa aa -ab -ce -dC -ce -ab aa aa +kq +kp +kp +lb +kp +kp +ly aa aa +bt +bt +lB +lB +lB +bt +bt "} (72,1,1) = {" aa aa aa aa +bt +bt +lB +lB +bt +bt aa aa aa @@ -4512,34 +7600,39 @@ aa aa aa aa -bl -cb -cb -cb -bl -cb -cb -cb -bl aa aa aa aa -ae -aB -aB -aB -bb -aa -aa +aa +kr +bj +kO +la +ll +bk +ba aa aa +bt +bt +lB +lB +lB +bt +bt "} (73,1,1) = {" aa aa aa aa +bt +bt +lB +lB +bt +bt aa aa aa @@ -4558,29 +7651,28 @@ aa aa aa aa -aa -bl -bw -bw -bw -bw -bw -bw -bw -bl -aa -aa -aa -aa -aa -aa +ao aa aa aa aa aa +kp +kB +kP +lc +lk +lv +kp aa aa +bt +bt +bt +lB +lB +bt +bt "} (74,1,1) = {" aa @@ -4588,33 +7680,11 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aC -aC -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -bl -bw -bw -bG -bG -cW -bw -bw -bl +bt +bt +lB +lB +bt aa aa aa @@ -4628,6 +7698,33 @@ aa aa aa aa +aa +aa +aa +aa +aa +aa +aa +aT +aa +aa +aa +kp +kp +kp +ld +kp +kp +kp +aa +aa +aa +bt +bt +bt +bt +bt +aa "} (75,1,1) = {" aa @@ -4635,33 +7732,12 @@ aa aa aa aa -aa -aa -aa -aa -aa -aC -aC -aC -aC -aH -aH -aa -aa -aa -aa -aa -aa -aa -bl -cc -bG -bG -cN -bG -bG -cc -bl +bt +bt +lB +lB +bt +bt aa aa aa @@ -4672,9 +7748,35 @@ aa aa aa aa +fZ +gq +gP +gP +gP +bs +ab +aE aa aa aa +aa +aa +kp +kC +kQ +la +lm +lw +kp +aa +aa +aa +aa +aa +bt +bt +bt +aa "} (76,1,1) = {" aa @@ -4683,16 +7785,11 @@ aa aa aa aa -aa -aa -aa -aa -aC -aC -aC -aC -aH -aH +bt +bt +bt +bt +bt aa aa aa @@ -4700,19 +7797,29 @@ aa aa aa aa -bm -bw -bG -bG -bG -cX -bG -bw -bm +aa +aa +aa +ga +ga +gQ +gQ +gQ +iz +bs +aa +aD aa aa aa aa +ks +kD +kR +le +ln +lx +ks aa aa aa @@ -4731,35 +7838,40 @@ aa aa aa aa -aa -aa -aC -aC -aC -aC -aC -aH -aH -aH +bt +bt +bt +bt aa aa aa aa aa aa -bm -bw -bG -cG -bG -bG -bG -bw -bm aa aa aa aa +ga +av +gR +hu +hZ +ai +aT +aa +aa +aa +aa +aa +aa +ks +ks +kS +lf +lo +ks +ks aa aa aa @@ -4778,37 +7890,42 @@ aa aa aa aa -aC -aC -aC -aC -aC -aC -aC -aC -aH -aH -aH +aa +bt +bt aa aa aa aa aa -bm -bw -cp -bG -cG -cY -bG -bw -bm aa aa aa aa aa aa +gb +gs +aN +hv +ia +iA +ak +ap +aa +aa +br +aa +aa +aa +ks +ks +ks +ks +ks +aa +aa +aa aa aa aa @@ -4825,31 +7942,36 @@ aa aa aa aa -aC -aC -aC -aC -aC -aC -aC -aC -aH -aH -aH aa aa aa aa aa -bm -bx -bG -bG -bG -cZ -bG -bx -bm +aa +aa +aa +aa +aa +aa +aa +aa +aa +gb +jA +gT +hw +ib +iB +ja +bd +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -4871,32 +7993,37 @@ aa aa aa aa -aa -aC -aC -aC -aC -aC -aC -aC -aC -aH -aH -aH +lB +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gb +gt +gU +hx +ic +iC +jb +jy +aa +aa +aa aa aa aa aa aa -bl -bl -bl -cm -bl -cm -bl -bl -bl aa aa aa @@ -4917,42 +8044,47 @@ aa aa aa aa -aa -aa -aC -aC -aC -aC -aC -aC -aC -aC -aH -aH -aH -aa -aa -aa -aa -aa -bO -bw -bw -bw -cO -bM -bw -dr -bO +lB +lB +lB +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +gb +gv +gV +hy +id +iD +jc +jy +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa aa aa aa -aC -aC -aC aa aa aa @@ -4965,41 +8097,46 @@ aa aa aa aa -aa -aC -aC -aC -aC -aC -aC -aC -aC -aH -aH -aH +lB +lB +lB +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ga +gw +gW +hz +ie +aR +jd +ga +aa +aa +aa +kg +kk +kl +aa aa aa aa aa aa -bl -cd -cq -bv -cP -da -bv -bw -bl aa aa aa aa aa -aC -aC -aC -aC aa aa aa @@ -5012,41 +8149,46 @@ aa aa aa aa -aa -aC -aC -aC -aC -aC -aC -aC -aC -aH -aH -aH +lB +lB +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ga +ga +aW +ga +ga +ga +ga +ga +aa +aa +aa +aa +kl +kk +kE +aa aa aa aa aa aa -bp -bz -cr -cH -cQ -db -dk -bz -bp aa aa aa aa -aC -aC -aC -aC -aC aa aa aa @@ -5060,40 +8202,45 @@ aa aa aa aa -aH -aH -aC -aC -aC -aC -aC -aC -aH -aC -aH aa aa aa aa aa aa -bp -bn -cI -cR -bs -bn -bp aa aa aa aa -aC -aC -aC -aC -aC -aC +aa +aa +aa +aa +gc +gy +gY +aO +if +iF +je +gc +aa +aa +aa +aa +aa +kk +kk +kE +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -5107,17 +8254,6 @@ aa aa aa aa -aH -aH -aH -aC -aC -aC -aC -aH -aH -aC -aH aa aa aa @@ -5132,14 +8268,30 @@ aa aa aa aa +gd +aw +aG +hB +ig +aM +aQ +gd +aa +aa +aa +aa +kg +kk +kF +kk +aa +aa +aa +aa +aa aa aa aa -aC -aC -aC -aC -aC aa aa aa @@ -5155,16 +8307,35 @@ aa aa aa aa -aH -aH -aC -aH -aH -aH -aH -aH -aC -aC +aa +aa +aa +bt +bt +bt +bt +aa +aa +aa +aa +aa +aa +gd +gd +ha +aI +ih +iH +gd +gd +aa +aa +aa +aa +km +kt +fJ +kT aa aa aa @@ -5175,20 +8346,6 @@ aa aa aa aa -dc -aa -cT -aa -aa -aa -aa -aC -aC -aC -aC -aa -aa -aa aa aa aa @@ -5202,36 +8359,41 @@ aa aa aa aa -aH -aH -aH -aH -aC -aC -aC -aC -aC -aC +aa +aa +bt +bt +bt +bt +bt +bt +bt +bt +aa +aa +aa +aa +gd +gd +gd +gd +gd +gd aa aa aa aa aa -bP -ab -ab -ab -cS -ab -ab -ab -ab +kg +kk +kH +kk +aa +aa aa aa aa aa -aC -aC aa aa aa @@ -5249,30 +8411,35 @@ aa aa aa aa -aH -aH -aH -aC -aC -aC -aC -aC -aC -aC +aa +bt +bt +bt +bt +bt +bt +bt +bt +dD +dD aa aa aa aa aa -aB -ce -cs -cs -cs -dd -dd -ds -dv +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +kk +kk +kE aa aa aa @@ -5291,35 +8458,40 @@ aa aa aa aa +bl aa aa aa aa aa -aH -aH -aH -aC -aC -aC -aC -aC -aC -aC +bt +bt +bt +bt +bt +bt +dD +dD +dD +dD aa aa aa aa aa -aB -cf -ct -cJ -cs -de -dl -ab -ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +kl +kk +kE +aa aa aa aa @@ -5343,12 +8515,17 @@ aa aa aa aa -aH -aH -aH -aC -aC -aC +aa +aa +bt +bt +bt +dD +dD +dD +dD +bt +bt aa aa aa @@ -5358,15 +8535,15 @@ aa aa aa aa -aB -ce -cu -cs -cs -df -df -ds -dv +aa +aa +aa +aa +kg +kk +kl +aa +aa aa aa aa @@ -5393,6 +8570,20 @@ aa aa aa aa +dD +dD +dD +dD +bt +bt +bt +bt +aa +aa +aa +aa +aa +aa aa aa aa @@ -5405,15 +8596,6 @@ aa aa aa aa -ae -ab -ab -ab -cS -ab -ab -ab -ab aa aa aa @@ -5441,6 +8623,13 @@ aa aa aa aa +bt +bt +bt +bt +bt +bt +bt aa aa aa @@ -5459,8 +8648,6 @@ aa aa aa aa -cT -aa aa aa aa @@ -5488,7 +8675,12 @@ aa aa aa aa -aa +bt +bt +bt +bt +bt +bt aa aa aa @@ -5535,7 +8727,12 @@ aa aa aa aa -aa +bt +bt +bt +bt +bt +bt aa aa aa @@ -5582,7 +8779,12 @@ aa aa aa aa -aa +bt +bt +bt +bt +bt +bt aa aa aa @@ -5629,6 +8831,11 @@ aa aa aa aa +bt +bt +bt +bt +bt aa aa aa @@ -5663,3 +8870,55 @@ aa aa aa "} +(97,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +bt +bt +bt +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} \ No newline at end of file diff --git a/_maps/RandomRuins/SpaceRuins/crashedship.dmm b/_maps/RandomRuins/SpaceRuins/crashedship.dmm index c1566ae6b6..a0157a0720 100644 --- a/_maps/RandomRuins/SpaceRuins/crashedship.dmm +++ b/_maps/RandomRuins/SpaceRuins/crashedship.dmm @@ -16,7 +16,7 @@ "ag" = ( /obj/machinery/porta_turret{ dir = 8; - emagged = 1; + set_obj_flags = "EMAGGED"; installation = /obj/item/gun/energy/lasercannon }, /turf/open/floor/engine, @@ -243,7 +243,7 @@ /turf/open/floor/plating, /area/awaymission/BMPship/Fore) "aY" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall/mineral/titanium, /area/awaymission/BMPship/Fore) "bb" = ( @@ -524,7 +524,7 @@ equipment = 3; locked = 0; pixel_y = 32; - req_access = "" + req_access = null }, /turf/open/floor/carpet, /area/awaymission/BMPship/Fore) @@ -786,7 +786,7 @@ equipment = 3; locked = 0; pixel_y = 32; - req_access = "" + req_access = null }, /turf/open/floor/plating, /area/awaymission/BMPship/Aft) @@ -1054,7 +1054,7 @@ dir = 1; locked = 0; pixel_y = 28; - req_access = "" + req_access = null }, /turf/open/floor/plasteel/bar, /area/awaymission/BMPship/Midship) @@ -1860,7 +1860,7 @@ "gl" = ( /obj/machinery/porta_turret{ dir = 8; - emagged = 1; + set_obj_flags = "EMAGGED"; installation = /obj/item/gun/energy/lasercannon }, /turf/open/floor/engine, diff --git a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm index 462de914e7..9fa52e5d2f 100644 --- a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm +++ b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm @@ -2391,7 +2391,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/corner{ @@ -2415,7 +2415,7 @@ /obj/machinery/camera{ network = list("Bunker1") }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/corner{ @@ -2443,7 +2443,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 4 }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /turf/open/floor/plating, @@ -2595,7 +2595,7 @@ /obj/structure/cable/yellow{ icon_state = "0-8" }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /turf/open/floor/plating, @@ -2792,7 +2792,7 @@ dir = 5 }, /obj/machinery/autolathe, -/obj/structure/sign/radiation{ +/obj/structure/sign/warning/radiation{ pixel_x = -32 }, /turf/open/floor/plasteel/floorgrime, diff --git a/_maps/RandomRuins/SpaceRuins/derelict6.dmm b/_maps/RandomRuins/SpaceRuins/derelict6.dmm index a44ec59184..c3497f45e8 100644 --- a/_maps/RandomRuins/SpaceRuins/derelict6.dmm +++ b/_maps/RandomRuins/SpaceRuins/derelict6.dmm @@ -29,7 +29,7 @@ "af" = ( /obj/structure/fluff/broken_flooring{ icon_state = "pile"; - dir = 8; + dir = 8 }, /turf/template_noop, /area/template_noop) diff --git a/_maps/RandomRuins/SpaceRuins/listeningstation.dmm b/_maps/RandomRuins/SpaceRuins/listeningstation.dmm index b022d6b6e8..06af6c20c6 100644 --- a/_maps/RandomRuins/SpaceRuins/listeningstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/listeningstation.dmm @@ -3,7 +3,7 @@ /turf/template_noop, /area/template_noop) "ab" = ( -/turf/closed/mineral, +/turf/closed/mineral/random, /area/ruin/unpowered/no_grav) "ac" = ( /turf/closed/wall, @@ -14,7 +14,7 @@ }, /obj/machinery/airalarm{ pixel_y = 24; - req_access = 150 + req_access = list(150) }, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -23,14 +23,12 @@ /area/ruin/space/has_grav/listeningstation) "ae" = ( /obj/structure/table/reinforced, -/obj/item/paper_bin, /obj/machinery/firealarm{ dir = 2; pixel_y = 24 }, /obj/effect/decal/cleanable/dirt, -/obj/item/paper/fluff/ruins/listeningstation/reports/november, -/obj/item/pen, +/obj/machinery/computer/libraryconsole/bookmanagement, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/listeningstation) "af" = ( @@ -53,6 +51,14 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/obj/item/device/radio/intercom{ + freerange = 1; + name = "Syndicate Radio Intercom"; + pixel_x = -30 + }, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/listeningstation) "ai" = ( @@ -106,7 +112,7 @@ /area/ruin/space/has_grav/listeningstation) "ao" = ( /obj/machinery/light/small, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = 32 }, /obj/effect/decal/cleanable/dirt, @@ -145,11 +151,11 @@ /turf/open/floor/plasteel/showroomfloor, /area/ruin/space/has_grav/listeningstation) "as" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/computer/med_data/syndie{ dir = 4; req_one_access = null }, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/listeningstation) "at" = ( @@ -172,6 +178,7 @@ pixel_x = 5; pixel_y = 5 }, +/mob/living/simple_animal/hostile/syndicate/ranged, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -183,6 +190,10 @@ /obj/structure/extinguisher_cabinet{ pixel_x = 25 }, +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/paper/fluff/ruins/listeningstation/reports/november, +/obj/item/pen, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/listeningstation) "aw" = ( @@ -198,7 +209,7 @@ /obj/machinery/airalarm{ dir = 4; pixel_x = -24; - req_access = 150 + req_access = list(150) }, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/listeningstation) @@ -367,10 +378,6 @@ /area/ruin/space/has_grav/listeningstation) "aK" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/hatch{ - name = "Telecommunications"; - req_access_txt = "150" - }, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -378,6 +385,10 @@ pixel_x = 5; pixel_y = 5 }, +/obj/machinery/door/airlock/hatch{ + name = "Telecommunications"; + req_access_txt = "150" + }, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -391,16 +402,16 @@ /area/ruin/space/has_grav/listeningstation) "aM" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/hatch{ - name = "E.V.A. Equipment"; - req_access_txt = "150" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ piping_layer = 3; pixel_x = 5; pixel_y = 5 }, +/obj/machinery/door/airlock/hatch{ + name = "E.V.A. Equipment"; + req_access_txt = "150" + }, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -411,7 +422,7 @@ dir = 8; pixel_x = -26 }, -/obj/structure/showcase/machinery/microwave, +/obj/machinery/microwave, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -459,9 +470,6 @@ /area/ruin/space/has_grav/listeningstation) "aR" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock{ - name = "Personal Quarters" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -471,6 +479,9 @@ pixel_x = 5; pixel_y = 5 }, +/obj/machinery/door/airlock{ + name = "Personal Quarters" + }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/listeningstation) "aS" = ( @@ -503,7 +514,7 @@ "aU" = ( /obj/machinery/airalarm{ pixel_y = 24; - req_access = 150 + req_access = list(150) }, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -626,7 +637,7 @@ /obj/machinery/airalarm{ dir = 8; pixel_x = 24; - req_access = 150 + req_access = list(150) }, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -636,6 +647,7 @@ pixel_x = 5; pixel_y = 5 }, +/mob/living/simple_animal/hostile/syndicate/ranged, /turf/open/floor/plasteel, /area/ruin/space/has_grav/listeningstation) "bc" = ( @@ -724,7 +736,7 @@ /obj/machinery/syndicatebomb/self_destruct{ anchored = 1 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'DANGER: SELF DESTRUCT DEVICE'."; name = "DANGER: SELF DESTRUCT DEVICE"; pixel_x = 32 @@ -741,14 +753,11 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/listeningstation) "bn" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall, /area/ruin/space/has_grav/listeningstation) "bo" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical/glass{ - name = "Medbay" - }, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -756,6 +765,9 @@ pixel_x = 5; pixel_y = 5 }, +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay" + }, /turf/open/floor/plasteel/white, /area/ruin/space/has_grav/listeningstation) "bp" = ( @@ -798,7 +810,7 @@ dir = 4; name = "Syndicate Listening Post APC"; pixel_x = 24; - req_access = 150 + req_access = list(150) }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -834,11 +846,12 @@ }, /area/ruin/space/has_grav/listeningstation) "bu" = ( -/obj/machinery/sleeper/syndie{ - dir = 8 +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/medical1{ + req_access = null; + req_access_txt = "150" }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/white, /area/ruin/space/has_grav/listeningstation) "bv" = ( @@ -881,7 +894,7 @@ /turf/open/floor/plasteel/grimy, /area/ruin/space/has_grav/listeningstation) "bx" = ( -/obj/effect/mob_spawn/human/lavaland_syndicate/comms{ +/obj/effect/mob_spawn/human/lavaland_syndicate/comms/space{ assignedrole = "Space Syndicate"; dir = 8; flavour_text = "You are a syndicate agent, assigned to a small listening post station situated near your hated enemy's top secret research facility: Space Station 13. Monitor enemy activity as best you can, and try to keep a low profile. DON'T abandon the base without good cause. Use the communication equipment to provide support to any field agents, and sow disinformation to throw Nanotrasen off your trail. Do not let the base fall into enemy hands!" @@ -988,6 +1001,25 @@ dir = 5 }, /area/ruin/space/has_grav/listeningstation) +"bJ" = ( +/obj/docking_port/stationary{ + dir = 4; + dwidth = 6; + height = 7; + id = "caravansyndicate3_listeningpost"; + name = "Syndicate Listening Post"; + width = 15 + }, +/obj/docking_port/stationary{ + dir = 4; + dwidth = 4; + height = 5; + id = "caravansyndicate1_listeningpost"; + name = "Syndicate Listening Post"; + width = 9 + }, +/turf/template_noop, +/area/template_noop) (1,1,1) = {" aa @@ -2239,7 +2271,7 @@ aa aa aa aa -aa +bJ aa aa aa diff --git a/_maps/RandomRuins/SpaceRuins/oldAIsat.dmm b/_maps/RandomRuins/SpaceRuins/oldAIsat.dmm index 99784b3d8e..eff006f061 100644 --- a/_maps/RandomRuins/SpaceRuins/oldAIsat.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldAIsat.dmm @@ -256,7 +256,7 @@ /turf/template_noop, /area/template_noop) "aU" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/tcommsat/chamber) "aV" = ( @@ -818,7 +818,7 @@ /turf/open/floor/plasteel, /area/tcommsat/chamber) "cL" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall/r_wall, /area/tcommsat/chamber) "cM" = ( diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm index 4ec47c9bce..75252da7b5 100644 --- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm @@ -296,8 +296,8 @@ dir = 8; locked = 0; pixel_x = 24; - req_access = "0"; - req_one_access = "0" + req_access = null; + req_one_access = null }, /obj/machinery/light{ dir = 4 @@ -536,7 +536,7 @@ /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation) "bO" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall/rust, /area/ruin/space/has_grav/ancientstation) "bP" = ( @@ -587,7 +587,7 @@ /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation) "bX" = ( -/obj/structure/sign/science, +/obj/structure/sign/departments/science, /turf/closed/wall/rust, /area/ruin/space/has_grav/ancientstation) "bY" = ( @@ -1067,8 +1067,8 @@ dir = 4; locked = 0; pixel_x = -23; - req_access = "0"; - req_one_access = "0" + req_access = null; + req_one_access = null }, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation) @@ -1134,8 +1134,8 @@ dir = 8; locked = 0; pixel_x = 24; - req_access = "0"; - req_one_access = "0" + req_access = null; + req_one_access = null }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/floorgrime, @@ -1257,8 +1257,8 @@ dir = 8; locked = 0; pixel_x = 24; - req_access = "0"; - req_one_access = "0" + req_access = null; + req_one_access = null }, /obj/item/clothing/suit/space/nasavoid/old, /turf/open/floor/plasteel/yellow/side{ @@ -1323,8 +1323,8 @@ dir = 4; locked = 0; pixel_x = -23; - req_access = "0"; - req_one_access = "0" + req_access = null; + req_one_access = null }, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation/deltacorridor) @@ -1367,8 +1367,8 @@ dir = 8; locked = 0; pixel_x = 24; - req_access = "0"; - req_one_access = "0" + req_access = null; + req_one_access = null }, /mob/living/simple_animal/hostile/hivebot, /turf/open/floor/plasteel/floorgrime, @@ -2766,8 +2766,8 @@ frequency = 1439; locked = 0; pixel_y = 23; - req_access = "0"; - req_one_access = "0" + req_access = null; + req_one_access = null }, /obj/effect/decal/cleanable/egg_smudge, /turf/open/floor/plasteel/cafeteria, @@ -3197,8 +3197,8 @@ dir = 8; locked = 0; pixel_x = 24; - req_access = "0"; - req_one_access = "0" + req_access = null; + req_one_access = null }, /turf/open/floor/plasteel/orange/side{ tag = "icon-orange (EAST)"; @@ -3285,8 +3285,8 @@ dir = 4; locked = 0; pixel_x = -23; - req_access = "0"; - req_one_access = "0" + req_access = null; + req_one_access = null }, /mob/living/simple_animal/hostile/hivebot, /turf/open/floor/plasteel/floorgrime, @@ -3391,8 +3391,8 @@ dir = 8; locked = 0; pixel_x = 24; - req_access = "0"; - req_one_access = "0" + req_access = null; + req_one_access = null }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/floorgrime, @@ -3475,7 +3475,7 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/engi) "iX" = ( -/obj/structure/sign/radiation, +/obj/structure/sign/warning/radiation, /turf/closed/wall/rust, /area/ruin/space/has_grav/ancientstation/engi) "iY" = ( @@ -3921,8 +3921,8 @@ frequency = 1439; locked = 0; pixel_y = 23; - req_access = "0"; - req_one_access = "0" + req_access = null; + req_one_access = null }, /turf/open/floor/plasteel/white, /area/ruin/space/has_grav/ancientstation/proto) @@ -4325,8 +4325,8 @@ dir = 8; locked = 0; pixel_x = 24; - req_access = "0"; - req_one_access = "0" + req_access = null; + req_one_access = null }, /turf/open/floor/plasteel/airless/floorgrime, /area/ruin/space/has_grav/ancientstation/atmo) diff --git a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm index 35e34fb3eb..5dff750d0f 100644 --- a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm @@ -774,7 +774,7 @@ /turf/open/floor/carpet, /area/ruin/space/has_grav/hotel) "cz" = ( -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ desc = "A sign that states the labeled room's number."; dir = 4; icon_state = "roomnum"; @@ -785,7 +785,7 @@ /turf/open/floor/carpet, /area/ruin/space/has_grav/hotel) "cA" = ( -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ desc = "A sign that states the labeled room's number."; dir = 8; icon_state = "roomnum"; @@ -802,7 +802,7 @@ /turf/open/floor/carpet, /area/ruin/space/has_grav/hotel) "cC" = ( -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ desc = "A sign that states the labeled room's number."; dir = 6; icon_state = "roomnum"; @@ -822,7 +822,7 @@ /turf/open/floor/carpet, /area/ruin/space/has_grav/hotel) "cE" = ( -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ desc = "A sign that states the labeled room's number."; dir = 10; icon_state = "roomnum"; @@ -946,7 +946,7 @@ /turf/open/floor/carpet, /area/ruin/space/has_grav/hotel) "cT" = ( -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ desc = "A sign that states the labeled room's number."; dir = 1; icon_state = "roomnum"; @@ -963,7 +963,7 @@ /turf/open/floor/carpet, /area/ruin/space/has_grav/hotel) "cV" = ( -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ desc = "A sign that states the labeled room's number."; icon_state = "roomnum"; name = "Room Number 1"; @@ -2172,7 +2172,7 @@ "gL" = ( /obj/structure/table, /obj/item/storage/box/donkpockets, -/obj/structure/sign/nosmoking_1{ +/obj/structure/sign/warning/nosmoking/circle{ pixel_y = 32 }, /turf/open/floor/plasteel/dark, @@ -2784,7 +2784,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ desc = "A poster designed to remind the reader to wear appropriate insulation and head protection when working with material."; icon_state = "safety"; name = "Safety Poster"; @@ -3344,7 +3344,7 @@ /turf/open/floor/wood, /area/ruin/space/has_grav/hotel/pool) "jZ" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /turf/open/floor/plasteel, @@ -3464,7 +3464,7 @@ /obj/structure/cable{ icon_state = "0-8" }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /turf/open/floor/plasteel/yellow/side, @@ -3499,7 +3499,7 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = -32 }, /turf/open/floor/plasteel/yellow/side, @@ -3678,7 +3678,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/obj/structure/sign/atmosplaque{ +/obj/structure/sign/plaques/atmos{ pixel_y = 32 }, /turf/open/floor/plating, @@ -3705,7 +3705,7 @@ "lb" = ( /obj/structure/table, /obj/machinery/recharger, -/obj/structure/sign/goldenplaque{ +/obj/structure/sign/plaques/golden{ pixel_x = -32 }, /turf/open/floor/plasteel/red/side{ diff --git a/_maps/RandomRuins/SpaceRuins/whiteshipdock.dmm b/_maps/RandomRuins/SpaceRuins/whiteshipdock.dmm new file mode 100644 index 0000000000..0bcfba908b --- /dev/null +++ b/_maps/RandomRuins/SpaceRuins/whiteshipdock.dmm @@ -0,0 +1,858 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/open/space/basic, +/area/space) +"b" = ( +/obj/docking_port/stationary{ + dheight = 0; + dir = 2; + dwidth = 11; + height = 22; + id = "whiteship_away"; + name = "Deep Space"; + width = 35; + json_key = "whiteship" + }, +/turf/open/space, +/area/space) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(3,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(4,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(5,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(6,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(7,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(8,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(9,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(10,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(11,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(12,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(13,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(14,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(15,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(16,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(17,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(18,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(19,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(20,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(21,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(22,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(23,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(24,1,1) = {" +b +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(25,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(26,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(27,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(28,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(29,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(30,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(31,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(32,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(33,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(34,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(35,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/_maps/RandomZLevels/Academy.dmm b/_maps/RandomZLevels/Academy.dmm index 535cb1377c..e1deb83812 100644 --- a/_maps/RandomZLevels/Academy.dmm +++ b/_maps/RandomZLevels/Academy.dmm @@ -50,7 +50,7 @@ equipment = 3; locked = 0; pixel_y = 32; - req_access = "" + req_access = null }, /turf/open/floor/carpet, /area/awaymission/academy/headmaster) @@ -457,12 +457,6 @@ "bF" = ( /turf/closed/wall/mineral/titanium, /area/awaymission/academy/classrooms) -"bG" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/academy/classrooms) -"bH" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/academy/classrooms) "bI" = ( /obj/machinery/light{ dir = 8 @@ -547,9 +541,6 @@ "bV" = ( /turf/open/floor/plasteel/floorgrime, /area/awaymission/academy/classrooms) -"bW" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/academy/classrooms) "bX" = ( /obj/effect/decal/cleanable/ash, /turf/open/floor/engine, @@ -631,11 +622,6 @@ }, /turf/open/floor/plasteel/dark, /area/awaymission/academy/headmaster) -"cn" = ( -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/awaymission/academy/headmaster) "co" = ( /obj/machinery/portable_atmospherics/scrubber/huge, /turf/open/floor/plating, @@ -658,9 +644,6 @@ }, /turf/open/floor/plasteel, /area/awaymission/academy/classrooms) -"cs" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/academy/classrooms) "ct" = ( /obj/structure/chair, /turf/open/floor/plasteel, @@ -741,7 +724,7 @@ /turf/open/floor/plasteel/dark, /area/awaymission/academy/headmaster) "cH" = ( -/obj/structure/sign/nosmoking_1, +/obj/structure/sign/warning/nosmoking/circle, /turf/closed/wall, /area/awaymission/academy/headmaster) "cI" = ( @@ -795,12 +778,6 @@ dir = 6 }, /area/awaymission/academy/classrooms) -"cS" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/awaymission/academy/headmaster) "cT" = ( /obj/machinery/light{ dir = 8 @@ -1188,7 +1165,7 @@ equipment = 3; locked = 0; pixel_y = 32; - req_access = "" + req_access = null }, /turf/open/floor/plasteel/grimy, /area/awaymission/academy/classrooms) @@ -1908,12 +1885,6 @@ dir = 4 }, /area/awaymission/academy/classrooms) -"gw" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/wood, -/area/awaymission/academy/classrooms) "gx" = ( /obj/structure/closet/athletic_mixed, /turf/open/floor/engine/cult, @@ -2178,7 +2149,7 @@ equipment = 3; locked = 0; pixel_y = 32; - req_access = "" + req_access = null }, /turf/open/floor/plasteel, /area/awaymission/academy/academyaft) @@ -2223,24 +2194,12 @@ }, /turf/open/floor/plasteel, /area/awaymission/academy/academyaft) -"hu" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/hydrofloor, -/area/awaymission/academy/academyaft) "hv" = ( /obj/structure/cable{ icon_state = "4-8" }, /turf/open/floor/plasteel, /area/awaymission/academy/academyaft) -"hw" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/awaymission/academy/academyaft) "hx" = ( /obj/structure/cable{ icon_state = "0-8" @@ -2315,12 +2274,6 @@ dir = 8 }, /area/awaymission/academy/academyaft) -"hG" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/awaymission/academy/academyaft) "hH" = ( /obj/structure/cable{ icon_state = "4-8" @@ -3149,12 +3102,6 @@ "kf" = ( /turf/open/floor/plating, /area/awaymission/academy/academygate) -"kg" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/carpet, -/area/awaymission/academy/academygate) "kh" = ( /obj/machinery/power/apc{ dir = 1; @@ -3162,7 +3109,7 @@ equipment = 3; locked = 0; pixel_y = 32; - req_access = "" + req_access = null }, /obj/structure/cable{ icon_state = "0-2" @@ -4011,20 +3958,6 @@ }, /turf/open/floor/carpet, /area/awaymission/academy/headmaster) -"np" = ( -/obj/structure/frame/computer{ - anchored = 1; - dir = 4 - }, -/turf/open/floor/carpet, -/area/awaymission/academy/headmaster) -"nq" = ( -/obj/structure/frame/computer{ - anchored = 1; - dir = 8 - }, -/turf/open/floor/carpet, -/area/awaymission/academy/headmaster) (1,1,1) = {" aa diff --git a/_maps/RandomZLevels/Cabin.dmm b/_maps/RandomZLevels/Cabin.dmm index 4cd42ea994..7305c5f0fa 100644 --- a/_maps/RandomZLevels/Cabin.dmm +++ b/_maps/RandomZLevels/Cabin.dmm @@ -812,14 +812,14 @@ /area/awaymission/cabin) "cR" = ( /obj/machinery/door/poddoor/shutters{ - id = 42; + id = "garage_cabin"; name = "garage door" }, /turf/open/floor/plating/snowed/temperatre, /area/awaymission/cabin) "cS" = ( /obj/machinery/button/door{ - id = 42; + id = "garage_cabin"; pixel_y = 24 }, /turf/open/floor/plating/snowed/temperatre, diff --git a/_maps/RandomZLevels/beach.dmm b/_maps/RandomZLevels/beach.dmm index 10fa8be861..dddeadb0be 100644 --- a/_maps/RandomZLevels/beach.dmm +++ b/_maps/RandomZLevels/beach.dmm @@ -144,7 +144,7 @@ /area/awaymission/beach) "aA" = ( /obj/machinery/vending/boozeomat{ - emagged = 1 + set_obj_flags = "EMAGGED" }, /turf/open/floor/wood, /area/awaymission/beach) @@ -233,9 +233,6 @@ /obj/effect/overlay/palmtree_r, /turf/open/floor/plating/beach/sand, /area/space) -"aR" = ( -/turf/open/floor/plating/beach/sand, -/area/awaymission/beach) "aS" = ( /obj/machinery/door/airlock/sandstone, /turf/open/floor/wood, diff --git a/_maps/RandomZLevels/caves.dmm b/_maps/RandomZLevels/caves.dmm index b1e840ac15..46f33f533b 100644 --- a/_maps/RandomZLevels/caves.dmm +++ b/_maps/RandomZLevels/caves.dmm @@ -303,7 +303,7 @@ /obj/machinery/light/small/built{ dir = 4 }, -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ desc = "A warning sign which warns of potential mech traffic to and from different levels of the mine."; name = "\improper MECH TUNNEL PASSAGE B1 TO A2"; pixel_x = 32 @@ -373,9 +373,6 @@ initial_gas_mix = "n2=23;o2=14" }, /area/awaymission/caves/BMP_asteroid/level_three) -"bd" = ( -/turf/closed/wall/mineral/cult, -/area/awaymission/caves/BMP_asteroid/level_four) "be" = ( /mob/living/simple_animal/hostile/spawner/mining/goliath, /turf/open/floor/plating/asteroid/basalt{ @@ -625,7 +622,7 @@ }, /area/awaymission/caves/BMP_asteroid/level_two) "bP" = ( -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ desc = "A warning sign which warns of potential mech traffic to and from different levels of the mine."; name = "\improper MECH TUNNEL PASSAGE A2 TO B1"; pixel_x = 32 @@ -769,7 +766,7 @@ }, /area/awaymission/caves/BMP_asteroid) "ck" = ( -/obj/structure/sign/xeno_warning_mining{ +/obj/structure/sign/warning/xeno_mining{ pixel_y = -32 }, /turf/open/floor/plating/asteroid/basalt{ @@ -896,7 +893,7 @@ }, /area/awaymission/caves/research) "cE" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ name = "\improper LOW AIR AREA"; pixel_x = 32 }, @@ -925,18 +922,8 @@ initial_gas_mix = "n2=23;o2=14" }, /area/awaymission/caves/BMP_asteroid/level_two) -"cI" = ( -/turf/open/floor/plating{ - initial_gas_mix = "n2=23;o2=14" - }, -/area/awaymission/caves/BMP_asteroid/level_two) -"cJ" = ( -/turf/open/floor/plating/asteroid/basalt{ - initial_gas_mix = "n2=23;o2=14" - }, -/area/awaymission/caves/BMP_asteroid/level_two) "cK" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'HOLY SHIT NIGGA WHAT ARE YOU DOING'."; name = "\improper HOLY SHIT NIGGA WHAT ARE YOU DOING" }, @@ -1055,7 +1042,7 @@ }, /area/awaymission/caves/research) "cZ" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ name = "\improper LOW AIR AREA"; pixel_x = 32 }, @@ -1081,7 +1068,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ desc = "A warning sign which warns of potential mech traffic to and from different levels of the mine."; name = "\improper MECH TUNNEL PASSAGE A2 TO A1"; pixel_x = -32 @@ -1330,12 +1317,6 @@ initial_gas_mix = "n2=23;o2=14" }, /area/awaymission/caves/BMP_asteroid) -"dV" = ( -/obj/machinery/door/airlock{ - name = "Dorm" - }, -/turf/open/floor/wood, -/area/awaymission/caves/northblock) "dW" = ( /turf/closed/wall, /area/awaymission/caves/BMP_asteroid) @@ -1761,7 +1742,7 @@ }, /area/awaymission/caves/BMP_asteroid/level_two) "fp" = ( -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ desc = "A warning sign which warns of potential mech traffic to and from different levels of the mine."; name = "\improper MECH TUNNEL PASSAGE A1 TO A2"; pixel_x = -32 @@ -1880,7 +1861,7 @@ /turf/open/floor/plating, /area/awaymission/caves/BMP_asteroid) "fI" = ( -/obj/structure/sign/bluecross{ +/obj/structure/sign/departments/medbay{ pixel_x = -32 }, /turf/open/floor/plating/asteroid/basalt{ @@ -1896,7 +1877,7 @@ /turf/open/floor/plasteel, /area/awaymission/caves/BMP_asteroid) "fL" = ( -/obj/structure/sign/examroom{ +/obj/structure/sign/departments/examroom{ pixel_y = 32 }, /turf/open/floor/plasteel, @@ -1956,12 +1937,6 @@ initial_gas_mix = "n2=23;o2=14" }, /area/awaymission/caves/BMP_asteroid) -"fV" = ( -/turf/open/floor/plasteel/elevatorshaft{ - name = "elevator flooring"; - initial_gas_mix = "n2=23;o2=14" - }, -/area/awaymission/caves/BMP_asteroid) "fW" = ( /obj/structure/girder, /turf/open/floor/plating{ @@ -1992,11 +1967,6 @@ /obj/machinery/microwave, /turf/open/floor/plasteel, /area/awaymission/caves/BMP_asteroid) -"fZ" = ( -/turf/open/floor/plating{ - initial_gas_mix = "n2=23;o2=14" - }, -/area/awaymission/caves/BMP_asteroid) "ga" = ( /obj/structure/ladder/unbreakable{ anchored = 1; @@ -7642,7 +7612,7 @@ dE dI dM dT -dV +dI eb em du @@ -14601,7 +14571,7 @@ bV fJ fQ fQ -fV +fQ fQ fJ bV @@ -16144,7 +16114,7 @@ bM bM bM fW -fZ +fy ev gf gm @@ -16401,10 +16371,10 @@ bM bM bM bM -fZ +fy gc gg -fZ +fy ev gm dW @@ -16659,7 +16629,7 @@ bM bM bM bM -fZ +fy gh bM go @@ -17172,11 +17142,11 @@ bM bM bM bM -fZ -fZ +fy +fy gi -fZ -fZ +fy +fy gq gy fH @@ -17430,9 +17400,9 @@ bM bM bM bM -fZ +fy dW -fZ +fy gq gu gq @@ -17687,7 +17657,7 @@ bM bM bM bM -fZ +fy gj ev gr @@ -17944,7 +17914,7 @@ bM bM bM bM -fZ +fy fW ev gq @@ -18467,7 +18437,7 @@ bL bL bV bV -fZ +fy gF gH ej @@ -18725,9 +18695,9 @@ bV bV bV bV -fZ +fy gI -fZ +fy gD eu eu @@ -18982,9 +18952,9 @@ bV bV bV gD -fZ -fZ -fZ +fy +fy +fy bV bV bV @@ -19238,11 +19208,11 @@ bL bV fW gB -fZ +fy gB gJ -fZ -fZ +fy +fy bM eu bV @@ -19499,7 +19469,7 @@ gE gG gJ gB -fZ +fy bM bV eu @@ -54288,7 +54258,7 @@ ao ao ao ai -bd +ax ad ad ad @@ -54811,7 +54781,7 @@ ad ad ad ad -bd +ax ao ai ao @@ -55056,7 +55026,7 @@ ax ai ai ai -bd +ax ad ad ad @@ -55324,7 +55294,7 @@ ad ad ad ad -bd +ax ao ai ai @@ -56094,7 +56064,7 @@ ad ad ad ad -bd +ax ao ai ai @@ -56200,12 +56170,12 @@ bJ bJ bJ bJ -cI -cI -cI -cI -cI -cI +bT +bT +bT +bT +bT +bT bJ bJ bJ @@ -56351,7 +56321,7 @@ ad ad ad ad -bd +ax ao ao ai @@ -56609,7 +56579,7 @@ ad ad ad ad -bd +ax ao am ai @@ -56991,7 +56961,7 @@ bJ cq bO bO -cI +bT bO bO bO @@ -57125,10 +57095,10 @@ aR ad ad ad -bd -bd +ax +ax ao -bd +ax ad ad ai @@ -57248,7 +57218,7 @@ bJ bJ bO bO -cI +bT bO bO bO @@ -57374,7 +57344,7 @@ ad ad ai ai -bd +ax ao ao ao @@ -57505,7 +57475,7 @@ bJ bJ bO bO -cI +bT bO bJ bJ @@ -57649,7 +57619,7 @@ ad ad ad ad -bd +ax ao ad ad @@ -57762,7 +57732,7 @@ bJ bJ bO bO -cI +bT bO bJ cm @@ -57884,8 +57854,8 @@ ax ax ad ad -bd -bd +ax +ax aR ao ao @@ -57896,7 +57866,7 @@ ao ao ao ao -bd +ax ai ad ad @@ -58019,7 +57989,7 @@ bO bO bO bO -cI +bT bO bJ cm @@ -58162,7 +58132,7 @@ ad ad ad ad -bd +ax ao ai ai @@ -58418,7 +58388,7 @@ ad ad ad ad -bd +ax ao ao am @@ -58675,7 +58645,7 @@ ad ad ad ad -bd +ax ao ao ai @@ -58912,8 +58882,8 @@ ax ad ad ai -bd -bd +ax +ax aR aR ao @@ -58924,14 +58894,14 @@ ao ao ao ao -bd +ax ai ai ad ad ad ad -bd +ax aw aB ai @@ -59188,7 +59158,7 @@ ad ad ad ad -bd +ax ao am ai @@ -59688,11 +59658,11 @@ ad ad ad ai -bd +ax ao ao ao -bd +ax ai ai ai @@ -59702,7 +59672,7 @@ ad ad ad ad -bd +ax ao ai ai @@ -60214,8 +60184,8 @@ ad ad ad ad -bd -bd +ax +ax ao ao am @@ -60469,7 +60439,7 @@ ad ad ad ad -bd +ax al ai ao @@ -60718,7 +60688,7 @@ ad ai ao ai -bd +ax ad ad ad @@ -61234,11 +61204,11 @@ ai aq ad al -bd -bd +ax +ax ai ad -bd +ax ai ao ai diff --git a/_maps/RandomZLevels/centcomAway.dmm b/_maps/RandomZLevels/centcomAway.dmm index 94f830e139..83ad870fb3 100644 --- a/_maps/RandomZLevels/centcomAway.dmm +++ b/_maps/RandomZLevels/centcomAway.dmm @@ -370,12 +370,6 @@ }, /turf/open/floor/plating, /area/awaymission/centcomAway/hangar) -"br" = ( -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) "bs" = ( /obj/structure/closet/crate, /turf/open/floor/plasteel/vault{ @@ -434,27 +428,12 @@ }, /turf/open/floor/plating, /area/awaymission/centcomAway/hangar) -"bD" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) -"bE" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) "bF" = ( /obj/machinery/door/airlock/external{ name = "Salvage Shuttle Dock" }, /turf/open/floor/plating, /area/awaymission/centcomAway/hangar) -"bG" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) -"bH" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) -"bI" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) "bJ" = ( /obj/structure/chair/comfy/brown, /turf/open/floor/plasteel/bar{ @@ -503,12 +482,6 @@ "bR" = ( /turf/open/floor/plating, /area/awaymission/centcomAway/hangar) -"bS" = ( -/turf/closed/wall/mineral/titanium/interior, -/area/awaymission/centcomAway/hangar) -"bT" = ( -/turf/closed/wall/mineral/titanium/interior, -/area/awaymission/centcomAway/hangar) "bU" = ( /obj/structure/closet/emcloset, /turf/open/floor/mineral/titanium/blue, @@ -545,12 +518,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/awaymission/centcomAway/hangar) -"bZ" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) -"ca" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) "cb" = ( /obj/item/paper_bin, /obj/structure/table, @@ -578,7 +545,7 @@ }, /area/awaymission/centcomAway/cafe) "cg" = ( -/obj/structure/sign/botany, +/obj/structure/sign/departments/botany, /turf/closed/wall/r_wall, /area/awaymission/centcomAway/cafe) "ch" = ( @@ -646,21 +613,15 @@ /turf/open/floor/plating, /area/awaymission/centcomAway/maint) "cv" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall/r_wall, /area/awaymission/centcomAway/maint) -"cw" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) "cx" = ( /obj/machinery/door/airlock/maintenance_hatch{ req_access_txt = "101" }, /turf/open/floor/plating, /area/awaymission/centcomAway/hangar) -"cy" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) "cz" = ( /turf/closed/wall, /area/awaymission/centcomAway/hangar) @@ -696,9 +657,6 @@ /obj/machinery/biogenerator, /turf/open/floor/plasteel/hydrofloor, /area/awaymission/centcomAway/cafe) -"cI" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) "cJ" = ( /obj/structure/table/reinforced, /obj/item/paper_bin, @@ -737,12 +695,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/awaymission/centcomAway/hangar) -"cQ" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) -"cR" = ( -/turf/open/floor/plating, -/area/awaymission/centcomAway/hangar) "cS" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -895,9 +847,6 @@ dir = 4 }, /area/awaymission/centcomAway/cafe) -"du" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) "dv" = ( /obj/structure/closet/crate, /obj/effect/turf_decal/stripes/line{ @@ -1023,25 +972,6 @@ }, /turf/open/floor/plating, /area/awaymission/centcomAway/cafe) -"dR" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) -"dS" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end{ - dir = 8 - }, -/turf/open/floor/plating, -/area/awaymission/centcomAway/cafe) -"dT" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end{ - dir = 4 - }, -/turf/open/floor/plating, -/area/awaymission/centcomAway/cafe) -"dU" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/turf/open/floor/plating, -/area/awaymission/centcomAway/cafe) "dV" = ( /obj/structure/closet/secure_closet/freezer/kitchen, /turf/open/floor/plasteel/red, @@ -1119,10 +1049,6 @@ icon_state = "asteroid9" }, /area/awaymission/centcomAway/cafe) -"ei" = ( -/obj/effect/spawner/structure/window/hollow/reinforced, -/turf/open/floor/plating, -/area/awaymission/centcomAway/cafe) "ej" = ( /obj/machinery/vending/dinnerware, /turf/open/floor/plasteel/red, @@ -1162,15 +1088,6 @@ /obj/item/reagent_containers/food/condiment/enzyme, /turf/open/floor/plasteel/red, /area/awaymission/centcomAway/cafe) -"eq" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) -"er" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) -"es" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) "et" = ( /obj/machinery/door/airlock/hatch{ name = "Cockpit"; @@ -1434,7 +1351,7 @@ }, /area/awaymission/centcomAway/general) "ft" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/awaymission/centcomAway/general) "fu" = ( @@ -1453,14 +1370,8 @@ }, /turf/open/floor/plating, /area/awaymission/centcomAway/general) -"fx" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end{ - dir = 4 - }, -/turf/open/floor/plating, -/area/awaymission/centcomAway/general) "fy" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall/r_wall, /area/awaymission/centcomAway/general) "fz" = ( @@ -1575,7 +1486,7 @@ }, /area/awaymission/centcomAway/general) "fQ" = ( -/obj/structure/sign/science, +/obj/structure/sign/departments/science, /turf/closed/wall/r_wall, /area/awaymission/centcomAway/general) "fR" = ( @@ -1648,12 +1559,6 @@ }, /turf/open/floor/plating, /area/awaymission/centcomAway/general) -"ge" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end{ - dir = 4 - }, -/turf/open/floor/plating, -/area/awaymission/centcomAway/general) "gf" = ( /obj/effect/spawner/structure/window/hollow/reinforced/middle, /obj/structure/window/reinforced{ @@ -1661,10 +1566,6 @@ }, /turf/open/floor/plating, /area/awaymission/centcomAway/general) -"gg" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle, -/turf/open/floor/plating, -/area/awaymission/centcomAway/general) "gh" = ( /obj/effect/spawner/structure/window/hollow/reinforced/directional{ dir = 5 @@ -1886,9 +1787,6 @@ }, /turf/closed/wall/mineral/titanium/interior, /area/awaymission/centcomAway/hangar) -"gT" = ( -/turf/closed/wall/mineral/titanium/interior, -/area/awaymission/centcomAway/hangar) "gU" = ( /obj/structure/table, /obj/item/paper/fluff/awaymissions/centcom/gateway_memo, @@ -1965,7 +1863,7 @@ /turf/open/floor/engine, /area/awaymission/centcomAway/general) "hi" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall/r_wall, /area/awaymission/centcomAway/general) "hj" = ( @@ -2041,19 +1939,6 @@ }, /turf/open/floor/plating, /area/awaymission/centcomAway/courtroom) -"hu" = ( -/obj/effect/spawner/structure/window/hollow/reinforced, -/turf/open/floor/plating, -/area/awaymission/centcomAway/hangar) -"hv" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 4 - }, -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) -"hw" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/centcomAway/hangar) "hx" = ( /obj/structure/table, /obj/item/clothing/gloves/color/yellow, @@ -2063,7 +1948,7 @@ /turf/open/floor/plating, /area/awaymission/centcomAway/hangar) "hy" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/awaymission/centcomAway/general) "hz" = ( @@ -2191,7 +2076,7 @@ /turf/open/floor/wood, /area/awaymission/centcomAway/courtroom) "hU" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall/r_wall, /area/awaymission/centcomAway/hangar) "hV" = ( @@ -2263,11 +2148,6 @@ /obj/machinery/computer/mech_bay_power_console, /turf/open/floor/circuit, /area/awaymission/centcomAway/hangar) -"ik" = ( -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/awaymission/centcomAway/hangar) "il" = ( /obj/structure/mecha_wreckage/ripley, /turf/open/floor/plasteel/dark, @@ -2330,12 +2210,6 @@ /obj/effect/spawner/structure/window/hollow/reinforced/middle, /turf/open/floor/plating, /area/awaymission/centcomAway/courtroom) -"ix" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/awaymission/centcomAway/courtroom) "iy" = ( /obj/machinery/door/poddoor{ id = "XCCMechs"; @@ -2363,12 +2237,6 @@ }, /turf/open/floor/plasteel, /area/awaymission/centcomAway/hangar) -"iC" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end{ - dir = 4 - }, -/turf/open/floor/plating, -/area/awaymission/centcomAway/general) "iD" = ( /obj/structure/window/reinforced, /turf/open/floor/plasteel/vault{ @@ -2382,11 +2250,6 @@ /obj/machinery/recharge_station, /turf/open/floor/plasteel/dark, /area/awaymission/centcomAway/hangar) -"iG" = ( -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/awaymission/centcomAway/hangar) "iH" = ( /obj/structure/window/reinforced{ dir = 4 @@ -2575,11 +2438,6 @@ /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/plasteel/grimy, /area/awaymission/centcomAway/general) -"jl" = ( -/turf/open/floor/plasteel/green/corner{ - dir = 8 - }, -/area/awaymission/centcomAway/general) "jm" = ( /turf/open/floor/plasteel/green/corner{ dir = 2 @@ -2798,14 +2656,8 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/awaymission/centcomAway/general) -"jT" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end{ - dir = 8 - }, -/turf/open/floor/plating, -/area/awaymission/centcomAway/general) "jU" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall/r_wall, /area/awaymission/centcomAway/general) "jV" = ( @@ -2849,12 +2701,6 @@ }, /turf/open/floor/plating, /area/awaymission/centcomAway/hangar) -"kb" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end{ - dir = 8 - }, -/turf/open/floor/plating, -/area/awaymission/centcomAway/general) "kc" = ( /obj/machinery/gateway{ dir = 8 @@ -2908,10 +2754,6 @@ dir = 6 }, /area/awaymission/centcomAway/general) -"kk" = ( -/obj/effect/spawner/structure/window/hollow/reinforced, -/turf/open/floor/plating, -/area/awaymission/centcomAway/general) "kl" = ( /obj/effect/spawner/structure/window/hollow/reinforced/end{ dir = 1 @@ -2919,12 +2761,6 @@ /obj/structure/window/reinforced, /turf/open/floor/plating, /area/awaymission/centcomAway/general) -"km" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end{ - dir = 4 - }, -/turf/open/floor/plating, -/area/awaymission/centcomAway/general) "kn" = ( /obj/structure/table, /obj/item/device/flashlight/flare, @@ -3091,12 +2927,6 @@ dir = 6 }, /area/awaymission/centcomAway/general) -"kM" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/end{ - dir = 1 - }, -/turf/open/floor/plating, -/area/awaymission/centcomAway/general) "kN" = ( /obj/structure/table/wood, /obj/item/clothing/accessory/medal, @@ -3790,11 +3620,6 @@ /obj/item/storage/belt/utility/full, /turf/open/floor/plasteel/grimy, /area/awaymission/centcomAway/general) -"mV" = ( -/turf/open/floor/plasteel/redyellow{ - dir = 5 - }, -/area/awaymission/centcomAway/thunderdome) "mW" = ( /obj/structure/chair/stool{ pixel_y = 8 @@ -8421,7 +8246,7 @@ bo bC bR bR -bS +bn bn bd bR @@ -8679,7 +8504,7 @@ aV bd bq bC -bS +bn cm cx cm @@ -8692,7 +8517,7 @@ bB bB bB bB -bS +bn bR bR bd @@ -8704,9 +8529,9 @@ gm gD gD gD -gT +bn he -gT +bn gD aV il @@ -8809,7 +8634,7 @@ aV bd bn bB -bT +bn cn cn cJ @@ -8823,7 +8648,7 @@ dz dz dz bB -bS +bn bR bR bd @@ -9483,9 +9308,9 @@ bd gm gD gD -gT +bn he -gT +bn gD gD aV @@ -9849,7 +9674,7 @@ aV bd bn bB -bT +bn cn cn cP @@ -9979,7 +9804,7 @@ aV bd bo bC -bS +bn cm cx cm @@ -10241,7 +10066,7 @@ bq bC bR bR -bS +bn bn bd bd diff --git a/_maps/RandomZLevels/challenge.dmm b/_maps/RandomZLevels/challenge.dmm index 282a1fc07f..8f454aedc9 100644 --- a/_maps/RandomZLevels/challenge.dmm +++ b/_maps/RandomZLevels/challenge.dmm @@ -242,7 +242,7 @@ "aX" = ( /obj/machinery/porta_turret{ dir = 8; - emagged = 1; + set_obj_flags = "EMAGGED"; installation = /obj/item/gun/energy/lasercannon }, /turf/open/floor/plating/airless, @@ -384,7 +384,7 @@ "bq" = ( /obj/machinery/porta_turret{ dir = 8; - emagged = 1; + set_obj_flags = "EMAGGED"; installation = /obj/item/gun/energy/lasercannon }, /turf/open/floor/plating, @@ -796,7 +796,7 @@ /turf/open/space, /area/space/nearstation) "cA" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/indestructible{ icon_state = "iron0" }, @@ -899,12 +899,6 @@ }, /turf/open/floor/plating, /area/awaymission/challenge/end) -"cQ" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/circuit, -/area/awaymission/challenge/end) "cR" = ( /obj/machinery/gateway{ dir = 9 @@ -929,12 +923,6 @@ dir = 4 }, /area/awaymission/challenge/end) -"cU" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/circuit, -/area/awaymission/challenge/end) "cV" = ( /obj/machinery/gateway{ dir = 8 diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm index 80e7c8e8eb..7ab1cfa1b6 100644 --- a/_maps/RandomZLevels/moonoutpost19.dmm +++ b/_maps/RandomZLevels/moonoutpost19.dmm @@ -16,22 +16,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/hive) -"ae" = ( -/obj/structure/alien/weeds, -/obj/structure/alien/resin/wall, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/hive) -"af" = ( -/obj/structure/alien/weeds, -/obj/structure/alien/resin/wall, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/hive) "ag" = ( /obj/structure/alien/weeds, /obj/structure/alien/weeds{ @@ -45,19 +29,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/hive) -"ah" = ( -/obj/structure/alien/weeds, -/obj/structure/alien/weeds{ - desc = "A large mottled egg."; - obj_integrity = 100; - icon_state = "egg_hatched"; - name = "egg" - }, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/hive) "ai" = ( /obj/structure/alien/weeds, /turf/open/floor/plating/asteroid{ @@ -81,19 +52,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/hive) -"al" = ( -/obj/structure/alien/weeds, -/obj/structure/alien/weeds{ - desc = "A large mottled egg."; - obj_integrity = 100; - icon_state = "egg_hatched"; - name = "egg" - }, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/hive) "am" = ( /obj/structure/alien/weeds/node, /turf/open/floor/plating/asteroid{ @@ -101,22 +59,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/hive) -"an" = ( -/obj/structure/alien/weeds, -/obj/structure/bed/nest, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/hive) -"ao" = ( -/obj/structure/alien/weeds, -/obj/structure/bed/nest, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/hive) "ap" = ( /obj/structure/alien/weeds, /obj/structure/bed/nest, @@ -128,20 +70,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/hive) -"aq" = ( -/obj/structure/alien/weeds, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/hive) -"ar" = ( -/obj/structure/alien/weeds, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/hive) "as" = ( /obj/structure/alien/weeds, /obj/structure/alien/resin/wall, @@ -178,14 +106,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/hive) -"ax" = ( -/obj/structure/alien/weeds, -/obj/effect/decal/cleanable/blood/gibs, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/hive) "ay" = ( /turf/open/floor/plasteel/darkred/side{ dir = 9; @@ -300,14 +220,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/hive) -"aL" = ( -/obj/structure/alien/weeds, -/obj/effect/decal/cleanable/blood/gibs, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/hive) "aM" = ( /obj/structure/alien/weeds, /mob/living/simple_animal/hostile/alien/drone{ @@ -433,16 +345,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/main) -"bb" = ( -/obj/structure/alien/weeds, -/mob/living/simple_animal/hostile/alien/drone{ - plants_off = 1 - }, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/hive) "bc" = ( /obj/structure/alien/weeds, /obj/effect/decal/cleanable/blood, @@ -503,14 +405,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/hive) -"bk" = ( -/obj/structure/alien/weeds, -/mob/living/simple_animal/hostile/alien/sentinel, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/hive) "bl" = ( /turf/closed/mineral/random/high_chance, /area/awaymission/moonoutpost19/hive) @@ -537,7 +431,7 @@ frequency = 1439; locked = 1; pixel_y = 23; - req_access = "150" + req_access = list(150) }, /turf/open/floor/plasteel/bar{ heat_capacity = 1e+006 @@ -717,7 +611,7 @@ frequency = 1439; locked = 1; pixel_x = 23; - req_access = "150" + req_access = list(150) }, /turf/open/floor/plasteel/floorgrime{ dir = 8; @@ -867,7 +761,7 @@ frequency = 1439; locked = 1; pixel_y = 23; - req_access = "150" + req_access = list(150) }, /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -966,7 +860,7 @@ frequency = 1439; locked = 0; pixel_y = 23; - req_access = "150" + req_access = list(150) }, /turf/open/floor/plasteel{ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; @@ -977,7 +871,7 @@ }, /area/awaymission/moonoutpost19/syndicate) "ce" = ( -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_y = 32 }, /obj/structure/alien/weeds/node, @@ -1005,7 +899,7 @@ }, /area/awaymission/moonoutpost19/syndicate) "cg" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/corner{ @@ -1127,7 +1021,7 @@ "cr" = ( /obj/machinery/door/airlock/public/glass{ density = 0; - emagged = 1; + set_obj_flags = "EMAGGED"; icon_state = "open"; locked = 1; name = "Dormitories" @@ -1326,7 +1220,7 @@ locked = 1; name = "Worn-out APC"; pixel_y = -25; - req_access = "150"; + req_access = list(150); start_charge = 0 }, /turf/open/floor/plasteel/red/side{ @@ -1420,7 +1314,7 @@ frequency = 1439; locked = 1; pixel_x = 23; - req_access = "150" + req_access = list(150) }, /obj/machinery/light{ active_power_usage = 0; @@ -1438,7 +1332,7 @@ "cT" = ( /obj/machinery/door/airlock{ density = 0; - emagged = 1; + set_obj_flags = "EMAGGED"; icon_state = "open"; id_tag = "awaydorm4"; locked = 1; @@ -1603,7 +1497,7 @@ frequency = 1439; locked = 1; pixel_x = -23; - req_access = "150" + req_access = list(150) }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood{ @@ -1634,7 +1528,7 @@ frequency = 1439; locked = 1; pixel_x = 23; - req_access = "150" + req_access = list(150) }, /turf/open/floor/wood{ heat_capacity = 1e+006 @@ -1750,7 +1644,7 @@ "du" = ( /obj/machinery/door/airlock/external{ density = 0; - emagged = 1; + set_obj_flags = "EMAGGED"; icon_state = "open"; locked = 1; opacity = 0; @@ -1827,7 +1721,7 @@ /turf/closed/mineral, /area/awaymission/moonoutpost19/main) "dB" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ desc = "A warning sign which reads 'HOSTILE ATMOSPHERE AHEAD'"; name = "\improper HOSTILE ATMOSPHERE AHEAD"; pixel_y = -32 @@ -1910,7 +1804,7 @@ "dI" = ( /obj/machinery/door/airlock/external{ density = 0; - emagged = 1; + set_obj_flags = "EMAGGED"; icon_state = "open"; locked = 1; opacity = 0; @@ -1998,14 +1892,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/main) -"dR" = ( -/obj/structure/alien/weeds, -/obj/structure/alien/resin/wall, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/main) "dS" = ( /obj/structure/alien/weeds, /obj/effect/decal/cleanable/blood, @@ -2024,13 +1910,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/main) -"dU" = ( -/obj/structure/alien/weeds, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/main) "dV" = ( /obj/structure/alien/weeds/node, /obj/structure/alien/resin/wall, @@ -2039,21 +1918,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/main) -"dW" = ( -/obj/structure/alien/weeds, -/obj/structure/alien/resin/wall, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/main) -"dX" = ( -/obj/structure/alien/weeds, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/main) "dY" = ( /obj/machinery/light/small, /turf/open/floor/plating/asteroid{ @@ -2085,7 +1949,7 @@ }, /area/awaymission/moonoutpost19/research) "ec" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall/r_wall, /area/awaymission/moonoutpost19/research) "ed" = ( @@ -2220,12 +2084,6 @@ /obj/item/clothing/mask/facehugger/impregnated, /turf/open/floor/engine, /area/awaymission/moonoutpost19/research) -"es" = ( -/obj/structure/alien/weeds, -/obj/structure/bed/nest, -/obj/effect/decal/cleanable/blood/gibs, -/turf/open/floor/engine, -/area/awaymission/moonoutpost19/research) "et" = ( /obj/machinery/vending/coffee, /turf/open/floor/plasteel/dark, @@ -2247,16 +2105,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/research) -"ew" = ( -/obj/machinery/atmospherics/components/unary/portables_connector{ - dir = 4 - }, -/obj/machinery/portable_atmospherics/canister, -/obj/structure/alien/weeds, -/turf/open/floor/plasteel{ - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/research) "ex" = ( /obj/structure/cable{ icon_state = "1-2" @@ -2299,41 +2147,18 @@ }, /area/awaymission/moonoutpost19/research) "eA" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/awaymission/moonoutpost19/research) "eB" = ( /obj/structure/alien/weeds/node, /turf/open/floor/engine, /area/awaymission/moonoutpost19/research) -"eC" = ( -/obj/structure/alien/weeds, -/turf/open/floor/engine, -/area/awaymission/moonoutpost19/research) -"eD" = ( -/obj/structure/alien/weeds, -/obj/structure/alien/resin/wall, -/turf/open/floor/engine, -/area/awaymission/moonoutpost19/research) -"eE" = ( -/obj/structure/alien/weeds, -/obj/structure/alien/resin/wall, -/turf/open/floor/engine, -/area/awaymission/moonoutpost19/research) "eF" = ( /obj/structure/alien/weeds, /obj/structure/bed/nest, /turf/open/floor/engine, /area/awaymission/moonoutpost19/research) -"eG" = ( -/obj/structure/alien/weeds, -/obj/effect/decal/cleanable/blood/gibs, -/turf/open/floor/engine, -/area/awaymission/moonoutpost19/research) "eH" = ( /obj/structure/alien/weeds, /obj/structure/alien/weeds{ @@ -2412,25 +2237,11 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/research) -"eP" = ( -/obj/structure/alien/weeds, -/obj/structure/alien/weeds{ - desc = "A large mottled egg."; - obj_integrity = 100; - icon_state = "egg_hatched"; - name = "egg" - }, -/turf/open/floor/engine, -/area/awaymission/moonoutpost19/research) "eQ" = ( /obj/structure/alien/weeds, /obj/effect/decal/cleanable/blood, /turf/open/floor/engine, /area/awaymission/moonoutpost19/research) -"eR" = ( -/obj/structure/alien/weeds, -/turf/open/floor/engine, -/area/awaymission/moonoutpost19/research) "eS" = ( /obj/machinery/power/port_gen/pacman{ desc = "A portable generator for emergency backup power."; @@ -2579,7 +2390,7 @@ }, /area/awaymission/moonoutpost19/research) "fe" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/structure/cable{ @@ -2692,16 +2503,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/research) -"fo" = ( -/obj/structure/alien/weeds, -/obj/structure/alien/weeds{ - desc = "A large mottled egg."; - obj_integrity = 100; - icon_state = "egg_hatched"; - name = "egg" - }, -/turf/open/floor/engine, -/area/awaymission/moonoutpost19/research) "fp" = ( /obj/structure/alien/weeds, /obj/structure/bed/nest, @@ -2788,7 +2589,7 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/research{ density = 0; - emagged = 1; + set_obj_flags = "EMAGGED"; icon_state = "open"; locked = 1; name = "Xenobiology Lab"; @@ -2916,16 +2717,6 @@ /obj/structure/alien/resin/wall, /turf/open/floor/engine, /area/awaymission/moonoutpost19/research) -"fI" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - desc = "A one meter section of pipe. This one has been applied with an acid-proof coating."; - dir = 4; - name = "Acid-Proof Pipe" - }, -/obj/structure/alien/weeds, -/obj/structure/alien/resin/wall, -/turf/open/floor/engine, -/area/awaymission/moonoutpost19/research) "fJ" = ( /obj/machinery/atmospherics/components/unary/outlet_injector{ desc = "Has a valve and pump attached to it. This one has been applied with an acid-proof coating."; @@ -3071,7 +2862,7 @@ }, /area/awaymission/moonoutpost19/research) "fX" = ( -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_x = 32 }, /obj/structure/cable{ @@ -3140,18 +2931,6 @@ }, /turf/open/floor/engine, /area/awaymission/moonoutpost19/research) -"gd" = ( -/obj/structure/alien/weeds, -/obj/structure/bed/nest, -/obj/effect/decal/cleanable/blood/gibs, -/turf/open/floor/engine, -/area/awaymission/moonoutpost19/research) -"ge" = ( -/obj/structure/alien/weeds, -/obj/structure/bed/nest, -/obj/item/clothing/mask/facehugger/impregnated, -/turf/open/floor/engine, -/area/awaymission/moonoutpost19/research) "gf" = ( /obj/structure/chair/stool, /turf/open/floor/plating{ @@ -3756,14 +3535,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/hive) -"hl" = ( -/obj/structure/alien/weeds, -/obj/structure/alien/egg, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/hive) "hm" = ( /obj/machinery/vending/medical{ req_access_txt = "201" @@ -3950,7 +3721,7 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/command{ density = 0; - emagged = 1; + set_obj_flags = "EMAGGED"; icon_state = "open"; locked = 1; name = "Research Director's Office"; @@ -4395,7 +4166,7 @@ }, /area/awaymission/moonoutpost19/research) "iu" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/machinery/shower{ @@ -4883,7 +4654,7 @@ }, /area/awaymission/moonoutpost19/arrivals) "jx" = ( -/obj/structure/sign/science{ +/obj/structure/sign/departments/science{ pixel_y = 32 }, /obj/effect/decal/cleanable/dirt, @@ -5688,13 +5459,6 @@ "ld" = ( /turf/closed/wall/mineral/titanium, /area/awaymission/moonoutpost19/arrivals) -"le" = ( -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/turf/closed/wall/mineral/titanium, -/area/awaymission/moonoutpost19/arrivals) "lf" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/arrival{ @@ -5885,22 +5649,10 @@ temperature = 273.15 }, /area/awaymission/moonoutpost19/arrivals) -"ly" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/moonoutpost19/arrivals) -"lz" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/moonoutpost19/arrivals) "lA" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/awaymission/moonoutpost19/arrivals) -"lB" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/moonoutpost19/arrivals) -"lC" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/moonoutpost19/arrivals) "lD" = ( /obj/structure/shuttle/engine/heater{ dir = 4 @@ -6038,9 +5790,6 @@ temperature = 273.15 }, /area/awaymission/moonoutpost19/arrivals) -"lV" = ( -/turf/closed/wall/mineral/titanium/interior, -/area/awaymission/moonoutpost19/arrivals) "lW" = ( /obj/structure/table, /obj/item/storage/lockbox, @@ -6051,9 +5800,6 @@ /obj/item/device/radio/off, /turf/open/floor/mineral/titanium/yellow, /area/awaymission/moonoutpost19/arrivals) -"lY" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/moonoutpost19/arrivals) "lZ" = ( /obj/machinery/computer/security/telescreen/entertainment{ pixel_x = -32 @@ -6230,7 +5976,7 @@ /turf/open/floor/mineral/titanium/yellow, /area/awaymission/moonoutpost19/arrivals) "mv" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ desc = "A warning sign which reads 'HOSTILE ATMOSPHERE AHEAD'"; name = "\improper HOSTILE ATMOSPHERE AHEAD" }, @@ -6343,7 +6089,7 @@ /turf/open/floor/mineral/titanium/yellow, /area/awaymission/moonoutpost19/arrivals) "mJ" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ desc = "A beacon used by a teleporter."; icon = 'icons/obj/radio.dmi'; icon_state = "beacon"; @@ -6490,9 +6236,6 @@ }, /turf/open/floor/mineral/titanium/yellow, /area/awaymission/moonoutpost19/arrivals) -"mX" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/moonoutpost19/arrivals) "mY" = ( /obj/machinery/light/small{ dir = 4 @@ -6541,12 +6284,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/arrivals) -"nd" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/moonoutpost19/arrivals) -"ne" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/moonoutpost19/arrivals) "nf" = ( /obj/structure/filingcabinet, /turf/open/floor/mineral/titanium/blue, @@ -6601,7 +6338,7 @@ }, /area/awaymission/moonoutpost19/arrivals) "nm" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ desc = "A warning sign which reads 'HOSTILE ATMOSPHERE AHEAD'"; name = "\improper HOSTILE ATMOSPHERE AHEAD"; pixel_y = 32 @@ -6610,9 +6347,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/arrivals) -"nn" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/moonoutpost19/arrivals) "no" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ @@ -6680,9 +6414,6 @@ temperature = 251 }, /area/awaymission/moonoutpost19/arrivals) -"nv" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/moonoutpost19/arrivals) "nw" = ( /obj/machinery/washing_machine, /turf/open/floor/plasteel/barber{ @@ -6851,7 +6582,7 @@ }, /area/awaymission/moonoutpost19/arrivals) "nK" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ desc = "A warning sign which reads 'HOSTILE ATMOSPHERE AHEAD'"; name = "\improper HOSTILE ATMOSPHERE AHEAD"; pixel_x = -32 @@ -7052,269 +6783,6 @@ heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/main) -"of" = ( -/obj/item/shard, -/turf/open/floor/mineral/titanium, -/area/awaymission/moonoutpost19/main) -"og" = ( -/obj/item/shard{ - icon_state = "medium" - }, -/turf/open/floor/mineral/titanium, -/area/awaymission/moonoutpost19/main) -"oh" = ( -/obj/item/shard{ - icon_state = "small" - }, -/turf/open/floor/mineral/titanium, -/area/awaymission/moonoutpost19/main) -"oi" = ( -/turf/open/floor/mineral/titanium, -/area/awaymission/moonoutpost19/main) -"oj" = ( -/obj/structure/grille/broken, -/turf/open/floor/mineral/titanium, -/area/awaymission/moonoutpost19/main) -"ok" = ( -/obj/item/stack/rods, -/turf/open/floor/mineral/titanium, -/area/awaymission/moonoutpost19/main) -"ol" = ( -/obj/item/stack/cable_coil, -/turf/open/floor/mineral/titanium, -/area/awaymission/moonoutpost19/main) -"om" = ( -/obj/item/stack/cable_coil{ - amount = 5 - }, -/turf/open/floor/mineral/titanium, -/area/awaymission/moonoutpost19/main) -"on" = ( -/obj/item/stack/cable_coil{ - amount = 2; - icon_state = "coil_red2"; - item_state = "coil_red2" - }, -/turf/open/floor/mineral/titanium, -/area/awaymission/moonoutpost19/main) -"oo" = ( -/obj/item/stack/cable_coil{ - amount = 1; - icon_state = "coil_red1"; - item_state = "coil_red1" - }, -/turf/open/floor/mineral/titanium, -/area/awaymission/moonoutpost19/main) -"op" = ( -/turf/open/floor/plasteel{ - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/main) -"oq" = ( -/turf/open/floor/plasteel/floorgrime{ - dir = 8; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/main) -"or" = ( -/turf/open/floor/plasteel{ - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged1" - }, -/area/awaymission/moonoutpost19/main) -"os" = ( -/turf/open/floor/plasteel{ - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged2" - }, -/area/awaymission/moonoutpost19/main) -"ot" = ( -/turf/open/floor/plasteel{ - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged3" - }, -/area/awaymission/moonoutpost19/main) -"ou" = ( -/turf/open/floor/plasteel{ - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged4" - }, -/area/awaymission/moonoutpost19/main) -"ov" = ( -/turf/open/floor/plasteel{ - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged5" - }, -/area/awaymission/moonoutpost19/main) -"ow" = ( -/turf/open/floor/plasteel{ - dir = 8; - heat_capacity = 1e+006; - icon_state = "floorscorched1" - }, -/area/awaymission/moonoutpost19/main) -"ox" = ( -/turf/open/floor/plasteel{ - dir = 8; - heat_capacity = 1e+006; - icon_state = "floorscorched2" - }, -/area/awaymission/moonoutpost19/main) -"oy" = ( -/turf/open/floor/mineral/titanium/blue, -/area/awaymission/moonoutpost19/main) -"oz" = ( -/turf/open/floor/plating{ - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/main) -"oA" = ( -/turf/open/floor/plating{ - heat_capacity = 1e+006; - icon_state = "platingdmg1" - }, -/area/awaymission/moonoutpost19/main) -"oB" = ( -/turf/open/floor/plating{ - heat_capacity = 1e+006; - icon_state = "platingdmg2" - }, -/area/awaymission/moonoutpost19/main) -"oC" = ( -/turf/open/floor/plating{ - heat_capacity = 1e+006; - icon_state = "platingdmg3" - }, -/area/awaymission/moonoutpost19/main) -"oD" = ( -/turf/open/floor/plating{ - heat_capacity = 1e+006; - icon_state = "panelscorched" - }, -/area/awaymission/moonoutpost19/main) -"oE" = ( -/turf/open/floor/plasteel{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/main) -"oF" = ( -/turf/open/floor/plasteel/floorgrime{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - dir = 8; - heat_capacity = 1e+006; - temperature = 251 - }, -/area/awaymission/moonoutpost19/main) -"oG" = ( -/turf/open/floor/plasteel{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged1"; - temperature = 251 - }, -/area/awaymission/moonoutpost19/main) -"oH" = ( -/turf/open/floor/plasteel{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged2"; - temperature = 251 - }, -/area/awaymission/moonoutpost19/main) -"oI" = ( -/turf/open/floor/plasteel{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged3"; - temperature = 251 - }, -/area/awaymission/moonoutpost19/main) -"oJ" = ( -/turf/open/floor/plasteel{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged4"; - temperature = 251 - }, -/area/awaymission/moonoutpost19/main) -"oK" = ( -/turf/open/floor/plasteel{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged5"; - temperature = 251 - }, -/area/awaymission/moonoutpost19/main) -"oL" = ( -/turf/open/floor/plasteel{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - dir = 8; - heat_capacity = 1e+006; - icon_state = "floorscorched1"; - temperature = 251 - }, -/area/awaymission/moonoutpost19/main) -"oM" = ( -/turf/open/floor/plasteel{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - dir = 8; - heat_capacity = 1e+006; - icon_state = "floorscorched2"; - temperature = 251 - }, -/area/awaymission/moonoutpost19/main) -"oN" = ( -/turf/open/floor/mineral/titanium/yellow, -/area/awaymission/moonoutpost19/main) -"oO" = ( -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006 - }, -/area/awaymission/moonoutpost19/main) -"oP" = ( -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006; - icon_state = "platingdmg1"; - temperature = 251 - }, -/area/awaymission/moonoutpost19/main) -"oQ" = ( -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006; - icon_state = "platingdmg2"; - temperature = 251 - }, -/area/awaymission/moonoutpost19/main) -"oR" = ( -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006; - icon_state = "platingdmg3"; - temperature = 251 - }, -/area/awaymission/moonoutpost19/main) -"oS" = ( -/turf/open/floor/plating{ - initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; - heat_capacity = 1e+006; - icon_state = "panelscorched"; - temperature = 251 - }, -/area/awaymission/moonoutpost19/main) "oT" = ( /obj/structure/closet/secure_closet{ icon_state = "science"; @@ -32684,11 +32152,11 @@ ba ba ba lc -lV +lc mp mG mV -lV +lc lc ba ba diff --git a/_maps/RandomZLevels/research.dmm b/_maps/RandomZLevels/research.dmm index 6c9a86a7cc..adf8fb7f87 100644 --- a/_maps/RandomZLevels/research.dmm +++ b/_maps/RandomZLevels/research.dmm @@ -551,7 +551,7 @@ }, /area/awaymission/research/interior/engineering) "bP" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = 32 }, /turf/open/floor/plating, @@ -589,7 +589,7 @@ /turf/open/floor/plasteel/dark, /area/awaymission/research/interior/gateway) "bV" = ( -/obj/structure/sign/nosmoking_1{ +/obj/structure/sign/warning/nosmoking/circle{ pixel_x = -32 }, /turf/open/floor/plasteel/whiteyellow/side{ @@ -731,12 +731,6 @@ /obj/machinery/light/small, /turf/open/floor/plating, /area/awaymission/research/interior/maint) -"co" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/awaymission/research/interior/maint) "cp" = ( /turf/closed/wall/r_wall, /area/awaymission/research/interior) @@ -1763,7 +1757,7 @@ /turf/open/floor/plasteel/whitered/side, /area/awaymission/research/interior/security) "fv" = ( -/obj/structure/sign/goldenplaque{ +/obj/structure/sign/plaques/golden{ pixel_x = 32 }, /turf/open/floor/plasteel/whitered/corner{ @@ -2007,12 +2001,6 @@ }, /turf/open/floor/plasteel/dark, /area/awaymission/research/interior/secure) -"gi" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/dark, -/area/awaymission/research/interior/secure) "gj" = ( /obj/structure/cable{ icon_state = "4-8" @@ -2147,7 +2135,7 @@ /turf/open/floor/plasteel/whitepurple, /area/awaymission/research/interior) "gB" = ( -/obj/structure/sign/science, +/obj/structure/sign/departments/science, /turf/closed/wall/r_wall, /area/awaymission/research/interior) "gC" = ( @@ -2284,12 +2272,6 @@ dir = 1 }, /area/awaymission/research/interior) -"gW" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/whitepurple, -/area/awaymission/research/interior) "gX" = ( /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/plasteel/whitepurple/side{ @@ -2436,12 +2418,6 @@ dir = 10 }, /area/awaymission/research/interior/cryo) -"hw" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/awaymission/research/interior/maint) "hx" = ( /obj/structure/cable{ icon_state = "2-4" @@ -2671,12 +2647,6 @@ }, /turf/open/floor/plasteel/purple, /area/awaymission/research/interior/genetics) -"ic" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/purple, -/area/awaymission/research/interior/genetics) "id" = ( /turf/closed/wall, /area/awaymission/research/interior/maint) @@ -3235,15 +3205,9 @@ /turf/open/floor/plasteel/whiteblue, /area/awaymission/research/interior) "jK" = ( -/obj/structure/sign/bluecross, +/obj/structure/sign/departments/medbay, /turf/closed/wall/r_wall, /area/awaymission/research/interior) -"jL" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/whiteblue, -/area/awaymission/research/interior) "jM" = ( /obj/machinery/light{ dir = 8 @@ -3531,43 +3495,6 @@ dir = 4 }, /area/awaymission/research/interior/dorm) -"kG" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/airlock/maintenance_hatch{ - req_access_txt = "12" - }, -/turf/open/floor/plating, -/area/awaymission/research/interior/maint) -"kH" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 4 - }, -/area/awaymission/research/interior) -"kI" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/whitegreen, -/area/awaymission/research/interior) -"kJ" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 8 - }, -/area/awaymission/research/interior) -"kK" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/awaymission/research/interior/maint) "kL" = ( /turf/open/floor/plating, /area/awaymission/research/interior/medbay) @@ -3585,15 +3512,6 @@ /obj/structure/chair/comfy/beige, /turf/open/floor/plasteel/whiteblue/side, /area/awaymission/research/interior/medbay) -"kP" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plating, -/area/awaymission/research/interior/maint) "kQ" = ( /obj/structure/chair/stool, /turf/open/floor/plasteel/yellowsiding{ @@ -4037,13 +3955,13 @@ /area/awaymission/research/exterior) "mg" = ( /obj/structure/closet/emcloset, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = 32 }, /turf/open/floor/plating, /area/awaymission/research/interior/escapepods) "mh" = ( -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ pixel_x = -32 }, /turf/open/floor/plasteel/whitegreen/corner, @@ -4139,12 +4057,6 @@ "my" = ( /turf/closed/wall/mineral/titanium/interior, /area/awaymission/research/exterior) -"mz" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 8 - }, -/turf/closed/wall/mineral/titanium, -/area/awaymission/research/exterior) "mA" = ( /obj/structure/chair{ dir = 8 @@ -4198,7 +4110,7 @@ }, /area/awaymission/research/interior/escapepods) "mI" = ( -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ pixel_x = -32 }, /turf/open/floor/plasteel/whitegreen/side{ @@ -4263,14 +4175,6 @@ }, /turf/open/floor/plasteel/whitegreen/side, /area/awaymission/research/interior/escapepods) -"mR" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 4 - }, -/area/awaymission/research/interior/escapepods) "mS" = ( /obj/machinery/door/airlock/external{ name = "Escape Pod Three"; @@ -4284,7 +4188,7 @@ }, /area/awaymission/research/interior/escapepods) "mU" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = -32 }, /obj/machinery/light, @@ -4299,7 +4203,7 @@ }, /area/awaymission/research/interior/escapepods) "mW" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = -32 }, /turf/open/floor/plasteel/whitegreen/side{ @@ -4347,9 +4251,6 @@ "nf" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/awaymission/research/interior/engineering) -"ng" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/awaymission/research/interior/engineering) (1,1,1) = {" aa @@ -42492,7 +42393,7 @@ aq ay an aL -ng +nf bf bs bK diff --git a/_maps/RandomZLevels/snowdin.dmm b/_maps/RandomZLevels/snowdin.dmm index 2df265cda6..2810199934 100644 --- a/_maps/RandomZLevels/snowdin.dmm +++ b/_maps/RandomZLevels/snowdin.dmm @@ -944,11 +944,6 @@ temperature = 140 }, /area/awaymission/snowdin/post) -"dg" = ( -/turf/open/floor/plating{ - temperature = 140 - }, -/area/awaymission/snowdin/post) "dh" = ( /obj/structure/table, /obj/item/storage/toolbox/emergency, @@ -1133,14 +1128,6 @@ temperature = 140 }, /area/awaymission/snowdin/post) -"dI" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plating{ - temperature = 140 - }, -/area/awaymission/snowdin/post) "dJ" = ( /turf/open/floor/carpet, /area/awaymission/snowdin/post) @@ -1429,9 +1416,6 @@ /obj/effect/spawner/lootdrop/snowdin/dungeonmisc, /turf/open/floor/plating/snowed/colder, /area/awaymission/snowdin/dungeon1) -"eC" = ( -/turf/open/floor/plating/snowed, -/area/awaymission/snowdin/post) "eD" = ( /turf/closed/wall/ice, /area/awaymission/snowdin/dungeon1) @@ -1965,9 +1949,6 @@ temperature = 140 }, /area/awaymission/snowdin/cave) -"gr" = ( -/turf/open/floor/plating/snowed, -/area/awaymission/snowdin/post) "gs" = ( /obj/structure/girder, /turf/open/floor/plating{ @@ -2102,9 +2083,6 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, /area/awaymission/snowdin/post) -"gN" = ( -/turf/open/floor/plating, -/area/awaymission/snowdin/post) "gO" = ( /obj/structure/closet/crate, /obj/effect/spawner/lootdrop/snowdin/dungeonlite, @@ -2748,7 +2726,7 @@ /turf/open/floor/plasteel/whiteblue, /area/awaymission/snowdin/sekret) "iW" = ( -/obj/structure/sign/bluecross{ +/obj/structure/sign/departments/medbay{ pixel_x = -32 }, /turf/open/floor/plasteel{ @@ -2892,9 +2870,6 @@ wet = 0 }, /area/awaymission/snowdin/sekret) -"jw" = ( -/turf/open/floor/plating, -/area/awaymission/snowdin) "jx" = ( /obj/effect/decal/cleanable/blood, /obj/effect/gibspawner/human, @@ -3818,7 +3793,7 @@ }, /area/awaymission/snowdin/sekret) "ms" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'WEAPONS HOT'."; name = "WEAPONS HOT"; pixel_y = 32 @@ -4194,7 +4169,7 @@ }, /area/awaymission/snowdin/sekret) "nu" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'WEAPONS HOT'."; name = "WEAPONS HOT"; pixel_y = -32 @@ -11276,8 +11251,8 @@ ac ac ac iK -jw -jw +cQ +cQ iK ac ac @@ -11533,8 +11508,8 @@ ac ac ac iK -jw -jw +cQ +cQ iK ac ac @@ -14604,8 +14579,8 @@ dz dz dz jk -jw -jw +cQ +cQ jk dp ac @@ -14861,8 +14836,8 @@ dz dz dz jk -jw -jw +cQ +cQ jk dp dp @@ -36949,9 +36924,9 @@ ao ao cZ df -gN -gN -gN +ao +ao +ao df cZ ig @@ -37205,11 +37180,11 @@ cZ hM fu cZ -gN -gN +ao +ao fD -gN -gN +ao +ao cZ ig ig @@ -37463,10 +37438,10 @@ cZ cZ cZ df -gN +ao fD fD -gN +ao cZ cZ cZ @@ -42971,7 +42946,7 @@ cN cZ dd dj -dg +de df de dr @@ -43227,7 +43202,7 @@ cN cN cZ df -dg +de df de de @@ -43487,7 +43462,7 @@ de de de de -dg +de df ad df @@ -43495,7 +43470,7 @@ de dE dG de -dI +dd de de de @@ -43751,11 +43726,11 @@ df dB de de -dg de de de -dg +de +de de de de @@ -43997,7 +43972,7 @@ cN cN cN cZ -dg +de df ad ad @@ -44273,7 +44248,7 @@ cZ cZ cZ dY -dg +de de de de @@ -44517,7 +44492,7 @@ de de df ds -dg +de df dC dC @@ -44771,11 +44746,11 @@ cY ad cY de -dg +de df ad ad -dg +de ad ad ad @@ -45030,7 +45005,7 @@ cY ad df df -dg +de dv dv ad @@ -45286,7 +45261,7 @@ cN ad df df -dg +de du dw dw diff --git a/_maps/RandomZLevels/spacebattle.dmm b/_maps/RandomZLevels/spacebattle.dmm index d1b199e8a3..4dff027d92 100644 --- a/_maps/RandomZLevels/spacebattle.dmm +++ b/_maps/RandomZLevels/spacebattle.dmm @@ -226,7 +226,7 @@ "bc" = ( /obj/machinery/porta_turret{ dir = 8; - emagged = 1; + set_obj_flags = "EMAGGED"; installation = /obj/item/gun/energy/lasercannon }, /turf/open/floor/plating, @@ -322,7 +322,7 @@ "by" = ( /obj/machinery/porta_turret{ dir = 8; - emagged = 1; + set_obj_flags = "EMAGGED"; installation = /obj/item/gun/energy/lasercannon }, /turf/open/floor/plating, @@ -344,7 +344,7 @@ "bG" = ( /obj/machinery/porta_turret{ dir = 8; - emagged = 1; + set_obj_flags = "EMAGGED"; installation = /obj/item/gun/energy/lasercannon }, /turf/open/floor/plating, @@ -917,7 +917,7 @@ "dZ" = ( /obj/machinery/porta_turret{ dir = 8; - emagged = 1; + set_obj_flags = "EMAGGED"; installation = /obj/item/gun/energy/lasercannon }, /turf/open/floor/engine, @@ -1718,7 +1718,7 @@ "gP" = ( /obj/machinery/porta_turret{ dir = 8; - emagged = 1; + set_obj_flags = "EMAGGED"; installation = /obj/item/gun/energy/lasercannon }, /turf/open/floor/plating/airless, @@ -2613,7 +2613,7 @@ "kq" = ( /obj/machinery/porta_turret{ dir = 8; - emagged = 1; + set_obj_flags = "EMAGGED"; installation = /obj/item/gun/energy/lasercannon }, /turf/open/floor/engine/vacuum, diff --git a/_maps/RandomZLevels/undergroundoutpost45.dmm b/_maps/RandomZLevels/undergroundoutpost45.dmm index d7b5f88402..665981815b 100644 --- a/_maps/RandomZLevels/undergroundoutpost45.dmm +++ b/_maps/RandomZLevels/undergroundoutpost45.dmm @@ -25,12 +25,6 @@ "ag" = ( /turf/closed/wall/mineral/titanium, /area/awaymission/undergroundoutpost45/central) -"ah" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/undergroundoutpost45/central) -"ai" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/undergroundoutpost45/central) "aj" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel{ @@ -146,12 +140,6 @@ heat_capacity = 1e+006 }, /area/awaymission/undergroundoutpost45/central) -"av" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/undergroundoutpost45/central) -"aw" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/undergroundoutpost45/central) "ax" = ( /obj/effect/landmark/awaystart, /turf/open/floor/plasteel{ @@ -168,7 +156,7 @@ }, /area/awaymission/undergroundoutpost45/central) "az" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ desc = "A beacon used by a teleporter."; icon = 'icons/obj/radio.dmi'; icon_state = "beacon"; @@ -180,9 +168,6 @@ heat_capacity = 1e+006 }, /area/awaymission/undergroundoutpost45/central) -"aA" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/undergroundoutpost45/central) "aB" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /obj/effect/landmark/awaystart, @@ -197,9 +182,6 @@ "aD" = ( /turf/closed/wall/rust, /area/awaymission/undergroundoutpost45/central) -"aE" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/undergroundoutpost45/central) "aF" = ( /turf/open/floor/plasteel/floorgrime{ dir = 8; @@ -1438,7 +1420,7 @@ "ds" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ desc = "A warning sign which reads 'DISPOSAL: LEADS TO EXTERIOR'"; name = "\improper DISPOSAL: LEADS TO EXTERIOR"; pixel_y = 32 @@ -2201,11 +2183,7 @@ "eV" = ( /obj/structure/closet/emcloset, /obj/item/clothing/mask/breath, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /turf/open/floor/plating{ @@ -2721,7 +2699,7 @@ /obj/structure/disposalpipe/trunk{ dir = 1 }, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ desc = "A warning sign which reads 'DISPOSAL: LEADS TO EXTERIOR'"; name = "\improper DISPOSAL: LEADS TO EXTERIOR"; pixel_y = -32 @@ -3815,7 +3793,7 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /turf/open/floor/plasteel/dark{ @@ -3845,7 +3823,7 @@ pixel_y = 3 }, /obj/item/stock_parts/scanning_module, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /obj/effect/turf_decal/stripes/line{ @@ -3994,7 +3972,7 @@ "iN" = ( /obj/structure/table, /obj/item/storage/firstaid/regular, -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_x = -32 }, /turf/open/floor/plasteel/floorgrime{ @@ -4155,7 +4133,7 @@ /obj/structure/disposalpipe/trunk{ dir = 4 }, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ desc = "A warning sign which reads 'DISPOSAL: LEADS TO EXTERIOR'"; name = "\improper DISPOSAL: LEADS TO EXTERIOR"; pixel_y = -32 @@ -4893,7 +4871,7 @@ /obj/structure/table, /obj/item/storage/belt/utility, /obj/item/clothing/head/welding, -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_y = 32 }, /obj/item/device/assembly/prox_sensor, @@ -4906,7 +4884,7 @@ }, /area/awaymission/undergroundoutpost45/gateway) "kz" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /turf/open/floor/plasteel/floorgrime{ @@ -4957,7 +4935,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /turf/open/floor/plasteel/white{ @@ -5179,7 +5157,7 @@ pixel_y = 25 }, /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /obj/effect/turf_decal/stripes/line{ @@ -5215,7 +5193,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, -/obj/structure/sign/science{ +/obj/structure/sign/departments/science{ pixel_x = -32 }, /turf/open/floor/plasteel/purple/corner{ @@ -5337,7 +5315,7 @@ pixel_y = -1 }, /obj/item/device/multitool, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /obj/effect/turf_decal/stripes/line{ @@ -5748,7 +5726,7 @@ /obj/structure/disposalpipe/trunk{ dir = 1 }, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ desc = "A warning sign which reads 'DISPOSAL: LEADS TO EXTERIOR'"; name = "\improper DISPOSAL: LEADS TO EXTERIOR"; pixel_y = -32 @@ -5938,7 +5916,7 @@ "mm" = ( /obj/structure/closet/firecloset, /obj/machinery/light/small, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = -32 }, /obj/effect/decal/cleanable/dirt, @@ -5960,7 +5938,7 @@ /area/awaymission/undergroundoutpost45/research) "mo" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /turf/open/floor/plasteel/purple/corner{ @@ -7626,7 +7604,7 @@ /obj/structure/disposalpipe/trunk{ dir = 4 }, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ desc = "A warning sign which reads 'DISPOSAL: LEADS TO EXTERIOR'"; name = "\improper DISPOSAL: LEADS TO EXTERIOR"; pixel_y = -32 @@ -8186,7 +8164,7 @@ /area/awaymission/undergroundoutpost45/research) "qj" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 32 @@ -8402,7 +8380,7 @@ /obj/machinery/computer/monitor{ name = "primary power monitoring console" }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /turf/open/floor/plasteel/yellow/side{ @@ -8973,7 +8951,7 @@ /area/awaymission/undergroundoutpost45/research) "rA" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = -32 @@ -9391,7 +9369,6 @@ }, /obj/machinery/door/poddoor/preopen{ id = "UO45_Engineering"; - layer = 2.9; name = "engineering security door" }, /turf/open/floor/plating{ @@ -9547,7 +9524,7 @@ /obj/structure/disposalpipe/trunk{ dir = 1 }, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ desc = "A warning sign which reads 'DISPOSAL: LEADS TO EXTERIOR'"; name = "\improper DISPOSAL: LEADS TO EXTERIOR"; pixel_y = -32 @@ -9814,7 +9791,6 @@ }, /obj/machinery/door/poddoor/preopen{ id = "UO45_Engineering"; - layer = 2.9; name = "engineering security door" }, /turf/open/floor/plating{ @@ -10124,7 +10100,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = -32 }, /turf/open/floor/plasteel/yellow/side{ @@ -10246,7 +10222,7 @@ name = "Unfiltered to Mix"; on = 1 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /turf/open/floor/plasteel/floorgrime{ @@ -10820,11 +10796,7 @@ "uN" = ( /obj/structure/closet/emcloset, /obj/item/clothing/mask/breath, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /turf/open/floor/plating{ @@ -10942,7 +10914,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/effect/decal/cleanable/dirt, @@ -10990,7 +10962,7 @@ /area/awaymission/undergroundoutpost45/engineering) "vc" = ( /obj/machinery/door/firedoor, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/machinery/door/poddoor/preopen{ @@ -11405,10 +11377,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /obj/machinery/vending/engivend{ @@ -11714,7 +11683,7 @@ /obj/structure/disposalpipe/trunk{ dir = 4 }, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ desc = "A warning sign which reads 'DISPOSAL: LEADS TO EXTERIOR'"; name = "\improper DISPOSAL: LEADS TO EXTERIOR"; pixel_x = -32 @@ -12208,7 +12177,7 @@ dir = 2; id = "UO45_mining" }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /obj/effect/turf_decal/stripes/line{ @@ -12604,11 +12573,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /obj/effect/decal/cleanable/dirt, @@ -12745,16 +12710,6 @@ temperature = 363.9 }, /area/awaymission/undergroundoutpost45/caves) -"ys" = ( -/obj/structure/alien/weeds, -/obj/structure/bed/nest, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=173.4;n2=135.1;plasma=229.8;TEMP=351.9"; - heat_capacity = 1e+006; - name = "Cave Floor"; - temperature = 363.9 - }, -/area/awaymission/undergroundoutpost45/caves) "yt" = ( /obj/structure/alien/weeds, /obj/structure/glowshroom/single, @@ -12775,16 +12730,6 @@ temperature = 363.9 }, /area/awaymission/undergroundoutpost45/caves) -"yv" = ( -/obj/structure/alien/weeds, -/obj/effect/decal/cleanable/blood/gibs/core, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=173.4;n2=135.1;plasma=229.8;TEMP=351.9"; - heat_capacity = 1e+006; - name = "Cave Floor"; - temperature = 363.9 - }, -/area/awaymission/undergroundoutpost45/caves) "yw" = ( /obj/structure/alien/weeds, /obj/effect/decal/cleanable/blood/splatter, @@ -12795,24 +12740,6 @@ temperature = 363.9 }, /area/awaymission/undergroundoutpost45/caves) -"yx" = ( -/obj/structure/alien/weeds, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=173.4;n2=135.1;plasma=229.8;TEMP=351.9"; - heat_capacity = 1e+006; - name = "Cave Floor"; - temperature = 363.9 - }, -/area/awaymission/undergroundoutpost45/caves) -"yy" = ( -/obj/structure/alien/weeds, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=173.4;n2=135.1;plasma=229.8;TEMP=351.9"; - heat_capacity = 1e+006; - name = "Cave Floor"; - temperature = 363.9 - }, -/area/awaymission/undergroundoutpost45/caves) "yz" = ( /obj/structure/alien/resin/membrane, /turf/open/floor/plating/asteroid{ @@ -12862,37 +12789,6 @@ temperature = 363.9 }, /area/awaymission/undergroundoutpost45/caves) -"yE" = ( -/obj/structure/alien/weeds, -/obj/effect/decal/cleanable/blood/splatter, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=173.4;n2=135.1;plasma=229.8;TEMP=351.9"; - heat_capacity = 1e+006; - name = "Cave Floor"; - temperature = 363.9 - }, -/area/awaymission/undergroundoutpost45/caves) -"yF" = ( -/obj/structure/alien/weeds, -/obj/effect/decal/cleanable/blood/gibs/down, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=173.4;n2=135.1;plasma=229.8;TEMP=351.9"; - heat_capacity = 1e+006; - name = "Cave Floor"; - temperature = 363.9 - }, -/area/awaymission/undergroundoutpost45/caves) -"yG" = ( -/obj/structure/alien/weeds, -/obj/structure/bed/nest, -/obj/effect/mob_spawn/human, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=173.4;n2=135.1;plasma=229.8;TEMP=351.9"; - heat_capacity = 1e+006; - name = "Cave Floor"; - temperature = 363.9 - }, -/area/awaymission/undergroundoutpost45/caves) "yH" = ( /obj/structure/alien/weeds, /obj/effect/decal/cleanable/blood/gibs/down, @@ -12904,161 +12800,6 @@ temperature = 363.9 }, /area/awaymission/undergroundoutpost45/caves) -"yI" = ( -/obj/structure/alien/weeds, -/obj/effect/mob_spawn/human, -/turf/open/floor/plating/asteroid{ - initial_gas_mix = "co2=173.4;n2=135.1;plasma=229.8;TEMP=351.9"; - heat_capacity = 1e+006; - name = "Cave Floor"; - temperature = 363.9 - }, -/area/awaymission/undergroundoutpost45/caves) -"yJ" = ( -/obj/item/shard, -/turf/open/floor/mineral/titanium/blue, -/area/awaymission/undergroundoutpost45/caves) -"yK" = ( -/obj/item/shard{ - icon_state = "medium" - }, -/turf/open/floor/mineral/titanium/blue, -/area/awaymission/undergroundoutpost45/caves) -"yL" = ( -/obj/item/shard{ - icon_state = "small" - }, -/turf/open/floor/mineral/titanium/blue, -/area/awaymission/undergroundoutpost45/caves) -"yM" = ( -/turf/open/floor/mineral/titanium/blue, -/area/awaymission/undergroundoutpost45/caves) -"yN" = ( -/obj/structure/grille/broken, -/turf/open/floor/mineral/titanium/blue, -/area/awaymission/undergroundoutpost45/caves) -"yO" = ( -/obj/item/stack/rods, -/turf/open/floor/mineral/titanium/blue, -/area/awaymission/undergroundoutpost45/caves) -"yP" = ( -/obj/item/stack/cable_coil, -/turf/open/floor/mineral/titanium/blue, -/area/awaymission/undergroundoutpost45/caves) -"yQ" = ( -/obj/item/stack/cable_coil{ - amount = 5 - }, -/turf/open/floor/mineral/titanium/blue, -/area/awaymission/undergroundoutpost45/caves) -"yR" = ( -/obj/item/stack/cable_coil{ - amount = 2; - icon_state = "coil_red2"; - item_state = "coil_red2" - }, -/turf/open/floor/mineral/titanium/blue, -/area/awaymission/undergroundoutpost45/caves) -"yS" = ( -/obj/item/stack/cable_coil{ - amount = 1; - icon_state = "coil_red1"; - item_state = "coil_red1" - }, -/turf/open/floor/mineral/titanium/blue, -/area/awaymission/undergroundoutpost45/caves) -"yT" = ( -/turf/open/floor/plasteel{ - heat_capacity = 1e+006 - }, -/area/awaymission/undergroundoutpost45/caves) -"yU" = ( -/turf/open/floor/plasteel/floorgrime{ - dir = 8; - heat_capacity = 1e+006 - }, -/area/awaymission/undergroundoutpost45/caves) -"yV" = ( -/turf/open/floor/plasteel{ - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged1" - }, -/area/awaymission/undergroundoutpost45/caves) -"yW" = ( -/turf/open/floor/plasteel{ - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged2" - }, -/area/awaymission/undergroundoutpost45/caves) -"yX" = ( -/turf/open/floor/plasteel{ - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged3" - }, -/area/awaymission/undergroundoutpost45/caves) -"yY" = ( -/turf/open/floor/plasteel{ - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged4" - }, -/area/awaymission/undergroundoutpost45/caves) -"yZ" = ( -/turf/open/floor/plasteel{ - dir = 8; - heat_capacity = 1e+006; - icon_state = "damaged5" - }, -/area/awaymission/undergroundoutpost45/caves) -"za" = ( -/turf/open/floor/plasteel{ - dir = 8; - heat_capacity = 1e+006; - icon_state = "floorscorched1" - }, -/area/awaymission/undergroundoutpost45/caves) -"zb" = ( -/turf/open/floor/plasteel{ - dir = 8; - heat_capacity = 1e+006; - icon_state = "floorscorched2" - }, -/area/awaymission/undergroundoutpost45/caves) -"zc" = ( -/turf/open/floor/plasteel/shuttle, -/area/awaymission/undergroundoutpost45/caves) -"zd" = ( -/turf/open/floor/plating{ - heat_capacity = 1e+006 - }, -/area/awaymission/undergroundoutpost45/caves) -"ze" = ( -/turf/open/floor/plating{ - heat_capacity = 1e+006; - icon_state = "platingdmg1" - }, -/area/awaymission/undergroundoutpost45/caves) -"zf" = ( -/turf/open/floor/plating{ - heat_capacity = 1e+006; - icon_state = "platingdmg2" - }, -/area/awaymission/undergroundoutpost45/caves) -"zg" = ( -/turf/open/floor/plating{ - heat_capacity = 1e+006; - icon_state = "platingdmg3" - }, -/area/awaymission/undergroundoutpost45/caves) -"zh" = ( -/turf/open/floor/plating{ - heat_capacity = 1e+006; - icon_state = "panelscorched" - }, -/area/awaymission/undergroundoutpost45/caves) "zi" = ( /obj/effect/mapping_helpers/planet_z, /turf/open/space, diff --git a/_maps/RandomZLevels/wildwest.dmm b/_maps/RandomZLevels/wildwest.dmm index e24d9dcb85..cdc243eb85 100644 --- a/_maps/RandomZLevels/wildwest.dmm +++ b/_maps/RandomZLevels/wildwest.dmm @@ -31,13 +31,6 @@ icon_state = "cult" }, /area/awaymission/wildwest/vault) -"ai" = ( -/turf/closed/indestructible{ - desc = "The patterns engraved on the wall seem to shift as you try to focus on them. You feel sick."; - icon = 'icons/turf/walls/cult_wall.dmi'; - icon_state = "cult" - }, -/area/awaymission/wildwest/vault) "aj" = ( /turf/open/floor/plating{ icon_state = "cultdamage3" @@ -561,9 +554,6 @@ /obj/machinery/door/window, /turf/open/floor/wood, /area/awaymission/wildwest/mines) -"cc" = ( -/turf/closed/wall/mineral/sandstone, -/area/awaymission/wildwest/mines) "cd" = ( /obj/effect/mob_spawn/human/cook{ mob_name = "Chef" @@ -933,9 +923,6 @@ }, /turf/open/floor/carpet, /area/awaymission/wildwest/mines) -"dl" = ( -/turf/closed/wall/mineral/sandstone, -/area/awaymission/wildwest/mines) "dm" = ( /obj/structure/mineral_door/wood{ icon_state = "wood" @@ -1405,7 +1392,7 @@ }, /area/awaymission/wildwest/gov) "eJ" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall/r_wall, /area/awaymission/wildwest/refine) "eK" = ( @@ -2096,22 +2083,10 @@ "gJ" = ( /turf/closed/wall/mineral/titanium, /area/awaymission/wildwest/refine) -"gK" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/wildwest/refine) "gL" = ( /obj/machinery/door/unpowered/shuttle, /turf/open/floor/mineral/titanium/yellow, /area/awaymission/wildwest/refine) -"gM" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/wildwest/refine) -"gN" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/wildwest/refine) -"gO" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/wildwest/refine) "gP" = ( /obj/structure/chair, /turf/open/floor/mineral/titanium/yellow, @@ -2119,18 +2094,9 @@ "gQ" = ( /turf/open/floor/mineral/titanium/yellow, /area/awaymission/wildwest/refine) -"gR" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/wildwest/refine) "gS" = ( /turf/closed/wall/mineral/titanium/nodiagonal, /area/awaymission/wildwest/refine) -"gT" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/wildwest/refine) -"gU" = ( -/turf/closed/wall/mineral/titanium, -/area/awaymission/wildwest/refine) "gV" = ( /obj/effect/landmark/awaystart, /turf/open/floor/plating/ironsand{ @@ -22574,7 +22540,7 @@ ab ah ac ah -ai +ah ac ac ac diff --git a/_maps/_basemap.dm b/_maps/_basemap.dm index f522d569c1..e51e6d90ef 100644 --- a/_maps/_basemap.dm +++ b/_maps/_basemap.dm @@ -6,17 +6,17 @@ #ifndef LOWMEMORYMODE #include "map_files\generic\Space.dmm" - #include "map_files\generic\SpaceDock.dmm" + #include "map_files\generic\Space2.dmm" #include "map_files\Mining\Lavaland.dmm" #include "map_files\generic\City_of_Cogs.dmm" #ifdef ALL_MAPS #include "map_files\debug\runtimestation.dmm" - #include "cit_map_files\Deltastation\DeltaStation2.dmm" - #include "cit_map_files\MetaStation\MetaStation.dmm" - #include "cit_map_files\OmegaStation\OmegaStation.dmm" - #include "cit_map_files\PubbyStation\PubbyStation.dmm" - #include "cit_map_files\BoxStation\BoxStation.dmm" + #include "map_files\Deltastation\DeltaStation2.dmm" + #include "map_files\MetaStation\MetaStation.dmm" + #include "map_files\OmegaStation\OmegaStation.dmm" + #include "map_files\PubbyStation\PubbyStation.dmm" + #include "map_files\BoxStation\BoxStation.dmm" #ifdef TRAVISBUILDING #include "templates.dm" diff --git a/_maps/basemap.dm b/_maps/basemap.dm deleted file mode 100644 index 47d760f17d..0000000000 --- a/_maps/basemap.dm +++ /dev/null @@ -1,19 +0,0 @@ -#include "map_files\generic\CentCom.dmm" -#include "map_files\generic\SpaceStation.dmm" -#include "map_files\generic\Space.dmm" -#include "map_files\generic\SpaceDock.dmm" -#include "map_files\Mining\Lavaland.dmm" -#include "map_files\generic\City_of_Cogs.dmm" - -#ifdef ALL_MAPS -#include "map_files\debug\runtimestation.dmm" -#include "cit_map_files\Deltastation\DeltaStation2.dmm" -#include "cit_map_files\MetaStation\MetaStation.dmm" -#include "cit_map_files\OmegaStation\OmegaStation.dmm" -#include "cit_map_files\PubbyStation\PubbyStation.dmm" -#include "cit_map_files\BoxStation\BoxStation.dmm" - -#ifdef TRAVISBUILDING -#include "templates.dm" -#endif -#endif \ No newline at end of file diff --git a/_maps/birdstation.dm b/_maps/birdstation.dm deleted file mode 100644 index 326a5217bc..0000000000 --- a/_maps/birdstation.dm +++ /dev/null @@ -1,44 +0,0 @@ -/* -Birdstation by Tokiko1 - -A small map intended for lowpop(40 players and less). - -*/ - - -#if !defined(MAP_FILE) - - #define TITLESCREEN "title" //Add an image in misc/fullscreen.dmi, and set this define to the icon_state, to set a custom titlescreen for your map - - #define MINETYPE "lavaland" - - #include "map_files\BirdStation\BirdStation.dmm" -#ifndef TRAVIS_MASS_MAP_BUILD - #include "map_files\generic\z2.dmm" - #include "map_files\generic\z3.dmm" - #include "map_files\generic\z4.dmm" - #include "map_files\generic\lavaland.dmm" - #include "map_files\generic\z6.dmm" - #include "map_files\generic\z7.dmm" - #include "map_files\generic\z8.dmm" - #include "map_files\generic\z9.dmm" - #include "map_files\generic\z10.dmm" - #include "map_files\generic\z11.dmm" - - #define MAP_PATH "map_files/BirdStation" - #define MAP_FILE "BirdStation.dmm" - #define MAP_NAME "BirdboatStation" - - #define MAP_TRANSITION_CONFIG DEFAULT_MAP_TRANSITION_CONFIG -#endif - #if !defined(MAP_OVERRIDE_FILES) - #define MAP_OVERRIDE_FILES - #include "map_files\BirdStation\job\job_changes.dm" - #include "map_files\BirdStation\job\removed_jobs.dm" - #endif - -#elif !defined(MAP_OVERRIDE) - - #warn a map has already been included, ignoring birdstation. - -#endif diff --git a/_maps/boxstation.json b/_maps/boxstation.json index a1862ce62b..92d377171f 100644 --- a/_maps/boxstation.json +++ b/_maps/boxstation.json @@ -1,5 +1,11 @@ { "map_name": "Box Station", - "map_path": "cit_map_files/BoxStation", - "map_file": "BoxStation.dmm" + "map_path": "map_files/BoxStation", + "map_file": "BoxStation.dmm", + "shuttles": { + "cargo": "cargo_box", + "ferry": "ferry_fancy", + "whiteship": "whiteship_meta", + "emergency": "emergency_box" + } } diff --git a/_maps/cit_map_files/BoxStation/BoxStation.dmm b/_maps/cit_map_files/BoxStation/BoxStation.dmm index 2c9b220daf..bf29f04364 100644 --- a/_maps/cit_map_files/BoxStation/BoxStation.dmm +++ b/_maps/cit_map_files/BoxStation/BoxStation.dmm @@ -2688,7 +2688,6 @@ areastring = "/area/security/warden"; dir = 1; name = "Brig Control APC"; - pixel_x = 0; pixel_y = 24 }, /turf/open/floor/plasteel/showroomfloor, @@ -58364,7 +58363,6 @@ "QsG" = ( /obj/machinery/flasher{ id = "brigentry"; - pixel_x = 0; pixel_y = -28 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -59064,7 +59062,6 @@ dir = 8; name = "Security Checkpoint APC"; pixel_x = -24; - pixel_y = 0 }, /obj/structure/cable{ icon_state = "0-4" diff --git a/_maps/citadelstation.dm b/_maps/citadelstation.dm deleted file mode 100644 index ae947f3d38..0000000000 --- a/_maps/citadelstation.dm +++ /dev/null @@ -1 +0,0 @@ -#define FORCE_MAP "_maps/citadelstation.json" \ No newline at end of file diff --git a/_maps/citadelstation.json b/_maps/citadelstation.json deleted file mode 100644 index ed04061ef2..0000000000 --- a/_maps/citadelstation.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "map_name": "Citadel Station", - "map_path": "map_files/CitadelStation", - "map_file": "CitadelStation-1.2.1.dmm", - "minetype": "lavaland", - "transition_config": "default" -} diff --git a/_maps/deltastation.json b/_maps/deltastation.json index ff6dedd66d..6d20f578fa 100644 --- a/_maps/deltastation.json +++ b/_maps/deltastation.json @@ -1,5 +1,11 @@ { "map_name": "Delta Station", - "map_path": "cit_map_files/Deltastation", - "map_file": "DeltaStation2.dmm" + "map_path": "map_files/Deltastation", + "map_file": "DeltaStation2.dmm", + "shuttles": { + "emergency": "emergency_delta", + "ferry": "ferry_fancy", + "cargo": "cargo_delta", + "whiteship": "whiteship_delta" + } } diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 84851ee9fa..9c20f84e7a 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -15,7 +15,7 @@ /turf/open/space, /area/space/nearstation) "aah" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = -32 }, /turf/open/space, @@ -77,10 +77,7 @@ }, /area/security/prison) "aaq" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/machinery/hydroponics/soil, @@ -240,7 +237,7 @@ /area/security/prison) "aaR" = ( /obj/structure/lattice, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = -32 }, /turf/open/space, @@ -875,7 +872,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "acw" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = -32 }, /obj/structure/lattice/catwalk, @@ -986,7 +983,6 @@ "acI" = ( /obj/machinery/door/poddoor/preopen{ id = "executionfireblast"; - layer = 2.9; name = "blast door" }, /obj/machinery/atmospherics/pipe/simple/general/hidden, @@ -1126,7 +1122,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/door/poddoor/preopen{ id = "executionfireblast"; - layer = 2.9; name = "blast door" }, /obj/machinery/door/firedoor, @@ -1143,7 +1138,6 @@ /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ id = "executionfireblast"; - layer = 2.9; name = "blast door" }, /obj/machinery/door/firedoor, @@ -1307,11 +1301,7 @@ /turf/open/floor/wood, /area/crew_quarters/theatre) "adr" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /turf/open/floor/plating, @@ -1396,7 +1386,7 @@ /turf/open/space, /area/solar/port/fore) "adB" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /turf/open/space, @@ -2135,12 +2125,6 @@ /turf/open/floor/plating, /area/ai_monitored/security/armory) "afa" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock" - }, -/obj/docking_port/mobile/emergency{ - name = "Box emergency shuttle" - }, /obj/docking_port/stationary{ dir = 4; dwidth = 12; @@ -2150,8 +2134,8 @@ turf_type = /turf/open/space; width = 32 }, -/turf/open/floor/plating, -/area/shuttle/escape) +/turf/open/space/basic, +/area/space) "afb" = ( /obj/machinery/recharger, /obj/structure/table, @@ -2259,7 +2243,8 @@ id = "pod3"; name = "escape pod 3"; port_direction = 2; - preferred_direction = 4 + preferred_direction = 4; + timid = 0 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/pod_3) @@ -2468,7 +2453,7 @@ /area/ai_monitored/storage/eva) "afQ" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /turf/open/floor/plating, @@ -2530,7 +2515,7 @@ /turf/open/floor/plasteel, /area/security/main) "aga" = ( -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ pixel_x = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -2773,7 +2758,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/machinery/door/poddoor/preopen{ @@ -3740,10 +3725,7 @@ /obj/structure/cable{ icon_state = "0-4" }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_x = -32 }, /obj/effect/spawner/structure/window/reinforced, @@ -3902,7 +3884,7 @@ }, /area/security/brig) "ajd" = ( -/obj/structure/sign/goldenplaque{ +/obj/structure/sign/plaques/golden{ pixel_y = 32 }, /turf/open/floor/plasteel/red/side{ @@ -3941,7 +3923,7 @@ }, /obj/structure/closet/secure_closet/courtroom, /obj/effect/decal/cleanable/cobweb, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/item/gavelhammer, @@ -4018,7 +4000,7 @@ /turf/open/floor/plasteel, /area/security/processing) "ajt" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -4285,11 +4267,7 @@ /area/maintenance/solars/port/fore) "ajZ" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /turf/open/floor/plating, @@ -4546,11 +4524,7 @@ /turf/open/floor/plating, /area/maintenance/solars/port/fore) "akG" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/effect/spawner/structure/window/reinforced, @@ -5036,11 +5010,7 @@ /turf/closed/wall/r_wall, /area/maintenance/solars/port/fore) "alS" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /turf/open/floor/plating, @@ -5345,10 +5315,7 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "amK" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; - name = "KEEP CLEAR: DOCKING AREA" - }, +/obj/structure/sign/warning/docking, /turf/closed/wall, /area/security/processing) "amL" = ( @@ -5669,10 +5636,7 @@ }, /area/hallway/primary/fore) "anx" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /turf/open/floor/plasteel/red/corner{ @@ -5680,10 +5644,7 @@ }, /area/hallway/primary/fore) "any" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/machinery/light{ @@ -5705,7 +5666,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /turf/open/floor/plasteel/red/corner{ @@ -5737,21 +5698,13 @@ /turf/open/floor/plating, /area/maintenance/fore/secondary) "anG" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /turf/open/floor/plating, /area/maintenance/fore/secondary) "anH" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/maintenance/solars/port/fore) "anI" = ( @@ -5787,29 +5740,17 @@ /turf/open/floor/plating, /area/security/processing) "anO" = ( -/obj/machinery/door/airlock/titanium{ - id_tag = "prisonshuttle"; - name = "Labor Shuttle Airlock" - }, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 2; - height = 5; - id = "laborcamp"; - name = "labor camp shuttle"; - port_direction = 4; - width = 9 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 2; height = 5; id = "laborcamp_home"; name = "fore bay 1"; + roundstart_template = /datum/map_template/shuttle/labour/box; width = 9 }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) +/turf/open/space/basic, +/area/space) "anP" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security{ @@ -5821,10 +5762,7 @@ /turf/open/floor/plasteel, /area/security/processing) "anQ" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/machinery/light{ @@ -5949,11 +5887,7 @@ "aoi" = ( /obj/structure/rack, /obj/item/clothing/mask/gas, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/item/device/multitool, @@ -5996,11 +5930,7 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "aoq" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /obj/effect/spawner/structure/window/reinforced, @@ -6823,11 +6753,7 @@ /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) "aqx" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/maintenance/solars/starboard/fore) "aqy" = ( @@ -7098,11 +7024,7 @@ }, /area/holodeck/rec_center) "arp" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/effect/spawner/structure/window/reinforced, @@ -7810,7 +7732,8 @@ dir = 4; dwidth = 4; height = 9; - width = 9 + width = 9; + timid = 0 }, /obj/machinery/bluespace_beacon, /obj/machinery/computer/auxillary_base, @@ -8473,11 +8396,7 @@ /turf/open/floor/plating, /area/maintenance/fore) "ave" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/effect/spawner/lootdrop/maintenance, @@ -8571,11 +8490,7 @@ }, /area/crew_quarters/dorms) "avo" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall, /area/maintenance/department/electrical) "avp" = ( @@ -8705,11 +8620,7 @@ /turf/open/floor/plasteel, /area/crew_quarters/dorms) "avH" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -8774,7 +8685,7 @@ /turf/open/floor/plasteel/floorgrime, /area/maintenance/department/electrical) "avP" = ( -/obj/structure/sign/pods, +/obj/structure/sign/warning/pods, /turf/closed/wall, /area/hallway/secondary/entry) "avQ" = ( @@ -9394,10 +9305,7 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "axm" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -9434,10 +9342,7 @@ /turf/open/floor/plating, /area/maintenance/fore) "axr" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /obj/structure/cable{ @@ -9949,7 +9854,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -10036,7 +9941,7 @@ /obj/structure/cable{ icon_state = "0-2" }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/effect/spawner/structure/window/reinforced, @@ -10716,18 +10621,11 @@ /turf/open/floor/plating, /area/maintenance/department/electrical) "aAC" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; - name = "KEEP CLEAR: DOCKING AREA" - }, +/obj/structure/sign/warning/docking, /turf/closed/wall/r_wall, /area/hallway/secondary/entry) "aAD" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/effect/spawner/structure/window/reinforced, @@ -11938,11 +11836,7 @@ /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/heads/hor) "aDI" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/ai_monitored/storage/eva) "aDK" = ( @@ -12417,7 +12311,7 @@ network = list("SS13") }, /obj/structure/table, -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_x = -32 }, /obj/item/storage/firstaid/regular, @@ -12450,7 +12344,7 @@ "aEU" = ( /obj/structure/table, /obj/machinery/recharger, -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_x = 32 }, /turf/open/floor/plasteel, @@ -12494,7 +12388,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/storage/eva) "aFc" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/ai_monitored/storage/eva) "aFd" = ( @@ -13257,8 +13151,9 @@ /obj/structure/cable{ icon_state = "2-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/structure/cable{ + icon_state = "1-8" }, /turf/open/floor/plating, /area/maintenance/starboard/fore) @@ -13546,7 +13441,7 @@ /turf/open/floor/plasteel, /area/storage/primary) "aHF" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/ai_monitored/nuke_storage) "aHG" = ( @@ -13805,9 +13700,7 @@ dir = 4; sortType = 21 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, /turf/open/floor/plating, /area/maintenance/starboard/fore) "aIk" = ( @@ -14736,7 +14629,7 @@ /turf/open/floor/plasteel, /area/gateway) "aKB" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/gateway) "aKC" = ( @@ -14994,10 +14887,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/port) "aLl" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, @@ -15157,10 +15047,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/corner{ @@ -16235,10 +16122,7 @@ /area/hallway/primary/central) "aOF" = ( /obj/machinery/light, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /obj/machinery/door/firedoor, @@ -16247,10 +16131,7 @@ }, /area/hallway/primary/central) "aOG" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /obj/machinery/door/firedoor, @@ -16519,7 +16400,7 @@ /area/hallway/secondary/entry) "aPw" = ( /obj/machinery/disposal/bin, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; @@ -16655,7 +16536,6 @@ /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ id = "bridge blast"; - layer = 2.9; name = "bridge blast door" }, /turf/open/floor/plating, @@ -16666,7 +16546,6 @@ }, /obj/machinery/door/poddoor/preopen{ id = "bridge blast"; - layer = 2.9; name = "bridge blast door" }, /obj/effect/spawner/structure/window/reinforced, @@ -16683,7 +16562,6 @@ /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ id = "bridge blast"; - layer = 2.9; name = "bridge blast door" }, /turf/open/floor/plating, @@ -16701,7 +16579,6 @@ /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ id = "bridge blast"; - layer = 2.9; name = "bridge blast door" }, /turf/open/floor/plating, @@ -16717,7 +16594,6 @@ /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ id = "bridge blast"; - layer = 2.9; name = "bridge blast door" }, /turf/open/floor/plating, @@ -16729,7 +16605,6 @@ /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ id = "bridge blast"; - layer = 2.9; name = "bridge blast door" }, /turf/open/floor/plating, @@ -16937,11 +16812,7 @@ /turf/open/floor/plating, /area/hallway/secondary/exit) "aQG" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -17390,10 +17261,7 @@ /turf/open/floor/plasteel, /area/storage/tools) "aRW" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; - name = "KEEP CLEAR: DOCKING AREA" - }, +/obj/structure/sign/warning/docking, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/hallway/secondary/exit) @@ -17473,13 +17341,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/plasteel, /area/crew_quarters/locker) -<<<<<<< HEAD -"aSj" = ( -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel, -/area/crew_quarters/locker) -======= ->>>>>>> e645319... Changes up the Construction Area on Box slightly. (#35009) "aSk" = ( /obj/structure/table, /obj/item/stack/cable_coil/random, @@ -17853,11 +17714,7 @@ cyclelinkeddir = 4; name = "Escape Airlock" }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /turf/open/floor/plating, @@ -18424,10 +18281,7 @@ /turf/open/floor/plasteel, /area/storage/tools) "aVb" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/machinery/door/firedoor, @@ -18436,7 +18290,7 @@ }, /area/hallway/primary/central) "aVc" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/machinery/door/firedoor, @@ -18622,7 +18476,7 @@ /turf/open/floor/plasteel, /area/bridge) "aVt" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/machinery/door/firedoor, @@ -18634,10 +18488,7 @@ /turf/open/floor/plasteel, /area/bridge) "aVu" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/machinery/door/firedoor, @@ -18871,12 +18722,7 @@ /turf/open/floor/carpet, /area/library) "aWa" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK" - }, +/obj/structure/sign/warning/vacuum/external, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/hallway/secondary/entry) @@ -21187,7 +21033,6 @@ "bbW" = ( /obj/machinery/door/poddoor/preopen{ id = "heads_meeting"; - layer = 2.9; name = "privacy shutters" }, /obj/effect/spawner/structure/window/reinforced, @@ -21250,7 +21095,7 @@ "bcg" = ( /obj/structure/table, /obj/item/aiModule/supplied/freeform, -/obj/structure/sign/kiddieplaque{ +/obj/structure/sign/plaques/kiddie{ pixel_x = 32 }, /obj/machinery/camera/motion{ @@ -21401,11 +21246,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/exit) "bcB" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -21541,7 +21382,6 @@ /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ id = "heads_meeting"; - layer = 2.9; name = "privacy shutters" }, /turf/open/floor/plating, @@ -22322,7 +22162,7 @@ id = "garbage" }, /obj/machinery/recycler, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ name = "\improper STAY CLEAR HEAVY MACHINERY"; pixel_y = 32 }, @@ -22404,11 +22244,7 @@ /turf/open/floor/plasteel/freezer, /area/crew_quarters/toilet/locker) "bfb" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/effect/landmark/event_spawn, @@ -22634,7 +22470,7 @@ /turf/open/floor/plating, /area/medical/medbay/central) "bfH" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall, /area/medical/medbay/central) "bfI" = ( @@ -22734,7 +22570,7 @@ }, /area/hallway/primary/starboard) "bfZ" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = -32 }, /turf/open/floor/plasteel/purple/side{ @@ -23637,7 +23473,6 @@ /obj/machinery/computer/card{ dir = 8 }, -/obj/item/card/id/captains_spare, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/wood, /area/crew_quarters/heads/captain) @@ -23954,7 +23789,7 @@ dir = 1; id = "garbage" }, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = -32 }, /turf/open/floor/plating, @@ -24475,7 +24310,7 @@ /obj/machinery/shower{ dir = 8 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -24546,7 +24381,6 @@ }, /obj/machinery/door/poddoor/preopen{ id = "Disposal Exit"; - layer = 3; name = "disposal exit vent" }, /turf/open/floor/plating, @@ -24583,10 +24417,7 @@ /turf/open/floor/plating, /area/maintenance/port) "bkE" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; - name = "KEEP CLEAR: DOCKING AREA" - }, +/obj/structure/sign/warning/docking, /turf/closed/wall/r_wall, /area/maintenance/port) "bkF" = ( @@ -25153,11 +24984,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "blR" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/item/cigbutt, @@ -25530,7 +25357,7 @@ /obj/structure/chair/office/light{ dir = 1 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 28 }, /turf/open/floor/plasteel/white, @@ -25886,7 +25713,7 @@ /turf/open/floor/plasteel, /area/quartermaster/office) "bnF" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 30 }, /obj/structure/disposalpipe/segment{ @@ -26014,10 +25841,7 @@ /turf/open/floor/plasteel, /area/crew_quarters/heads/hop) "bnT" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_x = -32 }, /obj/structure/cable{ @@ -26048,10 +25872,7 @@ /turf/open/floor/plating, /area/engine/gravity_generator) "bnW" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; +/obj/structure/sign/warning/radiation/rad_area{ pixel_x = 32 }, /obj/structure/cable{ @@ -26366,12 +26187,7 @@ /turf/open/floor/plating, /area/maintenance/starboard) "boI" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK" - }, +/obj/structure/sign/warning/vacuum/external, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/quartermaster/storage) @@ -26514,7 +26330,6 @@ }, /obj/machinery/door/poddoor/shutters/preopen{ id = "hop"; - layer = 2.9; name = "Privacy Shutters" }, /turf/open/floor/plasteel, @@ -27114,7 +26929,6 @@ }, /obj/machinery/door/poddoor/shutters/preopen{ id = "hop"; - layer = 2.9; name = "Privacy Shutters" }, /obj/effect/spawner/structure/window/reinforced, @@ -27212,7 +27026,7 @@ name = "Teleporter Maintenance"; req_access_txt = "17" }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/structure/cable{ @@ -27265,7 +27079,7 @@ /obj/item/crowbar, /obj/item/clothing/neck/stethoscope, /obj/item/reagent_containers/spray/cleaner, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 30 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -27639,7 +27453,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -27759,10 +27573,7 @@ /turf/open/floor/plasteel, /area/crew_quarters/heads/hop) "brU" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /obj/structure/cable{ @@ -27771,7 +27582,6 @@ /obj/structure/cable, /obj/machinery/door/poddoor/shutters/preopen{ id = "hop"; - layer = 2.9; name = "Privacy Shutters" }, /obj/effect/spawner/structure/window/reinforced, @@ -28339,7 +28149,7 @@ /obj/structure/disposalpipe/segment{ dir = 10 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/machinery/light/small{ @@ -29131,7 +28941,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/structure/disposalpipe/segment, @@ -29342,7 +29152,7 @@ /turf/open/floor/plasteel/white, /area/medical/genetics) "bvA" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -29605,7 +29415,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "bwh" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -29659,10 +29469,7 @@ /area/engine/gravity_generator) "bwn" = ( /obj/structure/closet/radiation, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; +/obj/structure/sign/warning/radiation/rad_area{ pixel_x = -32 }, /obj/effect/turf_decal/stripes/line{ @@ -29676,10 +29483,7 @@ /area/engine/gravity_generator) "bwp" = ( /obj/structure/closet/radiation, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; +/obj/structure/sign/warning/radiation/rad_area{ pixel_x = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -29799,7 +29603,7 @@ /turf/open/floor/plasteel, /area/medical/sleeper) "bwG" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall, /area/medical/sleeper) "bwH" = ( @@ -30003,7 +29807,7 @@ /area/medical/sleeper) "bxa" = ( /obj/structure/chair, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -28 }, /turf/open/floor/plasteel/dark, @@ -30454,7 +30258,7 @@ }, /area/quartermaster/qm) "bye" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/medical/genetics) "byf" = ( @@ -30757,7 +30561,7 @@ /turf/open/floor/plasteel/red/side, /area/security/checkpoint/supply) "byP" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /turf/open/floor/plasteel/blue/side{ @@ -31009,7 +30813,7 @@ /obj/machinery/atmospherics/pipe/simple{ dir = 4 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 32 @@ -32080,7 +31884,7 @@ /turf/open/floor/plasteel/dark, /area/science/server) "bBV" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = -32 @@ -32238,7 +32042,7 @@ network = list("SS13","RD") }, /obj/machinery/light, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /turf/open/floor/engine, @@ -32608,9 +32412,7 @@ /turf/open/floor/plating, /area/maintenance/starboard) "bDi" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; - name = "KEEP CLEAR: DOCKING AREA"; +/obj/structure/sign/warning/docking{ pixel_y = 32 }, /turf/open/space, @@ -32805,7 +32607,7 @@ /turf/open/floor/plasteel/white, /area/medical/sleeper) "bDD" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -28 }, /obj/structure/bed, @@ -32948,7 +32750,7 @@ /obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Medbay Storage"; - req_access_txt = "45" + req_access_txt = "5" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -32990,13 +32792,13 @@ /turf/open/floor/plasteel/floorgrime, /area/science/storage) "bEd" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Medbay Storage"; - req_access_txt = "45" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 + req_access_txt = "5" }, /turf/open/floor/plasteel/white, /area/medical/sleeper) @@ -33093,7 +32895,7 @@ /area/science/storage) "bEp" = ( /obj/machinery/portable_atmospherics/canister/toxins, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/effect/turf_decal/delivery, @@ -33310,7 +33112,7 @@ /turf/open/floor/plasteel, /area/science/mixing) "bEO" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -33741,7 +33543,7 @@ /turf/open/floor/plasteel/barber, /area/crew_quarters/heads/cmo) "bFQ" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -33935,11 +33737,7 @@ /turf/open/floor/plasteel, /area/storage/tech) "bGu" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/storage/tech) "bGv" = ( @@ -34910,11 +34708,7 @@ /turf/open/floor/plasteel/barber, /area/crew_quarters/heads/cmo) "bIx" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/science/xenobiology) "bIy" = ( @@ -35026,7 +34820,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -35086,7 +34880,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/sign/xenobio{ +/obj/structure/sign/departments/xenobio{ pixel_y = -32 }, /turf/open/floor/plating, @@ -35113,7 +34907,7 @@ /turf/open/floor/plasteel, /area/science/mixing) "bIX" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'BOMB RANGE"; name = "BOMB RANGE" }, @@ -35151,29 +34945,17 @@ /turf/open/floor/plating, /area/quartermaster/miningdock) "bJc" = ( -/obj/machinery/door/airlock/titanium{ - name = "Mining Shuttle Airlock"; - req_access_txt = "0" - }, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 3; - height = 5; - id = "mining"; - name = "mining shuttle"; - port_direction = 4; - width = 7 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 3; height = 5; id = "mining_home"; name = "mining shuttle bay"; + roundstart_template = /datum/map_template/shuttle/mining/box; width = 7 }, -/turf/open/floor/plating, -/area/shuttle/mining) +/turf/open/space/basic, +/area/space) "bJd" = ( /obj/machinery/door/airlock/mining/glass{ cyclelinkeddir = 8; @@ -35210,7 +34992,7 @@ /turf/open/floor/plasteel, /area/storage/tech) "bJi" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/storage/tech) "bJj" = ( @@ -35703,12 +35485,7 @@ }, /area/quartermaster/miningdock) "bKm" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK" - }, +/obj/structure/sign/warning/vacuum/external, /turf/closed/wall, /area/quartermaster/miningdock) "bKn" = ( @@ -35862,7 +35639,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = -32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -36138,7 +35915,7 @@ /turf/open/floor/plasteel/white, /area/medical/virology) "bLe" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall, /area/science/xenobiology) "bLf" = ( @@ -36161,21 +35938,17 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "bLh" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall, /area/science/research) "bLi" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /turf/open/floor/plasteel/white, /area/science/mixing) "bLj" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /turf/open/floor/plating, @@ -36628,11 +36401,7 @@ /turf/open/floor/plating, /area/science/research) "bMt" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /turf/open/floor/engine/vacuum, @@ -36904,7 +36673,7 @@ /turf/open/floor/plasteel, /area/science/misc_lab) "bNf" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall, /area/medical/virology) "bNg" = ( @@ -37511,7 +37280,7 @@ /turf/open/floor/engine/vacuum, /area/science/mixing) "bOF" = ( -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_y = -32 }, /obj/machinery/atmospherics/components/binary/pump{ @@ -37591,7 +37360,6 @@ /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ id = "kanyewest"; - layer = 2.9; name = "privacy shutters" }, /turf/open/floor/plating, @@ -37849,7 +37617,7 @@ /obj/machinery/shower{ dir = 4 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/effect/turf_decal/stripes/line{ @@ -37908,7 +37676,7 @@ /area/medical/virology) "bPx" = ( /obj/machinery/disposal/bin, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ pixel_y = -32 }, /obj/structure/disposalpipe/trunk{ @@ -38244,8 +38012,7 @@ "bQi" = ( /obj/machinery/door/poddoor/preopen{ id = "atmos"; - layer = 2.9; - name = "atmos blast door" + name = "Atmospherics Blast Door" }, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -38729,8 +38496,7 @@ }, /obj/machinery/door/poddoor/preopen{ id = "atmos"; - layer = 2.9; - name = "atmos blast door" + name = "Atmospherics Blast Door" }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -39190,13 +38956,12 @@ /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ id = "atmos"; - layer = 2.9; - name = "atmos blast door" + name = "Atmospherics Blast Door" }, /turf/open/floor/plating, /area/engine/atmos) "bSD" = ( -/obj/structure/sign/atmosplaque{ +/obj/structure/sign/plaques/atmos{ pixel_y = -32 }, /obj/structure/table, @@ -39393,9 +39158,6 @@ /obj/machinery/vending/medical, /turf/open/floor/plasteel/white, /area/medical/virology) -"bSZ" = ( -/turf/open/floor/engine, -/area/science/xenobiology) "bTa" = ( /obj/machinery/door/window/northleft{ dir = 4; @@ -40320,11 +40082,7 @@ }, /area/hallway/primary/aft) "bVi" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall, /area/science/xenobiology) "bVj" = ( @@ -40474,7 +40232,7 @@ /obj/structure/disposalpipe/trunk{ dir = 8 }, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ pixel_y = 32 }, /turf/open/floor/plating, @@ -40490,7 +40248,7 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "bVG" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -28 }, /turf/open/floor/plating, @@ -40555,7 +40313,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 4 }, -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall, /area/engine/atmos) "bVT" = ( @@ -40897,7 +40655,7 @@ }, /obj/machinery/door/poddoor/preopen{ id = "atmos"; - name = "atmos blast door" + name = "Atmospherics Blast Door" }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -40915,7 +40673,7 @@ }, /obj/machinery/door/poddoor/preopen{ id = "atmos"; - name = "atmos blast door" + name = "Atmospherics Blast Door" }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -41315,7 +41073,7 @@ /turf/closed/wall/r_wall, /area/engine/atmos) "bXL" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/engine/atmos) "bXM" = ( @@ -41443,7 +41201,7 @@ /area/engine/break_room) "bYc" = ( /obj/machinery/disposal/bin, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ pixel_y = -32 }, /obj/structure/disposalpipe/trunk{ @@ -41573,7 +41331,7 @@ /turf/open/floor/plasteel/white, /area/science/misc_lab) "bYp" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /turf/open/floor/plasteel/yellow/side{ @@ -41604,11 +41362,7 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "bYu" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /turf/open/floor/plating, @@ -41743,7 +41497,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bYR" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall, /area/engine/atmos) "bYS" = ( @@ -42767,7 +42521,7 @@ /turf/open/floor/plating, /area/tcommsat/computer) "cbn" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM" }, @@ -42825,7 +42579,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/aft) "cbs" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/engine/engineering) @@ -43168,7 +42922,7 @@ /turf/open/floor/plasteel/dark/telecomms/mainframe, /area/tcommsat/server) "ccg" = ( -/obj/machinery/message_server, +/obj/machinery/telecomms/message_server, /turf/open/floor/plasteel/dark/telecomms/mainframe, /area/tcommsat/server) "cch" = ( @@ -43348,7 +43102,7 @@ /turf/open/floor/engine/co2, /area/engine/atmos) "ccE" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 28 }, /turf/open/floor/plating, @@ -43610,7 +43364,6 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cdp" = ( -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 @@ -43902,7 +43655,7 @@ /turf/open/floor/plasteel/dark/telecomms/mainframe, /area/tcommsat/server) "cec" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /obj/machinery/light, @@ -43993,7 +43746,7 @@ /turf/open/floor/plasteel, /area/crew_quarters/heads/chief) "cep" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, /area/engine/engineering) @@ -44095,7 +43848,7 @@ /turf/open/floor/plating, /area/maintenance/aft) "ceE" = ( -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_y = -32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -44120,7 +43873,7 @@ /turf/closed/wall, /area/maintenance/aft) "ceI" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall, /area/maintenance/aft) "ceJ" = ( @@ -44191,11 +43944,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "ceU" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /turf/open/floor/plating, @@ -44272,14 +44021,11 @@ }, /area/engine/engineering) "cfe" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; +/obj/structure/sign/warning/radiation/rad_area{ pixel_x = -32 }, /obj/structure/disposalpipe/segment, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/structure/cable{ @@ -44493,7 +44239,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cfK" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall, /area/engine/engineering) "cfL" = ( @@ -44614,7 +44360,7 @@ /area/maintenance/disposal/incinerator) "cgb" = ( /obj/machinery/disposal/bin, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ pixel_y = 32 }, /obj/structure/disposalpipe/trunk, @@ -44679,7 +44425,7 @@ /area/maintenance/starboard/aft) "cgk" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/open/floor/plating, /area/science/xenobiology) "cgl" = ( @@ -44750,7 +44496,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "cgt" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/effect/spawner/lootdrop/maintenance, @@ -44805,11 +44551,7 @@ /turf/open/space, /area/solar/port/aft) "cgA" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /turf/open/floor/plating, @@ -44845,11 +44587,7 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "cgE" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/maintenance/solars/port/aft) "cgF" = ( @@ -45603,7 +45341,7 @@ /turf/closed/wall/r_wall, /area/engine/atmos) "ciy" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -28 }, /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -45644,7 +45382,7 @@ name = "output gas connector port" }, /obj/machinery/portable_atmospherics/canister, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 28 }, /turf/open/floor/plasteel/floorgrime, @@ -45905,7 +45643,7 @@ }, /area/crew_quarters/heads/chief) "cjk" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -46053,11 +45791,7 @@ /turf/open/floor/plating, /area/maintenance/solars/starboard/aft) "cjG" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/maintenance/solars/starboard/aft) "cjH" = ( @@ -46798,11 +46532,7 @@ /turf/open/floor/plating, /area/maintenance/solars/starboard/aft) "clA" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /turf/open/floor/plating, @@ -47074,11 +46804,7 @@ /turf/open/floor/plating, /area/maintenance/solars/starboard/aft) "cmx" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /turf/open/floor/plating, @@ -47162,7 +46888,7 @@ }, /area/engine/engineering) "cmN" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/structure/cable{ @@ -47209,7 +46935,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_x = -32 }, /turf/open/floor/engine, @@ -47219,7 +46945,7 @@ dir = 1; on = 1 }, -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_x = 32 }, /obj/machinery/doorButtons/access_button{ @@ -47598,10 +47324,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -47627,7 +47350,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -47690,11 +47413,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/siphon{ dir = 1 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /turf/open/floor/engine/vacuum, @@ -48036,10 +47755,7 @@ /turf/open/floor/plasteel, /area/engine/engine_smes) "cpq" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_x = -32 }, /obj/machinery/computer/rdconsole/production{ @@ -48152,7 +47868,8 @@ id = "pod4"; name = "escape pod 4"; port_direction = 2; - preferred_direction = 4 + preferred_direction = 4; + timid = 0 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/pod_4) @@ -48415,7 +48132,7 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "cqo" = ( -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ pixel_x = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -48439,7 +48156,8 @@ dir = 8; id = "pod2"; name = "escape pod 2"; - port_direction = 2 + port_direction = 2; + timid = 0 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/pod_2) @@ -48453,7 +48171,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "cqs" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) "cqt" = ( @@ -48535,7 +48253,7 @@ /turf/open/floor/engine, /area/engine/engineering) "cqD" = ( -/obj/structure/sign/radiation, +/obj/structure/sign/warning/radiation, /turf/closed/wall/r_wall, /area/engine/supermatter) "cqE" = ( @@ -48646,11 +48364,7 @@ /turf/open/floor/plating, /area/engine/engineering) "cqT" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /turf/open/floor/plating, @@ -48747,11 +48461,7 @@ /turf/open/floor/plating, /area/engine/engineering) "crp" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/engine/engineering) "crq" = ( @@ -48967,11 +48677,7 @@ /turf/open/floor/plating, /area/engine/engineering) "crX" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /obj/structure/closet/emcloset/anchored, @@ -49229,11 +48935,7 @@ /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) "csX" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /turf/open/floor/plating, @@ -49294,7 +48996,7 @@ /area/ai_monitored/turret_protected/aisat_interior) "cti" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = -32 }, /turf/open/floor/plating, @@ -49532,11 +49234,7 @@ }, /area/ai_monitored/turret_protected/aisat_interior) "ctR" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; - icon_state = "radiation"; - name = "RADIOACTIVE AREA" - }, +/obj/structure/sign/warning/radiation/rad_area, /turf/closed/wall, /area/engine/engineering) "ctS" = ( @@ -49636,7 +49334,7 @@ icon_state = "control_standby"; name = "Antechamber Turret Control"; pixel_y = -24; - req_access_txt = "65" + req_access = list(65) }, /obj/machinery/light/small, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -49872,7 +49570,7 @@ icon_state = "control_standby"; name = "Atmospherics Turret Control"; pixel_x = -27; - req_access_txt = "65" + req_access = list(65) }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -49897,7 +49595,7 @@ icon_state = "control_standby"; name = "Service Bay Turret Control"; pixel_x = 27; - req_access_txt = "65" + req_access = list(65) }, /obj/machinery/atmospherics/pipe/manifold4w/scrubbers, /turf/open/floor/plasteel/darkblue/corner{ @@ -50143,7 +49841,7 @@ /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/ai) "cvc" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/machinery/porta_turret/ai{ @@ -50164,7 +49862,7 @@ /obj/machinery/porta_turret/ai{ dir = 4 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -50187,7 +49885,7 @@ name = "Chamber Hallway Turret Control"; pixel_x = 32; pixel_y = -24; - req_access_txt = "65" + req_access = list(65) }, /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat_interior) @@ -50289,7 +49987,7 @@ /turf/open/floor/circuit, /area/ai_monitored/turret_protected/aisat/hallway) "cvx" = ( -/obj/effect/landmark/tripai, +/obj/effect/landmark/start/ai/secondary, /obj/item/device/radio/intercom{ anyai = 1; freerange = 1; @@ -50328,7 +50026,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat/hallway) "cvA" = ( -/obj/effect/landmark/tripai, +/obj/effect/landmark/start/ai/secondary, /obj/item/device/radio/intercom{ anyai = 1; freerange = 1; @@ -50432,7 +50130,7 @@ /turf/open/space, /area/space/nearstation) "cvL" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -50451,7 +50149,7 @@ /turf/open/floor/circuit, /area/ai_monitored/turret_protected/aisat/hallway) "cvN" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/structure/cable{ @@ -50582,7 +50280,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat/hallway) "cwe" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/ai) @@ -50920,18 +50618,6 @@ /turf/open/floor/plasteel, /area/ai_monitored/security/armory) "cxE" = ( -/obj/machinery/door/airlock/titanium, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 2; - height = 13; - id = "ferry"; - name = "ferry shuttle"; - port_direction = 1; - preferred_direction = 4; - roundstart_move = "ferry_away"; - width = 5 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 2; @@ -50941,8 +50627,8 @@ turf_type = /turf/open/space; width = 5 }, -/turf/open/floor/pod/light, -/area/shuttle/transport) +/turf/open/space/basic, +/area/space) "cxF" = ( /obj/machinery/door/airlock/titanium{ name = "Escape Pod Airlock" @@ -50951,7 +50637,8 @@ dir = 8; id = "pod1"; name = "escape pod 1"; - port_direction = 2 + port_direction = 2; + timid = 0 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/pod_1) @@ -51022,28 +50709,6 @@ /turf/open/floor/plating, /area/hallway/secondary/entry) "cyd" = ( -/obj/docking_port/mobile{ - callTime = 250; - dheight = 0; - dir = 2; - dwidth = 11; - height = 15; - id = "whiteship"; - launch_status = 0; - movement_force = list("KNOCKDOWN" = 0, "THROW" = 0); - name = "NT Recovery White-Ship"; - port_direction = 8; - preferred_direction = 4; - roundstart_move = "whiteship_away"; - width = 28 - }, -/obj/machinery/door/airlock/titanium{ - name = "recovery shuttle external airlock" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, /obj/docking_port/stationary{ dir = 2; dwidth = 11; @@ -51052,26 +50717,8 @@ name = "SS13: Auxiliary Dock, Station-Port"; width = 35 }, -<<<<<<< HEAD -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cye" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cyf" = ( -/obj/structure/shuttle/engine/propulsion/left{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/shuttle/abandoned) -======= /turf/open/space/basic, /area/space) ->>>>>>> e645319... Changes up the Construction Area on Box slightly. (#35009) "cyg" = ( /obj/machinery/door/airlock/command{ cyclelinkeddir = 1; @@ -51191,14 +50838,6 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cyT" = ( -/obj/machinery/door/airlock/titanium{ - name = "Supply Shuttle Airlock"; - req_access_txt = "31" - }, -/obj/docking_port/mobile/supply{ - dwidth = 5; - width = 12 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 5; @@ -51207,8 +50846,8 @@ name = "Cargo Bay"; width = 12 }, -/turf/open/floor/plating, -/area/shuttle/supply) +/turf/open/space/basic, +/area/space) "cyU" = ( /obj/structure/cable{ icon_state = "1-2" @@ -51690,7 +51329,7 @@ /turf/open/floor/plating, /area/maintenance/fore/secondary) "cAP" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, /area/engine/supermatter) "cAQ" = ( @@ -53074,7 +52713,7 @@ /turf/open/floor/engine, /area/engine/engineering) "cFw" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/engine/supermatter) "cFy" = ( @@ -53773,20 +53412,17 @@ }, /area/science/robotics/lab) "cIg" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 4 - }, -/obj/docking_port/mobile/arrivals, /obj/docking_port/stationary{ dir = 8; dwidth = 3; height = 15; id = "arrivals_stationary"; name = "arrivals"; + roundstart_template = /datum/map_template/shuttle/arrival/box; width = 7 }, -/turf/open/floor/plating/airless, -/area/shuttle/arrival) +/turf/open/space/basic, +/area/space) "cIh" = ( /obj/machinery/door/airlock/external{ cyclelinkeddir = 1; @@ -54159,7 +53795,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/machinery/camera{ @@ -54405,1149 +54041,313 @@ }, /turf/open/floor/plasteel/white, /area/science/xenobiology) +"cVb" = ( +/turf/closed/wall, +/area/hallway/secondary/service) +"dfh" = ( +/obj/machinery/power/apc{ + areastring = "/area/science/circuit"; + name = "Circuitry Lab APC"; + pixel_x = 30 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel, +/area/science/circuit) +"dMZ" = ( +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"eaI" = ( +/obj/structure/table/reinforced, +/obj/item/device/radio/intercom{ + pixel_x = -30 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"eyM" = ( +/obj/machinery/mineral/ore_redemption{ + input_dir = 2; + output_dir = 1 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"eRz" = ( +/obj/structure/lattice, +/obj/structure/grille, +/turf/open/space/basic, +/area/space/nearstation) +"eVL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"flc" = ( +/obj/machinery/bookbinder, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"fnC" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -23 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/hydrofloor, +/area/hallway/secondary/service) +"fsQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"fKl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/science/circuit) +"gbq" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/construction) +"gbT" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/glass/fifty, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"gjl" = ( +/turf/closed/wall, +/area/quartermaster/warehouse) +"gwd" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/science/circuit) "gWd" = ( /obj/structure/cable{ icon_state = "1-4" }, /turf/open/floor/plating, /area/construction) -"kSb" = ( -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock) -<<<<<<< HEAD -"Qll" = ( -/obj/machinery/door/airlock/titanium{ - name = "recovery shuttle external airlock" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qlm" = ( -/obj/structure/toilet{ - pixel_y = 9 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/greenglow{ - desc = "Looks like something's sprung a leak" - }, -/obj/machinery/light/small/built{ +"gXs" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"gZG" = ( +/obj/structure/closet/crate/freezer/surplus_limbs, +/obj/item/reagent_containers/glass/beaker/synthflesh, +/turf/open/floor/plasteel/white/side{ dir = 8 }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qln" = ( -/obj/structure/mirror{ - pixel_x = 28 +/area/medical/sleeper) +"hcE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qlo" = ( -/obj/structure/closet/wardrobe/mixed, -/obj/item/clothing/under/rank/centcom_officer{ - desc = "A badge on the arm indicates that it's meant to be worn by CentCom recovery teams. This one seems dusty and clearly hasn't been cleaned in some time."; - name = "\improper dusty old CentCom jumpsuit" - }, -/obj/item/clothing/under/rank/centcom_commander{ - desc = "A badge on the arm indicates that it's meant to be worn by CentCom recovery teams. This one seems dusty and clearly hasn't been cleaned in some time."; - name = "\improper dusty old CentCom jumpsuit" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qlp" = ( -/obj/structure/table, -/obj/item/storage/pill_bottle/dice{ - pixel_y = 3 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qlq" = ( -/obj/structure/table, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stock_parts/cell/high{ - charge = 100; - maxcharge = 15000; - pixel_y = 2 - }, -/obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qlr" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qlt" = ( -/obj/structure/tank_dispenser/oxygen{ - layer = 2.7; - pixel_x = -1; - pixel_y = 2 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qlu" = ( -/obj/structure/sign/vacuum{ - pixel_x = -32 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small/built{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qlv" = ( -/obj/item/storage/box/lights/mixed, -/obj/item/cigbutt, -/obj/structure/closet/crate{ - icon_state = "crateopen"; - name = "spare equipment crate"; - opened = 1 - }, -/obj/item/tank/internals/oxygen/red, -/obj/item/tank/internals/air, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" - }, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/shuttle/abandoned) -"Qlw" = ( -/obj/structure/closet/crate{ - name = "emergency supplies crate" - }, -/obj/item/storage/toolbox/emergency, -/obj/item/storage/toolbox/emergency, -/obj/item/device/flashlight/flare{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/device/flashlight/flare{ - pixel_x = -6; - pixel_y = -2 - }, -/obj/item/crowbar, -/obj/item/wrench, -/obj/effect/spawner/lootdrop/maintenance, -/obj/item/extinguisher, -/obj/item/extinguisher, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/shuttle/abandoned) -"Qlx" = ( -/obj/machinery/door/airlock/titanium{ - name = "bathroom" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qly" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/blood/gibs/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/remains/human{ - desc = "They look like human remains, and have clearly been gnawed at." - }, -/obj/item/gun/energy/laser/retro, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qlz" = ( -/obj/structure/bed, -/obj/item/bedsheet/centcom, -/obj/effect/decal/remains/human, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small/built{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QlA" = ( -/obj/structure/table, -/obj/item/storage/belt/utility, -/obj/item/storage/belt/utility, -/obj/item/device/radio/off, -/obj/item/device/radio/off, -/obj/item/device/radio/off, -/obj/item/device/radio/off, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small/built{ - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QlB" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/oil, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"QlD" = ( -/obj/machinery/door/airlock/titanium{ - name = "E.V.A. equipment" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"QlF" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/blood/gibs/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/remains/human{ - desc = "They look like human remains, and have clearly been gnawed at." - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"QlG" = ( -/obj/machinery/door/airlock/titanium{ - name = "cargo bay" - }, -/obj/effect/turf_decal/delivery{ - dir = 1 - }, -/turf/open/floor/plasteel{ - dir = 1 - }, -/area/shuttle/abandoned) -"QlH" = ( -/obj/effect/decal/cleanable/oil, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/delivery{ - dir = 1 - }, -/turf/open/floor/plasteel{ - dir = 1 - }, -/area/shuttle/abandoned) -"QlI" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/delivery{ - dir = 1 - }, -/turf/open/floor/plasteel{ - dir = 1 - }, -/area/shuttle/abandoned) -"QlK" = ( -/obj/effect/decal/cleanable/robot_debris/old, -/obj/effect/decal/cleanable/oil, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/delivery{ - dir = 1 - }, -/turf/open/floor/plasteel{ - dir = 1 - }, -/area/shuttle/abandoned) -"QlL" = ( -/obj/machinery/shower{ - dir = 4 - }, -/obj/machinery/door/window/westright{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/item/soap/nanotrasen, -/obj/effect/decal/remains/human{ - desc = "They look like human remains, and have clearly been gnawed at." - }, -/obj/effect/decal/cleanable/blood/gibs/old, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QlM" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/structure/mirror{ - pixel_x = 28 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small/built{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"QlN" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/blood/gibs/limb, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"QlO" = ( -/obj/structure/bed, -/obj/item/bedsheet/centcom, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QlP" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/electrical{ - pixel_x = 1; - pixel_y = 6 - }, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = -1 - }, -/obj/item/clothing/head/welding{ - pixel_x = -3; - pixel_y = 5 - }, -/obj/item/clothing/glasses/welding, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QlR" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QlS" = ( -/obj/effect/decal/cleanable/oil, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/shuttle/abandoned) -"QlU" = ( -/obj/structure/closet/emcloset, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/bot, -/obj/machinery/light/small, -/turf/open/floor/plasteel, -/area/shuttle/abandoned) -"QlV" = ( -/obj/structure/closet/firecloset/full, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/shuttle/abandoned) -"QlW" = ( -/obj/structure/sign/restroom, -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"QlX" = ( -/obj/machinery/door/airlock/titanium{ - name = "bathroom" - }, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"QlY" = ( -/obj/machinery/door/airlock/titanium{ - name = "dormitory" - }, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"QlZ" = ( -/obj/machinery/vending/boozeomat{ - icon_deny = "smartfridge"; - icon_state = "smartfridge"; - req_access_txt = "0"; - use_power = 0 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"Qmb" = ( -/obj/machinery/door/airlock/titanium{ - name = "recovery shuttle interior airlock" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qmd" = ( -/obj/structure/sign/cargo, -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"Qme" = ( -/obj/machinery/door/airlock/titanium{ - name = "cargo bay" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/delivery{ - dir = 1 - }, -/turf/open/floor/plasteel{ - dir = 1 - }, -/area/shuttle/abandoned) -"Qmf" = ( -/obj/machinery/porta_turret/centcom_shuttle/weak{ - dir = 4 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"Qmg" = ( -/obj/machinery/vending/cigarette{ - use_power = 0 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qmi" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/blood/gibs/limb, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qmj" = ( -/obj/effect/decal/cleanable/blood/gibs/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/built{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qmk" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qmn" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/built{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qmo" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/item/folder/blue, -/obj/item/pen, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qmp" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/item/storage/photo_album, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qmq" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/structure/sign/vacuum{ - pixel_x = -32 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small/built{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qmr" = ( -/obj/machinery/vending/coffee, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qmt" = ( -/obj/structure/chair, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qmw" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmC" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/turretid{ - icon_state = "control_kill"; - lethal = 1; - locked = 0; - pixel_x = -28; - req_access = null - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmD" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/structure/chair/office/light{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"QmF" = ( -/obj/machinery/door/airlock/titanium{ - name = "recovery shuttle interior airlock" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"QmG" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmH" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/shaker, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmI" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/condiment/peppermill{ - pixel_x = 3; - pixel_y = 4 - }, -/obj/item/reagent_containers/food/condiment/saltshaker{ - pixel_x = -3; - pixel_y = 4 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmJ" = ( -/obj/structure/table, -/obj/item/storage/fancy/donut_box, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmK" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmL" = ( -/obj/machinery/door/airlock/titanium{ - name = "living quarters" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"QmM" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/item/roller{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/roller{ - pixel_x = 3; - pixel_y = 4 - }, -/obj/item/reagent_containers/spray/cleaner, -/obj/structure/table, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmN" = ( -/obj/item/clothing/suit/bio_suit, -/obj/item/clothing/suit/bio_suit, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/item/clothing/gloves/color/latex, -/obj/item/clothing/gloves/color/latex, -/obj/item/clothing/head/bio_hood, -/obj/item/clothing/head/bio_hood, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/structure/table, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmO" = ( -/obj/effect/decal/cleanable/blood/gibs/old, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/remains/human{ - desc = "They look like human remains, and have clearly been gnawed at." - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmP" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/suit/armor/vest, -/obj/item/clothing/suit/armor/vest, -/obj/structure/table, -/obj/item/clothing/head/helmet/swat/nanotrasen, -/obj/item/clothing/head/helmet/swat/nanotrasen, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmQ" = ( -/obj/item/storage/toolbox/emergency{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/storage/toolbox/emergency, -/obj/item/storage/toolbox/emergency{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/structure/table, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmR" = ( -/obj/machinery/door/airlock/titanium{ - name = "bridge" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"QmS" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/structure/chair/comfy/black{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmT" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/computer/shuttle/white_ship{ - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QmU" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/structure/light_construct/small{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"QmV" = ( -/obj/machinery/vending/cola/random, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qnd" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/structure/chair/office/light, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qne" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/blood/gibs/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/item/clothing/head/centhat{ - desc = "There's a gouge through the top where something has clawed clean through it. Whoever was wearing it probably doesn't need a hat any more."; - name = "\improper damaged CentCom hat" - }, -/obj/effect/decal/remains/human{ - desc = "They look like human remains, and have clearly been gnawed at." - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qnf" = ( -/obj/item/phone{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/cigbutt/cigarbutt{ - pixel_x = 5; - pixel_y = -1 - }, -/obj/structure/table, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qng" = ( -/obj/machinery/vending/snack/random, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qnh" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/built{ - dir = 2 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qni" = ( -/obj/structure/sign/science{ - pixel_y = -32 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qnj" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qnk" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/structure/table, -/obj/item/device/megaphone, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qnl" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/computer/camera_advanced/shuttle_docker/whiteship{ - station_lock_override = 1; - view_range = 15; - x_offset = -3; - y_offset = -7 - }, -/obj/machinery/light/built{ - dir = 2 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qnm" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qnn" = ( -/obj/structure/table, -/obj/item/device/radio/off{ - pixel_y = 6 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qno" = ( -/obj/structure/sign/botany, -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"Qnp" = ( -/obj/machinery/door/airlock/titanium{ - name = "hydroponics" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qnq" = ( -/obj/machinery/door/airlock/titanium{ - name = "kitchen" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qnr" = ( -/obj/machinery/door/airlock/titanium{ - name = "laboratory" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"Qns" = ( -/obj/structure/sign/bluecross_2, -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"Qnt" = ( -/obj/item/storage/bag/plants/portaseeder, -/obj/structure/table, -/obj/item/reagent_containers/spray/plantbgone{ - pixel_x = 13; - pixel_y = 5 - }, -/obj/item/reagent_containers/glass/bottle/nutrient/ez, -/obj/item/reagent_containers/glass/bottle/nutrient/ez, -/obj/item/reagent_containers/glass/bottle/nutrient/ez, -/obj/item/reagent_containers/glass/bottle/nutrient/rh{ - pixel_x = -2; - pixel_y = 3 - }, -/obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qnu" = ( -/obj/machinery/biogenerator{ - idle_power_usage = 0; - use_power = 0 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qnv" = ( -/obj/machinery/vending/hydroseeds{ - use_power = 0 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small/built{ - dir = 1 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qnw" = ( -/obj/machinery/processor, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small/built{ - dir = 1 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qnx" = ( -/obj/structure/kitchenspike, -/obj/effect/decal/cleanable/blood/gibs/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qny" = ( -/obj/structure/table, -/obj/machinery/microwave{ - pixel_x = -3; - pixel_y = 6 - }, -/obj/item/storage/box/donkpockets, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"Qnz" = ( -/obj/effect/decal/cleanable/oil, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QnA" = ( -/obj/machinery/sleeper{ - dir = 4; - use_power = 0 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"QnB" = ( -/obj/structure/closet/crate/freezer, -/obj/item/reagent_containers/blood/empty{ - pixel_x = -3; - pixel_y = -3 -======= -"nxv" = ( /obj/machinery/power/apc{ - name = "Construction Area APC"; - areastring = "/area/construction"; - pixel_y = -24 ->>>>>>> e645319... Changes up the Construction Area on Box slightly. (#35009) + dir = 4; + name = "Cargo Warehouse APC"; + areastring = "/area/quartermaster/warehouse"; + pixel_x = 26 }, /obj/structure/cable{ - icon_state = "0-8" + icon_state = "0-2" }, /turf/open/floor/plating, -/area/construction) -"rKP" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, +/area/maintenance/port) +"ijc" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"ipA" = ( +/obj/machinery/droneDispenser, /turf/open/floor/plating, -/area/construction) -"xhV" = ( +/area/maintenance/department/medical/morgue) +"itG" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin, +/obj/item/pen, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"iNn" = ( +/obj/machinery/camera{ + c_tag = "Kitchen Cold Room" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/reagent_dispensers/cooking_oil, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/kitchen) +"jbf" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + areastring = "/area/hallway/secondary/service"; + dir = 1; + name = "Service Hall APC"; + pixel_y = 25 + }, +/turf/open/floor/plasteel/hydrofloor, +/area/hallway/secondary/service) +"jgm" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/camera{ + c_tag = "Circuitry Lab"; + dir = 8; + network = list("SS13","RD") + }, +/turf/open/floor/plasteel, +/area/science/circuit) +"jlm" = ( +/obj/machinery/rnd/protolathe/department/cargo, +/turf/open/floor/plasteel, +/area/quartermaster/office) +"jrE" = ( +/obj/machinery/rnd/protolathe/department/science, +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"jAD" = ( +/obj/structure/grille, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"jCq" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 + dir = 5 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"jHt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment{ + dir = 10 }, /obj/structure/cable{ icon_state = "2-8" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/plating, -/area/construction) -"Pvz" = ( +/area/maintenance/starboard/aft) +"jMY" = ( +/obj/structure/table, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = -7 + }, +/obj/item/stack/cable_coil, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"jSO" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/science/circuit) +"jVl" = ( /obj/structure/cable{ icon_state = "4-8" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/plating, -/area/construction) -"Qod" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space/basic, -/area/space/nearstation) -"Qof" = ( -/obj/structure/lattice, -/obj/structure/grille/broken, -/turf/open/space/basic, -/area/space/nearstation) -"Qoi" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"Qol" = ( -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"Qov" = ( +/area/maintenance/starboard/aft) +"khb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/structure/table, +/obj/item/kitchen/rollingpin, +/turf/open/floor/plasteel/hydrofloor, +/area/hallway/secondary/service) +"kob" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"kPd" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/hydrofloor, +/area/hallway/secondary/service) +"kQk" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) +"kQq" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 4 }, /turf/open/floor/engine, /area/engine/engineering) -"Qoz" = ( +"kSb" = ( +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/quartermaster/miningdock) +"lAB" = ( +/obj/structure/sign/nanotrasen, +/turf/closed/wall, +/area/science/circuit) +"lMg" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/science/circuit) +"lQG" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/science/circuit) +"mBv" = ( /obj/structure/cable{ icon_state = "1-2" }, @@ -55558,116 +54358,72 @@ }, /turf/open/floor/engine, /area/engine/engineering) -"QoA" = ( -/obj/structure/table, -/obj/item/stack/cable_coil{ - pixel_x = 3; - pixel_y = -7 +"mNi" = ( +/obj/machinery/light_switch{ + pixel_x = -20 }, -/obj/item/stack/cable_coil, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"QoB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"QoC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"QoD" = ( -/obj/structure/table, -/obj/item/stack/sheet/metal/fifty, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"QoG" = ( +/turf/open/floor/plasteel/white, +/area/science/circuit) +"mRe" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"noK" = ( /obj/structure/girder, /turf/open/floor/plasteel/dark, /area/engine/engineering) -"QoH" = ( -/obj/item/wrench, -/obj/item/weldingtool, -/obj/item/clothing/head/welding{ - pixel_x = -3; - pixel_y = 5 +"nxv" = ( +/obj/machinery/power/apc{ + name = "Construction Area APC"; + areastring = "/area/construction"; + pixel_y = -24 }, -/obj/structure/rack, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/construction) +"nzh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/dark, /area/engine/engineering) -"QoI" = ( +"nGt" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"nRG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"oDF" = ( /obj/machinery/light, /turf/open/floor/plating, /area/engine/engineering) -"QoK" = ( -/obj/item/crowbar/large, -/obj/structure/rack, -/obj/item/device/flashlight, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"QoL" = ( -/obj/machinery/camera{ - c_tag = "Kitchen Cold Room" +"oHU" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/reagent_dispensers/cooking_oil, -/turf/open/floor/plasteel/showroomfloor, -/area/crew_quarters/kitchen) -"QoM" = ( -/obj/machinery/rnd/protolathe/department/service, -/turf/open/floor/plating, -/area/crew_quarters/kitchen) -"QoN" = ( -/obj/machinery/rnd/protolathe/department/cargo, /turf/open/floor/plasteel, -/area/quartermaster/storage) -"QoO" = ( -/obj/machinery/mineral/ore_redemption{ - input_dir = 2; - output_dir = 1 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock) -"QoP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light_switch{ - pixel_y = 28 - }, -/obj/machinery/light{ +/area/science/circuit) +"oUh" = ( +/obj/structure/disposalpipe/trunk{ dir = 1 }, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock) -"QoT" = ( -/obj/effect/turf_decal/loading_area, -/turf/open/floor/plasteel/showroomfloor, -/area/crew_quarters/kitchen) -"QoU" = ( -/obj/structure/closet/crate/freezer/surplus_limbs, -/obj/item/reagent_containers/glass/beaker/synthflesh, -/turf/open/floor/plasteel/white/side{ - dir = 8 - }, -/area/medical/sleeper) -"QoV" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" - }, -/turf/open/floor/plating, -/area/maintenance/department/medical/morgue) -"QoW" = ( -/obj/machinery/droneDispenser, -/turf/open/floor/plating, -/area/maintenance/department/medical/morgue) -"QoX" = ( -/obj/structure/table, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stack/sheet/glass/fifty, -/turf/open/floor/plating, -/area/maintenance/department/medical/morgue) -"QoY" = ( +/obj/machinery/disposal/bin, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"pHl" = ( /obj/structure/table, /obj/item/storage/box/beakers{ pixel_x = 2; @@ -55695,280 +54451,40 @@ }, /turf/open/floor/plasteel/white, /area/medical/sleeper) -"QoZ" = ( -/turf/closed/wall, -/area/quartermaster/warehouse) -"Qpb" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/power/apc{ - dir = 4; - name = "Cargo Warehouse APC"; - areastring = "/area/quartermaster/warehouse"; - pixel_x = 26 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/turf/open/floor/plating, -/area/maintenance/port) -"Qpi" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/beer, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"Qpj" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"Qpk" = ( +"pNx" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"Qpl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance/abandoned, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"Qpm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"Qpn" = ( -/obj/structure/table, -/obj/effect/spawner/lootdrop/grille_or_trash, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"Qpp" = ( -/turf/closed/wall, -/area/science/circuit) -"Qpv" = ( -/obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 8; - name = "8maintenance loot spawner" - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"Qpx" = ( -/obj/structure/table/reinforced, -/obj/item/device/multitool, -/obj/item/screwdriver, -/obj/machinery/camera{ - c_tag = "Circuitry Lab North"; - network = list("SS13","RD") - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"Qpy" = ( -/obj/structure/sign/poster/official/random{ - pixel_y = 32 - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"QpA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"QpC" = ( -/obj/structure/table/reinforced, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"QpF" = ( -/obj/machinery/bookbinder, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"QpJ" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/libraryscanner, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"QpM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"QpP" = ( -/obj/machinery/light_switch{ - pixel_x = -20 - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"QpQ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/science/circuit) -"QpR" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/science/circuit) -"QpS" = ( -/obj/structure/sign/nanotrasen, -/turf/closed/wall, -/area/science/circuit) -"QpT" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"QpU" = ( +/turf/open/floor/plasteel/floorgrime, +/area/science/misc_lab) +"qeQ" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, /turf/open/floor/plasteel, /area/science/circuit) -"QpW" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel, -/area/science/circuit) -"QpX" = ( -/obj/machinery/power/apc{ - areastring = "/area/science/circuit"; - name = "Circuitry Lab APC"; - pixel_x = 30 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plasteel, -/area/science/circuit) -"QpY" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/science/circuit) -"Qqa" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/science/circuit) -"Qqb" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/science/circuit) -"Qqc" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel, -/area/science/circuit) -"Qqd" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/machinery/camera{ - c_tag = "Circuitry Lab"; - dir = 8; - network = list("SS13","RD") - }, -/turf/open/floor/plasteel, -/area/science/circuit) -"Qqe" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"Qqh" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"Qqi" = ( +"qpv" = ( /obj/machinery/light{ dir = 4 }, /obj/machinery/autolathe, /turf/open/floor/plasteel/white, /area/science/circuit) -"Qqj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/floorgrime, -/area/science/misc_lab) -"Qql" = ( -/obj/structure/table/reinforced, -/obj/item/device/radio/intercom{ - pixel_x = -30 +"quT" = ( +/obj/structure/lattice, +/obj/structure/grille/broken, +/turf/open/space/basic, +/area/space/nearstation) +"rmX" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/beer, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"rKP" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"Qqm" = ( -/obj/structure/chair/office/light, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"Qqn" = ( -/obj/machinery/rnd/protolathe/department/science, -/obj/structure/sign/poster/official/random{ - pixel_x = 32 - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"Qqp" = ( -/obj/structure/table/reinforced, -/obj/machinery/light, -/obj/item/stock_parts/cell/super, -/obj/item/stock_parts/cell/super, -/obj/item/stack/sheet/metal/fifty, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"Qqq" = ( +/turf/open/floor/plating, +/area/construction) +"saK" = ( /obj/structure/closet/crate, /obj/item/target/alien, /obj/item/target/alien, @@ -55980,7 +54496,13 @@ /obj/item/gun/energy/laser/practice, /turf/open/floor/plasteel/white, /area/science/circuit) -"Qqr" = ( +"sxs" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/table, +/obj/item/shovel/spade, +/turf/open/floor/plasteel/hydrofloor, +/area/hallway/secondary/service) +"sLv" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -55988,18 +54510,62 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"Qqs" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/segment, +"sOs" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/machinery/door/airlock/maintenance/abandoned, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"Qqt" = ( +"sSW" = ( +/obj/structure/chair/office/light, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"tal" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/hallway/secondary/service) +"tMl" = ( +/obj/effect/turf_decal/loading_area, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/kitchen) +"udp" = ( +/obj/item/crowbar/large, +/obj/structure/rack, +/obj/item/device/flashlight, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"uhH" = ( +/obj/item/wrench, +/obj/item/weldingtool, +/obj/item/clothing/head/welding{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/structure/rack, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"uoB" = ( +/obj/structure/table/reinforced, +/obj/item/device/multitool, +/obj/item/screwdriver, +/obj/machinery/camera{ + c_tag = "Circuitry Lab North"; + network = list("SS13","RD") + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"uNu" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/science/circuit) +"uVS" = ( /obj/structure/cable{ icon_state = "4-8" }, @@ -56011,18 +54577,98 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"Qqu" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 +"vxh" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 8; + name = "8maintenance loot spawner" }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"Qqv" = ( +"vzp" = ( +/obj/structure/table/reinforced, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"vCb" = ( +/obj/machinery/rnd/protolathe/department/service, +/turf/open/floor/plasteel/hydrofloor, +/area/hallway/secondary/service) +"vCt" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"vPE" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/libraryscanner, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"wkN" = ( +/turf/closed/wall, +/area/science/circuit) +"wrp" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/hydrofloor, +/area/hallway/secondary/service) +"wvX" = ( +/obj/structure/table/reinforced, +/obj/machinery/light, +/obj/item/stock_parts/cell/super, +/obj/item/stock_parts/cell/super, +/obj/item/stack/sheet/metal/fifty, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"wBd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/closed/wall, +/area/hallway/secondary/service) +"wUY" = ( +/obj/structure/table, +/obj/item/reagent_containers/glass/bucket, +/turf/open/floor/plasteel/hydrofloor, +/area/hallway/secondary/service) +"xhV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/construction) +"xiw" = ( +/obj/machinery/door/airlock{ + name = "Service Hall"; + req_access_txt = "0"; + req_one_access_txt = "25;26;35;28" + }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/landmark/event_spawn, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/hallway/secondary/service) +"xIa" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"ycu" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/open/floor/plasteel, /area/science/circuit) @@ -61560,11 +60206,11 @@ aaa aaa aaa aaa -cyc -cyc -Qll -cyc -cyc +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -61813,19 +60459,19 @@ aaa aaa aaa aaa -cyf -cym -cym -cym -cyR -Qmq -cyi -QmU -cyR -cym -cym -cym -cyF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -62069,21 +60715,21 @@ aaa aaa aaa aaa -cyc -cyc -cyo -cyo -cyc -cyc -cyc -QmF -cyc -cyc -cyc -cyo -cyo -cyc -cyc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -62326,21 +60972,21 @@ aaa aaa aaa aaa -cyc -cyc -cyc -cyc -cyc -Qmg -Qmr -cyi -QmV -Qng -cyc -cyc -cyc -cyc -cyc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -62583,21 +61229,21 @@ aaa aaa aaa aaa -cyc -Qlm -cyc -QlL -QlW -cyI -cyI -cyI -cyI -cyI -cyc -Qnt -QnD -QnP -cyc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -62840,21 +61486,21 @@ aaa aaa aaa aaa -cyR -Qln -Qlx -QlM -QlX -Qmi -cye -QmG -Qmw -cyI -Qno -Qnu -cyi -QnP -cyR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -63097,21 +61743,21 @@ aaa aaa aaa aaa -cyc -cyc -cyc -cyc -cyc -Qmj -Qmt -QmH -cMc -cyI -Qnp -cyi -cyI -QnR -cyR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -63354,21 +62000,21 @@ aaa aaa aaa aae -cyR -Qlo -Qly -QlN -QlY -Qmk -Qmt -QmI -cMc -Qnh -cyc -Qnv -QnE -QnP -cyc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -63611,21 +62257,21 @@ aaa aaa aaa aaa -cyc -Qlp -Qlz -QlO -QlZ -cyI -Qmt -QmJ -cMc -cyI -cyc -cyc -QnF -cyc -cyc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -63868,21 +62514,21 @@ aaa aaa aaa aaa -cyc -cyc -cyc -cyc -cyc -cyI -Qmw -QmK -cye -cyI -Qnq -cyI -QnG -QnT -cyc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -64125,21 +62771,21 @@ aaa aaa aaa aaa -cyc -Qlq -QlA -cyn -cyc -cLY -cyI -cyi -cyI -cyI -cyc -Qnw -cyi -czr -cyR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -64359,11 +63005,11 @@ ckq aaa aaa aaa -aCS -cMB -aCV -aCV -aCS +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -64373,7 +63019,7 @@ cwU aaa aaa aaa -cxt +aaa aaa aaa aaf @@ -64382,21 +63028,21 @@ aaa aaa aaa aaf -cyR -Qlr -QlB -QlP -cyc -cyc -cyc -QmL -cyc -cyc -cyc -Qnx -QnH -QnU -cyR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -64616,11 +63262,11 @@ asE arB aaa aaa -aCS -aFC -aEr -aIG -aCS +aaa +aaa +aaa +aaa +aaa aaa aaa arB @@ -64629,9 +63275,9 @@ cyb asE arB aaa -cxt -cxD -cxt +aaa +aaa +aaa aaa aaf aaa @@ -64639,21 +63285,21 @@ aaa aaa aaf aaf -cyR -Qlr -cyi -cyI -QlD -cyi -cyI -cyI -cyI -cyI -cyc -Qny -QnI -QnV -cyc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -64873,11 +63519,11 @@ cwT aAC aaa aaa -aCS -cLJ -aEr -cLK -aCS +aaa +aaa +aaa +aaa +aaa aaa aaa aAC @@ -64886,9 +63532,9 @@ auP cxY arB aaa -cxy -cxC -cCy +aaa +aaa +aaa aaa aaf aaa @@ -64896,21 +63542,21 @@ aaf aaa aAC aaf -cyc -Qlt -cyI -QlR -cyc -cyI -cye -QmM -cye -cyI -cyc -cyc -cyc -cyc -cyc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -65129,13 +63775,13 @@ cyb asE arB aaa -aCS -aCS -aCS -aHs -aCS -aCS -aCS +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa arB asE @@ -65143,9 +63789,9 @@ cyb avP arB aaa -cxu -cLQ -cxu +aaa +aaa +aaa aaa arB awW @@ -65153,21 +63799,21 @@ awW asE arB aaf -cyc -cyc -QlD -cyc -cyc -Qmn -Qmw -QmN -Qmw -Qni -cyc -Qnz -QnJ -QnW -cyc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -65386,45 +64032,45 @@ ayk awW aAD awW -aCS -aEo -aEr -aEr -aEr -aKg -aCS +aaa +aaa +aaa +aaa +aaa +aaa +aaa awW awW awW aQG aRX arB -cxu -cxu -cCw -cxu -cxu +aaa +aaa +aaa +aaa +aaa arB awY ayk awW aAD awW -Qll -Qlu -cyI -cyi -Qmb -cyI -Qmk -QmO -cyI -cyI -Qnr -cyI -QnK -QnX -cyR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -65643,24 +64289,24 @@ ayl azy auP cIh -aCU -aEr -aFE -aFE -aFE -aEr -aCU +aaa +aaa +aaa +aaa +aaa +aaa +aaa azy auP cIh ayl aRY awW -cxw -cxB -cxC -cxI -cxw +aaa +aaa +aaa +aaa +aaa awW awZ ayl @@ -65668,20 +64314,20 @@ beK auP cyt cyd -cyi -QlF -cyx -Qmb -cyi -cyI -cMa -cyi -cyI -cyc -cye -czm -QnY -cyc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -65900,45 +64546,45 @@ ayk awW awW awW -aCS -aEq -aEr -aEr -aEr -cLL -aCS +aaa +aaa +aaa +aaa +aaa +aaa +aaa awW awW awW awV aRY awW -cxu -cxB -cxC -cxI -cxu +aaa +aaa +aaa +aaa +aaa awW awZ ayk awW awW awW -cyc -cyc -QlG -cyc -cyc -cyI -cye -QmP -cye -Qnj -cyc -cyc -cyc -cyc -cyc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -66157,45 +64803,45 @@ cqr azz aAF awW -aCV -aEt -aFE -aFE -aFE -aEr -aCV +aaa +aaa +aaa +aaa +aaa +aaa +aaa awW aOf azz aPu aRY awW -cxu -cLP -cxC -cxC -cxu +aaa +aaa +aaa +aaa +aaa awW awZ aym azz aAF awW -cyc -cyk -QlH -QlS -Qmd -cyI -cye -QmQ -Qmw -cyI -Qns -QnA -QnL -QnZ -cyc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -66414,45 +65060,45 @@ aIK ayl aAE awW -aCV -aEs -aEr -aEr -aEr -aEr -aCV +aaa +aaa +aaa +aaa +aaa +aaa +aaa awW aOe ayl ayl aRY awW -cCu -cxC -cCx -cxC -cCz +aaa +aaa +aaa +aaa +aaa awW awZ ayl ayl aAE awW -cyR -cyj -QlI -QlI -Qme -cyI -cyI -cyi -cyI -cyI -cMf -cyi -QnM -Qoa -cyR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -66671,45 +65317,45 @@ aIK ayl aAH awW -aCV -aEv -aFE -aFE -aFE -aEr -aCV +aaa +aaa +aaa +aaa +aaa +aaa +aaa awW aOh ayl ayl aRY awW -cxu -cxC -cxC -cLR -cxu +aaa +aaa +aaa +aaa +aaa awW awZ ayl ayl bgi awW -cyR -Qlv -QlI -QlU -cyc -cyc -cyc -QmR -cyc -cyc -cyc -QnB -QnN -Qob -cyR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -66928,45 +65574,45 @@ cry azA aAG awW -aCV -aEu -aEr -aEr -aEr -aEr -aCV +aaa +aaa +aaa +aaa +aaa +aaa +aaa awW aOg azA aQH aRY awW -cxu -cxB -cxC -cxI -cxu +aaa +aaa +aaa +aaa +aaa awW awZ ayn azA bgh awW -cyc -Qlw -QlK -QlV -cyc -cyw -QmC -cyI -cye -Qnk -cyc -QnC -QnO -Qoc -cyc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -67185,45 +65831,45 @@ crz awW awW awW -aCS -aEw -aFE -aFE -aFE -aKh -aCS +aaa +aaa +aaa +aaa +aaa +aaa +aaa awW awW awW awV aRY awW -cxw -cxB -cxC -cxI -cxw +aaa +aaa +aaa +aaa +aaa awW awZ ayk awW awW awW -cyc -cyc -cyR -cyc -cyc -Qmo -QmD -cyI -Qnd -Qnl -cyc -cyc -cyR -cyc -cyc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -67442,24 +66088,24 @@ aIK azy auP cIh -aCU -aEr -aEr -aEr -aEr -aEr -aCU +aaa +aaa +aaa +aaa +aaa +aaa +aaa azy auP cIh ayl aRY awW -cxu -cxw +aaa +aaa cxE -cxw -cxu +aaa +aaa awW awZ ayl @@ -67470,13 +66116,13 @@ aaa aaa aaa aaa -cyR -Qmp -cyI -QmS -Qne -Qnm -cyR +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -67699,13 +66345,13 @@ ayp awW aAD awW -aCS -aEy -aEy -aEy -aEy -aEy -aCS +aaa +aaa +aaa +aaa +aaa +aaa +aaa awW awW awW @@ -67727,13 +66373,13 @@ aaa aaa aaa aaa -cyR -cLZ -cyO -QmT -Qnf -Qnn -cyR +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -67956,13 +66602,13 @@ ayo azB awW aaa -aCS -aEx -aFF +aaa +aaa +aaa cIg -aFF -aKi -aCS +aaa +aaa +aaa aaa awW aPt @@ -67984,13 +66630,13 @@ aaa aaa aaa aaa -Qmf -cyR -cyR -cyR -cyR -cyR -Qmf +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -71837,17 +70483,17 @@ bea bfq bji bkF -cys -cys -cys -cys -cys -cys -cys -cys -cys -cys -cys +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -72094,18 +70740,18 @@ bdZ bhO bjh bkE -cys -cyB -cyB -cyB -cyB -cMb -cyB -cyB -cyB -czf -cys -czs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -72351,18 +70997,18 @@ aXQ bhQ bjj bkF -cys -cyB -cyB -cyB -cyB -cyB -cyB -cyB -cyB -cyB -czp -czt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -72608,18 +71254,18 @@ aZt bhQ bjj bkF -cys -cLX -cyB -cyB -cyB -cyB -cyB -cyB -cyB -cyB -czp -czt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -72865,18 +71511,18 @@ bgr bhQ bjj bkF -cys -cyB -cyB -cyB -cyB -cyB -cyB -cyB -cyB -cyB -czp -czt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -73122,18 +71768,18 @@ bfa bhQ bjk bkE -cys -cyB -cyB -cyB -cyB -cyS -cyB -cyB -cyB -czf -cys -czu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -73379,17 +72025,17 @@ bgs bhQ bjk bkF -cys -cys -cys -cyN -cyQ -cys +aaa +aaa +aaa +aaa +aaa +aaa cyT -cyZ -cys -cys -cys +aaa +aaa +aaa +aaa aaa aaa aaa @@ -75449,13 +74095,13 @@ aaa aaa aaa aaa -cTg -cTg -cTi -cTg -cTi -cTg -cTg +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa bCq bPS @@ -75706,13 +74352,13 @@ aaa aaa aaa aaa -cTg -bGg -cTo -cMl -bHx -cTx -cTg +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa bLv bPR @@ -75963,13 +74609,13 @@ bxx bxu bxu bDi -cTi -bGh -bHx -cTo -bHx -bLt -bMF +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa bCq bPS @@ -76198,7 +74844,7 @@ aWu aYa aZD aZD -Qpb +hcE aZD aZD bff @@ -76220,13 +74866,13 @@ bzP bAS bxu aaa -cTg -bGg -cTo -cTo -bHx -bLs -cTg +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa bLv bPT @@ -76461,7 +75107,7 @@ aZF aZF bgy aZE -QoN +bjr bjr ama bmh @@ -76477,13 +75123,13 @@ bzR byd bxx aaa -cTg -cTg -cTi +aaa +aaa +aaa bJc -cTi -cTg -cTg +aaa +aaa +aaa aaa bCq bPV @@ -76717,7 +75363,7 @@ baS bdS bdU ckQ -QoZ +gjl bjq bjr bjr @@ -77488,7 +76134,7 @@ bcS bbt bfi beD -QoZ +gjl aZE biA bmg @@ -77738,13 +76384,13 @@ aTH aPK aWz aWC -QoZ -QoZ -QoZ +gjl +gjl +gjl bcT -QoZ -QoZ -QoZ +gjl +gjl +gjl aZE bju biv @@ -77958,15 +76604,15 @@ aaa aaa aaa aaa -akD -akD -ajX -akD -akD -ajX -akD -akD -akD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -78215,15 +76861,15 @@ aaa aaa aaa aaa -ajX -akC -alj -alY -amI -amI -anM -aop -aoY +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -78271,7 +76917,7 @@ bjv btv buc bxz -QoP +eVL bwV byy bBa @@ -78472,15 +77118,15 @@ aaa aaa aaa aaa -ajX -akF -alm -akD -cLI -amI -amI -aop -aoY +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -78729,15 +77375,15 @@ aaa aaa aaa aaa -ajX -akE -all -alZ -amJ -anr -amI -aop -aoY +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa arP @@ -78782,9 +77428,9 @@ bnz bpA bbR bkM -bbR +jlm bud -QoO +eyM kSb bAZ bGm @@ -78986,15 +77632,15 @@ aaa aaa aaa aaa -akD -akD -alo -akD -akD -akD +aaa +aaa +aaa +aaa +aaa +aaa anO -akD -akD +aaa +aaa aaa aaa arP @@ -82700,7 +81346,7 @@ aaf aaT aaT aaT -Qoi +gXs aaf aaf aaf @@ -82913,7 +81559,7 @@ bNJ bNJ bKx cjL -Pvz +gbq bNI bUz bVJ @@ -83215,9 +81861,9 @@ ccw ccw ccw aaa -Qod +eRz aaT -Qod +eRz aaa aaa aaa @@ -83465,11 +82111,11 @@ cqb cAo cGt cgx -QoA +jMY csd cHa csd -QoH +uhH ccw aaa aaT @@ -83722,8 +82368,8 @@ cFJ cSH cGu cGH -QoB -QoB +fsQ +fsQ cGR csd csd @@ -83983,7 +82629,7 @@ cGS cHb cHg cHn -QoI +oDF ccw aaf aaT @@ -84234,7 +82880,7 @@ cEz cMD cFL cGf -Qov +kQq cMm ciZ cHc @@ -84491,7 +83137,7 @@ cFe cMD cFM czE -Qov +kQq ccw cGT csd @@ -85010,7 +83656,7 @@ cMm cGV csd cGV -QoG +noK csd ccw aaa @@ -85519,7 +84165,7 @@ cFh cMD cFM czE -Qov +kQq ccw cGT csd @@ -85776,7 +84422,7 @@ cEz cMD cFR cSJ -Qov +kQq cMm ciZ cHd @@ -86033,13 +84679,13 @@ cFj cEf cFS cGg -Qoz +mBv cGI cGS cHe cHe cHr -QoI +oDF ccw aaf aaT @@ -86292,8 +84938,8 @@ cFT cSK cGx cGK -QoC -QoC +nzh +nzh cGY csd csd @@ -86549,11 +85195,11 @@ cqb cGh cGC cey -QoD +ijc csd cEk csd -QoK +udp ccw aaf aaT @@ -87326,7 +85972,7 @@ aaf aaf aaf aaf -Qoi +gXs aaf aaf aaf @@ -88610,7 +87256,7 @@ aaa aaa aaa aaa -Qod +eRz aaa aaa aaa @@ -88867,7 +87513,7 @@ aae aaa aaa aaa -Qod +eRz aaa aaa aaa @@ -89124,7 +87770,7 @@ aaa aaa aaa aaa -Qof +quT aaa aaa aaa @@ -89381,7 +88027,7 @@ aaa aaa aaa aaa -Qod +eRz aaa aaa aaa @@ -89638,7 +88284,7 @@ aaa aaa aaa aaa -Qof +quT aaa aaa aaa @@ -89895,7 +88541,7 @@ aaa aaa aaa aaa -Qoi +gXs aaa aaa aaa @@ -90152,7 +88798,7 @@ aaa aaa aaa aaa -Qof +quT aaa aaa aaa @@ -90409,7 +89055,7 @@ aaa aaa aaa aaa -Qod +eRz aaa aaa aaa @@ -90666,7 +89312,7 @@ aaa aaa aaa aaa -Qol +jAD aaa aaa aaa @@ -90870,7 +89516,7 @@ bvh bzS bBc bCJ -QoU +gZG cCp bvd bKH @@ -90923,7 +89569,7 @@ aaa aaa aaa aaa -Qod +eRz aaa aaa aaa @@ -91180,7 +89826,7 @@ aaa aaa aaa aaa -Qod +eRz aaa aaa aaa @@ -91437,7 +90083,7 @@ aaa aaa aaa aaa -Qof +quT aaa aaa aaa @@ -91694,7 +90340,7 @@ aaa aaa aaa aaa -Qod +eRz aaa aaa aaa @@ -91951,7 +90597,7 @@ aaa aaa aaa aaa -Qof +quT aaa aaa aaa @@ -92208,7 +90854,7 @@ aaa aaa aaa aaa -Qof +quT aaa aaa aaa @@ -92465,7 +91111,7 @@ aaa aaa aaa aaa -Qol +jAD aaa aaa aaa @@ -93696,7 +92342,7 @@ bAu bvj bCN bEa -QoY +pHl bFA bIm bJD @@ -94689,7 +93335,7 @@ alP aGL aHY aQj -QoL +iNn aMk aNK aOM @@ -94947,7 +93593,7 @@ aGL avI aJK aKV -QoT +tMl aMl aMF aJI @@ -95446,7 +94092,7 @@ aag alO arp alO -anf +awD anf anf awD @@ -95708,12 +94354,12 @@ anf anf aEl anf -alP -alP -alP -alP -alP -alP +cVb +cVb +cVb +cVb +cVb +cVb aGQ aIk aIp @@ -95725,7 +94371,7 @@ aJI aJI aSP aUh -QoM +aJI aJI aJI aJI @@ -95965,12 +94611,12 @@ auC alP anf anf -alP -arA -anf -alP -atw -alP +cVb +jbf +wrp +fnC +kPd +xiw aGS aIm aIp @@ -96222,13 +94868,13 @@ anf alP awE anf -apE -anf -anf -alP -anf -alP -aCE +cVb +vCb +wUY +khb +sxs +tal +aCI aIj aJB aKD @@ -96479,12 +95125,12 @@ apC apC alP anf -alP -alP -alP -alP -awD -ayf +cVb +cVb +cVb +cVb +cVb +wBd aGC aIl aIq @@ -97534,9 +96180,9 @@ bci beB bfS bfS -QoV -QoW -QoX +kQk +ipA +gbT cTO bmZ bon @@ -97766,7 +96412,7 @@ aoP auF azr anf -anf +atw alP alP aFo @@ -98784,7 +97430,7 @@ aaf aaf aaf apC -anf +arA anf asx anf @@ -104252,7 +102898,7 @@ bOB bPs bYo bSc -Qqj +pNx cbd ccT bSc @@ -104499,18 +103145,18 @@ bMv bNv bMv bSl -Qpp -Qpp -Qpp -Qpp -Qpp -QpS -QpY +wkN +wkN +wkN +wkN +wkN +lAB +lQG bPb bQG -QpS -Qpp -Qpp +lAB +wkN +wkN bSl bQZ bQZ @@ -104755,18 +103401,18 @@ bLi bMz bNy bOH -Qpp +wkN bQY -QpC +vzp bTo bUp -QpP -QpT +mNi +mRe bXs bPL bQI bTo -Qql +eaI cbZ bSl cmo @@ -105012,18 +103658,18 @@ bFU bMy bNx bOG -Qpp -Qpx +wkN +uoB bSk bXs bXs -QpQ -QpU -QpU +lMg +qeQ +qeQ bPF bQI bXs -Qqm +sSW cbY bSl cOe @@ -105269,19 +103915,19 @@ bFU bMA bNz bOI -Qpp +wkN bRa cbe bTp -QpM +vCt bVs -Qqv +fKl bXt bPM bZh -Qqh +itG cbe -Qqp +wvX bSl cOe ceS @@ -105527,14 +104173,14 @@ bEC bEC bEC bSl -Qpy +dMZ bXs bXs bXs -QpR -QpW -Qqa -Qqc +gwd +ycu +oHU +uNu bXs bXs bXs @@ -105544,7 +104190,7 @@ cOe ceR cbf cbv -Qqt +uVS cQw cjD cjD @@ -105785,23 +104431,23 @@ bNA cOe bSl bRb -QpF -QpJ +flc +vPE bUq bVt -QpX -Qqb -Qqd -Qqe -Qqi -Qqn -Qqq +dfh +jSO +jgm +oUh +qpv +jrE +saK bSl cOx -Qqr +sLv ckS cNW -Qqu +jVl cds cjD ckt @@ -106039,7 +104685,7 @@ bKb cNX cNZ cNZ -Qpj +jCq bSl bSl bSl @@ -106296,9 +104942,9 @@ bKd cNY bMC cOb -Qpk +jHt bPO -QpA +kob bSm bTr bTr @@ -106312,7 +104958,7 @@ cbg bTr bTr bTr -Qqs +nGt cbg bTr cct @@ -106553,7 +105199,7 @@ bEs bEs bEs cNW -Qpl +sOs cNW cNW cNW @@ -106810,7 +105456,7 @@ bKf bLk bEs bNC -Qpm +nRG cbf cbf cbf @@ -107283,23 +105929,23 @@ aaa aaa aaa aaa -cwI -cwI -cwI -cxg -cwI +aaa +aaa +aaa +aaa +aaa afa -cwI -crx -crx -crx -cwI -cxK -cwI -cxK -cwI -cwI -cwI +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -107323,9 +105969,9 @@ bIW bKe bLm bEs -Qpi -Qpn -Qpv +rmX +xIa +vxh cNW aaa aaa @@ -107334,7 +105980,7 @@ aaa aaf cNW bYs -Qpm +nRG ciJ cbf cbf @@ -107537,27 +106183,27 @@ aaa aaa aaa aaa -cwI -cwI -cwI -cwI -cwY -cxd -cxe -cwI -cLO -anq -anq -anq -anq -anq -cLS -cwI -cxQ -cLU -cxU -cwI -cwI +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -107793,28 +106439,28 @@ aae aaa aaa aaa -cwI -crO -cwK -cwP -cwI -cwY -cxe -cxh -cwI -cxo -cwL -cwL -cwL -cwL -cwL -cxL -cwI -cxQ -cxQ -cxU -cxX -cxZ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -108050,28 +106696,28 @@ aaa aaa aaa aaa -crx -crN -cwJ -cwO -cwI -cwY -cxe -cxh -cwI -cwL -cxq -cxq -cxq -cxq -cxq -cwL -cxM -cxQ -cxQ -cxV -cxX -cxZ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -108307,28 +106953,28 @@ aaa aaa aaa aaa -crx -cwF -cwL -cwR -cwI -crx -cxf -crx -cxm -cwL -cxr -cxr -cxr -cxr -cxr -cwL -cwI -cxR -cLV -cxV -cxX -cxZ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -108564,28 +107210,28 @@ aaa aaa aaa aaa -crx -crQ -cwL -cwQ -cwI -cwZ -cwL -cxi -cLN -cwL -cwL -cwL -cwL -cwL -cwL -cLT -cwW -cwI -cwI -cwI -cxX -cxZ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -108821,28 +107467,28 @@ aaa aaa aaa aaa -crx -cwF -cwL -cwL -cwX -cwL -cwL -anq -cxj -cwL -cxq -cxq -cxq -cxq -cxq -cwL -crx -cxc -cLW -cxc -cxX -cxZ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -109078,28 +107724,28 @@ aaa aaa aaa aaa -crx -cwG -amB -amB -cwW -cxa -cwL -cxj -cxj -cwL -cxr -cxr -cxr -cxr -cxr -cwL -cxO -cxa -cxa -cxa -cxX -cxZ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -109335,28 +107981,28 @@ aaa aaa aaa aaa -cwI -crO -cwN -cwS -cwI -cxc -cwL -cwL -cwL -cwL -cwL -cwL -cwL -cwL -cwL -cwL -crx -cxa -cxa -cxa -cxX -cxZ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -109593,27 +108239,27 @@ aaa aaa aaa aaa -cwI -cwI -cwI -cwI -cxb -cLM -cxa -cxa -cxp -cxs -cxs -cxs -cxs -cxs -cxp -crx -cxS -cxT -cxS -cwI -cwI +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -109853,23 +108499,23 @@ aaa aaa aaa aaa -cwI -crx -cwI -crx -cwI -cwI -cwI -crx -crx -crx -cwI -cwI -cwI -crx -cwI -crx -cwI +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa diff --git a/_maps/map_files/CitadelStation/CitadelStation-1.2.2.dmm b/_maps/map_files/CitadelStation/CitadelStation-1.2.2.dmm deleted file mode 100644 index 935e2445a2..0000000000 --- a/_maps/map_files/CitadelStation/CitadelStation-1.2.2.dmm +++ /dev/null @@ -1,128260 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"aaa" = ( -/turf/open/space, -/area/space) -"aab" = ( -/obj/structure/lattice, -/turf/open/space, -/area/space) -"aac" = ( -/turf/closed/wall/r_wall, -/area/security/processing{ - name = "Permabrig" - }) -"aad" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/obj/structure/closet, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"aae" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"aaf" = ( -/obj/structure/bed, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 2; - name = "regular air scrubber"; - on = 1 - }, -/obj/machinery/camera{ - c_tag = "Prison Cell 1"; - network = list("SS13","Prison") - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"aag" = ( -/turf/closed/wall, -/area/security/processing{ - name = "Permabrig" - }) -"aah" = ( -/obj/structure/bed, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 2; - name = "regular air scrubber"; - on = 1 - }, -/obj/machinery/camera{ - c_tag = "Prison Cell 2"; - network = list("SS13","Prison") - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"aai" = ( -/obj/structure/toilet{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"aaj" = ( -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"aak" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"aal" = ( -/obj/machinery/shower{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"aam" = ( -/obj/structure/table, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/obj/machinery/button/door{ - id = "permacell1"; - normaldoorcontrol = 1; - pixel_y = -24; - specialfunctions = 4 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"aan" = ( -/obj/machinery/shower{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/machinery/button/door{ - id = "permacell1"; - normaldoorcontrol = 1; - pixel_y = -24; - specialfunctions = 4 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"aao" = ( -/obj/structure/table, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"aap" = ( -/turf/open/space, -/obj/machinery/porta_turret/syndicate{ - dir = 9 - }, -/turf/closed/wall/mineral/plastitanium{ - dir = 8; - icon_state = "diagonalWall3" - }, -/area/shuttle/syndicate) -"aaq" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate) -"aar" = ( -/obj/structure/grille, -/obj/machinery/door/poddoor/shutters{ - id = "syndieshutters"; - name = "blast shutters" - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/shuttle/syndicate) -"aas" = ( -/turf/open/space, -/obj/machinery/porta_turret/syndicate{ - dir = 5 - }, -/turf/closed/wall/mineral/plastitanium{ - dir = 1; - icon_state = "diagonalWall3" - }, -/area/shuttle/syndicate) -"aat" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/closed/wall, -/area/security/processing{ - name = "Permabrig" - }) -"aau" = ( -/obj/machinery/door/poddoor/preopen{ - id = "permacell"; - name = "cell blast door" - }, -/obj/machinery/door/airlock/glass{ - id_tag = "permacell1"; - name = "Cell 1" - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"aav" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/turf/closed/wall, -/area/security/processing{ - name = "Permabrig" - }) -"aaw" = ( -/obj/machinery/door/poddoor/preopen{ - id = "permacell"; - name = "cell blast door" - }, -/obj/machinery/door/airlock/glass{ - id_tag = "permacell2"; - name = "Cell 2" - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"aax" = ( -/obj/structure/table, -/obj/machinery/microwave, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"aay" = ( -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"aaz" = ( -/obj/structure/table, -/obj/item/device/flashlight/lamp{ - pixel_x = 4; - pixel_y = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"aaA" = ( -/obj/machinery/computer/shuttle/syndicate, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"aaB" = ( -/obj/structure/table, -/obj/machinery/button/door{ - id = "syndieshutters"; - name = "remote shutter control"; - req_access_txt = "150" - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"aaC" = ( -/obj/structure/frame/computer, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"aaD" = ( -/obj/machinery/biogenerator, -/turf/open/floor/plasteel/green/side{ - dir = 9 - }, -/area/security/processing{ - name = "Permabrig" - }) -"aaE" = ( -/obj/machinery/seed_extractor, -/turf/open/floor/plasteel/green/side{ - dir = 1 - }, -/area/security/processing{ - name = "Permabrig" - }) -"aaF" = ( -/turf/open/floor/plasteel/green/side{ - dir = 1 - }, -/area/security/processing{ - name = "Permabrig" - }) -"aaG" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/vending/cola/random, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/security/processing{ - name = "Permabrig" - }) -"aaH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/obj/structure/closet/crate/bin, -/obj/machinery/camera{ - c_tag = "Prison Common Room North"; - network = list("SS13","Prison") - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"aaI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"aaJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/obj/machinery/button/door{ - id = "permacell1"; - normaldoorcontrol = 1; - pixel_y = 24; - req_access_txt = "1"; - specialfunctions = 4 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"aaK" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - tag = "icon-manifold-b-f (NORTH)"; - dir = 1 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"aaL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 - }, -/obj/machinery/button/door{ - id = "permacell2"; - normaldoorcontrol = 1; - pixel_y = 24; - req_access_txt = "1"; - specialfunctions = 4 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"aaM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/obj/structure/bookcase, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"aaN" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile{ - obj_integrity = 5000; - max_integrity = 5000; - name = "hardened window" - }, -/obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 - }, -/obj/machinery/door/poddoor/preopen{ - id = "permalock" - }, -/turf/open/floor/plating, -/area/security/processing{ - name = "Permabrig" - }) -"aaO" = ( -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/security/processing{ - name = "Permabrig" - }) -"aaP" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/processing{ - name = "Permabrig" - }) -"aaQ" = ( -/obj/structure/table, -/obj/item/storage/box/donkpockets{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"aaR" = ( -/obj/structure/chair/comfy/beige{ - dir = 1; - icon_state = "comfychair" - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"aaS" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"aaT" = ( -/turf/open/space, -/area/space/nearstation) -"aaU" = ( -/obj/item/device/plant_analyzer, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/security/processing{ - name = "Permabrig" - }) -"aaV" = ( -/obj/item/reagent_containers/glass/bucket, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"aaW" = ( -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/security/processing{ - name = "Permabrig" - }) -"aaX" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"aaY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (WEST)"; - icon_state = "intact"; - dir = 8 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"aaZ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (WEST)"; - icon_state = "intact"; - dir = 8 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"aba" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/obj/structure/table, -/obj/machinery/computer/libraryconsole/bookmanagement{ - pixel_y = 0 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"abb" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile{ - obj_integrity = 5000; - max_integrity = 5000; - name = "hardened window" - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "permalock" - }, -/turf/open/floor/plating, -/area/security/processing{ - name = "Permabrig" - }) -"abc" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/security/processing{ - name = "Permabrig" - }) -"abd" = ( -/obj/structure/table, -/obj/item/folder/red, -/obj/item/pen, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8"; - tag = "" - }, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/processing{ - name = "Permabrig" - }) -"abe" = ( -/obj/structure/table, -/obj/item/stack/sheet/glass{ - amount = 10 - }, -/obj/item/device/multitool, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"abf" = ( -/obj/item/device/radio/intercom{ - desc = "Talk through this. Evilly"; - freerange = 1; - frequency = 1213; - name = "Syndicate Intercom"; - pixel_y = -32; - subspace_transmission = 1; - syndie = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"abg" = ( -/obj/structure/closet/syndicate/personal, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"abh" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/sign/electricshock{ - pixel_x = -32 - }, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/security/processing{ - name = "Permabrig" - }) -"abi" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"abj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/obj/structure/sign/electricshock{ - pixel_x = -32 - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/security/processing{ - name = "Permabrig" - }) -"abk" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - name = "regular air vent"; - on = 1 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/processing{ - name = "Permabrig" - }) -"abl" = ( -/turf/closed/mineral, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"abm" = ( -/turf/open/space, -/turf/closed/wall/mineral/plastitanium{ - icon_state = "diagonalWall3" - }, -/area/shuttle/syndicate) -"abn" = ( -/obj/machinery/door/window{ - name = "Cockpit"; - req_access_txt = "150" - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"abo" = ( -/turf/open/space, -/turf/closed/wall/mineral/plastitanium{ - dir = 4; - icon_state = "diagonalWall3" - }, -/area/shuttle/syndicate) -"abp" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 - }, -/turf/open/floor/plating, -/area/security/processing{ - name = "Permabrig" - }) -"abq" = ( -/obj/machinery/hydroponics/soil, -/obj/item/seeds/potato, -/turf/open/floor/grass, -/area/security/processing{ - name = "Permabrig" - }) -"abr" = ( -/turf/open/floor/plasteel/green, -/area/security/processing{ - name = "Permabrig" - }) -"abs" = ( -/obj/machinery/hydroponics/soil, -/turf/open/floor/grass, -/area/security/processing{ - name = "Permabrig" - }) -"abt" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/vending/sustenance, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/security/processing{ - name = "Permabrig" - }) -"abu" = ( -/obj/machinery/door/poddoor/preopen{ - id = "holding blast" - }, -/obj/machinery/door/airlock/glass, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"abv" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/structure/table, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"abw" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching Prison Wing holding areas."; - dir = 4; - name = "Prison Monitor"; - network = list("Prison"); - pixel_x = -30; - pixel_y = 0 - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/security/processing{ - name = "Permabrig" - }) -"abx" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/processing{ - name = "Permabrig" - }) -"aby" = ( -/turf/open/space, -/area/shuttle/syndicate) -"abz" = ( -/obj/structure/table, -/obj/item/stack/cable_coil, -/obj/item/crowbar/red, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"abA" = ( -/obj/structure/table, -/obj/item/storage/box/zipties{ - pixel_x = 1; - pixel_y = 2 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"abB" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/security/processing{ - name = "Permabrig" - }) -"abC" = ( -/obj/machinery/hydroponics/soil, -/obj/item/seeds/cherry, -/turf/open/floor/grass, -/area/security/processing{ - name = "Permabrig" - }) -"abD" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/table, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/security/processing{ - name = "Permabrig" - }) -"abE" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"abF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"abG" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"abH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/security/processing{ - name = "Permabrig" - }) -"abI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/flasher{ - id = "holding"; - pixel_x = -30 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"abJ" = ( -/obj/machinery/door/airlock/glass_security{ - name = "Holding Area"; - req_access_txt = "2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"abK" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4; - initialize_directions = 11 - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/security/processing{ - name = "Permabrig" - }) -"abL" = ( -/turf/open/floor/plating/asteroid/airless{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"abM" = ( -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"abN" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/turf/closed/wall/r_wall, -/area/security/processing{ - name = "Permabrig" - }) -"abO" = ( -/obj/structure/sign/electricshock{ - pixel_x = -32 - }, -/turf/open/floor/plasteel/green, -/area/security/processing{ - name = "Permabrig" - }) -"abP" = ( -/obj/structure/chair/stool, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"abQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"abR" = ( -/obj/structure/closet/wardrobe/orange, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"abS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/machinery/button/flasher{ - id = "holding"; - pixel_x = -24; - pixel_y = 5; - req_access_txt = "1" - }, -/obj/machinery/button/door{ - id = "holding blast"; - name = "Holding Cell Lock"; - pixel_x = -24; - pixel_y = -5; - req_access_txt = "1" - }, -/obj/machinery/button/door{ - id = "permacell"; - pixel_x = -38; - pixel_y = -5; - req_access_txt = "1" - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/security/processing{ - name = "Permabrig" - }) -"abT" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (WEST)"; - icon_state = "camera"; - dir = 8 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/processing{ - name = "Permabrig" - }) -"abU" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"abV" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"abW" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 4 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate) -"abX" = ( -/obj/machinery/hydroponics/soil, -/obj/item/cultivator, -/turf/open/floor/grass, -/area/security/processing{ - name = "Permabrig" - }) -"abY" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"abZ" = ( -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"aca" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (WEST)"; - icon_state = "intact"; - dir = 8 - }, -/turf/closed/wall, -/area/security/processing{ - name = "Permabrig" - }) -"acb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (WEST)"; - icon_state = "intact"; - dir = 8 - }, -/obj/machinery/flasher{ - id = "holding"; - pixel_x = -30 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"acc" = ( -/obj/machinery/door/airlock/glass_security{ - name = "Holding Area"; - req_access_txt = "2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (WEST)"; - icon_state = "intact"; - dir = 8 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"acd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (WEST)"; - icon_state = "intact"; - dir = 8 - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/security/processing{ - name = "Permabrig" - }) -"ace" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/processing{ - name = "Permabrig" - }) -"acf" = ( -/obj/effect/landmark{ - name = "carpspawn" - }, -/turf/open/space, -/area/space) -"acg" = ( -/turf/closed/mineral/random, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"ach" = ( -/obj/docking_port/stationary{ - dheight = 9; - dir = 2; - dwidth = 5; - height = 24; - id = "syndicate_ne"; - name = "northeast of station"; - turf_type = /turf/open/space; - width = 18 - }, -/turf/open/space, -/area/space) -"aci" = ( -/obj/machinery/suit_storage_unit/syndicate, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"acj" = ( -/obj/structure/closet/syndicate/nuclear, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"ack" = ( -/obj/machinery/hydroponics/soil, -/obj/item/seeds/carrot, -/turf/open/floor/grass, -/area/security/processing{ - name = "Permabrig" - }) -"acl" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/table, -/obj/effect/holodeck_effect/cards, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/security/processing{ - name = "Permabrig" - }) -"acm" = ( -/obj/machinery/light/small, -/obj/structure/table, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"acn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching Prison Wing holding areas."; - dir = 4; - name = "Prison Monitor"; - network = list("Prison"); - pixel_x = -30; - pixel_y = 0 - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/security/processing{ - name = "Permabrig" - }) -"aco" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4; - initialize_directions = 11 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/processing{ - name = "Permabrig" - }) -"acp" = ( -/obj/structure/chair/stool{ - pixel_y = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"acq" = ( -/obj/structure/table, -/obj/item/device/aicard, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"acr" = ( -/obj/machinery/door/poddoor{ - id = "smindicate"; - name = "outer blast door" - }, -/obj/machinery/button/door{ - id = "smindicate"; - name = "external door control"; - pixel_x = -26; - pixel_y = 0; - req_access_txt = "150" - }, -/obj/docking_port/mobile{ - dheight = 9; - dir = 2; - dwidth = 5; - height = 24; - id = "syndicate"; - name = "syndicate infiltrator"; - port_angle = 0; - roundstart_move = "syndicate_away"; - width = 18 - }, -/obj/docking_port/stationary{ - dheight = 9; - dir = 2; - dwidth = 5; - height = 24; - id = "syndicate_nw"; - name = "northwest of station"; - turf_type = /turf/open/space; - width = 18 - }, -/turf/open/floor/plating, -/area/shuttle/syndicate) -"acs" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; - pixel_x = 0 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate) -"act" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/sign/electricshock{ - pixel_x = -32 - }, -/turf/open/floor/plasteel/green, -/area/security/processing{ - name = "Permabrig" - }) -"acu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/structure/sign/electricshock{ - pixel_x = -32 - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/security/processing{ - name = "Permabrig" - }) -"acv" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/processing{ - name = "Permabrig" - }) -"acw" = ( -/obj/machinery/suit_storage_unit/syndicate, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"acx" = ( -/obj/structure/table, -/obj/item/grenade/plastic/c4{ - pixel_x = 2; - pixel_y = -5 - }, -/obj/item/grenade/plastic/c4{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/grenade/plastic/c4{ - pixel_x = 2; - pixel_y = -3 - }, -/obj/item/grenade/plastic/c4{ - pixel_x = -2; - pixel_y = -1 - }, -/obj/item/grenade/plastic/c4{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"acy" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/shuttle/syndicate) -"acz" = ( -/obj/machinery/door/window{ - name = "Ready Room"; - req_access_txt = "150" - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"acA" = ( -/obj/machinery/hydroponics/soil, -/obj/item/seeds/apple, -/turf/open/floor/grass, -/area/security/processing{ - name = "Permabrig" - }) -"acB" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/security/processing{ - name = "Permabrig" - }) -"acC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"acD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/security/processing{ - name = "Permabrig" - }) -"acE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/processing{ - name = "Permabrig" - }) -"acF" = ( -/obj/machinery/door/window{ - dir = 4; - name = "EVA Storage"; - req_access_txt = "150" - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"acG" = ( -/obj/machinery/door/airlock/external{ - req_access_txt = "150" - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"acH" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/sign/electricshock{ - pixel_y = -32 - }, -/obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/turf/open/floor/plating, -/area/security/processing{ - name = "Permabrig" - }) -"acI" = ( -/obj/machinery/hydroponics/soil, -/obj/item/seeds/watermelon, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/grass, -/area/security/processing{ - name = "Permabrig" - }) -"acJ" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/green, -/area/security/processing{ - name = "Permabrig" - }) -"acK" = ( -/obj/machinery/hydroponics/soil, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/grass, -/area/security/processing{ - name = "Permabrig" - }) -"acL" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/security/processing{ - name = "Permabrig" - }) -"acM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/camera{ - c_tag = "Prison Common Room South"; - dir = 1; - network = list("SS13","Prison") - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"acN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"acO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/button/door{ - id = "permacell3"; - normaldoorcontrol = 1; - pixel_y = -24; - req_access_txt = "1"; - specialfunctions = 4 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"acP" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/machinery/light, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"acQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"acR" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"acS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/button/door{ - id = "permacell4"; - normaldoorcontrol = 1; - pixel_y = -24; - req_access_txt = "1"; - specialfunctions = 4 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"acT" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile{ - obj_integrity = 5000; - max_integrity = 5000; - name = "hardened window" - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "permalock" - }, -/turf/open/floor/plating, -/area/security/processing{ - name = "Permabrig" - }) -"acU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/security/processing{ - name = "Permabrig" - }) -"acV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/processing{ - name = "Permabrig" - }) -"acW" = ( -/turf/closed/wall/r_wall, -/area/security/processing{ - name = "Prisoner Processing" - }) -"acX" = ( -/obj/machinery/door/window{ - base_state = "right"; - dir = 4; - icon_state = "right"; - name = "EVA Storage"; - req_access_txt = "150" - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"acY" = ( -/turf/open/space, -/turf/closed/wall/mineral/plastitanium{ - dir = 1; - icon_state = "diagonalWall3" - }, -/area/shuttle/syndicate) -"acZ" = ( -/obj/machinery/door/poddoor/preopen{ - id = "permacell"; - name = "cell blast door" - }, -/obj/machinery/door/airlock/glass{ - id_tag = "permacell3"; - name = "Cell 3" - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/processing{ - name = "Permabrig" - }) -"ada" = ( -/obj/machinery/door/poddoor/preopen{ - id = "permacell"; - name = "cell blast door" - }, -/obj/machinery/door/airlock/glass{ - id_tag = "permacell4"; - name = "Cell 4" - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"adb" = ( -/obj/machinery/door/airlock/glass_security{ - name = "Prison Wing"; - req_access_txt = "1" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/security/processing{ - name = "Permabrig" - }) -"adc" = ( -/obj/machinery/door/airlock/glass_security{ - name = "Prison Wing"; - req_access_txt = "1" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/processing{ - name = "Permabrig" - }) -"add" = ( -/obj/structure/closet/crate/bin, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ade" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/filingcabinet, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"adf" = ( -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"adg" = ( -/obj/structure/table, -/obj/item/clothing/under/rank/prisoner, -/obj/item/clothing/under/rank/prisoner, -/obj/item/clothing/under/rank/prisoner, -/obj/item/clothing/under/rank/prisoner, -/obj/item/clothing/under/rank/prisoner, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"adh" = ( -/obj/structure/table, -/obj/item/storage/box/prisoner, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"adi" = ( -/obj/item/device/radio/intercom{ - desc = "Talk through this. Evilly"; - freerange = 1; - frequency = 1213; - name = "Syndicate Intercom"; - pixel_x = -32; - subspace_transmission = 1; - syndie = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"adj" = ( -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) -"adk" = ( -/obj/structure/table, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/obj/machinery/button/door{ - id = "permacell3"; - normaldoorcontrol = 1; - pixel_y = 24; - specialfunctions = 4 - }, -/obj/machinery/camera{ - c_tag = "Prison Cell 3"; - network = list("SS13","Prison") - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"adl" = ( -/obj/structure/table, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/obj/machinery/button/door{ - id = "permacell4"; - normaldoorcontrol = 1; - pixel_y = 24; - specialfunctions = 4 - }, -/obj/machinery/camera{ - c_tag = "Prison Cell 4"; - network = list("SS13","Prison") - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"adm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/door/poddoor/preopen{ - id = "permalock" - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/security/processing{ - name = "Permabrig" - }) -"adn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/door/poddoor/preopen{ - id = "permalock" - }, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/processing{ - name = "Permabrig" - }) -"ado" = ( -/turf/open/floor/plasteel/red/side{ - dir = 5 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"adp" = ( -/obj/structure/table, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/item/storage/box/zipties, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"adq" = ( -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Prisoner Processing" - }) -"adr" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ads" = ( -/turf/closed/mineral/random/labormineral, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"adt" = ( -/obj/machinery/sleeper/syndie{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/syndicate) -"adu" = ( -/turf/open/floor/mineral/titanium, -/area/shuttle/syndicate) -"adv" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/mineral/titanium, -/area/shuttle/syndicate) -"adw" = ( -/obj/structure/tank_dispenser/oxygen, -/turf/open/floor/mineral/titanium, -/area/shuttle/syndicate) -"adx" = ( -/obj/structure/table, -/obj/item/stack/medical/ointment, -/obj/item/stack/medical/bruise_pack, -/obj/structure/extinguisher_cabinet{ - pixel_x = -5; - pixel_y = 30 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/syndicate) -"ady" = ( -/obj/structure/table, -/obj/item/stock_parts/cell/high{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/stock_parts/cell/high, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"adz" = ( -/obj/structure/table, -/obj/item/screwdriver{ - pixel_y = 9 - }, -/obj/item/device/assembly/voice{ - pixel_y = 3 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"adA" = ( -/obj/structure/table, -/obj/item/wrench, -/obj/item/device/assembly/infra, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"adB" = ( -/obj/structure/table, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/prox_sensor{ - pixel_x = -8; - pixel_y = 4 - }, -/obj/item/device/assembly/prox_sensor{ - pixel_x = -8; - pixel_y = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"adC" = ( -/obj/structure/table, -/obj/item/weldingtool/largetank{ - pixel_y = 3 - }, -/obj/item/device/multitool, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"adD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"adE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Prisoner Processing" - }) -"adF" = ( -/obj/machinery/power/apc{ - cell_type = 10000; - dir = 1; - name = "Permabrig APC"; - pixel_x = 0; - pixel_y = 24 - }, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Prisoner Processing" - }) -"adG" = ( -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"adH" = ( -/obj/structure/table, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/item/restraints/handcuffs, -/obj/item/restraints/handcuffs, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"adI" = ( -/obj/structure/closet/secure_closet/brig, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"adJ" = ( -/obj/structure/bed/roller, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/syndicate) -"adK" = ( -/obj/structure/sign/bluecross_2, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate) -"adL" = ( -/obj/structure/table, -/obj/item/storage/toolbox/syndicate, -/obj/item/crowbar/red, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"adM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/obj/structure/closet, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"adN" = ( -/obj/machinery/light/small, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"adO" = ( -/obj/structure/bed, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Permabrig" - }) -"adP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Prisoner Processing" - }) -"adQ" = ( -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"adR" = ( -/obj/machinery/door/window{ - dir = 4; - name = "Infirmary"; - req_access_txt = "150" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/syndicate) -"adS" = ( -/obj/machinery/door/window/westright{ - name = "Tool Storage"; - req_access_txt = "150" - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"adT" = ( -/turf/closed/wall/r_wall, -/area/medical/virology) -"adU" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/medical/virology) -"adV" = ( -/obj/structure/lattice, -/turf/open/space, -/area/medical/virology) -"adW" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8; - initialize_directions = 11 - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"adX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Prisoner Processing" - }) -"adY" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Prisoner Processing" - }) -"adZ" = ( -/obj/structure/table, -/obj/item/storage/fancy/donut_box, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aea" = ( -/obj/machinery/computer/prisoner, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aeb" = ( -/obj/machinery/computer/secure_data, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aec" = ( -/obj/machinery/door/window{ - base_state = "right"; - dir = 4; - icon_state = "right"; - name = "Infirmary"; - req_access_txt = "150" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/syndicate) -"aed" = ( -/obj/machinery/door/window{ - dir = 8; - name = "Tool Storage"; - req_access_txt = "150" - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"aee" = ( -/obj/machinery/recharge_station, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"aef" = ( -/mob/living/carbon/monkey, -/turf/open/floor/plasteel/freezer, -/area/medical/virology) -"aeg" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel/freezer, -/area/medical/virology) -"aeh" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - on = 1 - }, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plasteel/freezer, -/area/medical/virology) -"aei" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/red/side{ - dir = 1 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aej" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aek" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ael" = ( -/obj/structure/sign/biohazard{ - pixel_y = 32 - }, -/obj/machinery/shower{ - icon_state = "shower"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plasteel/white, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aem" = ( -/obj/structure/sink{ - pixel_y = 28 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aen" = ( -/obj/structure/sign/securearea{ - pixel_x = 0; - pixel_y = 32 - }, -/obj/machinery/shower{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plasteel/white, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aeo" = ( -/turf/closed/wall, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aep" = ( -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel/red/side{ - dir = 1 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aeq" = ( -/obj/structure/table, -/obj/item/paper, -/obj/item/reagent_containers/food/snacks/donut/jelly, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aer" = ( -/obj/item/clothing/gloves/color/latex, -/obj/item/clothing/mask/surgical, -/obj/item/reagent_containers/spray/cleaner, -/obj/structure/table/glass, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 1 - }, -/turf/open/floor/plasteel/whitered/side{ - dir = 9 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aes" = ( -/obj/structure/bed, -/obj/item/bedsheet/red, -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 1 - }, -/turf/open/floor/plasteel/whitered/side{ - tag = "icon-whitered (NORTH)"; - icon_state = "whitered"; - dir = 1 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aet" = ( -/obj/item/storage/firstaid/regular{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/firstaid/regular, -/obj/structure/table/glass, -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 1 - }, -/turf/open/floor/plasteel/whitered/side{ - dir = 1 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aeu" = ( -/turf/open/floor/plating/asteroid/airless, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"aev" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 5 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate) -"aew" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/table, -/obj/item/bodypart/r_arm/robot, -/obj/item/bodypart/l_arm/robot, -/turf/open/floor/mineral/titanium, -/area/shuttle/syndicate) -"aex" = ( -/obj/machinery/door/window{ - dir = 1; - name = "Surgery"; - req_access_txt = "150" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/syndicate) -"aey" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/syndicate) -"aez" = ( -/obj/structure/table, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/item/storage/firstaid/regular{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/firstaid/brute, -/obj/item/storage/firstaid/regular{ - pixel_x = -3; - pixel_y = -3 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/syndicate) -"aeA" = ( -/obj/structure/table, -/obj/item/storage/firstaid/regular{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/firstaid/fire, -/obj/item/storage/firstaid/regular{ - pixel_x = -3; - pixel_y = -3 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/syndicate) -"aeB" = ( -/obj/structure/table, -/obj/item/device/sbeacondrop/bomb{ - pixel_y = 5 - }, -/obj/item/device/sbeacondrop/bomb, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"aeC" = ( -/obj/structure/table, -/obj/item/grenade/syndieminibomb{ - pixel_x = 4; - pixel_y = 2 - }, -/obj/item/grenade/syndieminibomb{ - pixel_x = -1 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"aeD" = ( -/obj/machinery/recharge_station, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"aeE" = ( -/obj/structure/bed/roller, -/turf/open/floor/plasteel/freezer, -/area/medical/virology) -"aeF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/mob/living/carbon/monkey, -/turf/open/floor/plasteel/freezer, -/area/medical/virology) -"aeG" = ( -/obj/effect/landmark{ - name = "blobstart" - }, -/turf/open/floor/plasteel/freezer, -/area/medical/virology) -"aeH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/mob/living/carbon/monkey, -/turf/open/floor/plasteel/freezer, -/area/medical/virology) -"aeI" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable/yellow{ - d2 = 4; - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/medical/virology) -"aeJ" = ( -/obj/item/storage/box/beakers{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/storage/box/syringes, -/obj/machinery/power/apc{ - cell_type = 5000; - dir = 1; - name = "Virology APC"; - pixel_x = 0; - pixel_y = 24 - }, -/obj/structure/cable/yellow{ - d2 = 4; - icon_state = "0-4" - }, -/obj/structure/cable/yellow{ - d2 = 8; - icon_state = "0-8" - }, -/obj/structure/table/glass, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 9 - }, -/area/medical/virology) -"aeK" = ( -/obj/item/book/manual/wiki/infections{ - pixel_y = 7 - }, -/obj/item/reagent_containers/syringe/antiviral, -/obj/item/reagent_containers/dropper, -/obj/item/reagent_containers/spray/cleaner, -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/table/glass, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 5 - }, -/area/medical/virology) -"aeL" = ( -/obj/machinery/smartfridge/chemistry/virology/preloaded, -/obj/machinery/airalarm{ - frequency = 1439; - pixel_y = 23 - }, -/turf/open/floor/plasteel/whitegreen, -/area/medical/virology) -"aeM" = ( -/obj/machinery/reagentgrinder{ - pixel_y = 8 - }, -/obj/structure/table/glass, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 9 - }, -/area/medical/virology) -"aeN" = ( -/obj/item/clothing/gloves/color/latex, -/obj/item/device/healthanalyzer, -/obj/item/clothing/glasses/hud/health, -/obj/structure/reagent_dispensers/virusfood{ - density = 0; - pixel_x = 0; - pixel_y = 30 - }, -/obj/structure/table/glass, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 5 - }, -/area/medical/virology) -"aeO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aeP" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4"; - tag = "" - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aeQ" = ( -/obj/machinery/doorButtons/access_button{ - idDoor = "virology_airlock_interior2"; - idSelf = "virology_airlock_control2"; - name = "Virology Access Button"; - pixel_x = 26; - pixel_y = 28; - req_access_txt = "3" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8"; - d1 = 4; - d2 = 8 - }, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aeR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/virology{ - autoclose = 0; - frequency = 1449; - icon_state = "door_locked"; - id_tag = "virology_airlock_interior2"; - locked = 1; - name = "Virology Interior Airlock"; - req_access_txt = "39" - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aeS" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - on = 1 - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/doorButtons/access_button{ - idDoor = "virology_airlock_interior2"; - idSelf = "virology_airlock_control2"; - name = "Virology Access Button"; - pixel_x = -26; - pixel_y = 28; - req_access_txt = "3" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aeT" = ( -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/white, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aeU" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 1; - on = 1 - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aeV" = ( -/obj/machinery/doorButtons/access_button{ - idDoor = "virology_airlock_exterior2"; - idSelf = "virology_airlock_control2"; - name = "Virology Access Button"; - pixel_x = 0; - pixel_y = 24; - req_access_txt = "3" - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/virology{ - autoclose = 0; - frequency = 1449; - icon_state = "door_locked"; - id_tag = "virology_airlock_exterior2"; - locked = 1; - name = "Virology Exterior Airlock"; - req_access_txt = "39" - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aeW" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aeX" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/mob/living/simple_animal/bot/secbot/pingsky, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aeY" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aeZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"afa" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Prisoner Processing" - }) -"afb" = ( -/obj/structure/table, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"afc" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/plasteel/whitered/side{ - dir = 8 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"afd" = ( -/turf/open/floor/plasteel/white, -/area/security/processing{ - name = "Prisoner Processing" - }) -"afe" = ( -/obj/machinery/iv_drip, -/obj/item/reagent_containers/blood/empty, -/turf/open/floor/plasteel/whitered/side{ - dir = 4 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aff" = ( -/obj/structure/table, -/obj/item/surgicaldrill, -/obj/item/circular_saw, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/syndicate) -"afg" = ( -/obj/structure/sink{ - dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 - }, -/obj/structure/mirror{ - pixel_x = 30 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/syndicate) -"afh" = ( -/obj/machinery/nuclearbomb/syndicate, -/obj/machinery/door/window{ - dir = 1; - name = "Secure Storage"; - req_access_txt = "150" - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"afi" = ( -/obj/machinery/telecomms/allinone{ - intercept = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"afj" = ( -/turf/closed/wall, -/area/medical/virology) -"afk" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable/yellow{ - d2 = 2; - icon_state = "0-2" - }, -/turf/open/floor/plating, -/area/medical/virology) -"afl" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_virology{ - name = "Test Subject Cell"; - req_access_txt = "39" - }, -/turf/open/floor/plasteel/freezer, -/area/medical/virology) -"afm" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable/yellow{ - d2 = 2; - icon_state = "0-2" - }, -/turf/open/floor/plating, -/area/medical/virology) -"afn" = ( -/obj/item/paper_bin{ - pixel_x = -2; - pixel_y = 9 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/structure/table/glass, -/obj/structure/sign/deathsposal{ - pixel_x = -30; - pixel_y = 0 - }, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 8 - }, -/area/medical/virology) -"afo" = ( -/obj/structure/chair/office/light{ - dir = 1; - pixel_y = 3 - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/whitegreen/corner{ - dir = 4 - }, -/area/medical/virology) -"afp" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - on = 1 - }, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 1 - }, -/area/medical/virology) -"afq" = ( -/obj/structure/chair/office/light{ - dir = 4 - }, -/obj/effect/landmark/start{ - name = "Virologist" - }, -/turf/open/floor/plasteel/whitegreen/corner{ - dir = 1 - }, -/area/medical/virology) -"afr" = ( -/obj/item/folder/white{ - pixel_x = 4; - pixel_y = -3 - }, -/obj/item/folder/white{ - pixel_x = 4; - pixel_y = -3 - }, -/obj/item/pen/red, -/obj/machinery/requests_console{ - department = "Virology"; - name = "Virology Requests Console"; - pixel_x = 29; - pixel_y = 0 - }, -/obj/item/stack/sheet/mineral/plasma{ - layer = 2.9 - }, -/obj/item/stack/sheet/mineral/plasma{ - layer = 2.9 - }, -/obj/item/stack/sheet/mineral/plasma{ - layer = 2.9 - }, -/obj/structure/table/glass, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 4 - }, -/area/medical/virology) -"afs" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aft" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/red/side, -/area/security/processing{ - name = "Prisoner Processing" - }) -"afu" = ( -/obj/machinery/doorButtons/airlock_controller{ - idExterior = "virology_airlock_exterior2"; - idInterior = "virology_airlock_interior2"; - idSelf = "virology_airlock_control2"; - name = "Virology Access Console"; - pixel_x = 22; - pixel_y = 8; - req_access_txt = "3" - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"afv" = ( -/obj/structure/closet/emcloset, -/obj/item/device/radio/intercom{ - pixel_x = -28; - pixel_y = 0 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plasteel/white, -/area/security/processing{ - name = "Prisoner Processing" - }) -"afw" = ( -/obj/machinery/camera{ - c_tag = "Virology - Airlock"; - dir = 1; - network = list("SS13","Medbay") - }, -/obj/machinery/light, -/obj/structure/closet/l3closet, -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/turf/open/floor/plasteel/white, -/area/security/processing{ - name = "Prisoner Processing" - }) -"afx" = ( -/obj/structure/closet/l3closet, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plasteel/white, -/area/security/processing{ - name = "Prisoner Processing" - }) -"afy" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/red/side, -/area/security/processing{ - name = "Prisoner Processing" - }) -"afz" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Prisoner Processing" - }) -"afA" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Prisoner Processing" - }) -"afB" = ( -/obj/machinery/door/window/westleft{ - base_state = "left"; - dir = 8; - icon_state = "left"; - name = "Brig Infirmary"; - req_access_txt = "0" - }, -/turf/open/floor/plasteel/whitered/side{ - dir = 8 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"afC" = ( -/obj/structure/bed/roller, -/obj/item/clothing/suit/straight_jacket, -/turf/open/floor/plasteel/whitered/side{ - dir = 4 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"afD" = ( -/obj/structure/table, -/obj/item/cautery, -/obj/item/scalpel, -/turf/open/floor/mineral/titanium, -/area/shuttle/syndicate) -"afE" = ( -/obj/structure/table/optable, -/obj/item/surgical_drapes, -/turf/open/floor/mineral/titanium, -/area/shuttle/syndicate) -"afF" = ( -/obj/structure/table, -/obj/item/retractor, -/obj/item/hemostat, -/turf/open/floor/mineral/titanium, -/area/shuttle/syndicate) -"afG" = ( -/obj/structure/shuttle/engine/heater, -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/open/floor/plating, -/area/shuttle/syndicate) -"afH" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"afI" = ( -/obj/structure/table, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/glass{ - amount = 50 - }, -/obj/item/stack/rods{ - amount = 50 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"afJ" = ( -/obj/structure/rack, -/obj/item/clothing/suit/space/syndicate/black/red, -/obj/item/clothing/head/helmet/space/syndicate/black/red, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate) -"afK" = ( -/obj/item/device/radio/intercom{ - pixel_x = -28; - pixel_y = 0 - }, -/obj/machinery/airalarm{ - frequency = 1439; - pixel_y = 23 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/obj/machinery/camera{ - c_tag = "Virology - Cells"; - dir = 4; - network = list("SS13","Medbay") - }, -/obj/machinery/chem_dispenser, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 9 - }, -/area/medical/virology) -"afL" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/iv_drip, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 1 - }, -/area/medical/virology) -"afM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 1 - }, -/area/medical/virology) -"afN" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 2 - }, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 1 - }, -/area/medical/virology) -"afO" = ( -/obj/structure/rack, -/obj/item/crowbar/red, -/obj/machinery/light_switch{ - pixel_x = 0; - pixel_y = 26 - }, -/obj/item/wrench, -/obj/item/restraints/handcuffs, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 5 - }, -/area/medical/virology) -"afP" = ( -/obj/structure/grille, -/obj/structure/window/fulltile, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/medical/virology) -"afQ" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 8 - }, -/area/medical/virology) -"afR" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/medical/virology) -"afS" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 2 - }, -/turf/open/floor/plasteel/white, -/area/medical/virology) -"afT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/medical/virology) -"afU" = ( -/obj/machinery/computer/pandemic{ - layer = 2.5; - pixel_x = -4 - }, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/item/device/radio/intercom{ - pixel_x = 28; - pixel_y = 0 - }, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 4 - }, -/area/medical/virology) -"afV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/medical/virology) -"afW" = ( -/obj/structure/sign/biohazard, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/security/processing{ - name = "Prisoner Processing" - }) -"afX" = ( -/obj/machinery/door/airlock/glass_security{ - name = "Virology Transfer"; - req_access_txt = "3" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"afY" = ( -/obj/structure/sign/biohazard, -/turf/closed/wall/r_wall, -/area/security/processing{ - name = "Prisoner Processing" - }) -"afZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/structure/sign/electricshock{ - pixel_x = -32 - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aga" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Prisoner Processing" - }) -"agb" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/bodycontainer/morgue, -/turf/open/floor/plasteel/whitered/side{ - dir = 8 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"agc" = ( -/turf/closed/mineral/random/low_chance, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"agd" = ( -/obj/structure/shuttle/engine/propulsion{ - icon_state = "propulsion_l" - }, -/turf/open/floor/plating, -/area/shuttle/syndicate) -"age" = ( -/obj/structure/shuttle/engine/propulsion, -/turf/open/floor/plating, -/area/shuttle/syndicate) -"agf" = ( -/obj/structure/shuttle/engine/propulsion{ - icon_state = "propulsion_r" - }, -/turf/open/floor/plating, -/area/shuttle/syndicate) -"agg" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/table/glass, -/obj/item/storage/box/beakers, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 8 - }, -/area/medical/virology) -"agh" = ( -/obj/structure/chair/office/light{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/white, -/area/medical/virology) -"agi" = ( -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/white, -/area/medical/virology) -"agj" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/white, -/area/medical/virology) -"agk" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 4 - }, -/area/medical/virology) -"agl" = ( -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_virology{ - name = "Containment Cells"; - req_access_txt = "39" - }, -/turf/open/floor/plasteel/whitegreen, -/area/medical/virology) -"agm" = ( -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 8 - }, -/area/medical/virology) -"agn" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel/white, -/area/medical/virology) -"ago" = ( -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/effect/landmark{ - name = "lightsout" - }, -/obj/machinery/holopad, -/turf/open/floor/plasteel/white, -/area/medical/virology) -"agp" = ( -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel/white, -/area/medical/virology) -"agq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 4 - }, -/area/medical/virology) -"agr" = ( -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/virology{ - name = "Virology Access"; - req_access_txt = "39" - }, -/turf/open/floor/plasteel/whitegreen, -/area/medical/virology) -"ags" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/structure/cable/yellow{ - icon_state = "4-8"; - d1 = 4; - d2 = 8 - }, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 6 - }, -/area/medical/virology) -"agt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 8; - icon_state = "1-8"; - tag = "" - }, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 1 - }, -/area/medical/virology) -"agu" = ( -/turf/open/floor/plasteel/whitegreen/side{ - dir = 10 - }, -/area/medical/virology) -"agv" = ( -/obj/structure/closet/secure_closet/warden, -/turf/open/floor/plasteel/showroomfloor, -/area/security/processing{ - name = "Prisoner Processing" - }) -"agw" = ( -/obj/structure/closet/secure_closet/armory3, -/turf/open/floor/plasteel/showroomfloor, -/area/security/processing{ - name = "Prisoner Processing" - }) -"agx" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/processing{ - name = "Prisoner Processing" - }) -"agy" = ( -/obj/structure/table, -/obj/item/folder/red, -/obj/item/pen, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching Prison Wing holding areas."; - name = "Prison Monitor"; - network = list("Prison"); - pixel_x = 0; - pixel_y = 30 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/processing{ - name = "Prisoner Processing" - }) -"agz" = ( -/obj/structure/filingcabinet, -/turf/open/floor/plasteel/showroomfloor, -/area/security/processing{ - name = "Prisoner Processing" - }) -"agA" = ( -/obj/structure/table, -/obj/item/storage/box/prisoner, -/obj/item/card/id/prisoner, -/turf/open/floor/plasteel/showroomfloor, -/area/security/processing{ - name = "Prisoner Processing" - }) -"agB" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/turf/open/floor/plating, -/area/security/processing{ - name = "Prisoner Processing" - }) -"agC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Prisoner Processing" - }) -"agD" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/bodycontainer/morgue, -/obj/structure/window/reinforced, -/turf/open/floor/plasteel/whitered/side{ - dir = 10 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"agE" = ( -/obj/structure/window/reinforced, -/turf/open/floor/plasteel/whitered/side, -/area/security/processing{ - name = "Prisoner Processing" - }) -"agF" = ( -/obj/machinery/sleeper{ - icon_state = "sleeper-open"; - dir = 8 - }, -/obj/structure/window/reinforced, -/turf/open/floor/plasteel/whitered/side{ - dir = 6 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"agG" = ( -/obj/machinery/light/small, -/turf/open/floor/plating/airless/astplate{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/maintenance/fore) -"agH" = ( -/turf/open/floor/plating/airless/astplate{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/maintenance/fore) -"agI" = ( -/turf/closed/mineral/random/high_chance, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"agJ" = ( -/turf/open/space, -/obj/machinery/porta_turret/syndicate{ - dir = 6 - }, -/turf/closed/wall/mineral/plastitanium{ - dir = 4; - icon_state = "diagonalWall3" - }, -/area/shuttle/syndicate) -"agK" = ( -/turf/open/space, -/obj/machinery/porta_turret/syndicate{ - dir = 10 - }, -/turf/closed/wall/mineral/plastitanium{ - icon_state = "diagonalWall3" - }, -/area/shuttle/syndicate) -"agL" = ( -/obj/structure/table/glass, -/obj/item/paper_bin{ - pixel_x = -2; - pixel_y = 9 - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/extinguisher_cabinet{ - pixel_x = -25; - pixel_y = 0 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 10 - }, -/area/medical/virology) -"agM" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel/whitegreen/side, -/area/medical/virology) -"agN" = ( -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, -/obj/machinery/light, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whitegreen/side, -/area/medical/virology) -"agO" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/whitegreen/side, -/area/medical/virology) -"agP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sink{ - dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 - }, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 6 - }, -/area/medical/virology) -"agQ" = ( -/obj/structure/grille, -/obj/structure/window/fulltile, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1; - initialize_directions = 11 - }, -/turf/open/floor/plating, -/area/medical/virology) -"agR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 10 - }, -/area/medical/virology) -"agS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whitegreen/side, -/area/medical/virology) -"agT" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/whitegreen/side, -/area/medical/virology) -"agU" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2; - initialize_directions = 11 - }, -/turf/open/floor/plasteel/whitegreen/side, -/area/medical/virology) -"agV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/obj/machinery/camera{ - c_tag = "Virology - Lab"; - dir = 8; - network = list("SS13","Medbay") - }, -/obj/structure/sink{ - dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 - }, -/obj/machinery/light_switch{ - pixel_x = 26; - pixel_y = 0 - }, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 6 - }, -/area/medical/virology) -"agW" = ( -/turf/open/floor/plasteel/whitegreen/side{ - dir = 8 - }, -/area/medical/virology) -"agX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/medical/virology) -"agY" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 4 - }, -/area/medical/virology) -"agZ" = ( -/obj/machinery/button/door{ - id = "permalock"; - name = "Perma Lockdown"; - pixel_x = -24 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aha" = ( -/obj/structure/chair/office/light, -/turf/open/floor/plasteel/showroomfloor, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ahb" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ahc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (WEST)"; - icon_state = "intact"; - dir = 8 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ahd" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (WEST)"; - icon_state = "intact"; - dir = 8 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ahe" = ( -/obj/machinery/door/airlock/glass_security{ - name = "Brig Desk"; - req_access_txt = "3" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (WEST)"; - icon_state = "intact"; - dir = 8 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ahf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (WEST)"; - icon_state = "intact"; - dir = 8 - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ahg" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4; - initialize_directions = 11 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ahh" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHWEST)"; - icon_state = "camera"; - dir = 10 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ahi" = ( -/obj/machinery/door/airlock/glass_security{ - name = "Xenobio Transfer"; - req_access_txt = "3" - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ahj" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/machinery/button/door{ - id = "misclab"; - name = "Test Chamber Blast Doors"; - pixel_x = 0; - pixel_y = 24; - req_access_txt = "0"; - req_one_access_txt = "55; 3" - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ahk" = ( -/turf/closed/wall, -/area/maintenance/fore) -"ahl" = ( -/obj/machinery/door/airlock/external{ - name = "Mining Airlock"; - req_access = null; - req_access_txt = "48" - }, -/turf/open/floor/noslip, -/area/maintenance/fore) -"ahm" = ( -/obj/structure/grille, -/obj/structure/window/fulltile, -/obj/structure/cable/yellow, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/medical/virology) -"ahn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_virology{ - name = "Isolation B"; - req_access_txt = "39" - }, -/turf/open/floor/plasteel/freezer, -/area/medical/virology) -"aho" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_virology{ - name = "Isolation A"; - req_access_txt = "39" - }, -/turf/open/floor/plasteel/freezer, -/area/medical/virology) -"ahp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/turf/closed/wall, -/area/medical/virology) -"ahq" = ( -/obj/structure/closet/wardrobe/virology_white, -/obj/item/storage/backpack/satchel/vir, -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -26; - pixel_y = 0 - }, -/turf/open/floor/plasteel/vault, -/area/medical/virology) -"ahr" = ( -/obj/structure/closet/crate/freezer, -/obj/item/reagent_containers/blood/empty, -/obj/item/reagent_containers/blood/empty{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/reagent_containers/blood/AMinus, -/obj/item/reagent_containers/blood/BMinus{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/reagent_containers/blood/BPlus{ - pixel_x = 1; - pixel_y = 2 - }, -/obj/item/reagent_containers/blood/OMinus, -/obj/item/reagent_containers/blood/OPlus{ - pixel_x = -2; - pixel_y = -1 - }, -/obj/item/reagent_containers/blood/random, -/obj/item/reagent_containers/blood/random, -/obj/item/reagent_containers/blood/random, -/turf/open/floor/plasteel/vault, -/area/medical/virology) -"ahs" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/vault, -/area/medical/virology) -"aht" = ( -/obj/structure/closet/secure_closet/medical1, -/turf/open/floor/plasteel/vault, -/area/medical/virology) -"ahu" = ( -/obj/structure/closet/l3closet/virology, -/obj/structure/extinguisher_cabinet{ - pixel_x = 0; - pixel_y = -30 - }, -/turf/open/floor/plasteel/vault, -/area/medical/virology) -"ahv" = ( -/obj/machinery/doorButtons/airlock_controller{ - idExterior = "virology_airlock_exterior"; - idInterior = "virology_airlock_interior"; - idSelf = "virology_airlock_control"; - name = "Virology Access Console"; - pixel_x = 8; - pixel_y = -22; - req_access_txt = "39" - }, -/turf/open/floor/plasteel/whitegreen/side{ - tag = "icon-whitegreen (NORTHEAST)"; - icon_state = "whitegreen"; - dir = 5 - }, -/area/medical/virology) -"ahw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/turf/open/floor/plasteel/whitegreen/side, -/area/medical/virology) -"ahx" = ( -/turf/open/floor/plasteel/whitegreen/side{ - dir = 9 - }, -/area/medical/virology) -"ahy" = ( -/obj/machinery/computer/prisoner, -/turf/open/floor/plasteel/showroomfloor, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ahz" = ( -/obj/machinery/computer/security, -/turf/open/floor/plasteel/showroomfloor, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ahA" = ( -/obj/machinery/computer/secure_data, -/turf/open/floor/plasteel/showroomfloor, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ahB" = ( -/obj/structure/rack, -/obj/item/storage/box/zipties, -/obj/item/melee/baton, -/turf/open/floor/plasteel/showroomfloor, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ahC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ahD" = ( -/turf/open/floor/plasteel/showroomfloor, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ahE" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/structure/sign/electricshock{ - pixel_y = -32 - }, -/turf/open/floor/plating, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ahF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ahG" = ( -/obj/machinery/power/apc{ - cell_type = 10000; - dir = 2; - name = "Prisoner Processing APC"; - pixel_x = 0; - pixel_y = -24 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ahH" = ( -/obj/machinery/light, -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ahI" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ahJ" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/window/southleft{ - dir = 1; - name = "Test Chamber"; - req_access_txt = "3" - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ahK" = ( -/obj/structure/sign/xeno_warning_mining{ - pixel_x = -30 - }, -/obj/structure/sign/vacuum{ - pixel_x = 30 - }, -/turf/open/floor/noslip, -/area/maintenance/fore) -"ahL" = ( -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 1 - }, -/obj/structure/closet/crate, -/obj/item/storage/backpack/satchel/leather/withwallet, -/turf/open/floor/plating, -/area/maintenance/fore) -"ahM" = ( -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 1 - }, -/obj/structure/closet/crate{ - icon_state = "crateopen"; - opened = 1 - }, -/obj/item/hatchet, -/turf/open/floor/plating, -/area/maintenance/fore) -"ahN" = ( -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 1 - }, -/obj/structure/closet/crate{ - icon_state = "crateopen"; - opened = 1 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"ahO" = ( -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 1 - }, -/turf/closed/wall, -/area/maintenance/fore) -"ahP" = ( -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 1 - }, -/obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/fore) -"ahQ" = ( -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 1 - }, -/obj/structure/table, -/obj/item/storage/belt, -/turf/open/floor/plating, -/area/maintenance/fore) -"ahR" = ( -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 1 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"ahS" = ( -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 1 - }, -/obj/item/device/radio, -/turf/open/floor/plating, -/area/maintenance/fore) -"ahT" = ( -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/closet, -/turf/open/floor/plating, -/area/maintenance/fore) -"ahU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/bedsheet/medical, -/obj/structure/bed, -/turf/open/floor/plasteel/freezer, -/area/medical/virology) -"ahV" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel/freezer, -/area/medical/virology) -"ahW" = ( -/obj/structure/bed, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/bedsheet/medical, -/turf/open/floor/plasteel/freezer, -/area/medical/virology) -"ahX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/segment, -/turf/closed/wall, -/area/medical/virology) -"ahY" = ( -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/virology{ - name = "Break Room"; - req_access_txt = "39" - }, -/turf/open/floor/plasteel/whitegreen, -/area/medical/virology) -"ahZ" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/airlock/virology{ - autoclose = 0; - frequency = 1449; - icon_state = "door_locked"; - id_tag = "virology_airlock_interior"; - locked = 1; - name = "Virology Interior Airlock"; - req_access_txt = "39" - }, -/turf/open/floor/plasteel/white, -/area/medical/virology) -"aia" = ( -/obj/structure/sign/biohazard, -/turf/closed/wall, -/area/medical/virology) -"aib" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aic" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plating, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aid" = ( -/obj/machinery/door/airlock/glass_security{ - name = "Prisoner Processing"; - req_access_txt = "2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aie" = ( -/obj/machinery/door/airlock/glass_security{ - name = "Prisoner Processing"; - req_access_txt = "2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aif" = ( -/obj/effect/decal/remains/human, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating/asteroid/airless, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aig" = ( -/obj/item/clothing/mask/facehugger/dead, -/obj/effect/decal/cleanable/xenoblood, -/turf/open/floor/plating/asteroid/airless, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aih" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/airlock/glass_security{ - name = "Xenobio Transfer"; - req_access_txt = "3" - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aii" = ( -/obj/item/stack/sheet/cardboard, -/obj/item/pickaxe, -/turf/open/floor/plating, -/area/maintenance/fore) -"aij" = ( -/obj/structure/closet/cardboard, -/turf/open/floor/plating, -/area/maintenance/fore) -"aik" = ( -/turf/open/floor/plating, -/area/maintenance/fore) -"ail" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/turf/open/floor/plating, -/area/maintenance/fore) -"aim" = ( -/obj/item/caution, -/turf/open/floor/plating, -/area/maintenance/fore) -"ain" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 1; - on = 1 - }, -/turf/open/floor/plasteel/freezer, -/area/medical/virology) -"aio" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plasteel/freezer, -/area/medical/virology) -"aip" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plasteel/freezer, -/area/medical/virology) -"aiq" = ( -/obj/effect/landmark{ - name = "xeno_spawn"; - pixel_x = -1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 1; - on = 1 - }, -/turf/open/floor/plasteel/freezer, -/area/medical/virology) -"air" = ( -/obj/structure/table/glass, -/obj/machinery/newscaster{ - pixel_x = -30 - }, -/obj/item/folder/white{ - pixel_x = 4; - pixel_y = -3 - }, -/obj/item/folder/white{ - pixel_x = 4; - pixel_y = -3 - }, -/obj/item/paper, -/obj/item/pen/red, -/obj/structure/extinguisher_cabinet{ - pixel_x = 0; - pixel_y = 30 - }, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 9 - }, -/area/medical/virology) -"ais" = ( -/obj/structure/chair/office/light{ - dir = 8 - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = 0; - pixel_y = 29 - }, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 1 - }, -/area/medical/virology) -"ait" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 1 - }, -/area/medical/virology) -"aiu" = ( -/obj/structure/table/glass, -/obj/item/storage/box/donkpockets{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/machinery/light_switch{ - pixel_x = 0; - pixel_y = 26 - }, -/obj/machinery/camera{ - c_tag = "Virology - Break Room"; - dir = 2; - network = list("SS13","Medbay") - }, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 1 - }, -/area/medical/virology) -"aiv" = ( -/obj/item/device/radio/intercom{ - freerange = 0; - frequency = 1459; - name = "Station Intercom (General)"; - pixel_x = 29 - }, -/obj/structure/table/glass, -/obj/machinery/microwave{ - pixel_x = -3; - pixel_y = 6 - }, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 5 - }, -/area/medical/virology) -"aiw" = ( -/obj/structure/sink{ - icon_state = "sink"; - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/doorButtons/access_button{ - idDoor = "virology_airlock_interior"; - idSelf = "virology_airlock_control"; - name = "Virology Access Button"; - pixel_x = 8; - pixel_y = 28; - req_access_txt = "39" - }, -/turf/open/floor/plasteel/white, -/area/medical/virology) -"aix" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel/white, -/area/medical/virology) -"aiy" = ( -/obj/structure/closet/emcloset, -/obj/machinery/camera{ - c_tag = "Virology Airlock"; - dir = 2; - network = list("SS13") - }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plasteel/white, -/area/medical/virology) -"aiz" = ( -/obj/structure/closet/crate{ - icon_state = "crateopen"; - opened = 1 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aiA" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aiB" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aiC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aiD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 2; - name = "regular air scrubber"; - on = 1 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aiE" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aiF" = ( -/obj/machinery/portable_atmospherics/canister/air, -/turf/open/floor/plating, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"aiG" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"aiH" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plating, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"aiI" = ( -/turf/closed/wall/r_wall, -/area/toxins/xenobiology) -"aiJ" = ( -/obj/machinery/door/poddoor/preopen{ - id = "misclab"; - name = "test chamber blast door" - }, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"aiK" = ( -/obj/structure/sign/xeno_warning_mining{ - pixel_x = -30 - }, -/obj/structure/sign/vacuum{ - pixel_x = 30 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aiL" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aiM" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aiN" = ( -/obj/structure/sign/pods, -/turf/closed/wall, -/area/maintenance/fore) -"aiO" = ( -/obj/machinery/camera{ - c_tag = "Security Escape Pod"; - dir = 4; - network = list("SS13") - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aiP" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 8 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_4) -"aiQ" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_4) -"aiR" = ( -/obj/structure/table/glass, -/obj/item/reagent_containers/dropper, -/obj/item/reagent_containers/syringe, -/obj/item/reagent_containers/glass/beaker, -/turf/open/floor/plasteel/freezer, -/area/medical/virology) -"aiS" = ( -/obj/structure/table/glass, -/obj/item/folder/white{ - pixel_y = 4 - }, -/obj/item/pen/red, -/turf/open/floor/plasteel/freezer, -/area/medical/virology) -"aiT" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/closed/wall, -/area/medical/virology) -"aiU" = ( -/obj/structure/table/glass, -/obj/item/paper_bin{ - pixel_x = -2; - pixel_y = 9 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 8 - }, -/area/medical/virology) -"aiV" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel/white, -/area/medical/virology) -"aiW" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/medical/virology) -"aiX" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - on = 1 - }, -/turf/open/floor/plasteel/white, -/area/medical/virology) -"aiY" = ( -/obj/structure/sink{ - dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 - }, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 4 - }, -/area/medical/virology) -"aiZ" = ( -/obj/machinery/shower{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (EAST)"; - icon_state = "camera"; - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/medical/virology) -"aja" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/white, -/area/medical/virology) -"ajb" = ( -/obj/machinery/airalarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/obj/structure/closet/l3closet, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/medical/virology) -"ajc" = ( -/obj/machinery/door/airlock/glass_security{ - id_tag = null; - name = "Prisoner Storage"; - req_access_txt = "63" - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ajd" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aje" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (WEST)"; - icon_state = "intact"; - dir = 8 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ajf" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/plating, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"ajg" = ( -/turf/open/floor/plating, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"ajh" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plating, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"aji" = ( -/turf/open/floor/engine, -/area/toxins/xenobiology) -"ajj" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"ajk" = ( -/obj/machinery/camera{ - c_tag = "Xenobiology Test Chamber"; - dir = 2; - network = list("Xeno","RD"); - pixel_x = 0 - }, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"ajl" = ( -/obj/structure/statue/sandstone/assistant, -/turf/open/floor/plating, -/area/maintenance/fore) -"ajm" = ( -/obj/structure/grille, -/turf/open/floor/plating, -/area/maintenance/fore) -"ajn" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"ajo" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"ajp" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/fore) -"ajq" = ( -/obj/structure/closet/crate/internals, -/turf/open/floor/plating, -/area/maintenance/fore) -"ajr" = ( -/obj/structure/closet/firecloset/full, -/turf/open/floor/plating, -/area/maintenance/fore) -"ajs" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plating, -/area/maintenance/fore) -"ajt" = ( -/obj/structure/mopbucket, -/obj/item/mop, -/turf/open/floor/plating, -/area/maintenance/fore) -"aju" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/fore) -"ajv" = ( -/obj/machinery/door/airlock/external{ - name = "Escape Pod Four"; - req_access_txt = "0" - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"ajw" = ( -/obj/machinery/door/airlock/titanium{ - name = "Escape Pod Airlock" - }, -/obj/docking_port/mobile/pod{ - dir = 4; - id = "pod4"; - name = "escape pod 4"; - port_angle = 180; - preferred_direction = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_4) -"ajx" = ( -/obj/item/device/radio/intercom{ - pixel_y = 25 - }, -/obj/item/storage/pod{ - pixel_x = 6; - pixel_y = -32 - }, -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_4) -"ajy" = ( -/obj/machinery/computer/shuttle/pod{ - pixel_y = -32; - possible_destinations = "pod_asteroid3"; - shuttleId = "pod3" - }, -/obj/structure/chair{ - dir = 4 - }, -/obj/machinery/status_display{ - density = 0; - layer = 3; - pixel_x = 0; - pixel_y = 32 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_4) -"ajz" = ( -/obj/structure/grille, -/obj/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/pod_4) -"ajA" = ( -/obj/docking_port/stationary/random{ - dir = 4; - id = "pod_asteroid4"; - name = "asteroid" - }, -/turf/open/space, -/area/space/nearstation) -"ajB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/segment, -/turf/closed/wall/r_wall, -/area/medical/virology) -"ajC" = ( -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -23; - pixel_y = 0 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 10 - }, -/area/medical/virology) -"ajD" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/whitegreen/side, -/area/medical/virology) -"ajE" = ( -/obj/structure/chair/stool, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 - }, -/turf/open/floor/plasteel/whitegreen/side, -/area/medical/virology) -"ajF" = ( -/obj/structure/chair/stool, -/turf/open/floor/plasteel/whitegreen/side, -/area/medical/virology) -"ajG" = ( -/obj/structure/chair/stool, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/turf/open/floor/plasteel/whitegreen/side{ - dir = 6 - }, -/area/medical/virology) -"ajH" = ( -/obj/structure/sink{ - icon_state = "sink"; - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plasteel/white, -/area/medical/virology) -"ajI" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/unary/vent_pump{ - on = 1 - }, -/turf/open/floor/plasteel/white, -/area/medical/virology) -"ajJ" = ( -/obj/structure/closet/l3closet, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plasteel/white, -/area/medical/virology) -"ajK" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ajL" = ( -/obj/machinery/door/airlock/glass_security{ - name = "Brig Desk"; - req_access_txt = "1" - }, -/obj/structure/cable{ - icon_state = "2-4"; - tag = "icon-2-8" - }, -/turf/open/floor/plasteel/black, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ajM" = ( -/obj/structure/grille, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ajN" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/closed/wall, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ajO" = ( -/obj/machinery/door/airlock/glass_security{ - id_tag = "innerbrig"; - name = "Brig"; - req_access_txt = "63" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plasteel/red/side{ - dir = 9 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ajP" = ( -/obj/machinery/door/airlock/glass_security{ - id_tag = "innerbrig"; - name = "Brig"; - req_access_txt = "63" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8"; - tag = "" - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/red/side{ - dir = 5 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"ajQ" = ( -/obj/machinery/power/smes, -/obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 - }, -/turf/open/floor/plating, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"ajR" = ( -/obj/machinery/power/terminal{ - tag = "icon-term (WEST)"; - icon_state = "term"; - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 - }, -/obj/effect/landmark{ - name = "blobstart" - }, -/turf/open/floor/plating, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"ajS" = ( -/obj/item/storage/box/lights, -/turf/open/floor/plating, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"ajT" = ( -/turf/closed/wall, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"ajU" = ( -/obj/structure/closet/emcloset, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"ajV" = ( -/obj/structure/disposaloutlet{ - tag = "icon-outlet (WEST)"; - icon_state = "outlet"; - dir = 8 - }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"ajW" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"ajX" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"ajY" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, -/turf/open/floor/plating, -/area/medical/virology) -"ajZ" = ( -/obj/machinery/atmospherics/components/unary/tank/air{ - dir = 1 - }, -/turf/open/floor/plasteel/vault, -/area/medical/virology) -"aka" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1; - name = "virology air connector port" - }, -/obj/machinery/portable_atmospherics/canister/air, -/turf/open/floor/plasteel/vault, -/area/medical/virology) -"akb" = ( -/obj/item/trash/popcorn, -/obj/structure/table/glass, -/turf/open/floor/plasteel/vault, -/area/medical/virology) -"akc" = ( -/obj/item/reagent_containers/food/snacks/sosjerky, -/obj/structure/table/glass, -/turf/open/floor/plasteel/vault, -/area/medical/virology) -"akd" = ( -/obj/item/trash/cheesie{ - pixel_y = 4 - }, -/obj/structure/table/glass, -/turf/open/floor/plasteel/vault, -/area/medical/virology) -"ake" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/virology{ - autoclose = 0; - frequency = 1449; - icon_state = "door_locked"; - id_tag = "virology_airlock_exterior"; - locked = 1; - name = "Virology Exterior Airlock"; - req_access_txt = "39" - }, -/obj/machinery/doorButtons/access_button{ - idDoor = "virology_airlock_exterior"; - idSelf = "virology_airlock_control"; - name = "Virology Access Button"; - pixel_x = -24; - pixel_y = 0; - req_access_txt = "39" - }, -/turf/open/floor/plasteel/white, -/area/medical/virology) -"akf" = ( -/obj/structure/sign/biohazard, -/turf/closed/wall/r_wall, -/area/medical/virology) -"akg" = ( -/obj/structure/closet/secure_closet/brig, -/turf/open/floor/plasteel, -/area/security/processing{ - name = "Prisoner Processing" - }) -"akh" = ( -/obj/machinery/button/door{ - id = "briggate"; - name = "Desk Shutters"; - pixel_x = -26; - pixel_y = 6; - req_access_txt = "0" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/button/flasher{ - id = "brigentry"; - pixel_x = -28; - pixel_y = -8 - }, -/turf/open/floor/plasteel/black, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aki" = ( -/obj/machinery/computer/secure_data, -/turf/open/floor/plasteel/black, -/area/security/processing{ - name = "Prisoner Processing" - }) -"akj" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "briggate"; - name = "security shutters" - }, -/obj/machinery/door/window/eastleft{ - name = "Brig Desk"; - req_access_txt = "1" - }, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/turf/open/floor/plasteel/black, -/area/security/processing{ - name = "Prisoner Processing" - }) -"akk" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plasteel/red/side{ - dir = 9 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"akl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/plasteel/red/side{ - dir = 5 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"akm" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/open/floor/plating, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"akn" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8"; - tag = "" - }, -/turf/open/floor/plating, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"ako" = ( -/obj/item/extinguisher, -/turf/open/floor/plating, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"akp" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"akq" = ( -/turf/closed/mineral, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"akr" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/maintenance/fore) -"aks" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"akt" = ( -/turf/closed/wall/r_wall, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"aku" = ( -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"akv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"akw" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/machinery/button/door{ - desc = "A remote control switch for the medbay foyer."; - id = "outerbrig"; - name = "Brig Exterior Doors Control"; - normaldoorcontrol = 1; - pixel_x = -26; - pixel_y = -5; - req_access_txt = "63" - }, -/obj/machinery/button/door{ - desc = "A remote control switch for the medbay foyer."; - id = "innerbrig"; - name = "Brig Interior Doors Control"; - normaldoorcontrol = 1; - pixel_x = -26; - pixel_y = 5; - req_access_txt = "63" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/black, -/area/security/processing{ - name = "Prisoner Processing" - }) -"akx" = ( -/obj/structure/chair/office/dark{ - dir = 4 - }, -/turf/open/floor/plasteel/black, -/area/security/processing{ - name = "Prisoner Processing" - }) -"aky" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "briggate"; - name = "security shutters" - }, -/obj/machinery/door/window/eastright{ - name = "Brig Desk"; - req_access_txt = "2" - }, -/obj/item/restraints/handcuffs, -/obj/item/device/radio/off, -/turf/open/floor/plasteel/black, -/area/security/processing{ - name = "Prisoner Processing" - }) -"akz" = ( -/obj/machinery/flasher{ - id = "brigentry"; - pixel_x = 28 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/plasteel/red/side{ - dir = 5 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"akA" = ( -/obj/machinery/space_heater, -/turf/open/floor/plating, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"akB" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"akC" = ( -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/plating, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"akD" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, -/turf/closed/wall/r_wall, -/area/toxins/xenobiology) -"akE" = ( -/obj/structure/disposaloutlet{ - dir = 1 - }, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"akF" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"akG" = ( -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"akH" = ( -/obj/structure/flora/rock/pile, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"akI" = ( -/obj/structure/flora/grass/green, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"akJ" = ( -/obj/machinery/power/apc{ - dir = 8; - name = "Fore Maintenance APC"; - pixel_x = -25; - pixel_y = 3 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"akK" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"akL" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plating, -/area/maintenance/fore) -"akM" = ( -/obj/structure/closet/crate/bin, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"akN" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"akO" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"akP" = ( -/turf/closed/wall, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"akQ" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "briggate"; - name = "security shutters" - }, -/obj/machinery/door/window/southleft{ - name = "Brig Desk"; - req_access_txt = "1" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "" - }, -/obj/structure/sign/electricshock{ - pixel_x = -32 - }, -/turf/open/floor/plasteel/black, -/area/security/processing{ - name = "Prisoner Processing" - }) -"akR" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "briggate"; - name = "security shutters" - }, -/obj/machinery/door/window/southleft{ - base_state = "right"; - icon_state = "right"; - name = "Brig Desk"; - req_access_txt = "1" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/black, -/area/security/processing{ - name = "Prisoner Processing" - }) -"akS" = ( -/obj/structure/grille, -/obj/machinery/door/poddoor/preopen{ - id = "briggate"; - name = "security blast door" - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/security/processing{ - name = "Prisoner Processing" - }) -"akT" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ - id_tag = "outerbrig"; - name = "Brig"; - req_access_txt = "63" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plasteel/red/side{ - dir = 9 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"akU" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ - id_tag = "outerbrig"; - name = "Brig"; - req_access_txt = "63" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/plasteel/red/side{ - dir = 5 - }, -/area/security/processing{ - name = "Prisoner Processing" - }) -"akV" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, -/turf/closed/wall/r_wall, -/area/security/processing{ - name = "Prisoner Processing" - }) -"akW" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"akX" = ( -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/machinery/shieldwallgen{ - req_access = list(55) - }, -/turf/open/floor/plating, -/area/toxins/xenobiology) -"akY" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/machinery/door/poddoor/preopen{ - id = "misclab"; - name = "test chamber blast door" - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"akZ" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/machinery/door/poddoor/preopen{ - id = "misclab"; - name = "test chamber blast door" - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"ala" = ( -/obj/machinery/door/window/southleft{ - dir = 1; - name = "Test Chamber"; - req_access_txt = "55" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/obj/machinery/door/poddoor/preopen{ - id = "misclab"; - name = "test chamber blast door" - }, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"alb" = ( -/obj/structure/grille, -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/machinery/door/poddoor/preopen{ - id = "misclab"; - name = "test chamber blast door" - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"alc" = ( -/obj/structure/grille, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/door/poddoor/preopen{ - id = "misclab"; - name = "test chamber blast door" - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"ald" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/flora/grass/green, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"ale" = ( -/obj/structure/cable{ - icon_state = "2-4"; - tag = "icon-2-8" - }, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"alf" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"alg" = ( -/obj/machinery/power/apc{ - dir = 2; - name = "Sleeping Room 3 APC"; - pixel_y = -24 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/turf/open/floor/grass, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 3" - }) -"alh" = ( -/obj/machinery/light, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"ali" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"alj" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/grille, -/turf/open/floor/plating, -/area/maintenance/fore) -"alk" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/grille, -/turf/open/floor/plating, -/area/maintenance/fore) -"all" = ( -/turf/closed/wall, -/area/crew_quarters/sleep) -"alm" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/closet/lasertag/blue, -/turf/open/floor/plating, -/area/maintenance/fore) -"aln" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"alo" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"alp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (WEST)"; - icon_state = "intact"; - dir = 8 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"alq" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"alr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"als" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"alt" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"alu" = ( -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"alv" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/structure/chair/stool, -/turf/open/floor/plasteel, -/area/toxins/xenobiology) -"alw" = ( -/obj/item/wrench, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/turf/open/floor/plasteel, -/area/toxins/xenobiology) -"alx" = ( -/obj/machinery/computer/security/telescreen{ - name = "Test Chamber Moniter"; - network = list("Xeno"); - pixel_x = 0; - pixel_y = 2 - }, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/turf/open/floor/plasteel, -/area/toxins/xenobiology) -"aly" = ( -/obj/machinery/button/door{ - id = "misclab"; - name = "Test Chamber Blast Doors"; - pixel_x = 0; - pixel_y = -2; - req_access_txt = "55" - }, -/obj/structure/table/reinforced, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/toxins/xenobiology) -"alz" = ( -/obj/machinery/door/window/southleft{ - name = "Test Chamber"; - req_access_txt = "55" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/turf/open/floor/plasteel, -/area/toxins/xenobiology) -"alA" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/toxins/xenobiology) -"alB" = ( -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas, -/obj/item/clothing/glasses/science, -/obj/item/clothing/glasses/science, -/obj/structure/table, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/turf/open/floor/plasteel, -/area/toxins/xenobiology) -"alC" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/turf/open/floor/plasteel, -/area/toxins/xenobiology) -"alD" = ( -/obj/structure/rack, -/obj/item/device/paicard, -/turf/open/floor/plating, -/area/maintenance/fore) -"alE" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"alF" = ( -/turf/closed/wall, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 3" - }) -"alG" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/tinted/fulltile, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 3" - }) -"alH" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/grille, -/turf/open/floor/plating, -/area/maintenance/fore) -"alI" = ( -/obj/structure/table, -/obj/item/coin/iron, -/turf/open/floor/plating, -/area/maintenance/fore) -"alJ" = ( -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"alK" = ( -/obj/structure/closet/wardrobe/mixed, -/turf/open/floor/plating, -/area/maintenance/fore) -"alL" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/obj/machinery/button/door{ - id = "bunk1"; - name = "Bunk Bolt Control 1"; - normaldoorcontrol = 1; - pixel_x = -25; - pixel_y = 0; - req_access_txt = "0"; - specialfunctions = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"alM" = ( -/obj/machinery/door/airlock{ - id_tag = "bunk1"; - name = "Bunk 1" - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"alN" = ( -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"alO" = ( -/obj/machinery/door/airlock{ - id_tag = "bunk2"; - name = "Bunk 2" - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"alP" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/obj/machinery/button/door{ - id = "bunk2"; - name = "Bunk Bolt Control 2"; - normaldoorcontrol = 1; - pixel_x = 25; - pixel_y = 0; - req_access_txt = "0"; - specialfunctions = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"alQ" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/closet/lasertag/red, -/turf/open/floor/plating, -/area/maintenance/fore) -"alR" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_3) -"alS" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 4; - icon_state = "propulsion"; - tag = "icon-propulsion (WEST)" - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_3) -"alT" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plating, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"alU" = ( -/obj/structure/sign/pods, -/turf/closed/wall, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"alV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"alW" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (WEST)"; - icon_state = "intact"; - dir = 8 - }, -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"alX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (WEST)"; - icon_state = "intact"; - dir = 8 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"alY" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"alZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"ama" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"amb" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"amc" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"amd" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHWEST)"; - icon_state = "camera"; - dir = 10 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"ame" = ( -/obj/machinery/light, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"amf" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/research{ - name = "Xenobiology Lab"; - req_access_txt = "55" - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"amg" = ( -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"amh" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4"; - tag = "" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"ami" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"amj" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/light, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"amk" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHWEST)"; - icon_state = "camera"; - dir = 10 - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"aml" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"amm" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel/green/side{ - dir = 9 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"amn" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/green/side{ - dir = 5 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"amo" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"amp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 3" - }) -"amq" = ( -/obj/structure/dresser, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 3" - }) -"amr" = ( -/obj/item/device/radio/intercom{ - name = "Station Intercom"; - pixel_x = 0; - pixel_y = 24 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 3" - }) -"ams" = ( -/obj/structure/chair/stool, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 3" - }) -"amt" = ( -/obj/structure/table/wood, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 3" - }) -"amu" = ( -/obj/structure/bed, -/obj/item/bedsheet/orange, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 3" - }) -"amv" = ( -/obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/fore) -"amw" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"amx" = ( -/obj/machinery/portable_atmospherics/pump, -/turf/open/floor/plating, -/area/maintenance/fore) -"amy" = ( -/obj/docking_port/stationary/random{ - dir = 8; - id = "pod_asteroid2"; - name = "asteroid" - }, -/turf/open/space, -/area/space) -"amz" = ( -/obj/structure/grille, -/obj/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/pod_3) -"amA" = ( -/obj/machinery/computer/shuttle/pod{ - pixel_x = 0; - pixel_y = -32; - possible_destinations = "pod_asteroid2"; - shuttleId = "pod2" - }, -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/status_display{ - density = 0; - layer = 3; - pixel_x = 0; - pixel_y = 32 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_3) -"amB" = ( -/obj/item/storage/pod{ - pixel_x = 6; - pixel_y = -28 - }, -/obj/item/device/radio/intercom{ - pixel_x = 0; - pixel_y = 25 - }, -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_3) -"amC" = ( -/obj/machinery/door/airlock/titanium{ - name = "Escape Pod Airlock" - }, -/obj/docking_port/mobile/pod{ - dir = 8; - id = "pod3"; - name = "escape pod 3"; - port_angle = 180 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_3) -"amD" = ( -/obj/machinery/door/airlock/external{ - cyclelinkeddir = 1; - name = "Escape Pod Three" - }, -/turf/open/floor/plating, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"amE" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"amF" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"amG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"amH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"amI" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"amJ" = ( -/turf/closed/wall/r_wall, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"amK" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/closed/wall/r_wall, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"amL" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "Secure Workstations"; - req_access_txt = "0"; - req_one_access_txt = "39; 63; 55; 19" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"amM" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"amN" = ( -/turf/closed/wall, -/area/toxins/xenobiology) -"amO" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/droneDispenser, -/turf/open/floor/plating, -/area/maintenance/fore) -"amP" = ( -/obj/structure/rack, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"amQ" = ( -/obj/structure/table, -/obj/item/drone_shell, -/turf/open/floor/plating, -/area/maintenance/fore) -"amR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"amS" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"amT" = ( -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"amU" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock{ - id_tag = "cabin3"; - name = "Cabin 3" - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 3" - }) -"amV" = ( -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 3" - }) -"amW" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 3" - }) -"amX" = ( -/obj/effect/landmark{ - name = "blobstart" - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"amY" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/obj/machinery/button/door{ - id = "bunk3"; - name = "Bunk Bolt Control 3"; - normaldoorcontrol = 1; - pixel_x = -25; - pixel_y = 0; - req_access_txt = "0"; - specialfunctions = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"amZ" = ( -/obj/machinery/door/airlock{ - id_tag = "bunk3"; - name = "Bunk 3" - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"ana" = ( -/obj/machinery/door/airlock{ - id_tag = "bunk4"; - name = "Bunk 4" - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"anb" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/obj/machinery/button/door{ - id = "bunk4"; - name = "Bunk Bolt Control 4"; - normaldoorcontrol = 1; - pixel_x = 25; - pixel_y = 0; - req_access_txt = "0"; - specialfunctions = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"anc" = ( -/obj/structure/closet/crate/engineering, -/turf/open/floor/plating, -/area/maintenance/fore) -"and" = ( -/obj/machinery/camera{ - c_tag = "Arrivals Escape Pod 3"; - dir = 8 - }, -/obj/machinery/light/small, -/turf/open/floor/plating, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"ane" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"anf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/light, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"ang" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"anh" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"ani" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/obj/structure/closet/secure_closet/medical1, -/obj/structure/sign/securearea{ - pixel_y = 32 - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"anj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"ank" = ( -/obj/machinery/power/apc{ - dir = 8; - name = "Xenobiology APC"; - pixel_x = -25 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"anl" = ( -/obj/machinery/camera{ - c_tag = "Custodial Closet" - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"anm" = ( -/obj/machinery/monkey_recycler, -/obj/machinery/firealarm{ - dir = 2; - pixel_y = 24 - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"ann" = ( -/obj/machinery/processor{ - desc = "A machine used to process slimes and retrieve their extract."; - name = "Slime Processor" - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"ano" = ( -/obj/machinery/smartfridge/extract/preloaded, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"anp" = ( -/obj/structure/table, -/obj/machinery/reagentgrinder, -/obj/machinery/airalarm{ - frequency = 1439; - pixel_y = 23 - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"anq" = ( -/obj/structure/closet/l3closet/scientist, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"anr" = ( -/obj/structure/closet/l3closet/scientist, -/obj/machinery/light_switch{ - pixel_x = 0; - pixel_y = 28 - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"ans" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTH)"; - icon_state = "camera"; - dir = 1 - }, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"ant" = ( -/obj/machinery/power/apc{ - dir = 2; - name = "Sleeping Room 4 APC"; - pixel_y = -24 - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/turf/open/floor/grass, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 4" - }) -"anu" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"anv" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"anw" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"anx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"any" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 3" - }) -"anz" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - name = "regular air vent"; - on = 1 - }, -/obj/machinery/button/door{ - id = "cabin3"; - name = "Cabin Bolt Control 3"; - normaldoorcontrol = 1; - pixel_x = -25; - pixel_y = 0; - req_access_txt = "0"; - specialfunctions = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 3" - }) -"anA" = ( -/obj/machinery/light, -/obj/machinery/firealarm{ - dir = 1; - pixel_x = 0; - pixel_y = -26 - }, -/obj/structure/table/wood, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 3" - }) -"anB" = ( -/obj/machinery/airalarm{ - dir = 1; - icon_state = "alarm0"; - pixel_y = -22 - }, -/obj/structure/table/wood, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 3" - }) -"anC" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, -/obj/item/shard, -/turf/open/floor/plating, -/area/maintenance/fore) -"anD" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/plating, -/area/maintenance/fore) -"anE" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"anF" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; - name = "KEEP CLEAR: DOCKING AREA"; - pixel_y = 0 - }, -/turf/closed/wall/r_wall, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"anG" = ( -/obj/machinery/door/airlock/external, -/turf/open/floor/noslip, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"anH" = ( -/turf/open/floor/carpet, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"anI" = ( -/obj/structure/chair/comfy/brown{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"anJ" = ( -/obj/structure/table/wood, -/turf/open/floor/carpet, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"anK" = ( -/obj/structure/chair/comfy/brown{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"anL" = ( -/turf/open/floor/plasteel{ - icon_state = "delivery" - }, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"anM" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - tag = "icon-manifold (WEST)"; - icon_state = "manifold"; - dir = 8 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/structure/closet/secure_closet/chemical, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"anN" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"anO" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance{ - name = "Xenobiology Maintenance"; - req_access_txt = "55" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/toxins/xenobiology) -"anP" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"anQ" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"anR" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"anS" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"anT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"anU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"anV" = ( -/turf/closed/wall, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 4" - }) -"anW" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/tinted/fulltile, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 4" - }) -"anX" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"anY" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"anZ" = ( -/obj/machinery/door/window/northright, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 3" - }) -"aoa" = ( -/obj/structure/grille, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced, -/turf/open/floor/plating, -/area/maintenance/fore) -"aob" = ( -/obj/structure/grille, -/obj/structure/window/reinforced, -/turf/open/floor/plating, -/area/maintenance/fore) -"aoc" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/obj/machinery/button/door{ - id = "bunk5"; - name = "Bunk Bolt Control 5"; - normaldoorcontrol = 1; - pixel_x = -25; - pixel_y = 0; - req_access_txt = "0"; - specialfunctions = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"aod" = ( -/obj/machinery/door/airlock{ - id_tag = "bunk5"; - name = "Bunk 5" - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"aoe" = ( -/obj/machinery/door/airlock{ - id_tag = "bunk6"; - name = "Bunk 6" - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"aof" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/obj/machinery/button/door{ - id = "bunk6"; - name = "Bunk Bolt Control 6"; - normaldoorcontrol = 1; - pixel_x = 25; - pixel_y = 0; - req_access_txt = "0"; - specialfunctions = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"aog" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"aoh" = ( -/turf/open/floor/noslip, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"aoi" = ( -/obj/machinery/vending/cola, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"aoj" = ( -/obj/machinery/vending/snack, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"aok" = ( -/obj/machinery/vending/coffee, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"aol" = ( -/obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, -/turf/open/floor/carpet, -/area/construction/hallway{ - name = "Secure Workstations Common Area" - }) -"aom" = ( -/turf/closed/wall/r_wall, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"aon" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "Secure Workstations"; - req_access_txt = "0"; - req_one_access_txt = "39; 63; 55; 19" - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"aoo" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/structure/closet/crate/freezer/surplus_limbs, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"aop" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"aoq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/toxins/xenobiology) -"aor" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"aos" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/chair/comfy/black, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"aot" = ( -/obj/effect/landmark/start{ - name = "Scientist" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/chair/comfy/black, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"aou" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"aov" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/obj/machinery/holopad, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"aow" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 1; - external_pressure_bound = 101.325; - on = 1; - pressure_checks = 1 - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"aox" = ( -/obj/structure/chair/stool, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"aoy" = ( -/obj/structure/bed, -/obj/item/bedsheet/patriot, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 4" - }) -"aoz" = ( -/obj/structure/dresser, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 4" - }) -"aoA" = ( -/obj/structure/chair/stool, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 4" - }) -"aoB" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/obj/structure/table/wood, -/obj/item/device/radio/intercom{ - name = "Station Intercom"; - pixel_x = 0; - pixel_y = 24 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 4" - }) -"aoC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 4" - }) -"aoD" = ( -/obj/structure/flora/grass/green, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aoE" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aoF" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aoG" = ( -/obj/item/storage/secure/safe{ - pixel_x = 32 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 3" - }) -"aoH" = ( -/obj/structure/toilet, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 3" - }) -"aoI" = ( -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 3" - }) -"aoJ" = ( -/obj/effect/landmark{ - name = "carpspawn" - }, -/turf/open/space, -/area/space/nearstation) -"aoK" = ( -/obj/structure/sign/securearea{ - pixel_y = 32 - }, -/turf/open/floor/plasteel{ - icon_state = "delivery" - }, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"aoL" = ( -/turf/open/floor/plasteel{ - icon_state = "delivery" - }, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"aoM" = ( -/turf/closed/wall, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"aoN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/closed/wall, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"aoO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/door/airlock/maintenance_hatch, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"aoP" = ( -/obj/structure/closet/crate/bin, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"aoQ" = ( -/obj/machinery/computer/camera_advanced/xenobio, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"aoR" = ( -/obj/machinery/light, -/obj/structure/table/glass, -/obj/item/storage/box/monkeycubes, -/obj/item/storage/box/monkeycubes, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"aoS" = ( -/obj/structure/table/glass, -/obj/item/folder/white, -/obj/item/pen, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"aoT" = ( -/obj/structure/table, -/obj/item/extinguisher{ - pixel_x = 4; - pixel_y = 3 - }, -/obj/item/extinguisher, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"aoU" = ( -/obj/structure/table, -/obj/machinery/requests_console{ - department = "Science"; - departmentType = 2; - name = "Science Requests Console"; - pixel_x = 0; - pixel_y = -30 - }, -/obj/item/paper_bin{ - pixel_x = 1; - pixel_y = 9 - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"aoV" = ( -/obj/structure/table, -/obj/item/stack/sheet/mineral/plasma{ - layer = 2.9 - }, -/obj/item/stack/sheet/mineral/plasma{ - layer = 2.9 - }, -/obj/item/stack/sheet/mineral/plasma{ - layer = 2.9 - }, -/obj/machinery/light, -/obj/item/device/radio/intercom{ - name = "Station Intercom (General)"; - pixel_y = -29 - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"aoW" = ( -/obj/structure/table, -/obj/item/storage/box/beakers{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/storage/box/syringes, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"aoX" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"aoY" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/closet, -/turf/open/floor/plating, -/area/maintenance/fore) -"aoZ" = ( -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 4" - }) -"apa" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock{ - id_tag = "cabin4"; - name = "Cabin 4" - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 4" - }) -"apb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"apc" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 3" - }) -"apd" = ( -/obj/machinery/shower{ - tag = "icon-shower (NORTH)"; - icon_state = "shower"; - dir = 1 - }, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 3" - }) -"ape" = ( -/obj/machinery/light/small, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 3" - }) -"apf" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"apg" = ( -/obj/effect/spawner/lootdrop/crate_spawner, -/turf/open/floor/plating, -/area/maintenance/fore) -"aph" = ( -/obj/structure/closet/crate, -/turf/open/floor/plating, -/area/maintenance/fore) -"api" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/obj/machinery/button/door{ - id = "bunk7"; - name = "Bunk Bolt Control 7"; - normaldoorcontrol = 1; - pixel_x = -25; - pixel_y = 0; - req_access_txt = "0"; - specialfunctions = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"apj" = ( -/obj/machinery/door/airlock{ - id_tag = "bunk7"; - name = "Bunk 7" - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"apk" = ( -/obj/machinery/door/airlock{ - id_tag = "bunk8"; - name = "Bunk 8" - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"apl" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/obj/machinery/button/door{ - id = "bunk8"; - name = "Bunk Bolt Control 8"; - normaldoorcontrol = 1; - pixel_x = 25; - pixel_y = 0; - req_access_txt = "0"; - specialfunctions = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"apm" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"apn" = ( -/obj/machinery/door/airlock/titanium, -/obj/docking_port/mobile{ - dheight = 0; - dir = 2; - dwidth = 11; - height = 22; - id = "whiteship"; - launch_status = 0; - name = "NT Medical Ship"; - port_angle = -90; - preferred_direction = 4; - roundstart_move = "whiteship_away"; - timid = null; - width = 35 - }, -/obj/docking_port/stationary{ - dir = 2; - dwidth = 11; - height = 22; - id = "whiteship_home"; - name = "SS13 Arrival Docking"; - turf_type = /turf/open/space; - width = 35 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"apo" = ( -/obj/machinery/door/airlock/titanium, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"app" = ( -/turf/closed/wall, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"apq" = ( -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"apr" = ( -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"aps" = ( -/turf/open/floor/plasteel/red/corner, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"apt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"apu" = ( -/obj/structure/sign/biohazard, -/turf/closed/wall, -/area/toxins/xenobiology) -"apv" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"apw" = ( -/obj/machinery/door/firedoor, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"apx" = ( -/obj/machinery/door/firedoor, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/obj/machinery/camera{ - c_tag = "Xenobiology North"; - dir = 8; - network = list("SS13","RD") - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"apy" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/fore) -"apz" = ( -/obj/structure/rack, -/obj/item/device/flashlight/lantern, -/turf/open/floor/plating, -/area/maintenance/fore) -"apA" = ( -/obj/machinery/airalarm{ - dir = 1; - icon_state = "alarm0"; - pixel_y = -22 - }, -/obj/structure/table/wood, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 4" - }) -"apB" = ( -/obj/machinery/light, -/obj/machinery/firealarm{ - dir = 1; - pixel_x = 0; - pixel_y = -26 - }, -/obj/structure/table/wood, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 4" - }) -"apC" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/obj/machinery/button/door{ - id = "cabin4"; - name = "Cabin Bolt Control 4"; - normaldoorcontrol = 1; - pixel_x = 25; - pixel_y = 0; - req_access_txt = "0"; - specialfunctions = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 4" - }) -"apD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 4" - }) -"apE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"apF" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4; - initialize_directions = 11 - }, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"apG" = ( -/obj/machinery/power/apc{ - cell_type = 5000; - dir = 4; - name = "Biodome APC"; - pixel_x = 24; - pixel_y = 0 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"apH" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/obj/machinery/door/airlock/maintenance_hatch, -/turf/open/floor/plating, -/area/maintenance/fore) -"apI" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"apJ" = ( -/obj/item/storage/box/emptysandbags, -/turf/open/floor/plating, -/area/maintenance/fore) -"apK" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 8; - icon_state = "propulsion_l" - }, -/turf/open/floor/plating/airless, -/area/shuttle/abandoned) -"apL" = ( -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"apM" = ( -/obj/structure/table, -/obj/item/device/radio/off, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"apN" = ( -/obj/structure/table, -/obj/item/screwdriver, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"apO" = ( -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/turf/open/floor/plasteel/red/corner, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"apP" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/structure/disposaloutlet, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"apQ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"apR" = ( -/obj/structure/grille, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio3"; - name = "containment blast door" - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"apS" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/structure/window/reinforced, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/toxins/xenobiology) -"apT" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"apU" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"apV" = ( -/obj/structure/window/reinforced, -/obj/structure/table/reinforced, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/obj/machinery/button/door{ - id = "xenobio8"; - name = "Containment Blast Doors"; - pixel_x = 0; - pixel_y = 4; - req_access_txt = "55" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/toxins/xenobiology) -"apW" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio8"; - name = "containment blast door" - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"apX" = ( -/obj/machinery/door/window/northright, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 4" - }) -"apY" = ( -/obj/item/storage/secure/safe{ - pixel_x = 32 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 4" - }) -"apZ" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aqa" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aqb" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aqc" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aqd" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aqe" = ( -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"aqf" = ( -/obj/machinery/door/airlock{ - name = "Privacy Bunks"; - req_access_txt = "0" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"aqg" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"aqh" = ( -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"aqi" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 8; - icon_state = "propulsion" - }, -/turf/open/floor/plating/airless, -/area/shuttle/abandoned) -"aqj" = ( -/obj/structure/shuttle/engine/heater{ - icon_state = "heater"; - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/abandoned) -"aqk" = ( -/turf/open/floor/plating, -/turf/closed/wall/mineral/titanium/interior, -/area/shuttle/abandoned) -"aql" = ( -/obj/machinery/computer/pod{ - id = "oldship_gun" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"aqm" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHEAST)"; - icon_state = "camera"; - dir = 5 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"aqn" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel/red/corner, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"aqo" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"aqp" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"aqq" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"aqr" = ( -/obj/effect/landmark{ - name = "revenantspawn" - }, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"aqs" = ( -/obj/machinery/door/window/northleft{ - base_state = "right"; - dir = 8; - icon_state = "right"; - name = "Containment Pen"; - req_access_txt = "55" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio3"; - name = "containment blast door" - }, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"aqt" = ( -/obj/machinery/door/window/northleft{ - dir = 4; - name = "Containment Pen"; - req_access_txt = "55" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/toxins/xenobiology) -"aqu" = ( -/obj/machinery/door/window/northleft{ - base_state = "right"; - dir = 8; - icon_state = "right"; - name = "Containment Pen"; - req_access_txt = "55" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/toxins/xenobiology) -"aqv" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/obj/machinery/door/window/northleft{ - dir = 4; - name = "Containment Pen"; - req_access_txt = "55" - }, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio8"; - name = "containment blast door" - }, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"aqw" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 1 - }, -/obj/structure/closet/crate/freezer, -/turf/open/floor/plating, -/area/maintenance/fore) -"aqx" = ( -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 1 - }, -/obj/structure/closet/crate/freezer, -/turf/open/floor/plating, -/area/maintenance/fore) -"aqy" = ( -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 1 - }, -/obj/structure/closet, -/obj/item/bodypart/head, -/turf/open/floor/plating, -/area/maintenance/fore) -"aqz" = ( -/obj/machinery/iv_drip, -/turf/open/floor/plating, -/area/maintenance/fore) -"aqA" = ( -/obj/structure/rack, -/obj/item/storage/fancy/candle_box, -/obj/item/lighter, -/turf/open/floor/plating, -/area/maintenance/fore) -"aqB" = ( -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 4" - }) -"aqC" = ( -/obj/structure/toilet, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 4" - }) -"aqD" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHEAST)"; - icon_state = "camera"; - dir = 5 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"aqE" = ( -/turf/open/floor/plating, -/area/shuttle/abandoned) -"aqF" = ( -/turf/open/floor/mineral/titanium, -/turf/closed/wall/mineral/titanium/interior, -/area/shuttle/abandoned) -"aqG" = ( -/obj/structure/rack, -/obj/item/clothing/suit/space/hardsuit/medical, -/obj/item/clothing/mask/breath, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"aqH" = ( -/obj/machinery/door/airlock/glass, -/turf/open/floor/plating, -/area/shuttle/abandoned) -"aqI" = ( -/obj/machinery/mass_driver{ - dir = 4; - icon_state = "mass_driver"; - id = "oldship_gun" - }, -/turf/open/floor/plating, -/area/shuttle/abandoned) -"aqJ" = ( -/obj/machinery/door/poddoor{ - id = "oldship_gun"; - name = "pod bay door" - }, -/turf/open/floor/plating, -/area/shuttle/abandoned) -"aqK" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"aqL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/structure/rack, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"aqM" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio3"; - name = "containment blast door" - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"aqN" = ( -/obj/structure/table/reinforced, -/obj/machinery/button/door{ - id = "xenobio3"; - name = "Containment Blast Doors"; - pixel_x = 0; - pixel_y = 4; - req_access_txt = "55" - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/toxins/xenobiology) -"aqO" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"aqP" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/toxins/xenobiology) -"aqQ" = ( -/obj/structure/grille, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio8"; - name = "containment blast door" - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"aqR" = ( -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/structure/disposaloutlet{ - dir = 1 - }, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"aqS" = ( -/obj/structure/bed, -/turf/open/floor/plating, -/area/maintenance/fore) -"aqT" = ( -/obj/machinery/light/small, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 4" - }) -"aqU" = ( -/obj/machinery/shower{ - tag = "icon-shower (NORTH)"; - icon_state = "shower"; - dir = 1 - }, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 4" - }) -"aqV" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 4" - }) -"aqW" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/turf/open/floor/wood, -/area/crew_quarters/sleep) -"aqX" = ( -/obj/item/device/radio/intercom{ - name = "Station Intercom"; - pixel_x = 0; - pixel_y = 24 - }, -/turf/open/floor/wood, -/area/crew_quarters/sleep) -"aqY" = ( -/obj/structure/bed, -/obj/item/bedsheet/green, -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/wood, -/area/crew_quarters/sleep) -"aqZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/sleep) -"ara" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"arb" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"arc" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - name = "regular air vent"; - on = 1 - }, -/obj/structure/closet/secure_closet/personal/cabinet, -/turf/open/floor/wood, -/area/crew_quarters/sleep) -"ard" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/sleep) -"are" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/obj/machinery/button/door{ - id = "bunk9"; - name = "Bunk Bolt Control 9"; - normaldoorcontrol = 1; - pixel_x = -25; - pixel_y = 0; - req_access_txt = "0"; - specialfunctions = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"arf" = ( -/obj/machinery/door/airlock{ - id_tag = "bunk9"; - name = "Bunk 9" - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"arg" = ( -/obj/machinery/door/airlock{ - id_tag = "bunk10"; - name = "Bunk 10" - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"arh" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/obj/machinery/button/door{ - id = "bunk10"; - name = "Bunk Bolt Control 10"; - normaldoorcontrol = 1; - pixel_x = 25; - pixel_y = 0; - req_access_txt = "0"; - specialfunctions = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"ari" = ( -/obj/item/paint/green, -/turf/open/floor/plating, -/area/maintenance/fore) -"arj" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/paint/yellow, -/turf/open/floor/plating, -/area/maintenance/fore) -"ark" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"arl" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, -/turf/closed/wall, -/area/toxins/xenobiology) -"arm" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"arn" = ( -/obj/structure/sink{ - dir = 4; - icon_state = "sink"; - pixel_x = 11; - pixel_y = 0 - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"aro" = ( -/obj/structure/table_frame, -/obj/item/shard{ - icon_state = "small" - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"arp" = ( -/obj/structure/showcase/horrific_experiment, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating, -/area/maintenance/fore) -"arq" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plating, -/area/maintenance/fore) -"arr" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/flora/grass/green, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"ars" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/machinery/button/door{ - id = "Dorm5"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -25; - pixel_y = 0; - req_access_txt = "0"; - specialfunctions = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/sleep) -"art" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/wood, -/area/crew_quarters/sleep) -"aru" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/sleep) -"arv" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock{ - id_tag = "Dorm5"; - name = "Dorm 5" - }, -/turf/open/floor/wood, -/area/crew_quarters/sleep) -"arw" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"arx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"ary" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock{ - id_tag = "Dorm4"; - name = "Dorm 4" - }, -/turf/open/floor/wood, -/area/crew_quarters/sleep) -"arz" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/turf/open/floor/wood, -/area/crew_quarters/sleep) -"arA" = ( -/obj/structure/bed, -/obj/item/bedsheet/brown, -/obj/machinery/button/door{ - id = "Dorm4"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - pixel_y = 0; - req_access_txt = "0"; - specialfunctions = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/sleep) -"arB" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/paint/violet, -/turf/open/floor/plating, -/area/maintenance/fore) -"arC" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 8; - icon_state = "propulsion_r" - }, -/turf/open/floor/plating/airless, -/area/shuttle/abandoned) -"arD" = ( -/obj/machinery/door/airlock/titanium, -/turf/open/floor/plating, -/area/shuttle/abandoned) -"arE" = ( -/obj/item/stock_parts/cell{ - charge = 100; - maxcharge = 15000 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"arF" = ( -/obj/structure/rack, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/storage/toolbox/mechanical, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"arG" = ( -/obj/structure/frame/computer{ - anchored = 1 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"arH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/structure/closet, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"arI" = ( -/obj/structure/grille, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio2"; - name = "containment blast door" - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"arJ" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"arK" = ( -/obj/structure/window/reinforced, -/obj/structure/table/reinforced, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/obj/machinery/button/door{ - id = "xenobio7"; - name = "Containment Blast Doors"; - pixel_x = 0; - pixel_y = 4; - req_access_txt = "55" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/toxins/xenobiology) -"arL" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio7"; - name = "containment blast door" - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"arM" = ( -/obj/effect/decal/cleanable/blood/tracks, -/turf/open/floor/plating, -/area/maintenance/fore) -"arN" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"arO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"arP" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/obj/machinery/button/door{ - id = "bunk11"; - name = "Bunk Bolt Control 11"; - normaldoorcontrol = 1; - pixel_x = -25; - pixel_y = 0; - req_access_txt = "0"; - specialfunctions = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"arQ" = ( -/obj/machinery/door/airlock{ - id_tag = "bunk11"; - name = "Bunk 11" - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"arR" = ( -/obj/machinery/door/airlock{ - id_tag = "bunk12"; - name = "Bunk 12" - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"arS" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/obj/machinery/button/door{ - id = "bunk12"; - name = "Bunk Bolt Control 12"; - normaldoorcontrol = 1; - pixel_x = 25; - pixel_y = 0; - req_access_txt = "0"; - specialfunctions = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"arT" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/tinted/fulltile, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/maintenance/fore) -"arU" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"arV" = ( -/obj/item/shard{ - icon_state = "medium" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"arW" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"arX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"arY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/corner, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"arZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"asa" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"asb" = ( -/obj/effect/landmark{ - name = "revenantspawn" - }, -/mob/living/simple_animal/slime, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"asc" = ( -/obj/machinery/door/window/northleft{ - base_state = "right"; - dir = 8; - icon_state = "right"; - name = "Containment Pen"; - req_access_txt = "55" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio2"; - name = "containment blast door" - }, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"asd" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/obj/machinery/door/window/northleft{ - dir = 4; - name = "Containment Pen"; - req_access_txt = "55" - }, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio7"; - name = "containment blast door" - }, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"ase" = ( -/obj/item/shard{ - icon_state = "medium" - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"asf" = ( -/obj/item/surgical_drapes, -/turf/open/floor/plating, -/area/maintenance/fore) -"asg" = ( -/obj/structure/flora/bush, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"ash" = ( -/obj/machinery/power/apc{ - dir = 2; - name = "Sleeping Room 2 APC"; - pixel_y = -24 - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/turf/open/floor/grass, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 2" - }) -"asi" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"asj" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/machinery/button/door{ - id = "Dorm6"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -25; - pixel_y = 0; - req_access_txt = "0"; - specialfunctions = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/sleep) -"ask" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/obj/item/device/radio/intercom{ - name = "Station Intercom"; - pixel_x = 0; - pixel_y = 24 - }, -/turf/open/floor/wood, -/area/crew_quarters/sleep) -"asl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock{ - id_tag = "Dorm6"; - name = "Dorm 6" - }, -/turf/open/floor/wood, -/area/crew_quarters/sleep) -"asm" = ( -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"asn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock{ - id_tag = "Dorm3"; - name = "Dorm 3" - }, -/turf/open/floor/wood, -/area/crew_quarters/sleep) -"aso" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/obj/item/device/radio/intercom{ - name = "Station Intercom"; - pixel_x = 0; - pixel_y = 24 - }, -/turf/open/floor/wood, -/area/crew_quarters/sleep) -"asp" = ( -/obj/structure/bed, -/obj/item/bedsheet/blue, -/turf/open/floor/wood, -/area/crew_quarters/sleep) -"asq" = ( -/obj/structure/table, -/obj/item/paper_bin/construction, -/obj/item/storage/crayons, -/obj/item/paint/red, -/turf/open/floor/plating, -/area/maintenance/fore) -"asr" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/paint/green, -/turf/open/floor/plating, -/area/maintenance/fore) -"ass" = ( -/obj/structure/grille, -/obj/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/abandoned) -"ast" = ( -/obj/structure/grille, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio2"; - name = "containment blast door" - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"asu" = ( -/obj/structure/table/reinforced, -/obj/machinery/button/door{ - id = "xenobio2"; - name = "Containment Blast Doors"; - pixel_x = 0; - pixel_y = 4; - req_access_txt = "55" - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/toxins/xenobiology) -"asv" = ( -/obj/structure/grille, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio7"; - name = "containment blast door" - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"asw" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/closet/wardrobe/white/medical, -/turf/open/floor/plating, -/area/maintenance/fore) -"asx" = ( -/obj/structure/bed, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating, -/area/maintenance/fore) -"asy" = ( -/turf/closed/wall, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 2" - }) -"asz" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/tinted/fulltile, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 2" - }) -"asA" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/crew_quarters/sleep) -"asB" = ( -/turf/open/floor/wood, -/area/crew_quarters/sleep) -"asC" = ( -/obj/structure/bed, -/obj/item/bedsheet/yellow, -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/wood, -/area/crew_quarters/sleep) -"asD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"asE" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"asF" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/machinery/button/door{ - id = "Dorm3"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - pixel_y = 0; - req_access_txt = "0"; - specialfunctions = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/sleep) -"asG" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/obj/machinery/button/door{ - id = "bunk13"; - name = "Bunk Bolt Control 13"; - normaldoorcontrol = 1; - pixel_x = -25; - pixel_y = 0; - req_access_txt = "0"; - specialfunctions = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"asH" = ( -/obj/machinery/door/airlock{ - id_tag = "bunk13"; - name = "Bunk 13" - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"asI" = ( -/obj/machinery/door/airlock{ - id_tag = "bunk14"; - name = "Bunk 14" - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"asJ" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/obj/machinery/button/door{ - id = "bunk14"; - name = "Bunk Bolt Control 14"; - normaldoorcontrol = 1; - pixel_x = 25; - pixel_y = 0; - req_access_txt = "0"; - specialfunctions = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"asK" = ( -/obj/item/device/camera, -/obj/item/device/camera_film, -/obj/item/device/camera_film, -/obj/structure/closet/crate, -/turf/open/floor/plating, -/area/maintenance/fore) -"asL" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/paint/white, -/turf/open/floor/plating, -/area/maintenance/fore) -"asM" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"asN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"asO" = ( -/obj/structure/sink{ - icon_state = "sink"; - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, -/obj/machinery/camera{ - c_tag = "Xenobiology South"; - dir = 4; - network = list("SS13","RD") - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"asP" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"asQ" = ( -/obj/structure/sign/xeno_warning_mining{ - pixel_x = -30 - }, -/turf/open/floor/plating/asteroid/airless{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"asR" = ( -/obj/machinery/camera/autoname{ - dir = 1; - network = list("SS13") - }, -/turf/open/floor/plating/asteroid/airless{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"asS" = ( -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"asT" = ( -/obj/structure/barricade/wooden, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"asU" = ( -/obj/effect/decal/cleanable/blood/gibs, -/obj/effect/decal/cleanable/blood/innards, -/turf/open/floor/plating, -/area/maintenance/fore) -"asV" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"asW" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/obj/structure/flora/grass/green, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"asX" = ( -/obj/structure/bed, -/obj/item/bedsheet/red, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 2" - }) -"asY" = ( -/obj/structure/dresser, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 2" - }) -"asZ" = ( -/obj/structure/chair/stool, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 2" - }) -"ata" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/obj/structure/table/wood, -/obj/item/device/radio/intercom{ - name = "Station Intercom"; - pixel_x = 0; - pixel_y = 24 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 2" - }) -"atb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 2" - }) -"atc" = ( -/obj/structure/table/wood, -/obj/item/device/paicard, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"atd" = ( -/obj/structure/table/wood, -/obj/item/device/analyzer, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"ate" = ( -/obj/machinery/vending/clothing, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"atf" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"atg" = ( -/obj/machinery/status_display{ - density = 0; - layer = 4 - }, -/turf/closed/wall, -/area/crew_quarters/sleep) -"ath" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/extinguisher_cabinet{ - pixel_x = 24 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"ati" = ( -/obj/structure/closet/crate, -/obj/item/seeds/cocoapod, -/obj/item/seeds/chili, -/obj/item/seeds/coffee, -/obj/item/seeds/eggplant, -/turf/open/floor/plating, -/area/maintenance/fore) -"atj" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"atk" = ( -/obj/machinery/door/window, -/turf/open/floor/mineral/titanium/purple, -/area/shuttle/abandoned) -"atl" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/purple, -/area/shuttle/abandoned) -"atm" = ( -/obj/structure/table, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"atn" = ( -/obj/structure/table, -/obj/item/gun/energy/laser/retro, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"ato" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/structure/grille, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"atp" = ( -/obj/structure/grille, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio1"; - name = "containment blast door" - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"atq" = ( -/obj/structure/window/reinforced, -/obj/structure/table/reinforced, -/obj/machinery/button/door{ - id = "xenobio6"; - name = "Containment Blast Doors"; - pixel_x = 0; - pixel_y = 4; - req_access_txt = "55" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/toxins/xenobiology) -"atr" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio6"; - name = "containment blast door" - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"ats" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plating/airless/astplate{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"att" = ( -/obj/structure/sign/xeno_warning_mining{ - pixel_x = -30 - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"atu" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - locked = 1 - }, -/obj/structure/holosign/barrier, -/turf/open/floor/plating, -/area/maintenance/fore) -"atv" = ( -/obj/item/cigbutt, -/turf/open/floor/plating, -/area/maintenance/fore) -"atw" = ( -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 2" - }) -"atx" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock{ - id_tag = "cabin2"; - name = "Cabin 2" - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 2" - }) -"aty" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"atz" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"atA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/sleep) -"atB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"atC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"atD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHEAST)"; - icon_state = "camera"; - dir = 6 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"atE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"atF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/item/device/radio/intercom{ - name = "Station Intercom"; - pixel_x = 0; - pixel_y = 24 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"atG" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"atH" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 28; - pixel_y = 0 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"atI" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/obj/machinery/button/door{ - id = "bunk15"; - name = "Bunk Bolt Control 15"; - normaldoorcontrol = 1; - pixel_x = -25; - pixel_y = 0; - req_access_txt = "0"; - specialfunctions = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"atJ" = ( -/obj/machinery/door/airlock{ - id_tag = "bunk15"; - name = "Bunk 15" - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"atK" = ( -/obj/machinery/door/airlock{ - id_tag = "bunk16"; - name = "Bunk 16" - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"atL" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/obj/machinery/button/door{ - id = "bunk16"; - name = "Bunk Bolt Control 16"; - normaldoorcontrol = 1; - pixel_x = 25; - pixel_y = 0; - req_access_txt = "0"; - specialfunctions = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"atM" = ( -/obj/machinery/door/airlock/glass, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"atN" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/decal/remains/human, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"atO" = ( -/obj/machinery/computer/shuttle/white_ship, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"atP" = ( -/obj/machinery/door/window/northleft{ - base_state = "right"; - dir = 8; - icon_state = "right"; - name = "Containment Pen"; - req_access_txt = "55" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio1"; - name = "containment blast door" - }, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"atQ" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/obj/machinery/door/window/northleft{ - dir = 4; - name = "Containment Pen"; - req_access_txt = "55" - }, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio6"; - name = "containment blast door" - }, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"atR" = ( -/turf/open/floor/plating/airless/astplate{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"atS" = ( -/obj/machinery/light/small, -/turf/open/floor/plating/airless/astplate{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"atT" = ( -/obj/machinery/door/airlock/external{ - name = "Mining Airlock"; - req_access = null; - req_access_txt = "48" - }, -/turf/open/floor/noslip, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"atU" = ( -/obj/structure/sign/vacuum{ - pixel_y = 32 - }, -/turf/open/floor/noslip, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"atV" = ( -/obj/structure/door_assembly/door_assembly_mai, -/turf/open/floor/plating, -/area/maintenance/fore) -"atW" = ( -/obj/structure/barricade/wooden, -/turf/open/floor/plating, -/area/maintenance/fore) -"atX" = ( -/obj/machinery/airalarm{ - dir = 1; - icon_state = "alarm0"; - pixel_y = -22 - }, -/obj/structure/table/wood, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 2" - }) -"atY" = ( -/obj/machinery/light, -/obj/machinery/firealarm{ - dir = 1; - pixel_x = 0; - pixel_y = -26 - }, -/obj/structure/table/wood, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 2" - }) -"atZ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/obj/machinery/button/door{ - id = "cabin2"; - name = "Cabin Bolt Control 2"; - normaldoorcontrol = 1; - pixel_x = 25; - pixel_y = 0; - req_access_txt = "0"; - specialfunctions = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 2" - }) -"aua" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 2" - }) -"aub" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - tag = "icon-1-4"; - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4; - initialize_directions = 11 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"auc" = ( -/obj/machinery/door/airlock{ - name = "Dormitories"; - req_access_txt = "0" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"aud" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"aue" = ( -/obj/structure/chair/stool, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/landmark/start{ - name = "Assistant" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"auf" = ( -/obj/structure/table/wood, -/obj/item/storage/wallet, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"aug" = ( -/obj/structure/table/wood, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"auh" = ( -/obj/structure/table/wood, -/obj/item/storage/box/hug/medical, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"aui" = ( -/obj/structure/chair/stool, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"auj" = ( -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"auk" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"aul" = ( -/obj/machinery/door/airlock{ - id_tag = "Dorm2"; - name = "Dorm 2" - }, -/turf/open/floor/wood, -/area/crew_quarters/sleep) -"aum" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 2; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/wood, -/area/crew_quarters/sleep) -"aun" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/obj/machinery/button/door{ - id = "Dorm2"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - pixel_y = 0; - req_access_txt = "0"; - specialfunctions = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/sleep) -"auo" = ( -/obj/structure/kitchenspike_frame, -/turf/open/floor/plating, -/area/maintenance/fore) -"aup" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"auq" = ( -/obj/structure/table, -/obj/item/tank/internals/oxygen, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"aur" = ( -/obj/structure/grille, -/obj/structure/cable, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio1"; - name = "containment blast door" - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"aus" = ( -/obj/structure/table/reinforced, -/obj/machinery/button/door{ - id = "xenobio1"; - name = "Containment Blast Doors"; - pixel_x = 0; - pixel_y = 4; - req_access_txt = "55" - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - on = 1 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/obj/machinery/light, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/toxins/xenobiology) -"aut" = ( -/obj/structure/grille, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/door/poddoor/preopen{ - id = "xenobio6"; - name = "containment blast door" - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/engine, -/area/toxins/xenobiology) -"auu" = ( -/obj/machinery/camera/autoname{ - dir = 4; - network = list("SS13") - }, -/turf/open/floor/plating/airless/astplate{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"auv" = ( -/obj/structure/closet, -/turf/open/floor/plating, -/area/maintenance/fore) -"auw" = ( -/obj/structure/table, -/obj/structure/bedsheetbin, -/turf/open/floor/plating, -/area/maintenance/fore) -"aux" = ( -/obj/structure/table, -/obj/item/lighter/greyscale, -/turf/open/floor/plating, -/area/maintenance/fore) -"auy" = ( -/obj/structure/table, -/obj/item/hatchet/cutterblade, -/obj/item/retractor, -/turf/open/floor/plating, -/area/maintenance/fore) -"auz" = ( -/obj/structure/table, -/obj/item/storage/firstaid, -/turf/open/floor/plating, -/area/maintenance/fore) -"auA" = ( -/obj/machinery/door/window/northright, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 2" - }) -"auB" = ( -/obj/item/storage/secure/safe{ - pixel_x = 32 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 2" - }) -"auC" = ( -/obj/machinery/status_display, -/turf/closed/wall, -/area/crew_quarters/sleep) -"auD" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"auE" = ( -/obj/structure/chair/stool, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"auF" = ( -/obj/structure/table/wood, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"auG" = ( -/obj/structure/table/wood, -/obj/item/storage/briefcase, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"auH" = ( -/obj/structure/table/wood, -/obj/item/storage/crayons, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"auI" = ( -/obj/structure/chair/stool, -/obj/effect/landmark/start{ - name = "Assistant" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"auJ" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"auK" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"auL" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2; - initialize_directions = 11 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"auM" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/sleep) -"auN" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/obj/machinery/button/door{ - id = "bunk17"; - name = "Bunk Bolt Control 17"; - normaldoorcontrol = 1; - pixel_x = -25; - pixel_y = 0; - req_access_txt = "0"; - specialfunctions = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"auO" = ( -/obj/machinery/door/airlock{ - id_tag = "bunk17"; - name = "Bunk 17" - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"auP" = ( -/obj/machinery/door/airlock{ - id_tag = "bunk18"; - name = "Bunk 18" - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"auQ" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/obj/machinery/button/door{ - id = "bunk18"; - name = "Bunk Bolt Control 18"; - normaldoorcontrol = 1; - pixel_x = 25; - pixel_y = 0; - req_access_txt = "0"; - specialfunctions = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep) -"auR" = ( -/obj/structure/easel, -/turf/open/floor/plating, -/area/maintenance/fore) -"auS" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/purple, -/area/shuttle/abandoned) -"auT" = ( -/obj/machinery/door/window/northright, -/obj/effect/decal/remains/human, -/turf/open/floor/mineral/titanium/purple, -/area/shuttle/abandoned) -"auU" = ( -/obj/structure/rack, -/obj/item/clothing/shoes/winterboots, -/obj/item/clothing/suit/hooded/wintercoat, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"auV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/obj/structure/closet, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"auW" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"auX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"auY" = ( -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 2" - }) -"auZ" = ( -/obj/structure/toilet, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 2" - }) -"ava" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"avb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"avc" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"avd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/flora/grass/green, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"ave" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/crew_quarters/sleep) -"avf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"avg" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"avh" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/firealarm{ - dir = 1; - pixel_x = 0; - pixel_y = -26 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"avi" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/junction{ - icon_state = "pipe-j1"; - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"avj" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - tag = "icon-1-4"; - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"avk" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"avl" = ( -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"avm" = ( -/obj/machinery/door/airlock{ - id_tag = "Dorm1"; - name = "Dorm 1" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/sleep) -"avn" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/sleep) -"avo" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/obj/item/device/radio/intercom{ - name = "Station Intercom"; - pixel_x = 0; - pixel_y = 24 - }, -/turf/open/floor/wood, -/area/crew_quarters/sleep) -"avp" = ( -/obj/structure/bed, -/obj/item/bedsheet/ian, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/button/door{ - id = "Dorm1"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - pixel_y = 0; - req_access_txt = "0"; - specialfunctions = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/sleep) -"avq" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/fitness) -"avr" = ( -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"avs" = ( -/obj/item/paint/black, -/turf/open/floor/plating, -/area/maintenance/fore) -"avt" = ( -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"avu" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 2; - external_pressure_bound = 140; - on = 1; - pressure_checks = 0 - }, -/obj/machinery/camera{ - c_tag = "Xenobiology Kill Room"; - dir = 4; - network = list("SS13","RD") - }, -/turf/open/floor/circuit{ - name = "Killroom Floor"; - initial_gas_mix = "n2=500;TEMP=80" - }, -/area/toxins/xenobiology) -"avv" = ( -/turf/open/floor/circuit{ - name = "Killroom Floor"; - initial_gas_mix = "n2=500;TEMP=80" - }, -/area/toxins/xenobiology) -"avw" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 2; - external_pressure_bound = 120; - initialize_directions = 1; - internal_pressure_bound = 4000; - on = 1; - pressure_checks = 2; - pump_direction = 0 - }, -/turf/open/floor/circuit{ - name = "Killroom Floor"; - initial_gas_mix = "n2=500;TEMP=80" - }, -/area/toxins/xenobiology) -"avx" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/sign/biohazard, -/turf/open/floor/plating, -/area/toxins/xenobiology) -"avy" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - target_temperature = 80; - dir = 2; - on = 1 - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"avz" = ( -/obj/structure/rack, -/obj/item/pickaxe, -/turf/open/floor/plating/airless/astplate{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"avA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"avB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"avC" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"avD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"avE" = ( -/obj/structure/grille, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"avF" = ( -/obj/machinery/light/small, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 2" - }) -"avG" = ( -/obj/machinery/shower{ - tag = "icon-shower (NORTH)"; - icon_state = "shower"; - dir = 1 - }, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 2" - }) -"avH" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suite 2" - }) -"avI" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHEAST)"; - icon_state = "camera"; - dir = 5 - }, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"avJ" = ( -/obj/machinery/washing_machine, -/turf/open/floor/plasteel/barber, -/area/crew_quarters/sleep) -"avK" = ( -/obj/structure/table/wood, -/obj/structure/bedsheetbin, -/turf/open/floor/plasteel/barber, -/area/crew_quarters/sleep) -"avL" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"avM" = ( -/obj/machinery/light, -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"avN" = ( -/obj/structure/cable, -/obj/machinery/power/apc{ - dir = 2; - name = "Dormitory APC"; - pixel_y = -24 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"avO" = ( -/obj/structure/table, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"avP" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/sleep) -"avQ" = ( -/turf/closed/wall, -/area/crew_quarters/fitness) -"avR" = ( -/turf/open/floor/engine{ - name = "Holodeck Projector Floor" - }, -/area/holodeck/rec_center) -"avS" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/maintenance/fore) -"avT" = ( -/obj/item/paint/paint_remover, -/turf/open/floor/plating, -/area/maintenance/fore) -"avU" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel/red/corner, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"avV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/airlock/maintenance_hatch, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"avW" = ( -/obj/machinery/light, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 5 - }, -/turf/open/floor/circuit{ - name = "Killroom Floor"; - initial_gas_mix = "n2=500;TEMP=80" - }, -/area/toxins/xenobiology) -"avX" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/turf/open/floor/circuit{ - name = "Killroom Floor"; - initial_gas_mix = "n2=500;TEMP=80" - }, -/area/toxins/xenobiology) -"avY" = ( -/obj/machinery/light, -/obj/machinery/atmospherics/pipe/manifold/general/visible, -/turf/open/floor/circuit{ - name = "Killroom Floor"; - initial_gas_mix = "n2=500;TEMP=80" - }, -/area/toxins/xenobiology) -"avZ" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/research{ - name = "Kill Chamber"; - req_access_txt = "55" - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/turf/open/floor/plating, -/area/toxins/xenobiology) -"awa" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"awb" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 9 - }, -/obj/structure/table, -/obj/item/folder/white, -/obj/item/pen, -/turf/open/floor/plasteel/white, -/area/toxins/xenobiology) -"awc" = ( -/obj/structure/rack, -/obj/item/tank/internals/oxygen, -/turf/open/floor/plating/airless/astplate{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"awd" = ( -/obj/machinery/atmospherics/components/unary/portables_connector{ - tag = "icon-connector_map (NORTH)"; - icon_state = "connector_map"; - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"awe" = ( -/obj/machinery/atmospherics/components/binary/valve, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"awf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"awg" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/item/shovel, -/turf/open/floor/plating, -/area/maintenance/fore) -"awh" = ( -/obj/structure/closet/secure_closet/personal, -/turf/open/floor/plating, -/area/maintenance/fore) -"awi" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"awj" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/radio/intercom{ - desc = "Talk smack through this."; - dir = 4; - pixel_x = 28; - syndie = 1 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"awk" = ( -/turf/closed/wall, -/area/crew_quarters/toilet) -"awl" = ( -/obj/machinery/door/airlock{ - id_tag = "AuxShower"; - name = "Shower" - }, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/toilet) -"awm" = ( -/obj/machinery/status_display{ - density = 0; - layer = 4 - }, -/turf/closed/wall, -/area/crew_quarters/fitness) -"awn" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/door/airlock/glass{ - name = "Fitness" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"awo" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/closet/firecloset/full, -/turf/open/floor/plating, -/area/maintenance/fore) -"awp" = ( -/obj/item/paint/blue, -/turf/open/floor/plating, -/area/maintenance/fore) -"awq" = ( -/obj/item/device/multitool, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"awr" = ( -/obj/structure/chair, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"aws" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/toxins/xenobiology) -"awt" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/toxins/xenobiology) -"awu" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/plating/airless/astplate{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"awv" = ( -/obj/structure/sign/xeno_warning_mining{ - pixel_x = -30 - }, -/turf/open/floor/noslip, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"aww" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/closet, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"awx" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 0; - name = "Air Out"; - on = 0 - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"awy" = ( -/obj/machinery/light/small, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"awz" = ( -/obj/machinery/atmospherics/components/unary/tank/air, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"awA" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "Air In"; - on = 1 - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"awB" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 2; - name = "Waste Out"; - on = 1 - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"awC" = ( -/obj/structure/grille, -/obj/item/shard, -/turf/open/floor/plating, -/area/maintenance/fore) -"awD" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plating, -/area/maintenance/fore) -"awE" = ( -/obj/item/storage/firstaid, -/turf/open/floor/plating, -/area/maintenance/fore) -"awF" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/turf/open/floor/plasteel/green, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"awG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/green, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"awH" = ( -/obj/machinery/power/apc{ - dir = 2; - name = "Sleeping Room 1 APC"; - pixel_y = -24 - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/green, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suites" - }) -"awI" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8; - initialize_directions = 11 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"awJ" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"awK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/toilet) -"awL" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/sink{ - icon_state = "sink"; - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, -/obj/structure/mirror{ - pixel_x = -32 - }, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/toilet) -"awM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/toilet) -"awN" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/toilet) -"awO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/toilet) -"awP" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/toilet) -"awQ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/shower{ - dir = 8 - }, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/toilet) -"awR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/fitness) -"awS" = ( -/obj/structure/closet/boxinggloves, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"awT" = ( -/obj/structure/closet/athletic_mixed, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"awU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"awV" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"awW" = ( -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"awX" = ( -/obj/item/device/radio/intercom{ - name = "Station Intercom"; - pixel_x = 0; - pixel_y = 24 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"awY" = ( -/obj/machinery/computer/arcade, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"awZ" = ( -/obj/structure/chair/stool, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"axa" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/crew_quarters/fitness) -"axb" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/closet/emcloset, -/turf/open/floor/plating, -/area/maintenance/fore) -"axc" = ( -/obj/structure/closet/secure_closet/bar, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"axd" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"axe" = ( -/obj/structure/chair, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"axf" = ( -/obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"axg" = ( -/obj/structure/table, -/obj/item/chair, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"axh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"axi" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Secure Workstations Distro" - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"axj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"axk" = ( -/obj/structure/grille, -/obj/item/shard{ - icon_state = "medium" - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"axl" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/green, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"axm" = ( -/turf/closed/wall, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suites" - }) -"axn" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock{ - id_tag = "cabin1"; - name = "Cabin 1" - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suites" - }) -"axo" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/sink{ - icon_state = "sink"; - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, -/obj/structure/mirror{ - pixel_x = -32 - }, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/toilet) -"axp" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/toilet) -"axq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/toilet) -"axr" = ( -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/toilet) -"axs" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/obj/item/bikehorn/rubberducky, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/toilet) -"axt" = ( -/obj/machinery/shower{ - dir = 8 - }, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/toilet) -"axu" = ( -/obj/structure/cable{ - icon_state = "2-4"; - tag = "icon-2-8" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"axv" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"axw" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"axx" = ( -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"axy" = ( -/obj/structure/chair/stool, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/turf/open/floor/plasteel/green/corner, -/area/crew_quarters/fitness) -"axz" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/wall, -/area/crew_quarters/fitness) -"axA" = ( -/obj/item/scalpel, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"axB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"axC" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"axD" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"axE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/closet/emcloset, -/obj/structure/sign/vacuum{ - pixel_y = 32 - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"axF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/turf/closed/wall, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"axG" = ( -/obj/structure/closet/firecloset, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"axH" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"axI" = ( -/obj/structure/closet/emcloset, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"axJ" = ( -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"axK" = ( -/obj/structure/flora/grass/green, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"axL" = ( -/obj/structure/dresser, -/obj/item/device/radio/intercom{ - name = "Station Intercom"; - pixel_x = 0; - pixel_y = 24 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suites" - }) -"axM" = ( -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suites" - }) -"axN" = ( -/obj/machinery/button/door{ - id = "cabin1"; - name = "Cabin Bolt Control 1"; - normaldoorcontrol = 1; - pixel_x = 0; - pixel_y = 25; - req_access_txt = "0"; - specialfunctions = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suites" - }) -"axO" = ( -/obj/machinery/door/window/westleft, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suites" - }) -"axP" = ( -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suites" - }) -"axQ" = ( -/obj/machinery/shower{ - dir = 8 - }, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suites" - }) -"axR" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock{ - name = "Unisex Restrooms"; - req_access_txt = "0" - }, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/toilet) -"axS" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/toilet) -"axT" = ( -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/toilet) -"axU" = ( -/obj/machinery/light, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/toilet) -"axV" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"axW" = ( -/obj/structure/window/reinforced{ - dir = 8; - pixel_x = 0 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/crew_quarters/fitness) -"axX" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/crew_quarters/fitness) -"axY" = ( -/obj/machinery/door/window/eastright{ - base_state = "left"; - icon_state = "left"; - name = "Fitness Ring" - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/crew_quarters/fitness) -"axZ" = ( -/turf/open/floor/plasteel/green/side{ - tag = "icon-green (EAST)"; - icon_state = "green"; - dir = 4 - }, -/area/crew_quarters/fitness) -"aya" = ( -/obj/machinery/door/airlock/glass{ - name = "Holodeck Door" - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/crew_quarters/fitness) -"ayb" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/crew_quarters/fitness) -"ayc" = ( -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/crew_quarters/fitness) -"ayd" = ( -/obj/structure/table, -/obj/item/storage/firstaid/regular{ - pixel_x = 6; - pixel_y = -5 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"aye" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"ayf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"ayg" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"ayh" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"ayi" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"ayj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance_hatch, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"ayk" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8"; - tag = "" - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"ayl" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"aym" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"ayn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/table, -/obj/item/shovel, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"ayo" = ( -/obj/structure/grille, -/obj/structure/window/fulltile, -/turf/open/floor/plating, -/area/maintenance/fore) -"ayp" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/tinted/fulltile, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suites" - }) -"ayq" = ( -/obj/structure/chair/stool, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suites" - }) -"ayr" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suites" - }) -"ays" = ( -/obj/machinery/airalarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/obj/structure/table/wood, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suites" - }) -"ayt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suites" - }) -"ayu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/toilet{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suites" - }) -"ayv" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suites" - }) -"ayw" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4; - initialize_directions = 11 - }, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"ayx" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8; - initialize_directions = 11 - }, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"ayy" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/toilet) -"ayz" = ( -/obj/machinery/power/apc{ - dir = 4; - name = "Dormitory Bathrooms APC"; - pixel_x = 26; - pixel_y = 0 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/toilet) -"ayA" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/fitness) -"ayB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"ayC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/item/device/radio/beacon, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"ayD" = ( -/obj/structure/window/reinforced{ - dir = 8; - pixel_x = 0 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/crew_quarters/fitness) -"ayE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/crew_quarters/fitness) -"ayF" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/crew_quarters/fitness) -"ayG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/holopad, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"ayH" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"ayI" = ( -/obj/structure/table, -/obj/item/stack/medical/ointment{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/stack/medical/gauze, -/obj/item/stack/medical/bruise_pack, -/turf/open/floor/plasteel/redgreen/side{ - tag = "icon-redgreen (EAST)"; - icon_state = "redgreen"; - dir = 4 - }, -/area/crew_quarters/fitness) -"ayJ" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/computer/holodeck, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/crew_quarters/fitness) -"ayK" = ( -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/crew_quarters/fitness) -"ayL" = ( -/obj/machinery/sleeper{ - icon_state = "sleeper-open"; - dir = 8 - }, -/obj/effect/decal/remains/human, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"ayM" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint{ - name = "Secure Workstations Maintenance" - }) -"ayN" = ( -/obj/effect/decal/cleanable/robot_debris, -/turf/open/floor/plating, -/area/maintenance/fore) -"ayO" = ( -/obj/structure/table/wood, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suites" - }) -"ayP" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suites" - }) -"ayQ" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 28; - pixel_y = 0 - }, -/obj/structure/table/wood, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suites" - }) -"ayR" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/camera/autoname{ - tag = "icon-camera (WEST)"; - icon_state = "camera"; - dir = 8 - }, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"ayS" = ( -/obj/structure/toilet, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/toilet) -"ayT" = ( -/obj/machinery/door/airlock{ - name = "Unisex Restrooms"; - req_access_txt = "0" - }, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/toilet) -"ayU" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/structure/toilet, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/toilet) -"ayV" = ( -/obj/structure/closet/lasertag/red, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"ayW" = ( -/obj/structure/window/reinforced, -/obj/machinery/door/window/eastright{ - base_state = "left"; - dir = 8; - icon_state = "left"; - name = "Fitness Ring" - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/crew_quarters/fitness) -"ayX" = ( -/obj/structure/window/reinforced, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/crew_quarters/fitness) -"ayY" = ( -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/crew_quarters/fitness) -"ayZ" = ( -/turf/open/floor/plasteel/red/side{ - tag = "icon-red (EAST)"; - icon_state = "red"; - dir = 4 - }, -/area/crew_quarters/fitness) -"aza" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/chair/stool, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/crew_quarters/fitness) -"azb" = ( -/obj/machinery/door/airlock/glass{ - name = "Secure Workstations Access" - }, -/obj/structure/sign/securearea{ - pixel_y = 32 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"azc" = ( -/turf/open/floor/plasteel/red/corner{ - tag = "icon-redcorner (EAST)"; - icon_state = "redcorner"; - dir = 4 - }, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"azd" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/red/corner{ - tag = "icon-redcorner (EAST)"; - icon_state = "redcorner"; - dir = 4 - }, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"aze" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHEAST)"; - icon_state = "camera"; - dir = 6 - }, -/turf/open/floor/plasteel/red/corner{ - tag = "icon-redcorner (EAST)"; - icon_state = "redcorner"; - dir = 4 - }, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"azf" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel/red/corner{ - tag = "icon-redcorner (EAST)"; - icon_state = "redcorner"; - dir = 4 - }, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"azg" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plasteel/red/corner{ - tag = "icon-redcorner (EAST)"; - icon_state = "redcorner"; - dir = 4 - }, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"azh" = ( -/obj/structure/sign/securearea{ - pixel_x = 32 - }, -/turf/open/floor/plasteel{ - icon_state = "delivery" - }, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"azi" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"azj" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"azk" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/structure/sign/securearea{ - pixel_x = 32 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"azl" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"azm" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"azn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"azo" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"azp" = ( -/obj/machinery/recharge_station, -/turf/open/floor/plating, -/area/maintenance/fore) -"azq" = ( -/obj/item/robot_suit, -/turf/open/floor/plating, -/area/maintenance/fore) -"azr" = ( -/obj/item/bodypart/chest/robot, -/turf/open/floor/plating, -/area/maintenance/fore) -"azs" = ( -/obj/structure/table, -/obj/machinery/juicer, -/turf/open/floor/plating, -/area/maintenance/fore) -"azt" = ( -/obj/structure/rack, -/obj/item/bodypart/head/robot, -/obj/item/bodypart/l_arm/robot, -/turf/open/floor/plating, -/area/maintenance/fore) -"azu" = ( -/obj/structure/rack, -/obj/item/bodypart/l_leg/robot, -/obj/item/bodypart/r_arm/robot, -/turf/open/floor/plating, -/area/maintenance/fore) -"azv" = ( -/obj/structure/rack, -/obj/item/bodypart/r_leg/robot, -/turf/open/floor/plating, -/area/maintenance/fore) -"azw" = ( -/obj/structure/bed, -/obj/item/bedsheet/purple, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suites" - }) -"azx" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suites" - }) -"azy" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suites" - }) -"azz" = ( -/obj/item/storage/secure/safe{ - pixel_y = 32 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suites" - }) -"azA" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suites" - }) -"azB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/sleep{ - name = "\improper Dormitory Suites" - }) -"azC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"azD" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"azE" = ( -/obj/machinery/door/airlock{ - id_tag = "Toilet1"; - name = "Unit 1" - }, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/toilet) -"azF" = ( -/obj/machinery/door/airlock{ - name = "Unit 2" - }, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/toilet) -"azG" = ( -/obj/machinery/door/airlock{ - id_tag = "AuxToilet3"; - name = "Unit 3" - }, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/toilet) -"azH" = ( -/obj/structure/closet/lasertag/blue, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"azI" = ( -/obj/structure/chair/stool, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/turf/open/floor/plasteel/red/corner{ - tag = "icon-redcorner (EAST)"; - icon_state = "redcorner"; - dir = 4 - }, -/area/crew_quarters/fitness) -"azJ" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Fitness room maintenance hatch" - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"azK" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"azL" = ( -/obj/machinery/door/airlock/glass{ - name = "Secure Workstations Access" - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"azM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"azN" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "" - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"azO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"azP" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "Secure Workstations"; - req_access_txt = "0"; - req_one_access_txt = "39; 63; 55; 19" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"azQ" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/turf/open/floor/plasteel{ - icon_state = "delivery" - }, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"azR" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"azS" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/mob/living/simple_animal/bot/secbot/beepsky{ - name = "Officer Beepsky" - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"azT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=EVA"; - location = "Security" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"azU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8"; - tag = "" - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"azV" = ( -/turf/closed/wall, -/area/library) -"azW" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Game Room Maintenance" - }, -/turf/open/floor/plating, -/area/library) -"azX" = ( -/obj/machinery/power/apc{ - dir = 2; - name = "Fitness Room APC"; - pixel_x = 0; - pixel_y = -24 - }, -/obj/structure/cable, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"azY" = ( -/obj/structure/table, -/obj/item/storage/firstaid/regular, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"azZ" = ( -/obj/structure/table, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"aAa" = ( -/obj/machinery/light, -/obj/structure/chair/stool, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"aAb" = ( -/obj/structure/chair/stool, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTH)"; - icon_state = "camera"; - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) -"aAc" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/closet/wardrobe/yellow, -/turf/open/floor/plating, -/area/maintenance/fore) -"aAd" = ( -/turf/closed/mineral/diamond, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"aAe" = ( -/turf/open/floor/plasteel/red/corner{ - tag = "icon-redcorner (WEST)"; - icon_state = "redcorner"; - dir = 8 - }, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"aAf" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/red/corner{ - tag = "icon-redcorner (WEST)"; - icon_state = "redcorner"; - dir = 8 - }, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"aAg" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/turf/open/floor/plasteel/red/corner{ - tag = "icon-redcorner (WEST)"; - icon_state = "redcorner"; - dir = 8 - }, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"aAh" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel{ - icon_state = "delivery" - }, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"aAi" = ( -/obj/machinery/light/small, -/obj/structure/sign/securearea{ - pixel_x = -32 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"aAj" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/obj/structure/sign/vacuum{ - pixel_y = -32 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"aAk" = ( -/obj/structure/sign/securearea{ - pixel_x = -32 - }, -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel{ - icon_state = "delivery" - }, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"aAl" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"aAm" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - tag = "icon-manifold-b-f (EAST)"; - dir = 4 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"aAn" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=Security"; - location = "EVA2" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"aAo" = ( -/turf/open/floor/wood{ - baseturf = /turf/open/floor/plating/asteroid - }, -/area/library) -"aAp" = ( -/obj/structure/noticeboard{ - desc = "A board for pinning important game notes on.."; - name = "Game Board"; - pixel_y = 32 - }, -/obj/machinery/holopad, -/turf/open/floor/wood{ - baseturf = /turf/open/floor/plating/asteroid - }, -/area/library) -"aAq" = ( -/obj/machinery/status_display{ - density = 0; - layer = 4; - pixel_x = 32; - pixel_y = 32 - }, -/obj/machinery/camera/autoname, -/turf/open/floor/wood{ - baseturf = /turf/open/floor/plating/asteroid - }, -/area/library) -"aAr" = ( -/obj/machinery/photocopier, -/turf/open/floor/wood{ - baseturf = /turf/open/floor/plating/asteroid - }, -/area/library) -"aAs" = ( -/obj/structure/bookcase/random/adult, -/turf/open/floor/wood, -/area/library) -"aAt" = ( -/obj/structure/table/wood, -/obj/item/device/camera_film, -/obj/item/device/camera_film, -/obj/item/device/camera, -/turf/open/floor/wood, -/area/library) -"aAu" = ( -/obj/structure/bookcase{ - name = "Forbidden Knowledge" - }, -/turf/open/floor/wood, -/area/library) -"aAv" = ( -/obj/structure/filingcabinet, -/turf/open/floor/wood, -/area/library) -"aAw" = ( -/turf/open/floor/plasteel/green, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aAx" = ( -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/green, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aAy" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/green, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aAz" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/closet/wardrobe/green, -/turf/open/floor/plating, -/area/maintenance/fore) -"aAA" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/turf/open/floor/noslip, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"aAB" = ( -/obj/machinery/door/airlock/glass{ - name = "Secure Workstations Access" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/securearea{ - pixel_x = -32 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Secure Workstations Hallway" - }) -"aAC" = ( -/obj/machinery/door/airlock/glass{ - name = "Secure Workstations Access" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aAD" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/open/floor/wood{ - baseturf = /turf/open/floor/plating/asteroid - }, -/area/library) -"aAE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/obj/structure/chair/comfy/brown{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/library) -"aAF" = ( -/obj/structure/table/wood, -/obj/item/device/paicard, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/carpet, -/area/library) -"aAG" = ( -/obj/structure/chair/office/dark, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/library) -"aAH" = ( -/obj/structure/table/wood, -/obj/item/device/laser_pointer/blue, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/library) -"aAI" = ( -/obj/structure/chair/comfy/brown{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/library) -"aAJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood{ - baseturf = /turf/open/floor/plating/asteroid - }, -/area/library) -"aAK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/library) -"aAL" = ( -/obj/item/device/radio/intercom{ - dir = 0; - name = "Station Intercom (General)"; - pixel_x = -27; - pixel_y = 0 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/library) -"aAM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/library) -"aAN" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/turf/open/floor/wood, -/area/library) -"aAO" = ( -/turf/open/floor/wood, -/area/library) -"aAP" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/tinted/fulltile, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/library) -"aAQ" = ( -/turf/closed/wall, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aAR" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aAS" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel/green/corner{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aAT" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/green/side{ - dir = 1 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aAU" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/green/side{ - dir = 1 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aAV" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel/green/side{ - dir = 5 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aAW" = ( -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/obj/structure/closet/wardrobe/grey, -/turf/open/floor/plating, -/area/maintenance/fore) -"aAX" = ( -/obj/structure/closet/wardrobe/yellow, -/turf/open/floor/plating, -/area/maintenance/fore) -"aAY" = ( -/obj/structure/closet/wardrobe/pink, -/turf/open/floor/plating, -/area/maintenance/fore) -"aAZ" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/wall, -/area/maintenance/fore) -"aBa" = ( -/obj/structure/table/wood, -/obj/machinery/chem_dispenser/drinks/beer{ - name = "dusty old booze dispenser" - }, -/obj/effect/decal/cleanable/cobweb, -/turf/open/floor/wood{ - baseturf = /turf/open/floor/plating/asteroid - }, -/area/maintenance/fore) -"aBb" = ( -/obj/machinery/smartfridge/drinks{ - icon_state = "boozeomat"; - name = "dusty old drink showcase" - }, -/turf/open/floor/wood{ - baseturf = /turf/open/floor/plating/asteroid - }, -/area/maintenance/fore) -"aBc" = ( -/obj/structure/table/wood, -/obj/structure/reagent_dispensers/beerkeg, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aBd" = ( -/obj/structure/chair/stool, -/turf/open/floor/plating, -/area/maintenance/fore) -"aBe" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken4" - }, -/area/maintenance/fore) -"aBf" = ( -/turf/open/floor/wood{ - baseturf = /turf/open/floor/plating/asteroid - }, -/area/maintenance/fore) -"aBg" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken6" - }, -/area/maintenance/fore) -"aBh" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/turf/open/floor/wood{ - baseturf = /turf/open/floor/plating/asteroid - }, -/area/maintenance/fore) -"aBi" = ( -/obj/structure/bed, -/turf/open/floor/carpet, -/area/maintenance/fore) -"aBj" = ( -/obj/structure/table, -/obj/item/storage/fancy/candle_box, -/turf/open/floor/plating, -/area/maintenance/fore) -"aBk" = ( -/obj/machinery/portable_atmospherics/canister/air, -/turf/open/floor/plating, -/area/maintenance/fore) -"aBl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aBm" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/red/corner, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aBn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/chair/comfy/brown{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/library) -"aBo" = ( -/obj/structure/table/wood, -/obj/item/toy/cards/deck, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/carpet, -/area/library) -"aBp" = ( -/obj/structure/table/wood, -/obj/item/storage/pill_bottle/dice, -/turf/open/floor/carpet, -/area/library) -"aBq" = ( -/obj/structure/table/wood, -/turf/open/floor/carpet, -/area/library) -"aBr" = ( -/obj/structure/chair/comfy/brown{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/library) -"aBs" = ( -/obj/structure/table/wood, -/obj/item/folder, -/turf/open/floor/wood{ - baseturf = /turf/open/floor/plating/asteroid - }, -/area/library) -"aBt" = ( -/obj/machinery/power/apc{ - dir = 8; - name = "Library APC"; - pixel_x = -25 - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/turf/open/floor/wood, -/area/library) -"aBu" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/open/floor/wood, -/area/library) -"aBv" = ( -/obj/effect/landmark/start{ - name = "Curator" - }, -/turf/open/floor/wood, -/area/library) -"aBw" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/wood, -/area/library) -"aBx" = ( -/obj/machinery/light/small/built{ - tag = "icon-bulb1 (WEST)"; - icon_state = "bulb1"; - dir = 8 - }, -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aBy" = ( -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aBz" = ( -/obj/structure/chair/wood/normal{ - icon_state = "wooden_chair"; - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aBA" = ( -/obj/structure/table/wood/fancy, -/obj/item/candle, -/obj/machinery/light/small/built{ - tag = "icon-bulb1 (EAST)"; - icon_state = "bulb1"; - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aBB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel/green/side{ - dir = 10 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aBC" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/green/side, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aBD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aBE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/green/side, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aBF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel/green/corner{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aBG" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aBH" = ( -/obj/structure/closet/crate{ - icon_state = "crateopen"; - opened = 1 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aBI" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aBJ" = ( -/obj/structure/table/wood, -/turf/open/floor/wood{ - baseturf = /turf/open/floor/plating/asteroid - }, -/area/maintenance/fore) -"aBK" = ( -/obj/structure/chair/stool, -/turf/open/floor/wood{ - baseturf = /turf/open/floor/plating/asteroid - }, -/area/maintenance/fore) -"aBL" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken5" - }, -/area/maintenance/fore) -"aBM" = ( -/obj/structure/table/wood, -/obj/item/stack/tile/wood{ - amount = 50 - }, -/turf/open/floor/wood{ - baseturf = /turf/open/floor/plating/asteroid - }, -/area/maintenance/fore) -"aBN" = ( -/obj/structure/closet, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/fore) -"aBO" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken" - }, -/area/maintenance/fore) -"aBP" = ( -/obj/structure/table, -/obj/item/device/laser_pointer/blue, -/turf/open/floor/plating, -/area/maintenance/fore) -"aBQ" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/plating, -/area/maintenance/fore) -"aBR" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/plating, -/area/maintenance/fore) -"aBS" = ( -/obj/structure/rack, -/obj/item/storage/pill_bottle/dice, -/turf/open/floor/plating, -/area/maintenance/fore) -"aBT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHEAST)"; - icon_state = "camera"; - dir = 5 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aBU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/carpet, -/area/library) -"aBV" = ( -/obj/structure/chair/comfy/brown{ - dir = 1 - }, -/turf/open/floor/carpet, -/area/library) -"aBW" = ( -/obj/structure/chair/comfy/brown{ - dir = 1 - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/carpet, -/area/library) -"aBX" = ( -/turf/open/floor/carpet, -/area/library) -"aBY" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/wood{ - baseturf = /turf/open/floor/plating/asteroid - }, -/area/library) -"aBZ" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/turf/open/floor/wood{ - baseturf = /turf/open/floor/plating/asteroid - }, -/area/library) -"aCa" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (EAST)"; - icon_state = "camera"; - dir = 4 - }, -/obj/item/storage/bag/books, -/turf/open/floor/wood, -/area/library) -"aCb" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/wood, -/area/library) -"aCc" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/wood, -/area/library) -"aCd" = ( -/obj/structure/table/wood/fancy, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aCe" = ( -/obj/structure/chair/wood/normal{ - icon_state = "wooden_chair"; - dir = 8 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aCf" = ( -/obj/structure/chair/wood/normal{ - dir = 1 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aCg" = ( -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 0 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aCh" = ( -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 0 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aCi" = ( -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 0 - }, -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/obj/item/twohanded/required/kirbyplants{ - tag = "icon-plant-17"; - icon_state = "plant-17" - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aCj" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aCk" = ( -/turf/closed/wall, -/area/janitor) -"aCl" = ( -/obj/structure/window/reinforced, -/turf/open/floor/plating, -/area/maintenance/fore) -"aCm" = ( -/obj/structure/table/wood, -/obj/machinery/chem_dispenser/drinks{ - name = "dusty old soda dispenser" - }, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/fore) -"aCn" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/food/drinks/drinkingglass, -/turf/open/floor/wood{ - baseturf = /turf/open/floor/plating/asteroid - }, -/area/maintenance/fore) -"aCo" = ( -/obj/structure/chair/stool, -/turf/open/floor/wood{ - icon_state = "wood-broken3" - }, -/area/maintenance/fore) -"aCp" = ( -/obj/structure/rack, -/obj/item/storage/box/cups, -/turf/open/floor/wood{ - baseturf = /turf/open/floor/plating/asteroid - }, -/area/maintenance/fore) -"aCq" = ( -/obj/structure/rack, -/obj/item/storage/box/drinkingglasses, -/turf/open/floor/wood{ - baseturf = /turf/open/floor/plating/asteroid - }, -/area/maintenance/fore) -"aCr" = ( -/obj/item/chair/stool, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/wood{ - baseturf = /turf/open/floor/plating/asteroid - }, -/area/maintenance/fore) -"aCs" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/rack, -/obj/item/restraints/handcuffs/fake/kinky, -/turf/open/floor/plating, -/area/maintenance/fore) -"aCt" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/rack, -/obj/item/stack/tile/carpet{ - amount = 40 - }, -/turf/open/floor/carpet, -/area/maintenance/fore) -"aCu" = ( -/obj/machinery/vending/kink, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aCv" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/filingcabinet/chestdrawer/wheeled, -/obj/effect/decal/cleanable/cobweb{ - icon_state = "cobweb2" - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aCw" = ( -/obj/machinery/light/small{ - brightness = 3; - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aCx" = ( -/obj/structure/rack, -/obj/item/storage/backpack/clown, -/turf/open/floor/plating, -/area/maintenance/fore) -"aCy" = ( -/obj/structure/closet/cabinet, -/obj/item/toy/figure/assistant, -/obj/item/toy/figure/atmos, -/obj/item/toy/figure/bartender, -/obj/item/toy/figure/borg, -/obj/item/toy/figure/botanist, -/obj/item/toy/figure/captain, -/obj/item/toy/figure/cargotech, -/obj/item/toy/figure/ce, -/obj/item/toy/figure/chaplain, -/obj/item/toy/figure/chef, -/obj/item/toy/figure/chemist, -/obj/item/toy/figure/clown, -/obj/item/toy/figure/cmo, -/obj/item/toy/figure/detective, -/obj/item/toy/figure/dsquad, -/obj/item/toy/figure/engineer, -/obj/item/toy/figure/geneticist, -/obj/item/toy/figure/hop, -/obj/item/toy/figure/hos, -/obj/item/toy/figure/ian, -/obj/item/toy/figure/janitor, -/obj/item/toy/figure/lawyer, -/obj/item/toy/figure/curator, -/obj/item/toy/figure/md, -/obj/item/toy/figure/mime, -/obj/item/toy/figure/miner, -/obj/item/toy/figure/ninja, -/obj/item/toy/figure/qm, -/obj/item/toy/figure/rd, -/obj/item/toy/figure/roboticist, -/obj/item/toy/figure/scientist, -/obj/item/toy/figure/secofficer, -/obj/item/toy/figure/syndie, -/obj/item/toy/figure/virologist, -/obj/item/toy/figure/warden, -/obj/item/toy/figure/wizard, -/obj/item/toy/minimeteor, -/turf/open/floor/wood{ - baseturf = /turf/open/floor/plating/asteroid - }, -/area/library) -"aCz" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood{ - baseturf = /turf/open/floor/plating/asteroid - }, -/area/library) -"aCA" = ( -/obj/item/device/radio/intercom{ - dir = 4; - name = "Station Intercom (General)"; - pixel_x = 0; - pixel_y = -27 - }, -/turf/open/floor/wood{ - baseturf = /turf/open/floor/plating/asteroid - }, -/area/library) -"aCB" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8; - initialize_directions = 11 - }, -/turf/open/floor/wood{ - baseturf = /turf/open/floor/plating/asteroid - }, -/area/library) -"aCC" = ( -/obj/structure/filingcabinet/chestdrawer, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/wood{ - baseturf = /turf/open/floor/plating/asteroid - }, -/area/library) -"aCD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/library) -"aCE" = ( -/obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/library) -"aCF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/wood, -/area/library) -"aCG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/obj/structure/table/wood, -/obj/item/folder, -/obj/item/clothing/glasses/monocle, -/turf/open/floor/wood, -/area/library) -"aCH" = ( -/obj/structure/chair/wood/normal{ - tag = "icon-wooden_chair (WEST)"; - icon_state = "wooden_chair"; - dir = 8 - }, -/turf/open/floor/wood, -/area/library) -"aCI" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/obj/structure/table/wood/fancy, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-15"; - pixel_x = 0; - pixel_y = 12; - tag = "icon-plant-15" - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aCJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/obj/structure/chair/wood/normal{ - icon_state = "wooden_chair"; - dir = 8 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aCK" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aCL" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass{ - name = "Cafe" - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aCM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aCN" = ( -/obj/structure/chair/wood/normal, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aCO" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aCP" = ( -/obj/structure/closet/l3closet, -/obj/item/clothing/shoes/galoshes, -/turf/open/floor/plasteel, -/area/janitor) -"aCQ" = ( -/obj/structure/closet/jcloset, -/turf/open/floor/plasteel, -/area/janitor) -"aCR" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/washing_machine, -/turf/open/floor/plasteel, -/area/janitor) -"aCS" = ( -/obj/item/device/radio/intercom{ - name = "Station Intercom"; - pixel_x = 0; - pixel_y = 24 - }, -/turf/open/floor/plasteel, -/area/janitor) -"aCT" = ( -/obj/machinery/door/window/westleft{ - name = "Janitoral Delivery"; - req_access_txt = "26" - }, -/obj/structure/window/reinforced, -/turf/open/floor/plasteel{ - icon_state = "delivery" - }, -/area/janitor) -"aCU" = ( -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=8"; - freq = 1400; - location = "Janitor" - }, -/obj/structure/plasticflaps{ - opacity = 1 - }, -/turf/open/floor/plasteel{ - icon_state = "bot" - }, -/area/janitor) -"aCV" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aCW" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/floor/plating/asteroid/airless{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"aCX" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/floor/plating/asteroid/airless{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"aCY" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/floor/plating/asteroid/airless{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"aCZ" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/maintenance/fore) -"aDa" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/closet/jcloset, -/turf/open/floor/plating, -/area/maintenance/fore) -"aDb" = ( -/turf/open/floor/carpet, -/area/maintenance/fore) -"aDc" = ( -/obj/item/stack/tile/carpet, -/turf/open/floor/plating, -/area/maintenance/fore) -"aDd" = ( -/obj/structure/table, -/obj/item/device/flashlight/lantern, -/turf/open/floor/plating, -/area/maintenance/fore) -"aDe" = ( -/obj/structure/table, -/obj/item/reagent_containers/glass/beaker/large, -/turf/open/floor/plating, -/area/maintenance/fore) -"aDf" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/library) -"aDg" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass{ - name = "Game Room" - }, -/turf/open/floor/wood, -/area/library) -"aDh" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall, -/area/library) -"aDi" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/morgue{ - name = "Private Study"; - req_access_txt = "37" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/wood, -/area/library) -"aDj" = ( -/obj/structure/table/wood/fancy, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-15"; - pixel_x = 0; - pixel_y = 12; - tag = "icon-plant-15" - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aDk" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8; - initialize_directions = 11 - }, -/obj/structure/chair/wood/normal{ - icon_state = "wooden_chair"; - dir = 8 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aDl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aDm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aDn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/chair/wood/normal, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aDo" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aDp" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/chair/wood/normal{ - tag = "icon-wooden_chair (EAST)"; - icon_state = "wooden_chair"; - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aDq" = ( -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aDr" = ( -/obj/structure/chair/wood/normal{ - tag = "icon-wooden_chair (WEST)"; - icon_state = "wooden_chair"; - dir = 8 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aDs" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aDt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aDu" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aDv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock{ - name = "Custodial Closet"; - req_access_txt = "26" - }, -/turf/open/floor/plasteel, -/area/janitor) -"aDw" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/janitor) -"aDx" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/janitor) -"aDy" = ( -/turf/open/floor/plasteel, -/area/janitor) -"aDz" = ( -/obj/structure/sink/kitchen{ - dir = 8; - icon_state = "sink_alt"; - pixel_x = 13; - tag = "icon-sink_alt (WEST)" - }, -/turf/open/floor/plasteel, -/area/janitor) -"aDA" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/airless{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"aDB" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/plating/asteroid/airless{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"aDC" = ( -/obj/item/storage/bag/trash, -/turf/open/floor/plating, -/area/maintenance/fore) -"aDD" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/caution, -/turf/open/floor/plating, -/area/maintenance/fore) -"aDE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aDF" = ( -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -23; - pixel_y = 0 - }, -/obj/structure/bookcase/random/reference, -/turf/open/floor/wood, -/area/library) -"aDG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/bookcase/random/reference, -/turf/open/floor/wood, -/area/library) -"aDH" = ( -/obj/structure/bookcase/random/reference, -/turf/open/floor/wood, -/area/library) -"aDI" = ( -/obj/structure/bookcase/manuals/research_and_development, -/turf/open/floor/wood, -/area/library) -"aDJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/bookcase/manuals/medical, -/turf/open/floor/wood, -/area/library) -"aDK" = ( -/obj/structure/bookcase/manuals/engineering, -/turf/open/floor/wood, -/area/library) -"aDL" = ( -/obj/structure/noticeboard{ - desc = "A memorial wall for pinning up momentos"; - name = "memorial board"; - pixel_y = 32 - }, -/turf/open/floor/wood, -/area/library) -"aDM" = ( -/obj/item/device/radio/intercom{ - freerange = 0; - frequency = 1459; - name = "Station Intercom (General)"; - pixel_x = -29; - pixel_y = 23 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/wood, -/area/library) -"aDN" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/wood, -/area/library) -"aDO" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall, -/area/library) -"aDP" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aDQ" = ( -/obj/structure/disposalpipe/junction{ - dir = 1; - icon_state = "pipe-j2"; - tag = "icon-pipe-j1 (WEST)" - }, -/turf/open/floor/plasteel/green, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aDR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/chair/wood/normal{ - icon_state = "wooden_chair"; - dir = 8 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aDS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aDT" = ( -/obj/structure/table/wood/fancy, -/obj/item/candle, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aDU" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aDV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/closed/wall, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aDW" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/camera/autoname{ - tag = "icon-camera (WEST)"; - icon_state = "camera"; - dir = 8 - }, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aDX" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plasteel, -/area/janitor) -"aDY" = ( -/obj/effect/landmark/start{ - name = "Janitor" - }, -/turf/open/floor/plasteel, -/area/janitor) -"aDZ" = ( -/obj/effect/landmark/event_spawn, -/mob/living/simple_animal/hostile/lizard{ - name = "Wags-His-Tail"; - real_name = "Wags-His-Tail" - }, -/turf/open/floor/plasteel, -/area/janitor) -"aEa" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel, -/area/janitor) -"aEb" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/power/apc{ - dir = 8; - name = "Custodial Closet APC"; - pixel_x = -24 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/janitor) -"aEc" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/plating/asteroid/airless{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"aEd" = ( -/obj/structure/closet/crate/trashcart, -/turf/open/floor/plating, -/area/maintenance/fore) -"aEe" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plating, -/area/maintenance/fore) -"aEf" = ( -/obj/machinery/portable_atmospherics/canister, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aEg" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aEh" = ( -/obj/structure/closet/wardrobe/pjs, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aEi" = ( -/turf/closed/wall, -/area/chapel/main) -"aEj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood, -/area/library) -"aEk" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/wood, -/area/library) -"aEl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/library) -"aEm" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/turf/open/floor/carpet, -/area/library) -"aEn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/carpet, -/area/library) -"aEo" = ( -/obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - name = "regular air vent"; - on = 1 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/wood, -/area/library) -"aEp" = ( -/obj/item/device/radio/intercom{ - desc = "Talk smack through this."; - dir = 4; - pixel_x = 28; - syndie = 1 - }, -/turf/open/floor/wood, -/area/library) -"aEq" = ( -/obj/structure/disposalpipe/junction{ - dir = 1; - icon_state = "pipe-j1"; - tag = "icon-pipe-j1 (EAST)" - }, -/turf/open/floor/plasteel/green, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aEr" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aEs" = ( -/obj/machinery/light/small/built{ - tag = "icon-bulb1 (WEST)"; - icon_state = "bulb1"; - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aEt" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aEu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aEv" = ( -/obj/machinery/holopad, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aEw" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aEx" = ( -/obj/structure/chair/wood/normal{ - dir = 1 - }, -/obj/machinery/light/small/built{ - tag = "icon-bulb1 (EAST)"; - icon_state = "bulb1"; - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aEy" = ( -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aEz" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/table/reinforced, -/obj/item/storage/box/cups, -/obj/item/storage/box/cups, -/obj/item/device/radio/intercom{ - freerange = 0; - frequency = 1459; - name = "Station Intercom (General)"; - pixel_x = -29; - pixel_y = 23 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aEA" = ( -/obj/structure/table/reinforced, -/obj/machinery/chem_dispenser/drinks, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aEB" = ( -/obj/structure/table/reinforced, -/obj/machinery/microwave, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aEC" = ( -/obj/structure/table, -/obj/item/storage/box/donkpockets, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aED" = ( -/obj/structure/table, -/obj/item/storage/fancy/donut_box, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aEE" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plating, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aEF" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -24 - }, -/obj/machinery/portable_atmospherics/canister/water_vapor, -/turf/open/floor/plasteel, -/area/janitor) -"aEG" = ( -/obj/structure/table, -/obj/structure/bedsheetbin, -/turf/open/floor/plasteel, -/area/janitor) -"aEH" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced, -/turf/open/floor/plating/asteroid/airless{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"aEI" = ( -/obj/structure/window/reinforced, -/turf/open/floor/plating/asteroid/airless{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"aEJ" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced, -/turf/open/floor/plating/asteroid/airless{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"aEK" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plating, -/area/maintenance/fore) -"aEL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - tag = "icon-intact (EAST)"; - icon_state = "intact"; - dir = 4 - }, -/turf/closed/wall, -/area/maintenance/fore) -"aEM" = ( -/obj/structure/bed, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - tag = "icon-intact (EAST)"; - icon_state = "intact"; - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aEN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - tag = "icon-intact (EAST)"; - icon_state = "intact"; - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aEO" = ( -/obj/machinery/light/small, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - tag = "icon-intact (EAST)"; - icon_state = "intact"; - dir = 4 - }, -/obj/structure/table/wood, -/turf/open/floor/plating, -/area/maintenance/fore) -"aEP" = ( -/obj/structure/frame/computer, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - tag = "icon-intact (EAST)"; - icon_state = "intact"; - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aEQ" = ( -/obj/structure/frame, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - tag = "icon-intact (EAST)"; - icon_state = "intact"; - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aER" = ( -/obj/structure/closet/emcloset, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - tag = "icon-intact (EAST)"; - icon_state = "intact"; - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aES" = ( -/obj/structure/closet/firecloset, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - tag = "icon-intact (EAST)"; - icon_state = "intact"; - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aET" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - tag = "icon-intact (EAST)"; - icon_state = "intact"; - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aEU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - tag = "icon-intact (EAST)"; - icon_state = "intact"; - dir = 4 - }, -/turf/closed/wall, -/area/chapel/main) -"aEV" = ( -/obj/structure/chair/stool, -/obj/item/device/radio/intercom{ - broadcasting = 1; - dir = 8; - frequency = 1480; - name = "Confessional Intercom"; - pixel_x = -25 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - tag = "icon-intact (EAST)"; - icon_state = "intact"; - dir = 4 - }, -/turf/open/floor/carpet, -/area/chapel/main) -"aEW" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/tinted/fulltile, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - tag = "icon-intact (EAST)"; - icon_state = "intact"; - dir = 4 - }, -/turf/open/floor/plating, -/area/chapel/main) -"aEX" = ( -/obj/structure/chair/stool, -/obj/item/device/radio/intercom{ - broadcasting = 1; - frequency = 1480; - name = "Confessional Intercom"; - pixel_x = 25 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - tag = "icon-intact (EAST)"; - icon_state = "intact"; - dir = 4 - }, -/turf/open/floor/carpet, -/area/chapel/main) -"aEY" = ( -/obj/structure/closet/radiation, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - tag = "icon-intact (EAST)"; - icon_state = "intact"; - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aEZ" = ( -/obj/machinery/light/small, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - tag = "icon-intact (EAST)"; - icon_state = "intact"; - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aFa" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - on = 0 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aFb" = ( -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - tag = "icon-intact (EAST)"; - icon_state = "intact"; - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aFc" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aFd" = ( -/obj/structure/bookcase/random/nonfiction, -/turf/open/floor/wood, -/area/library) -"aFe" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/bookcase/random/nonfiction, -/turf/open/floor/wood, -/area/library) -"aFf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/carpet, -/area/library) -"aFg" = ( -/obj/structure/table/wood, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/wood, -/area/library) -"aFh" = ( -/obj/machinery/photocopier, -/turf/open/floor/wood, -/area/library) -"aFi" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - layer = 4.1; - pixel_x = -3; - pixel_y = 3 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aFj" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8; - initialize_directions = 11 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aFk" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aFl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/glass{ - name = "Cafe" - }, -/obj/machinery/status_display{ - density = 0; - layer = 4; - pixel_x = 0; - pixel_y = 31 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aFm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aFn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aFo" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aFp" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/open/floor/plating, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aFq" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aFr" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aFs" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock{ - name = "Custodial Closet"; - req_access_txt = "26" - }, -/turf/open/floor/plasteel, -/area/janitor) -"aFt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/janitor) -"aFu" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel, -/area/janitor) -"aFv" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/plasteel, -/area/janitor) -"aFw" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall, -/area/janitor) -"aFx" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aFy" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aFz" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/light/small, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/floor/plating, -/area/maintenance/fore) -"aFA" = ( -/obj/structure/disposalpipe/junction, -/turf/open/floor/plating, -/area/maintenance/fore) -"aFB" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/maintenance{ - name = "Chapel Maintenance"; - req_access_txt = "12" - }, -/turf/open/floor/plating, -/area/chapel/main) -"aFC" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/morgue{ - name = "Confession Booth" - }, -/turf/open/floor/plasteel/black, -/area/chapel/main) -"aFD" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/morgue{ - name = "Confession Booth (Chaplain)"; - req_access_txt = "22" - }, -/turf/open/floor/plasteel/black, -/area/chapel/main) -"aFE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/securearea{ - pixel_x = -32 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aFF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/sign/securearea{ - pixel_x = 32 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/red/corner, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aFG" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8; - initialize_directions = 11 - }, -/turf/open/floor/wood, -/area/library) -"aFH" = ( -/obj/machinery/light, -/obj/machinery/firealarm{ - dir = 1; - pixel_x = 0; - pixel_y = -26 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/library) -"aFI" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTH)"; - icon_state = "camera"; - dir = 1 - }, -/turf/open/floor/wood, -/area/library) -"aFJ" = ( -/obj/machinery/light, -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/library) -"aFK" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/turf/open/floor/wood, -/area/library) -"aFL" = ( -/obj/structure/table/wood, -/obj/item/folder, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/wood, -/area/library) -"aFM" = ( -/obj/machinery/bookbinder{ - pixel_y = 0 - }, -/turf/open/floor/wood, -/area/library) -"aFN" = ( -/obj/structure/piano, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aFO" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aFP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aFQ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aFR" = ( -/obj/machinery/door/airlock/glass{ - name = "Cafe" - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aFS" = ( -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aFT" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aFU" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aFV" = ( -/obj/structure/table, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aFW" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aFX" = ( -/obj/machinery/status_display, -/turf/closed/wall, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aFY" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aFZ" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aGa" = ( -/obj/structure/janitorialcart, -/obj/item/mop, -/turf/open/floor/plasteel, -/area/janitor) -"aGb" = ( -/obj/item/caution, -/obj/item/caution, -/obj/item/caution, -/obj/item/caution, -/obj/item/caution, -/obj/item/reagent_containers/glass/bucket, -/turf/open/floor/plasteel, -/area/janitor) -"aGc" = ( -/obj/machinery/light, -/obj/vehicle/janicart, -/turf/open/floor/plasteel, -/area/janitor) -"aGd" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/key/janitor, -/turf/open/floor/plasteel, -/area/janitor) -"aGe" = ( -/obj/structure/table, -/obj/item/grenade/chem_grenade/cleaner, -/obj/item/grenade/chem_grenade/cleaner, -/obj/item/grenade/chem_grenade/cleaner, -/obj/machinery/requests_console{ - department = "Janitorial"; - departmentType = 1; - pixel_y = -29 - }, -/obj/item/reagent_containers/spray/cleaner, -/turf/open/floor/plasteel, -/area/janitor) -"aGf" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/maintenance_hatch, -/turf/open/floor/plating, -/area/maintenance/fore) -"aGg" = ( -/obj/structure/closet/coffin, -/turf/open/floor/plasteel/black, -/area/chapel/main) -"aGh" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/closet/coffin, -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/turf/open/floor/plasteel/black, -/area/chapel/main) -"aGi" = ( -/obj/structure/filingcabinet/chestdrawer, -/turf/open/floor/wood, -/area/chapel/main) -"aGj" = ( -/turf/open/floor/wood, -/area/chapel/main) -"aGk" = ( -/obj/item/device/radio/intercom{ - name = "Station Intercom"; - pixel_x = 0; - pixel_y = 24 - }, -/turf/open/floor/wood, -/area/chapel/main) -"aGl" = ( -/obj/structure/noticeboard{ - desc = "A memorial wall for pinning up momentos"; - name = "memorial board"; - pixel_y = 32 - }, -/turf/open/floor/wood, -/area/chapel/main) -"aGm" = ( -/obj/structure/spirit_board, -/turf/open/floor/wood, -/area/chapel/main) -"aGn" = ( -/obj/structure/bookcase{ - name = "Holy Bookcase" - }, -/turf/open/floor/wood, -/area/chapel/main) -"aGo" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/food/snacks/grown/harebell, -/turf/open/floor/wood, -/area/chapel/main) -"aGp" = ( -/obj/structure/table/wood, -/obj/item/device/flashlight/lantern, -/turf/open/floor/wood, -/area/chapel/main) -"aGq" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/closet/wardrobe/black, -/turf/open/floor/wood, -/area/chapel/main) -"aGr" = ( -/obj/structure/closet/wardrobe/black, -/turf/open/floor/wood, -/area/chapel/main) -"aGs" = ( -/obj/effect/landmark/xmastree, -/turf/open/floor/plasteel/black, -/area/chapel/main) -"aGt" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (NORTHWEST)"; - icon_state = "chapel"; - dir = 9 - }, -/area/chapel/main) -"aGu" = ( -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (NORTHEAST)"; - icon_state = "chapel"; - dir = 5 - }, -/area/chapel/main) -"aGv" = ( -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (NORTH)"; - icon_state = "chapel"; - dir = 1 - }, -/area/chapel/main) -"aGw" = ( -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (EAST)"; - icon_state = "chapel"; - dir = 4 - }, -/area/chapel/main) -"aGx" = ( -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (NORTHWEST)"; - icon_state = "chapel"; - dir = 9 - }, -/area/chapel/main) -"aGy" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (NORTH)"; - icon_state = "chapel"; - dir = 1 - }, -/area/chapel/main) -"aGz" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/food/snacks/poppypretzel, -/obj/item/reagent_containers/food/snacks/poppypretzel, -/obj/item/reagent_containers/food/snacks/poppypretzel, -/obj/item/reagent_containers/food/snacks/poppypretzel, -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (EAST)"; - icon_state = "chapel"; - dir = 4 - }, -/area/chapel/main) -"aGA" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/green/side{ - dir = 9 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aGB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/green/side{ - dir = 5 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aGC" = ( -/obj/structure/bookcase/random/fiction, -/turf/open/floor/wood, -/area/library) -"aGD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/bookcase/random/fiction, -/turf/open/floor/wood, -/area/library) -"aGE" = ( -/obj/machinery/newscaster, -/turf/closed/wall, -/area/library) -"aGF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass{ - name = "Library" - }, -/turf/open/floor/wood, -/area/library) -"aGG" = ( -/obj/machinery/newscaster/security_unit, -/turf/closed/wall, -/area/library) -"aGH" = ( -/obj/structure/filingcabinet/chestdrawer, -/turf/open/floor/wood, -/area/library) -"aGI" = ( -/obj/structure/table/wood, -/obj/machinery/computer/libraryconsole/bookmanagement{ - pixel_y = 0 - }, -/turf/open/floor/wood, -/area/library) -"aGJ" = ( -/obj/structure/chair/wood/normal, -/obj/effect/landmark/start{ - name = "Assistant" - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aGK" = ( -/turf/closed/wall, -/area/maintenance/starboard) -"aGL" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/maintenance/starboard) -"aGM" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/obj/item/reagent_containers/glass/bucket, -/turf/open/floor/plating, -/area/maintenance/starboard) -"aGN" = ( -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -23; - pixel_y = 0 - }, -/obj/structure/closet/coffin, -/turf/open/floor/plasteel/black, -/area/chapel/main) -"aGO" = ( -/obj/structure/closet/coffin, -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/turf/open/floor/plasteel/black, -/area/chapel/main) -"aGP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/wood, -/area/chapel/main) -"aGQ" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/wood, -/area/chapel/main) -"aGR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/chapel/main) -"aGS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/chapel/main) -"aGT" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -28 - }, -/turf/open/floor/plasteel/black, -/area/chapel/main) -"aGU" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (SOUTHWEST)"; - icon_state = "chapel"; - dir = 10 - }, -/area/chapel/main) -"aGV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (SOUTHEAST)"; - icon_state = "chapel"; - dir = 6 - }, -/area/chapel/main) -"aGW" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (WEST)"; - icon_state = "chapel"; - dir = 8 - }, -/area/chapel/main) -"aGX" = ( -/obj/structure/chair/stool, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/chapel, -/area/chapel/main) -"aGY" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (SOUTHWEST)"; - icon_state = "chapel"; - dir = 10 - }, -/area/chapel/main) -"aGZ" = ( -/obj/structure/chair/stool, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (SOUTHEAST)"; - icon_state = "chapel"; - dir = 6 - }, -/area/chapel/main) -"aHa" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/obj/structure/chair/stool, -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (SOUTHEAST)"; - icon_state = "chapel"; - dir = 6 - }, -/area/chapel/main) -"aHb" = ( -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (WEST)"; - icon_state = "chapel"; - dir = 8 - }, -/area/chapel/main) -"aHc" = ( -/obj/machinery/airalarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/obj/structure/table/wood, -/obj/item/reagent_containers/food/snacks/grown/poppy, -/turf/open/floor/plasteel/chapel, -/area/chapel/main) -"aHd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aHe" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aHf" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/library) -"aHg" = ( -/turf/open/floor/plasteel/green/side{ - dir = 9 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aHh" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aHi" = ( -/turf/open/floor/plasteel/green/side{ - dir = 5 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aHj" = ( -/obj/machinery/libraryscanner, -/turf/open/floor/wood, -/area/library) -"aHk" = ( -/obj/structure/chair/wood/normal{ - dir = 1 - }, -/turf/open/floor/wood, -/area/library) -"aHl" = ( -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/disposal/bin, -/obj/structure/extinguisher_cabinet{ - pixel_x = -24 - }, -/obj/machinery/light/small/built{ - tag = "icon-bulb1 (WEST)"; - icon_state = "bulb1"; - dir = 8 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aHm" = ( -/obj/structure/table/wood/fancy, -/obj/machinery/newscaster{ - dir = 1; - pixel_y = -30 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aHn" = ( -/obj/machinery/light/small/built{ - tag = "icon-bulb1 (EAST)"; - icon_state = "bulb1"; - dir = 4 - }, -/obj/item/twohanded/required/kirbyplants{ - tag = "icon-plant-18"; - icon_state = "plant-18" - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aHo" = ( -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -23; - pixel_y = 0 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTH)"; - icon_state = "camera"; - dir = 1 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aHp" = ( -/obj/machinery/vending/coffee, -/obj/machinery/light, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aHq" = ( -/obj/machinery/vending/cola/red, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aHr" = ( -/obj/structure/table, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4"; - tag = "" - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aHs" = ( -/obj/structure/table, -/obj/item/storage/fancy/candle_box, -/obj/machinery/power/apc{ - dir = 2; - name = "Cafateria APC"; - pixel_y = -24 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aHt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aHu" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/obj/item/storage/backpack/botany, -/turf/open/floor/plating, -/area/maintenance/starboard) -"aHv" = ( -/obj/structure/closet/coffin, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHEAST)"; - icon_state = "camera"; - dir = 5 - }, -/turf/open/floor/plasteel/black, -/area/chapel/main) -"aHw" = ( -/obj/machinery/door/window/eastleft{ - dir = 4; - name = "Coffin Storage"; - req_access_txt = "22" - }, -/turf/open/floor/plasteel/black, -/area/chapel/main) -"aHx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood, -/area/chapel/main) -"aHy" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/wood, -/area/chapel/main) -"aHz" = ( -/obj/structure/chair/wood/normal{ - tag = "icon-wooden_chair (EAST)"; - icon_state = "wooden_chair"; - dir = 4 - }, -/turf/open/floor/wood, -/area/chapel/main) -"aHA" = ( -/obj/structure/table/wood, -/obj/item/folder, -/obj/item/pen, -/turf/open/floor/wood, -/area/chapel/main) -"aHB" = ( -/obj/item/device/radio/beacon, -/turf/open/floor/wood, -/area/chapel/main) -"aHC" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/wood, -/area/chapel/main) -"aHD" = ( -/turf/open/floor/plasteel/black, -/area/chapel/main) -"aHE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/carpet, -/area/chapel/main) -"aHF" = ( -/obj/structure/table/wood, -/obj/item/candle, -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/carpet, -/area/chapel/main) -"aHG" = ( -/turf/open/floor/carpet, -/area/chapel/main) -"aHH" = ( -/obj/structure/chair/stool, -/turf/open/floor/carpet, -/area/chapel/main) -"aHI" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/carpet, -/area/chapel/main) -"aHJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/chair/stool, -/turf/open/floor/carpet, -/area/chapel/main) -"aHK" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/carpet, -/area/chapel/main) -"aHL" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/library) -"aHM" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -24 - }, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aHN" = ( -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aHO" = ( -/obj/machinery/status_display, -/turf/closed/wall, -/area/library) -"aHP" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/plating, -/area/library) -"aHQ" = ( -/obj/structure/sign/directions/medical{ - tag = "icon-direction_med (WEST)"; - icon_state = "direction_med"; - dir = 8 - }, -/obj/structure/sign/directions/evac{ - pixel_y = -10 - }, -/obj/structure/sign/directions/security{ - dir = 8; - icon_state = "direction_sec"; - pixel_y = 10; - tag = "icon-direction_sec (WEST)" - }, -/turf/closed/wall, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aHR" = ( -/obj/machinery/newscaster, -/turf/closed/wall, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aHS" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/turf/open/floor/plating, -/area/crew_quarters/cafeteria{ - name = "Cafe" - }) -"aHT" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aHU" = ( -/obj/structure/flora/rock, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aHV" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"aHW" = ( -/obj/structure/table/wood, -/obj/item/storage/book/bible, -/obj/structure/cable{ - icon_state = "2-4"; - tag = "icon-2-8" - }, -/turf/open/floor/wood, -/area/chapel/main) -"aHX" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/wood, -/area/chapel/main) -"aHY" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/wood, -/area/chapel/main) -"aHZ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/wood, -/area/chapel/main) -"aIa" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/wood, -/area/chapel/main) -"aIb" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/centcom{ - name = "Funeral Parlour"; - opacity = 1 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/wood, -/area/chapel/main) -"aIc" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/black, -/area/chapel/main) -"aId" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/carpet, -/area/chapel/main) -"aIe" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/table/wood, -/obj/item/storage/book/bible, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/carpet, -/area/chapel/main) -"aIf" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/carpet, -/area/chapel/main) -"aIg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/carpet, -/area/chapel/main) -"aIh" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/centcom{ - name = "Chapel"; - opacity = 1 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/plasteel/black, -/area/chapel/main) -"aIi" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/plasteel/black, -/area/chapel/main) -"aIj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIk" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=EVA2"; - location = "Dorm" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/turf/open/floor/plasteel/green/corner{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIl" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/green/side{ - dir = 1 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIm" = ( -/turf/open/floor/plasteel/green/side{ - dir = 1 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/green/side{ - dir = 1 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIo" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHEAST)"; - icon_state = "camera"; - dir = 6 - }, -/turf/open/floor/plasteel/green/side{ - dir = 1 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIp" = ( -/turf/open/floor/plasteel/green/corner{ - dir = 1 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIq" = ( -/turf/open/floor/plasteel/green/corner{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIr" = ( -/turf/open/floor/plasteel/green/side{ - dir = 1 - }, -/area/space) -"aIs" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=Dorm"; - location = "HOP2" - }, -/turf/open/floor/plasteel/green/side{ - dir = 1 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIt" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/green/side{ - dir = 1 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIu" = ( -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/green/side{ - dir = 1 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIv" = ( -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/turf/open/floor/plasteel/green/side{ - dir = 1 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIw" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/green/side{ - dir = 1 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIx" = ( -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, -/turf/open/floor/plasteel/green/side{ - dir = 1 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIy" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/turf/open/floor/plasteel/green/side{ - dir = 1 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIz" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=HOP2"; - location = "Stbd" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIA" = ( -/obj/machinery/power/apc{ - dir = 2; - name = "Chapel APC"; - pixel_x = 0; - pixel_y = -24 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/turf/open/floor/wood, -/area/chapel/main) -"aIB" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/turf/open/floor/wood, -/area/chapel/main) -"aIC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/table/wood, -/obj/item/storage/fancy/candle_box, -/obj/item/storage/fancy/candle_box, -/turf/open/floor/wood, -/area/chapel/main) -"aID" = ( -/obj/structure/table/wood, -/obj/item/device/camera/spooky, -/turf/open/floor/wood, -/area/chapel/main) -"aIE" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHEAST)"; - icon_state = "camera"; - dir = 5 - }, -/turf/open/floor/plasteel/black, -/area/chapel/main) -"aIF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/table/wood, -/obj/item/candle, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/carpet, -/area/chapel/main) -"aIG" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/carpet, -/area/chapel/main) -"aIH" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=Lockers"; - location = "EVA" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aII" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/green/corner, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIJ" = ( -/turf/open/floor/plasteel/green/side, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/green/side, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/green/side, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIM" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/green/side, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIN" = ( -/obj/structure/cable{ - tag = "icon-1-4"; - icon_state = "1-4" - }, -/turf/open/floor/plasteel/green/side, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIO" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/green/side, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIP" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/green/corner{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIQ" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIR" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/green/side, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIS" = ( -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/open/floor/plasteel/green/side, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIT" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIU" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/turf/open/floor/plasteel/green/side, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/plasteel/green/corner{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aIX" = ( -/obj/structure/sign/botany, -/turf/closed/wall, -/area/hydroponics) -"aIY" = ( -/turf/closed/wall, -/area/hydroponics) -"aIZ" = ( -/turf/closed/wall, -/area/medical/morgue) -"aJa" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/medical/morgue) -"aJb" = ( -/obj/structure/sign/biohazard, -/turf/closed/wall, -/area/medical/morgue) -"aJc" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical{ - name = "Morgue"; - req_access_txt = "6;5;27" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/plasteel/black, -/area/medical/morgue) -"aJd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall, -/area/medical/morgue) -"aJe" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/centcom{ - layer = 2.7; - name = "Crematorium"; - opacity = 1; - req_access_txt = "27" - }, -/turf/open/floor/plasteel/black, -/area/chapel/main) -"aJf" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (NORTHWEST)"; - icon_state = "chapel"; - dir = 9 - }, -/area/chapel/main) -"aJg" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (NORTHEAST)"; - icon_state = "chapel"; - dir = 5 - }, -/area/chapel/main) -"aJh" = ( -/obj/structure/chair/stool, -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (EAST)"; - icon_state = "chapel"; - dir = 4 - }, -/area/chapel/main) -"aJi" = ( -/obj/structure/chair/stool, -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (NORTHEAST)"; - icon_state = "chapel"; - dir = 5 - }, -/area/chapel/main) -"aJj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (NORTHWEST)"; - icon_state = "chapel"; - dir = 9 - }, -/area/chapel/main) -"aJk" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/obj/structure/chair/stool, -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (NORTHEAST)"; - icon_state = "chapel"; - dir = 5 - }, -/area/chapel/main) -"aJl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (NORTH)"; - icon_state = "chapel"; - dir = 1 - }, -/area/chapel/main) -"aJm" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/food/drinks/bottle/wine, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (EAST)"; - icon_state = "chapel"; - dir = 4 - }, -/area/chapel/main) -"aJn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aJo" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aJp" = ( -/obj/structure/flora/grass/green, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4; - initialize_directions = 11 - }, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aJq" = ( -/obj/structure/flora/ausbushes/grassybush, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aJr" = ( -/obj/structure/flora/ausbushes/pointybush, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aJs" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/light, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aJt" = ( -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/green/side{ - dir = 10 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aJu" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aJv" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTH)"; - icon_state = "camera"; - dir = 1 - }, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aJw" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aJx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/turf/open/floor/plasteel/green/corner{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aJy" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/green/side{ - dir = 5 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aJz" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/hydroponics) -"aJA" = ( -/obj/machinery/disposal/deliveryChute{ - name = "food delivery chute" - }, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aJB" = ( -/obj/machinery/smartfridge, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aJC" = ( -/obj/machinery/hydroponics/constructable, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aJD" = ( -/obj/machinery/hydroponics/constructable, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aJE" = ( -/obj/machinery/hydroponics/constructable, -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aJF" = ( -/obj/structure/sink/kitchen{ - pixel_y = 32 - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aJG" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/item/reagent_containers/glass/bucket, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aJH" = ( -/obj/machinery/chem_master/condimaster{ - name = "CondiMaster Neo" - }, -/turf/open/floor/plasteel, -/area/hydroponics) -"aJI" = ( -/obj/structure/closet/secure_closet/hydroponics, -/turf/open/floor/plasteel, -/area/hydroponics) -"aJJ" = ( -/obj/structure/bodycontainer/morgue, -/turf/open/floor/plasteel/black, -/area/medical/morgue) -"aJK" = ( -/turf/open/floor/plasteel/black, -/area/medical/morgue) -"aJL" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/black, -/area/medical/morgue) -"aJM" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/plasteel/black, -/area/medical/morgue) -"aJN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/obj/machinery/light_switch{ - pixel_y = 24 - }, -/turf/open/floor/plasteel/black, -/area/medical/morgue) -"aJO" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plasteel/black, -/area/medical/morgue) -"aJP" = ( -/obj/structure/filingcabinet/medical, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/black, -/area/medical/morgue) -"aJQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/medical/morgue) -"aJR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -28 - }, -/turf/open/floor/plasteel/black, -/area/chapel/main) -"aJS" = ( -/obj/structure/bodycontainer/crematorium, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/black, -/area/chapel/main) -"aJT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/chapel/main) -"aJU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/landmark/xmastree, -/turf/open/floor/plasteel/black, -/area/chapel/main) -"aJV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (SOUTHWEST)"; - icon_state = "chapel"; - dir = 10 - }, -/area/chapel/main) -"aJW" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (SOUTHEAST)"; - icon_state = "chapel"; - dir = 6 - }, -/area/chapel/main) -"aJX" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (WEST)"; - icon_state = "chapel"; - dir = 8 - }, -/area/chapel/main) -"aJY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/chapel, -/area/chapel/main) -"aJZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (SOUTHWEST)"; - icon_state = "chapel"; - dir = 10 - }, -/area/chapel/main) -"aKa" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (SOUTHEAST)"; - icon_state = "chapel"; - dir = 6 - }, -/area/chapel/main) -"aKb" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (WEST)"; - icon_state = "chapel"; - dir = 8 - }, -/area/chapel/main) -"aKc" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (SOUTHWEST)"; - icon_state = "chapel"; - dir = 10 - }, -/area/chapel/main) -"aKd" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/chapel{ - tag = "icon-chapel (SOUTHEAST)"; - icon_state = "chapel"; - dir = 6 - }, -/area/chapel/main) -"aKe" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/food/snacks/bun, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/chapel, -/area/chapel/main) -"aKf" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aKg" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aKh" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/theatre) -"aKi" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/closed/wall, -/area/crew_quarters/theatre) -"aKj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/crew_quarters/theatre) -"aKk" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/crew_quarters/theatre) -"aKl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall, -/area/crew_quarters/theatre) -"aKm" = ( -/turf/closed/wall, -/area/crew_quarters/theatre) -"aKn" = ( -/obj/structure/flora/ausbushes/pointybush, -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHWEST)"; - icon_state = "camera"; - dir = 10 - }, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aKo" = ( -/turf/closed/wall, -/area/crew_quarters/bar) -"aKp" = ( -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=2"; - freq = 1400; - location = "Bar" - }, -/obj/structure/plasticflaps{ - opacity = 1 - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plasteel{ - dir = 2; - icon_state = "bot" - }, -/area/crew_quarters/bar) -"aKq" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/wall, -/area/crew_quarters/bar) -"aKr" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aKs" = ( -/obj/machinery/light, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/power/apc{ - dir = 2; - name = "Kitchen APC"; - pixel_y = -24 - }, -/turf/open/floor/grass, -/area/crew_quarters/kitchen) -"aKt" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aKu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aKv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aKw" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/northleft{ - dir = 8; - name = "Hydroponics Desk"; - req_access_txt = "35" - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aKx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aKy" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aKz" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aKA" = ( -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aKB" = ( -/obj/machinery/airalarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aKC" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hydroponics) -"aKD" = ( -/turf/open/floor/plasteel, -/area/hydroponics) -"aKE" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Hydroponics Maintenance"; - req_access_txt = "35"; - req_one_access_txt = "0" - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"aKF" = ( -/turf/closed/wall/mineral/iron{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/medical/morgue{ - name = "Crypt" - }) -"aKG" = ( -/obj/structure/bodycontainer/morgue, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plasteel/black, -/area/medical/morgue) -"aKH" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/bodycontainer/morgue, -/obj/effect/landmark{ - name = "revenantspawn" - }, -/turf/open/floor/plasteel/black, -/area/medical/morgue) -"aKI" = ( -/obj/structure/bodycontainer/morgue, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/plasteel/black, -/area/medical/morgue) -"aKJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/bodycontainer/morgue, -/obj/effect/landmark{ - name = "revenantspawn" - }, -/turf/open/floor/plasteel/black, -/area/medical/morgue) -"aKK" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel/black, -/area/medical/morgue) -"aKL" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -23; - pixel_y = 0 - }, -/turf/open/floor/plasteel/black, -/area/chapel/main) -"aKM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/turf/open/floor/plasteel/black, -/area/chapel/main) -"aKN" = ( -/turf/closed/wall, -/area/chapel/office) -"aKO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/chapel/office) -"aKP" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/centcom{ - name = "Chapel Office"; - opacity = 1; - req_access_txt = "27" - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/black, -/area/chapel/office) -"aKQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall, -/area/chapel/office) -"aKR" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/chapel/main) -"aKS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/chapel/main) -"aKT" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/chapel/main) -"aKU" = ( -/obj/structure/sign/directions/medical, -/turf/closed/wall, -/area/chapel/main) -"aKV" = ( -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aKW" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor, -/obj/structure/cable{ - tag = "icon-1-4"; - icon_state = "1-4" - }, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aKX" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/turf/open/floor/plating, -/area/crew_quarters/theatre) -"aKY" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/obj/machinery/computer/arcade, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aKZ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8"; - tag = "" - }, -/obj/machinery/status_display{ - density = 0; - layer = 4; - pixel_x = 0; - pixel_y = 31 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aLa" = ( -/obj/machinery/computer/slot_machine, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) -"aLb" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/table/wood, -/obj/item/gun/ballistic/revolver/russian, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aLc" = ( -/obj/machinery/vending/clothing, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aLd" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "Theatre APC"; - pixel_x = 0; - pixel_y = 25 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aLe" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/dresser, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aLf" = ( -/obj/machinery/vending/autodrobe, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aLg" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/maintenance{ - name = "Bar Storage Maintenance"; - req_access_txt = "25" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/plating, -/area/crew_quarters/bar) -"aLh" = ( -/obj/machinery/door/window/southleft{ - base_state = "left"; - dir = 2; - icon_state = "left"; - name = "Bar Delivery"; - req_access_txt = "25" - }, -/turf/open/floor/plasteel{ - icon_state = "delivery" - }, -/area/crew_quarters/bar) -"aLi" = ( -/turf/closed/wall, -/area/crew_quarters/kitchen) -"aLj" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/closed/wall, -/area/crew_quarters/kitchen) -"aLk" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Kitchen Maintenance"; - req_access_txt = "28" - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/kitchen) -"aLl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/camera/autoname{ - tag = "icon-camera (EAST)"; - icon_state = "camera"; - dir = 4 - }, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aLm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aLn" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aLo" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aLp" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/northleft{ - dir = 8; - name = "Hydroponics Desk"; - req_access_txt = "35" - }, -/obj/machinery/door/firedoor/heavy, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aLq" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aLr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aLs" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aLt" = ( -/obj/machinery/biogenerator, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aLu" = ( -/obj/machinery/seed_extractor, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aLv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/obj/effect/landmark/start{ - name = "Botanist" - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aLw" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8"; - tag = "" - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aLx" = ( -/obj/machinery/hydroponics/constructable, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aLy" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/hydroponics) -"aLz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/table, -/obj/machinery/juicer, -/obj/item/book/manual/hydroponics_pod_people, -/obj/machinery/camera/autoname{ - tag = "icon-camera (EAST)"; - icon_state = "camera"; - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hydroponics) -"aLA" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - name = "regular air vent"; - on = 1 - }, -/obj/effect/landmark/start{ - name = "Botanist" - }, -/turf/open/floor/plasteel, -/area/hydroponics) -"aLB" = ( -/obj/structure/closet/wardrobe/botanist, -/turf/open/floor/plasteel, -/area/hydroponics) -"aLC" = ( -/obj/structure/bodycontainer/morgue, -/obj/effect/landmark{ - name = "revenantspawn" - }, -/turf/open/floor/plating/airless/astplate{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/medical/morgue{ - name = "Crypt" - }) -"aLD" = ( -/turf/open/floor/plating/airless/astplate{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/medical/morgue{ - name = "Crypt" - }) -"aLE" = ( -/obj/structure/bodycontainer/morgue, -/turf/open/floor/plating/airless/astplate{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/medical/morgue{ - name = "Crypt" - }) -"aLF" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plating/airless/astplate{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/maintenance/fore) -"aLG" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel/black, -/area/medical/morgue) -"aLH" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/turf/open/floor/plasteel/black, -/area/medical/morgue) -"aLI" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/centcom{ - layer = 2.7; - name = "Crematorium"; - opacity = 1; - req_access_txt = "27" - }, -/turf/open/floor/plasteel/black, -/area/medical/morgue) -"aLJ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel/black, -/area/chapel/main) -"aLK" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plasteel/black, -/area/chapel/main) -"aLL" = ( -/obj/structure/closet/wardrobe/chaplain_black, -/obj/item/storage/book/bible/booze, -/obj/item/nullrod, -/turf/open/floor/plasteel/grimy, -/area/chapel/office) -"aLM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/bookcase{ - name = "Holy Bookcase" - }, -/turf/open/floor/plasteel/grimy, -/area/chapel/office) -"aLN" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/grimy, -/area/chapel/office) -"aLO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/filingcabinet/chestdrawer, -/turf/open/floor/plasteel/grimy, -/area/chapel/office) -"aLP" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/plasteel/grimy, -/area/chapel/office) -"aLQ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall, -/area/chapel/office) -"aLR" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/flora/grass/green, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aLS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aLT" = ( -/obj/structure/disposalpipe/junction{ - icon_state = "pipe-j1"; - dir = 4 - }, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aLU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aLV" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHEAST)"; - icon_state = "camera"; - dir = 6 - }, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aLW" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aLX" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aLY" = ( -/obj/structure/grille, -/obj/machinery/door/firedoor, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/crew_quarters/theatre) -"aLZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aMa" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aMb" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/obj/structure/chair/stool, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) -"aMc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/chair/stool, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) -"aMd" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/chair/stool, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) -"aMe" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aMf" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/theatre) -"aMg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -28 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aMh" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aMi" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aMj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aMk" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"aMl" = ( -/obj/structure/closet/secure_closet/bar, -/obj/item/vending_refill/boozeomat, -/obj/item/vending_refill/cigarette, -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"aMm" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/item/clothing/head/that, -/obj/structure/table/wood, -/obj/item/wrench, -/obj/item/clothing/glasses/sunglasses/reagent, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"aMn" = ( -/obj/item/storage/secure/safe{ - pixel_y = 32 - }, -/obj/structure/reagent_dispensers/beerkeg, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"aMo" = ( -/obj/structure/closet/gmcloset, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"aMp" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/bar) -"aMq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/closet/secure_closet/freezer/kitchen, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aMr" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/closet/secure_closet/freezer/fridge, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aMs" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/deepfryer, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aMt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/table, -/obj/machinery/microwave, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aMu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/table, -/obj/machinery/microwave, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aMv" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/closed/wall, -/area/crew_quarters/kitchen) -"aMw" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/obj/machinery/icecream_vat, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/kitchen) -"aMx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/kitchen) -"aMy" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/gibber, -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/kitchen) -"aMz" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/kitchenspike, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/kitchen) -"aMA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/obj/structure/kitchenspike, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/kitchen) -"aMB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/disposaloutlet{ - dir = 2; - name = "food delivery outlet" - }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/kitchen) -"aMC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/kitchen) -"aMD" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aME" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aMF" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aMG" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/hydroponics) -"aMH" = ( -/obj/structure/reagent_dispensers/watertank/high, -/obj/item/watertank, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aMI" = ( -/obj/effect/landmark/start{ - name = "Botanist" - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aMJ" = ( -/obj/machinery/vending/hydroseeds, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aMK" = ( -/obj/machinery/vending/hydronutrients, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aML" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 2; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aMM" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aMN" = ( -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -28 - }, -/obj/machinery/plantgenes, -/turf/open/floor/plasteel, -/area/hydroponics) -"aMO" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 2; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/hydroponics) -"aMP" = ( -/obj/structure/closet/crate/hydroponics, -/obj/item/shovel/spade, -/obj/item/wrench, -/obj/item/reagent_containers/glass/bucket, -/turf/open/floor/plasteel{ - icon_state = "hydrofloor" - }, -/area/hydroponics) -"aMQ" = ( -/obj/structure/ore_box, -/turf/open/floor/plating/asteroid/airless{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"aMR" = ( -/obj/structure/mineral_door/iron, -/turf/open/floor/plating/airless/astplate{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/medical/morgue{ - name = "Crypt" - }) -"aMS" = ( -/turf/open/floor/plating/airless/astplate{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"aMT" = ( -/obj/machinery/door/airlock/external, -/turf/open/floor/plating, -/area/maintenance/fore) -"aMU" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Morgue Maintenance"; - req_access_txt = "6" - }, -/turf/open/floor/plating, -/area/medical/morgue) -"aMV" = ( -/obj/structure/bodycontainer/morgue, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/obj/effect/landmark{ - name = "revenantspawn" - }, -/turf/open/floor/plasteel/black, -/area/medical/morgue) -"aMW" = ( -/obj/structure/table/wood, -/obj/item/storage/box/bodybags, -/obj/item/pen, -/obj/machinery/airalarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/turf/open/floor/plasteel/black, -/area/medical/morgue) -"aMX" = ( -/obj/structure/bodycontainer/morgue, -/turf/open/floor/plasteel/black, -/area/chapel/main) -"aMY" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel/black, -/area/chapel/main) -"aMZ" = ( -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -23; - pixel_y = 0 - }, -/turf/open/floor/plasteel/grimy, -/area/chapel/office) -"aNa" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel/grimy, -/area/chapel/office) -"aNb" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/turf/open/floor/plasteel/grimy, -/area/chapel/office) -"aNc" = ( -/turf/open/floor/plasteel/grimy, -/area/chapel/office) -"aNd" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/chapel/office) -"aNe" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/flora/grass/green, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aNf" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/flora/grass/green, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aNg" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aNh" = ( -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aNi" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aNj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aNk" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aNl" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aNm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aNn" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aNo" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aNp" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHEAST)"; - icon_state = "camera"; - dir = 5 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aNq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aNr" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/structure/chair/stool, -/obj/effect/landmark/start{ - name = "Mime" - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aNs" = ( -/obj/structure/table/wood, -/obj/structure/mirror{ - pixel_x = 32 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aNt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4"; - tag = "" - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"aNu" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"aNv" = ( -/obj/effect/landmark/start{ - name = "Bartender" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"aNw" = ( -/obj/machinery/power/apc{ - dir = 2; - name = "Bar APC"; - pixel_y = -24 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"aNx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/mob/living/simple_animal/bot/cleanbot{ - name = "C.L.E.A.N." - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"aNy" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/bar) -"aNz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -28 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aNA" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aNB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/landmark/start{ - name = "Cook" - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aNC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aND" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/kitchen) -"aNE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/kitchen) -"aNF" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/kitchen) -"aNG" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (WEST)"; - icon_state = "vent_map"; - dir = 8 - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/kitchen) -"aNH" = ( -/mob/living/simple_animal/hostile/retaliate/goat{ - name = "Pete" - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/kitchen) -"aNI" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/kitchen) -"aNJ" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/window/northleft{ - dir = 2 - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/kitchen) -"aNK" = ( -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=2"; - freq = 1400; - location = "Kitchen" - }, -/obj/structure/plasticflaps{ - opacity = 1 - }, -/turf/open/floor/plasteel{ - dir = 2; - icon_state = "bot" - }, -/area/crew_quarters/kitchen) -"aNL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aNM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aNN" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/hydroponics) -"aNO" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -24 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aNP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aNQ" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aNR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aNS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aNT" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/glass{ - name = "Hydroponics Storage" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/plasteel, -/area/hydroponics) -"aNU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/plasteel, -/area/hydroponics) -"aNV" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8"; - tag = "" - }, -/turf/open/floor/plasteel, -/area/hydroponics) -"aNW" = ( -/obj/structure/ore_box, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTH)"; - icon_state = "camera"; - dir = 1 - }, -/turf/open/floor/plating/airless/astplate{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/quartermaster/miningdock) -"aNX" = ( -/turf/open/floor/plating/airless/astplate{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/quartermaster/miningdock) -"aNY" = ( -/obj/structure/ore_box, -/turf/open/floor/plating/airless/astplate{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/quartermaster/miningdock) -"aNZ" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plating/airless/astplate{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/maintenance/fore) -"aOa" = ( -/obj/structure/bodycontainer/morgue, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHEAST)"; - icon_state = "camera"; - dir = 5 - }, -/turf/open/floor/plasteel/black, -/area/medical/morgue) -"aOb" = ( -/obj/structure/chair/wood/normal{ - tag = "icon-wooden_chair (EAST)"; - icon_state = "wooden_chair"; - dir = 4 - }, -/turf/open/floor/plasteel/black, -/area/medical/morgue) -"aOc" = ( -/obj/structure/table/wood, -/obj/item/folder/white, -/turf/open/floor/plasteel/black, -/area/medical/morgue) -"aOd" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/tinted/fulltile, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/chapel/main) -"aOe" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHEAST)"; - icon_state = "camera"; - dir = 5 - }, -/turf/open/floor/plasteel/grimy, -/area/chapel/office) -"aOf" = ( -/obj/structure/table/wood, -/obj/item/device/flashlight/lamp, -/turf/open/floor/plasteel/grimy, -/area/chapel/office) -"aOg" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/food/drinks/bottle/holywater, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/grimy, -/area/chapel/office) -"aOh" = ( -/obj/structure/table/wood, -/obj/item/storage/fancy/candle_box, -/obj/item/storage/fancy/candle_box, -/turf/open/floor/plasteel/grimy, -/area/chapel/office) -"aOi" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aOj" = ( -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aOk" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/chair/stool, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aOl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/chair/stool, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aOm" = ( -/obj/structure/chair/stool, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aOn" = ( -/obj/structure/disposalpipe/trunk, -/obj/machinery/disposal/bin, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aOo" = ( -/obj/machinery/light_switch{ - dir = 8; - pixel_x = -24 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aOp" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aOq" = ( -/obj/structure/table/wood, -/obj/item/lipstick, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aOr" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock{ - name = "Bar Storage"; - req_access_txt = "25" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"aOs" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall, -/area/crew_quarters/bar) -"aOt" = ( -/obj/machinery/vending/boozeomat, -/turf/closed/wall, -/area/crew_quarters/bar) -"aOu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/crew_quarters/bar) -"aOv" = ( -/obj/structure/disposalpipe/junction{ - dir = 1; - icon_state = "pipe-j1"; - tag = "icon-pipe-j1 (EAST)" - }, -/turf/closed/wall, -/area/crew_quarters/bar) -"aOw" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aOx" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/table, -/obj/item/kitchen/rollingpin, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aOy" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/table, -/obj/item/reagent_containers/food/condiment/enzyme, -/obj/item/reagent_containers/food/condiment/saltshaker{ - pixel_x = 9 - }, -/obj/item/reagent_containers/food/condiment/peppermill, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aOz" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/table, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aOA" = ( -/obj/structure/disposalpipe/junction{ - dir = 8; - icon_state = "pipe-j2" - }, -/obj/structure/table, -/obj/item/storage/fancy/donut_box, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aOB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/kitchen) -"aOC" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/closet/secure_closet/freezer/meat, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/kitchen) -"aOD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/kitchen) -"aOE" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/kitchen) -"aOF" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/kitchen) -"aOG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aOH" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aOI" = ( -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/glass{ - name = "Hydroponics" - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aOJ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aOK" = ( -/obj/machinery/hydroponics/constructable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aOL" = ( -/obj/machinery/hydroponics/constructable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/light, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aOM" = ( -/obj/machinery/hydroponics/constructable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aON" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aOO" = ( -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, -/turf/open/floor/plasteel, -/area/hydroponics) -"aOP" = ( -/obj/machinery/power/apc{ - dir = 2; - name = "Hydroponics APC"; - pixel_y = -24 - }, -/obj/structure/cable, -/turf/open/floor/plasteel, -/area/hydroponics) -"aOQ" = ( -/obj/machinery/door/window/eastright{ - dir = 8; - name = "Hydroponics Delivery"; - req_access_txt = "35" - }, -/turf/open/floor/plasteel{ - icon_state = "delivery" - }, -/area/hydroponics) -"aOR" = ( -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=2"; - freq = 1400; - location = "Hydroponics" - }, -/obj/structure/plasticflaps{ - opacity = 1 - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plasteel{ - dir = 2; - icon_state = "bot" - }, -/area/hydroponics) -"aOS" = ( -/turf/closed/wall, -/area/quartermaster/miningdock) -"aOT" = ( -/obj/machinery/door/airlock/external{ - name = "Mining Airlock"; - req_access = null; - req_access_txt = "48" - }, -/turf/open/floor/noslip, -/area/quartermaster/miningdock) -"aOU" = ( -/turf/closed/wall, -/area/maintenance/port) -"aOV" = ( -/turf/open/floor/plating, -/area/maintenance/port) -"aOW" = ( -/obj/structure/bodycontainer/morgue, -/obj/effect/landmark{ - name = "revenantspawn" - }, -/turf/open/floor/plasteel/black, -/area/medical/morgue) -"aOX" = ( -/obj/structure/table/wood, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plasteel/black, -/area/medical/morgue) -"aOY" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/obj/structure/chair/wood/wings{ - dir = 1 - }, -/obj/effect/landmark/start{ - name = "Chaplain" - }, -/turf/open/floor/plasteel/grimy, -/area/chapel/office) -"aOZ" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/grimy, -/area/chapel/office) -"aPa" = ( -/obj/machinery/power/apc{ - dir = 2; - lighting = 3; - name = "Chapel Office APC"; - pixel_x = 0; - pixel_y = -25 - }, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/turf/open/floor/plasteel/grimy, -/area/chapel/office) -"aPb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aPc" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/landmark/event_spawn, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aPd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/flora/grass/green, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aPe" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/theatre) -"aPf" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/chair/stool, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aPg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/table/wood/poker, -/obj/effect/holodeck_effect/cards, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aPh" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/chair/stool, -/obj/effect/landmark/start{ - name = "Assistant" - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aPi" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aPj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/item/reagent_containers/food/drinks/drinkingglass, -/obj/structure/table/wood/bar, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aPk" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/table/wood/bar, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aPl" = ( -/obj/structure/disposalpipe/junction{ - dir = 4; - icon_state = "pipe-j2"; - tag = "icon-pipe-j1 (WEST)" - }, -/obj/machinery/vending/cola/random, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aPm" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/clown, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aPn" = ( -/obj/structure/sign/barsign, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/theatre) -"aPo" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aPp" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/table, -/obj/machinery/chem_dispenser/drinks, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aPq" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aPr" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/table, -/obj/machinery/chem_dispenser/drinks/beer, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aPs" = ( -/obj/structure/disposalpipe/junction{ - icon_state = "pipe-j1"; - dir = 4 - }, -/obj/machinery/chem_master/condimaster{ - desc = "Looks like a knock-off chem-master. Perhaps useful for separating liquids when mixing drinks precisely. Also dispenses condiments."; - name = "HoochMaster Deluxe"; - pixel_x = -4 - }, -/obj/item/book/manual/barman_recipes, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aPt" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, -/turf/closed/wall, -/area/crew_quarters/bar) -"aPu" = ( -/obj/machinery/light_switch{ - dir = 8; - pixel_x = -24 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHEAST)"; - icon_state = "camera"; - dir = 5 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aPv" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/table, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aPw" = ( -/obj/structure/table, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aPx" = ( -/obj/structure/table, -/obj/item/storage/box/donkpockets, -/obj/item/storage/box/donkpockets{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aPy" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/crew_quarters/kitchen) -"aPz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/freezer, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/kitchen) -"aPA" = ( -/obj/machinery/smartfridge, -/turf/closed/wall, -/area/crew_quarters/kitchen) -"aPB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aPC" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/hydroponics) -"aPD" = ( -/obj/machinery/door/airlock/glass{ - name = "Hydroponics" - }, -/turf/open/floor/plasteel/hydrofloor, -/area/hydroponics) -"aPE" = ( -/obj/structure/sign/xeno_warning_mining{ - pixel_x = -30 - }, -/obj/structure/sign/vacuum{ - pixel_x = 30 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/noslip, -/area/quartermaster/miningdock) -"aPF" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/obj/structure/cable{ - icon_state = "2-4"; - tag = "icon-2-8" - }, -/turf/open/floor/plasteel/black, -/area/medical/morgue) -"aPG" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/black, -/area/medical/morgue) -"aPH" = ( -/obj/machinery/power/apc{ - dir = 4; - name = "Morgue APC"; - pixel_x = 26; - pixel_y = 0 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/turf/open/floor/plasteel/black, -/area/medical/morgue) -"aPI" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/chair/stool, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aPJ" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aPK" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/chair/stool, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aPL" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/chair/stool, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aPM" = ( -/obj/machinery/status_display{ - density = 0; - layer = 4; - pixel_x = 32; - pixel_y = 32 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aPN" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8; - pixel_x = 0 - }, -/obj/structure/piano, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" - }, -/area/crew_quarters/theatre) -"aPO" = ( -/obj/structure/chair/stool, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) -"aPP" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/effect/landmark/start{ - name = "Clown" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) -"aPQ" = ( -/obj/structure/table/wood, -/obj/item/device/instrument/violin, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) -"aPR" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/obj/structure/table/wood, -/obj/item/device/instrument/guitar, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" - }, -/area/crew_quarters/theatre) -"aPS" = ( -/obj/structure/table/reinforced, -/obj/machinery/juicer, -/obj/structure/sign/securearea{ - desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; - icon_state = "monkey_painting"; - name = "Mr. Deempisi portrait"; - pixel_x = 0; - pixel_y = 28 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aPT" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aPU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aPV" = ( -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aPW" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aPX" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aPY" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass{ - name = "Kitchen"; - req_access_txt = "28" - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aPZ" = ( -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aQa" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aQb" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aQc" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aQd" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/sink/kitchen{ - pixel_y = 32 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aQe" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aQf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aQg" = ( -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aQh" = ( -/obj/machinery/vending/dinnerware, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aQi" = ( -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aQj" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/window/northleft{ - dir = 4; - name = "Kitchen Desk"; - req_access_txt = "28" - }, -/turf/open/floor/plating, -/area/crew_quarters/kitchen) -"aQk" = ( -/turf/open/floor/plasteel{ - icon_plating = "asteroid"; - icon_state = "asteroid"; - name = "Asteroid" - }, -/area/hydroponics) -"aQl" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel{ - icon_plating = "asteroid"; - icon_state = "asteroid"; - name = "Asteroid" - }, -/area/hydroponics) -"aQm" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/turf/open/floor/plating, -/area/maintenance/port) -"aQn" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/medical{ - name = "Morgue"; - req_access_txt = "5" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/plasteel/black, -/area/medical/morgue) -"aQo" = ( -/obj/structure/sign/bluecross, -/turf/closed/wall, -/area/medical/morgue) -"aQp" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aQq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aQr" = ( -/obj/machinery/door/window{ - base_state = "right"; - dir = 8; - icon_state = "right"; - name = "Theatre Stage"; - req_access_txt = "0" - }, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) -"aQs" = ( -/turf/open/floor/carpet, -/area/crew_quarters/theatre) -"aQt" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) -"aQu" = ( -/obj/structure/table/reinforced, -/obj/item/reagent_containers/glass/rag, -/obj/item/reagent_containers/food/drinks/shaker, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aQv" = ( -/obj/effect/landmark/start{ - name = "Bartender" - }, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aQw" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aQx" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aQy" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aQz" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aQA" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aQB" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aQC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/window/northleft{ - dir = 4; - name = "Kitchen Desk"; - req_access_txt = "28" - }, -/turf/open/floor/plating, -/area/crew_quarters/kitchen) -"aQD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aQE" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aQF" = ( -/turf/open/floor/plating, -/area/maintenance/starboard) -"aQG" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/maintenance/starboard) -"aQH" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/labor) -"aQI" = ( -/obj/structure/grille, -/obj/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/labor) -"aQJ" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/quartermaster/miningdock) -"aQK" = ( -/obj/structure/table, -/obj/item/storage/bag/ore, -/obj/item/shovel, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTHWEST)"; - dir = 9; - baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface - }, -/area/quartermaster/miningdock) -"aQL" = ( -/turf/open/floor/plasteel/brown{ - baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; - dir = 1 - }, -/area/quartermaster/miningdock) -"aQM" = ( -/obj/structure/ore_box, -/turf/open/floor/plasteel/brown{ - dir = 5 - }, -/area/quartermaster/miningdock) -"aQN" = ( -/obj/structure/table/glass, -/obj/item/storage/box/masks, -/turf/open/floor/plating, -/area/maintenance/port) -"aQO" = ( -/obj/structure/table/glass, -/obj/item/storage/box/gloves, -/turf/open/floor/plating, -/area/maintenance/port) -"aQP" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" - }, -/turf/open/floor/plating, -/area/maintenance/port) -"aQQ" = ( -/obj/structure/closet, -/obj/item/storage/backpack/chemistry, -/turf/open/floor/plating, -/area/maintenance/port) -"aQR" = ( -/obj/structure/sign/biohazard, -/turf/closed/wall, -/area/maintenance/port) -"aQS" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHEAST)"; - icon_state = "camera"; - dir = 5 - }, -/turf/open/floor/plasteel/white, -/area/medical/genetics) -"aQT" = ( -/turf/open/floor/plasteel/white, -/area/medical/genetics) -"aQU" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = 28 - }, -/turf/open/floor/plasteel/white, -/area/medical/genetics) -"aQV" = ( -/obj/machinery/door/airlock/glass_medical{ - id_tag = "GeneticsDoor"; - name = "Genetics Access"; - req_access_txt = "0" - }, -/turf/open/floor/plasteel/white, -/area/medical/genetics) -"aQW" = ( -/obj/structure/sign/biohazard{ - pixel_y = -30 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aQX" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTH)"; - icon_state = "camera"; - dir = 1 - }, -/turf/open/floor/plasteel/green, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aQY" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/green, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aQZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/green, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aRa" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass{ - name = "Bar" - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aRb" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aRc" = ( -/obj/structure/chair/wood{ - tag = "icon-wooden_chair (EAST)"; - icon_state = "wooden_chair"; - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aRd" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aRe" = ( -/obj/structure/chair/wood{ - tag = "icon-wooden_chair (WEST)"; - icon_state = "wooden_chair"; - dir = 8 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aRf" = ( -/obj/structure/window/reinforced{ - dir = 8; - pixel_x = 0 - }, -/obj/structure/window/reinforced, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" - }, -/area/crew_quarters/theatre) -"aRg" = ( -/obj/structure/window/reinforced, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) -"aRh" = ( -/obj/structure/window/reinforced, -/obj/machinery/door/firedoor/border_only, -/mob/living/carbon/monkey/punpun, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) -"aRi" = ( -/obj/structure/window/reinforced, -/obj/machinery/door/firedoor/border_only, -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" - }, -/area/crew_quarters/theatre) -"aRj" = ( -/obj/machinery/door/firedoor/border_only, -/obj/machinery/smartfridge/drinks, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aRk" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aRl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aRm" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor/border_only, -/obj/item/clothing/head/bowler, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aRn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aRo" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/door/window/southright{ - name = "Bar Door"; - req_access_txt = "0"; - req_one_access_txt = "25;28" - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aRp" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/crew_quarters/bar) -"aRq" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/snacks/mint, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aRr" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/obj/effect/landmark/start{ - name = "Cook" - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aRs" = ( -/obj/machinery/holopad, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aRt" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aRu" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aRv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aRw" = ( -/obj/machinery/hydroponics/soil, -/turf/open/floor/plasteel{ - icon_plating = "asteroid"; - icon_state = "asteroid"; - name = "Asteroid" - }, -/area/hydroponics) -"aRx" = ( -/obj/structure/table, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) -"aRy" = ( -/obj/machinery/computer/shuttle/mining, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) -"aRz" = ( -/obj/structure/table, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) -"aRA" = ( -/obj/structure/table, -/obj/item/pickaxe, -/turf/open/floor/plasteel/brown{ - dir = 8 - }, -/area/quartermaster/miningdock) -"aRB" = ( -/turf/open/floor/plasteel, -/area/quartermaster/miningdock) -"aRC" = ( -/obj/structure/ore_box, -/turf/open/floor/plasteel/brown{ - baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; - dir = 4 - }, -/area/quartermaster/miningdock) -"aRD" = ( -/obj/item/clothing/shoes/sneakers/blue, -/obj/item/clothing/head/soft/blue, -/obj/item/clothing/glasses/sunglasses/reagent, -/turf/open/floor/plating, -/area/maintenance/port) -"aRE" = ( -/obj/structure/cable{ - icon_state = "2-4"; - tag = "icon-2-8" - }, -/turf/open/floor/plating, -/area/maintenance/port) -"aRF" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plating, -/area/maintenance/port) -"aRG" = ( -/obj/structure/cable{ - icon_state = "2-4"; - tag = "icon-2-8" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plating, -/area/maintenance/port) -"aRH" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/port) -"aRI" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/maintenance_hatch, -/turf/open/floor/plating, -/area/maintenance/port) -"aRJ" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "2-4"; - tag = "icon-2-8" - }, -/turf/open/floor/plasteel/white, -/area/medical/genetics) -"aRK" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/white, -/area/medical/genetics) -"aRL" = ( -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/turf/open/floor/plasteel/white, -/area/medical/genetics) -"aRM" = ( -/turf/closed/wall, -/area/medical/surgery) -"aRN" = ( -/turf/closed/wall, -/area/hallway/primary/fore) -"aRO" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/hallway/primary/fore) -"aRP" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/hallway/primary/fore) -"aRQ" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/hallway/primary/fore) -"aRR" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aRS" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aRT" = ( -/obj/structure/chair/wood{ - tag = "icon-wooden_chair (NORTH)"; - icon_state = "wooden_chair"; - dir = 1 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aRU" = ( -/obj/machinery/holopad, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aRV" = ( -/obj/structure/chair/stool, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aRW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/chair/stool, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aRX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/chair/stool, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aRY" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aRZ" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/obj/machinery/button/door{ - dir = 1; - id = "bar-kit"; - name = "Bar Kitchen Shutters"; - pixel_y = -24 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aSa" = ( -/obj/machinery/light, -/obj/machinery/food_cart, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aSb" = ( -/obj/structure/table, -/obj/item/storage/bag/tray, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aSc" = ( -/obj/structure/table, -/obj/machinery/juicer, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aSd" = ( -/obj/structure/table, -/obj/machinery/reagentgrinder, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aSe" = ( -/obj/machinery/processor, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aSf" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/hallway/primary/fore) -"aSg" = ( -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) -"aSh" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) -"aSi" = ( -/obj/structure/grille, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; - pixel_x = 0 - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/quartermaster/miningdock) -"aSj" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock) -"aSk" = ( -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/turf/open/floor/plasteel/brown{ - baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; - dir = 4 - }, -/area/quartermaster/miningdock) -"aSl" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/port) -"aSm" = ( -/obj/machinery/power/apc{ - cell_type = 5000; - dir = 2; - name = "Port Maintenance APC"; - pixel_y = -24 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/maintenance/port) -"aSn" = ( -/obj/machinery/light/small, -/turf/open/floor/plating, -/area/maintenance/port) -"aSo" = ( -/obj/structure/frame/computer, -/turf/open/floor/plating, -/area/maintenance/port) -"aSp" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/medical/genetics) -"aSq" = ( -/obj/structure/table/glass, -/obj/item/storage/box/gloves, -/turf/open/floor/plasteel/white, -/area/medical/genetics) -"aSr" = ( -/obj/machinery/light/small, -/obj/structure/table/glass, -/obj/item/storage/box/masks, -/turf/open/floor/plasteel/white, -/area/medical/genetics) -"aSs" = ( -/obj/machinery/power/apc{ - dir = 4; - name = "Surgery APC"; - pixel_x = 26; - pixel_y = 0 - }, -/obj/structure/cable, -/obj/structure/table/glass, -/obj/item/paper_bin, -/obj/item/folder/white, -/turf/open/floor/plasteel/white, -/area/medical/genetics) -"aSt" = ( -/obj/machinery/computer/med_data, -/turf/open/floor/plasteel/white/corner, -/area/medical/surgery) -"aSu" = ( -/obj/machinery/vending/wallmed{ - pixel_y = 28 - }, -/obj/structure/table, -/obj/item/surgicaldrill, -/obj/item/circular_saw, -/turf/open/floor/plasteel/white/side, -/area/medical/surgery) -"aSv" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/table, -/obj/item/scalpel, -/obj/item/retractor, -/turf/open/floor/plasteel/white/side, -/area/medical/surgery) -"aSw" = ( -/obj/structure/table, -/obj/item/hemostat, -/obj/item/cautery, -/turf/open/floor/plasteel/white/side, -/area/medical/surgery) -"aSx" = ( -/obj/structure/table, -/obj/machinery/firealarm{ - pixel_y = 24 - }, -/obj/item/storage/firstaid/brute, -/turf/open/floor/plasteel/white/side, -/area/medical/surgery) -"aSy" = ( -/obj/structure/table, -/obj/item/storage/firstaid/regular, -/turf/open/floor/plasteel/white/corner{ - tag = "icon-whitecorner (WEST)"; - icon_state = "whitecorner"; - dir = 8 - }, -/area/medical/surgery) -"aSz" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/medical/surgery) -"aSA" = ( -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/plasteel/black, -/area/medical/surgery) -"aSB" = ( -/obj/machinery/firealarm{ - pixel_y = 24 - }, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-22" - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plasteel/black, -/area/medical/surgery) -"aSC" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (WEST)"; - icon_state = "blue"; - dir = 8 - }, -/area/hallway/primary/fore) -"aSD" = ( -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aSE" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/computer/arcade, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aSF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aSG" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aSH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aSI" = ( -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aSJ" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aSK" = ( -/obj/structure/table/wood/poker, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aSL" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aSM" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters{ - id = "bar-kit"; - name = "Bar-Kitchen Shutters" - }, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/kitchen) -"aSN" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters{ - id = "bar-kit"; - name = "Bar-Kitchen Shutters" - }, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/kitchen) -"aSO" = ( -/obj/structure/closet/chefcloset, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) -"aSP" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/crew_quarters/kitchen) -"aSQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aSR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aSS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aST" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aSU" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aSV" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"aSW" = ( -/obj/machinery/door/airlock/titanium{ - name = "Mining Shuttle Airlock"; - req_access_txt = "0" - }, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 3; - height = 5; - id = "mining"; - name = "mining shuttle"; - port_angle = 90; - width = 7 - }, -/obj/docking_port/stationary{ - dir = 8; - dwidth = 3; - height = 5; - id = "mining_home"; - name = "mining shuttle bay"; - width = 7 - }, -/turf/open/floor/plating, -/area/shuttle/labor) -"aSX" = ( -/obj/machinery/door/airlock/external{ - name = "Port Docking Bay 1" - }, -/turf/open/floor/noslip, -/area/quartermaster/miningdock) -"aSY" = ( -/turf/open/floor/noslip, -/area/quartermaster/miningdock) -"aSZ" = ( -/obj/machinery/door/airlock/external{ - name = "Port Docking Bay 1" - }, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock) -"aTa" = ( -/turf/open/floor/plasteel/brown{ - baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; - dir = 4 - }, -/area/quartermaster/miningdock) -"aTb" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/floor/plating, -/area/maintenance/port) -"aTc" = ( -/turf/closed/wall, -/area/medical/genetics) -"aTd" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass_medical{ - id_tag = "GeneticsDoor"; - name = "Genetics"; - req_access_txt = "5; 9" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/plasteel/white, -/area/medical/genetics) -"aTe" = ( -/obj/structure/chair/office/dark{ - dir = 1 - }, -/obj/machinery/light_switch{ - dir = 8; - pixel_x = -24 - }, -/turf/open/floor/plasteel/white/side{ - tag = "icon-whitehall (EAST)"; - icon_state = "whitehall"; - dir = 4 - }, -/area/medical/surgery) -"aTf" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/obj/effect/landmark{ - name = "xeno_spawn"; - pixel_x = -1 - }, -/turf/open/floor/plasteel/white, -/area/medical/surgery) -"aTg" = ( -/turf/open/floor/plasteel/white, -/area/medical/surgery) -"aTh" = ( -/obj/structure/table, -/obj/item/surgical_drapes, -/turf/open/floor/plasteel/white/side{ - tag = "icon-whitehall (WEST)"; - icon_state = "whitehall"; - dir = 8 - }, -/area/medical/surgery) -"aTi" = ( -/turf/open/floor/plasteel/black, -/area/medical/surgery) -"aTj" = ( -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (WEST)"; - icon_state = "blue"; - dir = 8 - }, -/area/hallway/primary/fore) -"aTk" = ( -/obj/structure/table/wood/poker, -/obj/effect/holodeck_effect/cards, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aTl" = ( -/obj/structure/chair/wood, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aTm" = ( -/obj/structure/chair/wood, -/obj/effect/landmark/start{ - name = "Assistant" - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aTn" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aTo" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aTp" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aTq" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aTr" = ( -/obj/machinery/airalarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aTs" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/item/reagent_containers/glass/bucket, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aTt" = ( -/obj/structure/sink/puddle, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aTu" = ( -/obj/structure/flora/ausbushes/pointybush, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aTv" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=HOP2"; - location = "Stbd" - }, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aTw" = ( -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aTx" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=Stbd"; - location = "HOP" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aTy" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/airalarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aTz" = ( -/turf/closed/wall, -/area/crew_quarters/heads) -"aTA" = ( -/obj/machinery/newscaster/security_unit, -/turf/closed/wall, -/area/crew_quarters/heads) -"aTB" = ( -/turf/closed/wall/r_wall, -/area/crew_quarters/heads) -"aTC" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/command{ - name = "Head of Personnel"; - req_access = null; - req_access_txt = "57" - }, -/turf/open/floor/wood, -/area/crew_quarters/heads) -"aTD" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel/brown{ - baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; - dir = 4 - }, -/area/quartermaster/miningdock) -"aTE" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/port) -"aTF" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/table, -/obj/item/pen, -/turf/open/floor/plating, -/area/maintenance/port) -"aTG" = ( -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/port) -"aTH" = ( -/mob/living/carbon/monkey, -/turf/open/floor/plasteel/neutral, -/area/medical/genetics) -"aTI" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/turf/open/floor/plasteel/neutral, -/area/medical/genetics) -"aTJ" = ( -/obj/structure/closet/secure_closet/personal/patient, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (NORTHWEST)"; - icon_state = "whitepurple"; - dir = 9 - }, -/area/medical/genetics) -"aTK" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = 28 - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (NORTH)"; - icon_state = "whitepurple"; - dir = 1 - }, -/area/medical/genetics) -"aTL" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (NORTH)"; - icon_state = "whitepurple"; - dir = 1 - }, -/area/medical/genetics) -"aTM" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "Genetics Lab APC"; - pixel_y = 24 - }, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/obj/structure/table/glass, -/obj/item/storage/box/disks, -/obj/item/storage/pill_bottle/mutadone, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (NORTH)"; - icon_state = "whitepurple"; - dir = 1 - }, -/area/medical/genetics) -"aTN" = ( -/obj/machinery/firealarm{ - pixel_y = 24 - }, -/obj/structure/table/glass, -/obj/item/storage/box/injectors, -/obj/item/storage/pill_bottle/mannitol, -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (NORTH)"; - icon_state = "whitepurple"; - dir = 1 - }, -/area/medical/genetics) -"aTO" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/dna_scannernew, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (NORTH)"; - icon_state = "whitepurple"; - dir = 1 - }, -/area/medical/genetics) -"aTP" = ( -/obj/machinery/computer/scan_consolenew, -/obj/machinery/requests_console{ - department = "Genetics"; - departmentType = 0; - name = "Genetics Requests Console"; - pixel_x = 0; - pixel_y = 30 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (NORTHEAST)"; - icon_state = "whitepurple"; - dir = 5 - }, -/area/medical/genetics) -"aTQ" = ( -/turf/open/floor/plasteel/white/side{ - tag = "icon-whitehall (EAST)"; - icon_state = "whitehall"; - dir = 4 - }, -/area/medical/surgery) -"aTR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/white, -/area/medical/surgery) -"aTS" = ( -/obj/machinery/computer/operating, -/turf/open/floor/plasteel/white, -/area/medical/surgery) -"aTT" = ( -/obj/structure/table/optable, -/turf/open/floor/plasteel/white, -/area/medical/surgery) -"aTU" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel/white/side{ - tag = "icon-whitehall (WEST)"; - icon_state = "whitehall"; - dir = 8 - }, -/area/medical/surgery) -"aTV" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ - id_tag = ""; - name = "Surgery Observation"; - req_access_txt = "0" - }, -/turf/open/floor/plasteel/black, -/area/medical/surgery) -"aTW" = ( -/obj/item/twohanded/required/kirbyplants{ - tag = "icon-plant-17"; - icon_state = "plant-17" - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aTX" = ( -/obj/machinery/light, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aTY" = ( -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aTZ" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHWEST)"; - icon_state = "camera"; - dir = 10 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aUa" = ( -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"aUb" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aUc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aUd" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aUe" = ( -/obj/structure/table, -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aUf" = ( -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aUg" = ( -/obj/machinery/status_display{ - density = 0; - layer = 4; - pixel_x = 0; - pixel_y = 31 - }, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aUh" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = 28 - }, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aUi" = ( -/obj/machinery/camera/autoname, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aUj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aUk" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plasteel, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aUl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aUm" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aUn" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4; - initialize_directions = 11 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aUo" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "hopqueue"; - name = "HoP Queue Shutters" - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plasteel/loadingarea{ - tag = "icon-loadingarea (EAST)"; - icon_state = "loadingarea"; - dir = 4 - }, -/area/crew_quarters/heads) -"aUp" = ( -/turf/open/floor/plasteel/bot, -/area/crew_quarters/heads) -"aUq" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "hop"; - layer = 2.9; - name = "Privacy Shutters" - }, -/obj/machinery/door/firedoor/heavy, -/obj/structure/sign/electricshock{ - pixel_y = 30 - }, -/turf/open/floor/plating, -/area/crew_quarters/heads) -"aUr" = ( -/turf/open/floor/wood, -/area/crew_quarters/heads) -"aUs" = ( -/obj/structure/filingcabinet, -/obj/machinery/light_switch{ - pixel_x = 0; - pixel_y = 32 - }, -/turf/open/floor/wood, -/area/crew_quarters/heads) -"aUt" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/closet/secure_closet{ - name = "Spares"; - req_access_txt = "57" - }, -/obj/item/storage/box/ids, -/obj/item/storage/box/ids, -/obj/item/storage/box/PDAs, -/obj/item/storage/box/PDAs, -/turf/open/floor/wood, -/area/crew_quarters/heads) -"aUu" = ( -/obj/structure/closet/secure_closet/hop, -/turf/open/floor/wood, -/area/crew_quarters/heads) -"aUv" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/obj/machinery/status_display{ - density = 0; - layer = 4; - pixel_x = 0; - pixel_y = 31 - }, -/turf/open/floor/wood, -/area/crew_quarters/heads) -"aUw" = ( -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, -/turf/closed/wall/r_wall, -/area/crew_quarters/heads) -"aUx" = ( -/obj/structure/closet/crate, -/obj/machinery/light/small, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) -"aUy" = ( -/obj/structure/shuttle/engine/heater, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8; - pixel_x = 0 - }, -/turf/open/floor/plating, -/area/shuttle/labor) -"aUz" = ( -/obj/structure/ore_box, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) -"aUA" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"aUB" = ( -/obj/machinery/computer/shuttle/mining{ - req_access = "0" - }, -/turf/open/floor/plasteel/brown{ - dir = 8 - }, -/area/quartermaster/miningdock) -"aUC" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/port) -"aUD" = ( -/obj/structure/table, -/obj/item/device/flashlight/lamp, -/turf/open/floor/plating, -/area/maintenance/port) -"aUE" = ( -/obj/structure/rack, -/obj/item/tank/internals/air, -/turf/open/floor/plating, -/area/maintenance/port) -"aUF" = ( -/obj/machinery/atmospherics/components/unary/tank/air{ - dir = 4 - }, -/turf/open/floor/plating{ - icon_state = "bot" - }, -/area/maintenance/port) -"aUG" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4 - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/maintenance/port) -"aUH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/maintenance/port) -"aUI" = ( -/turf/open/floor/plasteel/neutral, -/area/medical/genetics) -"aUJ" = ( -/obj/machinery/door/window/eastright{ - name = "Monkey Pen"; - req_access_txt = "5; 9" - }, -/turf/open/floor/plasteel/neutral, -/area/medical/genetics) -"aUK" = ( -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (WEST)"; - icon_state = "whitepurple"; - dir = 8 - }, -/area/medical/genetics) -"aUL" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/turf/open/floor/plasteel/white, -/area/medical/genetics) -"aUM" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/turf/open/floor/plasteel/white, -/area/medical/genetics) -"aUN" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/machinery/airalarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/obj/structure/chair/office/dark{ - dir = 1 - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (EAST)"; - icon_state = "whitepurple"; - dir = 4 - }, -/area/medical/genetics) -"aUO" = ( -/obj/structure/closet/secure_closet/medical2, -/turf/open/floor/plasteel/white/side{ - tag = "icon-whitehall (EAST)"; - icon_state = "whitehall"; - dir = 4 - }, -/area/medical/surgery) -"aUP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel/white, -/area/medical/surgery) -"aUQ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel/white, -/area/medical/surgery) -"aUR" = ( -/turf/open/floor/plasteel/white/side{ - tag = "icon-whitehall (WEST)"; - icon_state = "whitehall"; - dir = 8 - }, -/area/medical/surgery) -"aUS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aUT" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -24 - }, -/obj/structure/window/reinforced, -/turf/open/floor/plasteel/green/side{ - dir = 8 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aUU" = ( -/obj/machinery/status_display, -/turf/closed/wall, -/area/crew_quarters/theatre) -"aUV" = ( -/obj/structure/chair, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -28 - }, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aUW" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aUX" = ( -/obj/structure/table, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aUY" = ( -/obj/machinery/hydroponics/soil, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aUZ" = ( -/obj/machinery/hydroponics/soil, -/obj/item/seeds/lime, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aVa" = ( -/obj/machinery/hydroponics/soil, -/obj/item/seeds/watermelon, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aVb" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = 24 - }, -/obj/structure/window/reinforced, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aVc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aVd" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "hopqueue"; - name = "HoP Queue Shutters" - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/crew_quarters/heads) -"aVe" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "hop"; - layer = 2.9; - name = "Privacy Shutters" - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/crew_quarters/heads) -"aVf" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 28; - pixel_y = 0 - }, -/turf/open/floor/wood, -/area/crew_quarters/heads) -"aVg" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/wall/r_wall, -/area/crew_quarters/heads) -"aVh" = ( -/obj/structure/shuttle/engine/propulsion/burst, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/floor/plating/airless, -/area/shuttle/labor) -"aVi" = ( -/obj/machinery/computer/security/mining{ - network = list("MINE","AuxBase") - }, -/turf/open/floor/plasteel/brown{ - dir = 8 - }, -/area/quartermaster/miningdock) -"aVj" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/port) -"aVk" = ( -/obj/structure/table, -/obj/item/paper, -/obj/item/poster/random_contraband, -/turf/open/floor/plating, -/area/maintenance/port) -"aVl" = ( -/obj/structure/rack, -/obj/item/razor, -/turf/open/floor/plating, -/area/maintenance/port) -"aVm" = ( -/obj/machinery/atmospherics/components/unary/portables_connector{ - tag = "icon-connector_map (EAST)"; - icon_state = "connector_map"; - dir = 4 - }, -/turf/open/floor/plating{ - icon_state = "bot" - }, -/area/maintenance/port) -"aVn" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/maintenance/port) -"aVo" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (EAST)"; - icon_state = "camera"; - dir = 4 - }, -/mob/living/carbon/monkey, -/turf/open/floor/plasteel/neutral, -/area/medical/genetics) -"aVp" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/mob/living/carbon/monkey, -/turf/open/floor/plasteel/neutral, -/area/medical/genetics) -"aVq" = ( -/obj/structure/bed/roller, -/turf/open/floor/plasteel/white, -/area/medical/genetics) -"aVr" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/white, -/area/medical/genetics) -"aVs" = ( -/obj/effect/landmark/start{ - name = "Geneticist" - }, -/turf/open/floor/plasteel/white, -/area/medical/genetics) -"aVt" = ( -/obj/machinery/vending/wallmed{ - pixel_x = 24 - }, -/obj/structure/chair/office/dark, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (EAST)"; - icon_state = "whitepurple"; - dir = 4 - }, -/area/medical/genetics) -"aVu" = ( -/obj/structure/closet/secure_closet/personal/patient, -/turf/open/floor/plasteel/white/corner{ - tag = "icon-whitecorner (EAST)"; - icon_state = "whitecorner"; - dir = 4 - }, -/area/medical/surgery) -"aVv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/white/side{ - tag = "icon-whitehall (NORTH)"; - icon_state = "whitehall"; - dir = 1 - }, -/area/medical/surgery) -"aVw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light, -/obj/machinery/iv_drip, -/turf/open/floor/plasteel/white/side{ - tag = "icon-whitehall (NORTH)"; - icon_state = "whitehall"; - dir = 1 - }, -/area/medical/surgery) -"aVx" = ( -/obj/structure/table, -/obj/item/storage/box/masks{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/gloves, -/turf/open/floor/plasteel/white/side{ - tag = "icon-whitehall (NORTH)"; - icon_state = "whitehall"; - dir = 1 - }, -/area/medical/surgery) -"aVy" = ( -/obj/item/device/radio/intercom{ - pixel_y = -28 - }, -/turf/open/floor/plasteel/white/side{ - tag = "icon-whitehall (NORTH)"; - icon_state = "whitehall"; - dir = 1 - }, -/area/medical/surgery) -"aVz" = ( -/turf/open/floor/plasteel/white/corner{ - tag = "icon-whitecorner (NORTH)"; - icon_state = "whitecorner"; - dir = 1 - }, -/area/medical/surgery) -"aVA" = ( -/obj/machinery/light/small, -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-22" - }, -/turf/open/floor/plasteel/black, -/area/medical/surgery) -"aVB" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aVC" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aVD" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel/delivery, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aVE" = ( -/obj/structure/flora/grass/both, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aVF" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = 28 - }, -/turf/open/floor/plasteel/green/side{ - dir = 9 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aVG" = ( -/obj/machinery/vending/cigarette, -/turf/open/floor/plasteel/green/side{ - dir = 5 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aVH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aVI" = ( -/obj/machinery/hydroponics/soil, -/obj/item/seeds/apple, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aVJ" = ( -/obj/machinery/hydroponics/soil, -/obj/item/seeds/orange, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aVK" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aVL" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aVM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aVN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aVO" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "hopqueue"; - name = "HoP Queue Shutters" - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/crew_quarters/heads) -"aVP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/bot, -/area/crew_quarters/heads) -"aVQ" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "hop"; - layer = 2.9; - name = "Privacy Shutters" - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/crew_quarters/heads) -"aVR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/photocopier, -/turf/open/floor/wood, -/area/crew_quarters/heads) -"aVS" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/turf/open/floor/wood, -/area/crew_quarters/heads) -"aVT" = ( -/obj/effect/landmark/start{ - name = "Head of Personnel" - }, -/turf/open/floor/wood, -/area/crew_quarters/heads) -"aVU" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/turf/open/floor/wood, -/area/crew_quarters/heads) -"aVV" = ( -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching Prison Wing holding areas."; - dir = 4; - name = "Prison Monitor"; - network = list("Prison"); - pixel_x = 30; - pixel_y = 0 - }, -/turf/open/floor/wood, -/area/crew_quarters/heads) -"aVW" = ( -/obj/effect/landmark{ - name = "blobstart" - }, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"aVX" = ( -/turf/open/floor/plasteel/brown{ - dir = 8 - }, -/area/quartermaster/miningdock) -"aVY" = ( -/obj/structure/closet/wardrobe/white, -/turf/open/floor/plating, -/area/maintenance/port) -"aVZ" = ( -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/maintenance/port) -"aWa" = ( -/obj/machinery/light/small, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/maintenance/port) -"aWb" = ( -/obj/machinery/atmospherics/components/binary/valve, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/maintenance/port) -"aWc" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/turf/open/floor/plasteel/neutral, -/area/medical/genetics) -"aWd" = ( -/obj/machinery/dna_scannernew, -/turf/open/floor/plasteel/white, -/area/medical/genetics) -"aWe" = ( -/obj/machinery/computer/scan_consolenew, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (EAST)"; - icon_state = "whitepurple"; - dir = 4 - }, -/area/medical/genetics) -"aWf" = ( -/turf/closed/wall, -/area/medical/genetics_cloning) -"aWg" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical{ - name = "Operating Theatre"; - req_access_txt = "45" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/whitepurple, -/area/medical/genetics_cloning) -"aWh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/medical/genetics_cloning) -"aWi" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical{ - name = "Operating Theatre"; - req_access_txt = "45" - }, -/turf/open/floor/plasteel/whiteblue, -/area/medical/medbay{ - name = "Medbay Central" - }) -"aWj" = ( -/turf/closed/wall, -/area/medical/medbay{ - name = "Medbay Central" - }) -"aWk" = ( -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -23; - pixel_y = 0 - }, -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (WEST)"; - icon_state = "blue"; - dir = 8 - }, -/area/hallway/primary/fore) -"aWl" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aWm" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/hallway/primary/fore) -"aWn" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - icon_state = "connector_map"; - dir = 8 - }, -/obj/machinery/portable_atmospherics/scrubber/huge/movable, -/turf/open/floor/plasteel/delivery, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aWo" = ( -/obj/structure/flora/ausbushes/ppflowers, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aWp" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/condiment/saltshaker{ - pixel_x = 9 - }, -/obj/item/reagent_containers/food/condiment/peppermill, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aWq" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/landmark{ - name = "xeno_spawn"; - pixel_x = -1 - }, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aWr" = ( -/obj/structure/chair, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aWs" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/chair, -/obj/effect/landmark/start{ - name = "Assistant" - }, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aWt" = ( -/obj/machinery/hydroponics/soil, -/obj/item/seeds/wheat, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aWu" = ( -/obj/machinery/hydroponics/soil, -/obj/item/seeds/tea, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aWv" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 - }, -/obj/machinery/portable_atmospherics/scrubber/huge/movable, -/turf/open/floor/plasteel/delivery, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aWw" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aWx" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aWy" = ( -/obj/machinery/pdapainter, -/turf/open/floor/wood, -/area/crew_quarters/heads) -"aWz" = ( -/obj/machinery/holopad, -/mob/living/simple_animal/pet/dog/corgi/Ian, -/turf/open/floor/wood, -/area/crew_quarters/heads) -"aWA" = ( -/obj/structure/table, -/obj/item/folder/blue, -/obj/item/stamp/hop, -/turf/open/floor/wood, -/area/crew_quarters/heads) -"aWB" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (WEST)"; - icon_state = "camera"; - dir = 8 - }, -/obj/item/device/radio/intercom{ - desc = "Talk smack through this."; - dir = 4; - pixel_x = 28; - syndie = 1 - }, -/turf/open/floor/wood, -/area/crew_quarters/heads) -"aWC" = ( -/obj/structure/closet/secure_closet/miner, -/turf/open/floor/plasteel/brown{ - baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; - dir = 4 - }, -/area/quartermaster/miningdock) -"aWD" = ( -/obj/structure/closet/wardrobe/genetics_white, -/turf/open/floor/plating, -/area/maintenance/port) -"aWE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/glass_engineering{ - name = "Medbay Atmos Closet"; - req_access_txt = "32" - }, -/turf/open/floor/plating{ - dir = 1; - icon_state = "delivery" - }, -/area/maintenance/port) -"aWF" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel/white, -/area/medical/genetics) -"aWG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel/white, -/area/medical/genetics) -"aWH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel/white, -/area/medical/genetics) -"aWI" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel/white, -/area/medical/genetics) -"aWJ" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (EAST)"; - icon_state = "whitepurple"; - dir = 4 - }, -/area/medical/genetics) -"aWK" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ - id_tag = "CloningDoor"; - name = "Cloning Lab"; - req_access_txt = "0"; - req_one_access_txt = "5" - }, -/turf/open/floor/plasteel/whitepurple, -/area/medical/genetics_cloning) -"aWL" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHEAST)"; - icon_state = "camera"; - dir = 6 - }, -/turf/open/floor/plasteel/whitepurple, -/area/medical/genetics_cloning) -"aWM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/whitepurple, -/area/medical/genetics_cloning) -"aWN" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/whitepurple, -/area/medical/genetics_cloning) -"aWO" = ( -/obj/machinery/vending/clothing, -/turf/open/floor/plasteel/whitepurple, -/area/medical/genetics_cloning) -"aWP" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/medical/genetics_cloning) -"aWQ" = ( -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (NORTHWEST)"; - icon_state = "whiteblue"; - dir = 9 - }, -/area/medical/medbay{ - name = "Medbay Central" - }) -"aWR" = ( -/obj/machinery/button/door{ - desc = "A remote control switch for the medbay foyer."; - id = "MedbayFoyer"; - name = "Medbay Exit Button"; - normaldoorcontrol = 1; - pixel_x = 0; - pixel_y = 26 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (NORTHEAST)"; - icon_state = "whiteblue"; - dir = 5 - }, -/area/medical/medbay{ - name = "Medbay Central" - }) -"aWS" = ( -/obj/structure/sign/bluecross, -/turf/closed/wall, -/area/medical/medbay{ - name = "Medbay Central" - }) -"aWT" = ( -/obj/machinery/vending/snack, -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (NORTHWEST)"; - icon_state = "blue"; - dir = 9 - }, -/area/hallway/primary/fore) -"aWU" = ( -/obj/machinery/vending/cola, -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (NORTH)"; - icon_state = "blue"; - dir = 1 - }, -/area/hallway/primary/fore) -"aWV" = ( -/turf/open/floor/plasteel/blue/corner{ - tag = "icon-bluecorner (NORTH)"; - icon_state = "bluecorner"; - dir = 1 - }, -/area/hallway/primary/fore) -"aWW" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aWX" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aWY" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/hallway/primary/fore) -"aWZ" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - icon_state = "connector_map"; - dir = 8 - }, -/obj/machinery/portable_atmospherics/pump, -/turf/open/floor/plasteel/delivery, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aXa" = ( -/obj/structure/flora/ausbushes/sunnybush, -/obj/effect/landmark/event_spawn, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aXb" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aXc" = ( -/obj/machinery/newscaster{ - dir = 1; - pixel_y = -30 - }, -/obj/structure/table, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aXd" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/table, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) -"aXe" = ( -/obj/structure/flora/ausbushes/grassybush, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aXf" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/grass, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aXg" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 - }, -/obj/machinery/portable_atmospherics/pump, -/turf/open/floor/plasteel/delivery, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aXh" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aXi" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aXj" = ( -/obj/structure/table, -/obj/machinery/recharger, -/turf/open/floor/wood, -/area/crew_quarters/heads) -"aXk" = ( -/obj/structure/bed/dogbed{ - anchored = 1; - desc = "Ian's bed! Looks comfy."; - name = "Ian's bed" - }, -/turf/open/floor/wood, -/area/crew_quarters/heads) -"aXl" = ( -/obj/structure/table, -/obj/item/book/manual/wiki/security_space_law, -/turf/open/floor/wood, -/area/crew_quarters/heads) -"aXm" = ( -/obj/machinery/computer/cargo, -/turf/open/floor/wood, -/area/crew_quarters/heads) -"aXn" = ( -/turf/open/floor/plasteel/brown{ - dir = 10 - }, -/area/quartermaster/miningdock) -"aXo" = ( -/turf/open/floor/plasteel/brown, -/area/quartermaster/miningdock) -"aXp" = ( -/obj/structure/closet/secure_closet/miner, -/turf/open/floor/plasteel/brown{ - dir = 6 - }, -/area/quartermaster/miningdock) -"aXq" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/rack, -/obj/item/pickaxe, -/turf/open/floor/plating, -/area/maintenance/port) -"aXr" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4"; - tag = "" - }, -/turf/open/floor/plating, -/area/maintenance/port) -"aXs" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/door/airlock/maintenance_hatch, -/turf/open/floor/plating, -/area/maintenance/port) -"aXt" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plating, -/area/maintenance/port) -"aXu" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - tag = "icon-intact (EAST)"; - icon_state = "intact"; - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/port) -"aXv" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/port) -"aXw" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plating, -/area/maintenance/port) -"aXx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/turf/open/floor/plating, -/area/maintenance/port) -"aXy" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/medical/genetics) -"aXz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/neutral, -/area/medical/genetics) -"aXA" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/mob/living/carbon/monkey, -/turf/open/floor/plasteel/neutral, -/area/medical/genetics) -"aXB" = ( -/obj/structure/closet/wardrobe/genetics_white, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (SOUTHWEST)"; - icon_state = "whitepurple"; - dir = 10 - }, -/area/medical/genetics) -"aXC" = ( -/obj/machinery/light, -/obj/structure/closet/wardrobe/white, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whitepurple/side, -/area/medical/genetics) -"aXD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/table/glass, -/obj/item/storage/box/rxglasses, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whitepurple/side, -/area/medical/genetics) -"aXE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whitepurple/side, -/area/medical/genetics) -"aXF" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/turf/open/floor/plasteel/whitepurple/side, -/area/medical/genetics) -"aXG" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (SOUTHEAST)"; - icon_state = "whitepurple"; - dir = 6 - }, -/area/medical/genetics) -"aXH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, -/turf/closed/wall, -/area/medical/genetics_cloning) -"aXI" = ( -/obj/structure/closet/wardrobe/white, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whitepurple, -/area/medical/genetics_cloning) -"aXJ" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/turf/open/floor/plasteel/whitepurple, -/area/medical/genetics_cloning) -"aXK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel/whitepurple, -/area/medical/genetics_cloning) -"aXL" = ( -/obj/machinery/dna_scannernew, -/turf/open/floor/plasteel/whitepurple, -/area/medical/genetics_cloning) -"aXM" = ( -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (WEST)"; - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medbay{ - name = "Medbay Central" - }) -"aXN" = ( -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (EAST)"; - icon_state = "whiteblue"; - dir = 4 - }, -/area/medical/medbay{ - name = "Medbay Central" - }) -"aXO" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ - id_tag = "MedbayFoyer"; - name = "Medbay"; - req_access_txt = "5" - }, -/turf/open/floor/plasteel/blue, -/area/medical/medbay{ - name = "Medbay Central" - }) -"aXP" = ( -/obj/structure/sign/directions/medical{ - tag = "icon-direction_med (WEST)"; - icon_state = "direction_med"; - dir = 8 - }, -/obj/structure/sign/directions/evac{ - dir = 4; - icon_state = "direction_evac"; - pixel_y = -10; - tag = "icon-direction_evac (EAST)" - }, -/obj/structure/sign/directions/security{ - pixel_y = 10 - }, -/turf/closed/wall, -/area/hallway/primary/fore) -"aXQ" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/floor/plasteel/green/side{ - dir = 10 - }, -/area/hallway/primary/fore) -"aXR" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/green/side{ - dir = 6 - }, -/area/hallway/primary/fore) -"aXS" = ( -/turf/open/floor/plasteel/green/side{ - dir = 10 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aXT" = ( -/turf/open/floor/plasteel/green/side{ - dir = 6 - }, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aXU" = ( -/obj/structure/sign/barsign, -/turf/closed/wall, -/area/crew_quarters/bar) -"aXV" = ( -/obj/machinery/status_display, -/turf/closed/wall, -/area/crew_quarters/bar) -"aXW" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/closed/wall, -/area/crew_quarters/bar) -"aXX" = ( -/obj/machinery/biogenerator, -/turf/open/floor/sepia, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aXY" = ( -/obj/machinery/seed_extractor, -/turf/open/floor/sepia, -/area/construction/hallway{ - name = "Biodome Hallway" - }) -"aXZ" = ( -/turf/open/floor/plasteel/green/side{ - dir = 10 - }, -/area/hallway/primary/fore) -"aYa" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/floor/plasteel/green/side{ - dir = 6 - }, -/area/hallway/primary/fore) -"aYb" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24; - pixel_y = 0 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aYc" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aYd" = ( -/obj/machinery/computer/card, -/turf/open/floor/wood, -/area/crew_quarters/heads) -"aYe" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/wood, -/area/crew_quarters/heads) -"aYf" = ( -/obj/machinery/requests_console{ - announcementConsole = 1; - department = "Head of Personnel's Desk"; - departmentType = 5; - name = "Head of Personnel RC"; - pixel_y = -30 - }, -/turf/open/floor/wood, -/area/crew_quarters/heads) -"aYg" = ( -/obj/machinery/door/airlock/mining{ - req_access_txt = "48" - }, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock) -"aYh" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/structure/rack, -/obj/item/poster/random_official, -/turf/open/floor/plating, -/area/maintenance/port) -"aYi" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall, -/area/maintenance/port) -"aYj" = ( -/turf/closed/wall, -/area/medical/medbay3) -"aYk" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/closed/wall, -/area/medical/genetics) -"aYl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/turf/closed/wall, -/area/medical/genetics) -"aYm" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/turf/open/floor/plating, -/area/medical/genetics) -"aYn" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ - id_tag = "GeneticsDoor"; - name = "Genetics"; - req_access_txt = "5; 9" - }, -/turf/open/floor/plasteel/whiteblue, -/area/medical/genetics) -"aYo" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/obj/machinery/door/firedoor, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/turf/open/floor/plating, -/area/medical/genetics) -"aYp" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8"; - tag = "" - }, -/turf/closed/wall, -/area/medical/genetics) -"aYq" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/wall, -/area/medical/genetics_cloning) -"aYr" = ( -/obj/structure/closet/secure_closet/personal/patient, -/turf/open/floor/plasteel/whitepurple, -/area/medical/genetics_cloning) -"aYs" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel/whitepurple, -/area/medical/genetics_cloning) -"aYt" = ( -/obj/structure/chair/office/dark{ - dir = 4 - }, -/obj/effect/landmark/start{ - name = "Geneticist" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whitepurple, -/area/medical/genetics_cloning) -"aYu" = ( -/obj/machinery/computer/cloning, -/obj/item/book/manual/medical_cloning, -/turf/open/floor/plasteel/whitepurple, -/area/medical/genetics_cloning) -"aYv" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (SOUTHWEST)"; - icon_state = "blue"; - dir = 10 - }, -/area/hallway/primary/fore) -"aYw" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/plasteel/blue/side, -/area/hallway/primary/fore) -"aYx" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/blue/side, -/area/hallway/primary/fore) -"aYy" = ( -/turf/open/floor/plasteel/blue/side, -/area/hallway/primary/fore) -"aYz" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/blue/corner{ - tag = "icon-bluecorner (WEST)"; - icon_state = "bluecorner"; - dir = 8 - }, -/area/hallway/primary/fore) -"aYA" = ( -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aYB" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=CHW"; - location = "Lockers" - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aYC" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aYD" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aYE" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 2; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aYF" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aYG" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aYH" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHEAST)"; - icon_state = "camera"; - dir = 6 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aYI" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHEAST)"; - icon_state = "camera"; - dir = 6 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aYJ" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aYK" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aYL" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "hopqueue"; - name = "HoP Queue Shutters" - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plasteel/loadingarea{ - dir = 8 - }, -/area/crew_quarters/heads) -"aYM" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/newscaster{ - dir = 1; - pixel_y = -30 - }, -/turf/open/floor/plasteel/delivery, -/area/crew_quarters/heads) -"aYN" = ( -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/table/reinforced, -/obj/machinery/door/window/brigdoor{ - base_state = "rightsecure"; - dir = 4; - icon_state = "rightsecure"; - name = "Head of Personnel's Desk"; - req_access = null; - req_access_txt = "57" - }, -/obj/machinery/door/window/northleft{ - dir = 8; - icon_state = "left"; - name = "Reception Window"; - req_access_txt = "0" - }, -/obj/machinery/flasher{ - dir = 1; - id = "hopflash"; - pixel_x = 0; - pixel_y = -28 - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "hop"; - layer = 2.9; - name = "Privacy Shutters" - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plasteel, -/area/crew_quarters/heads) -"aYO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/chair/office/dark{ - dir = 8 - }, -/obj/machinery/button/door{ - id = "hopqueue"; - name = "Queue Shutters Control"; - pixel_x = -4; - pixel_y = -25; - req_access_txt = "28" - }, -/obj/machinery/button/door{ - id = "hop"; - name = "Privacy Shutters Control"; - pixel_x = 6; - pixel_y = -25; - req_access_txt = "28" - }, -/obj/machinery/button/flasher{ - id = "hopflash"; - pixel_x = 6; - pixel_y = -36 - }, -/turf/open/floor/wood, -/area/crew_quarters/heads) -"aYP" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/obj/machinery/light, -/turf/open/floor/wood, -/area/crew_quarters/heads) -"aYQ" = ( -/obj/machinery/airalarm{ - dir = 1; - icon_state = "alarm0"; - pixel_y = -22 - }, -/obj/machinery/computer/secure_data, -/turf/open/floor/wood, -/area/crew_quarters/heads) -"aYR" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/maintenance{ - name = "HoP Maintenance"; - req_access_txt = "57" - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"aYS" = ( -/obj/machinery/portable_atmospherics/pump, -/turf/open/floor/plating, -/area/maintenance/starboard) -"aYT" = ( -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/plating, -/area/maintenance/starboard) -"aYU" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plating, -/area/maintenance/starboard) -"aYV" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plasteel/brown{ - dir = 8 - }, -/area/quartermaster/miningdock) -"aYW" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock) -"aYX" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/obj/machinery/power/apc{ - dir = 1; - name = "Mining Dock APC"; - pixel_y = 24 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/turf/open/floor/plasteel/brown{ - baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; - dir = 4 - }, -/area/quartermaster/miningdock) -"aYY" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/port) -"aYZ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/obj/structure/closet/secure_closet/personal/patient, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"aZa" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/obj/machinery/light_switch{ - pixel_y = 24 - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"aZb" = ( -/obj/structure/table, -/obj/item/reagent_containers/syringe, -/obj/item/reagent_containers/glass/bottle/salglu_solution, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"aZc" = ( -/obj/structure/bed, -/obj/item/bedsheet/medical, -/obj/effect/landmark{ - name = "revenantspawn" - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"aZd" = ( -/turf/closed/wall, -/area/medical/patients_rooms) -"aZe" = ( -/obj/machinery/power/apc{ - dir = 8; - name = "Patient Room B APC"; - pixel_x = -26; - pixel_y = 0 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"aZf" = ( -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"aZg" = ( -/obj/structure/bed, -/obj/item/bedsheet/cmo, -/turf/open/floor/carpet, -/area/medical/medbay3) -"aZh" = ( -/obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, -/turf/open/floor/carpet, -/area/medical/medbay3) -"aZi" = ( -/obj/structure/dresser, -/turf/open/floor/carpet, -/area/medical/medbay3) -"aZj" = ( -/obj/structure/closet/wardrobe/white/medical, -/obj/item/clothing/suit/hooded/wintercoat/medical, -/turf/open/floor/carpet, -/area/medical/medbay3) -"aZk" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/medical/cryo) -"aZl" = ( -/obj/machinery/atmospherics/components/unary/cryo_cell, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (WEST)"; - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/cryo) -"aZm" = ( -/obj/structure/table/glass, -/obj/item/reagent_containers/glass/beaker/cryoxadone, -/obj/item/reagent_containers/glass/beaker/cryoxadone, -/turf/open/floor/plasteel/whitepurple/corner{ - tag = "icon-whitepurplecorner (EAST)"; - icon_state = "whitepurplecorner"; - dir = 4 - }, -/area/medical/cryo) -"aZn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (NORTH)"; - icon_state = "whitepurple"; - dir = 1 - }, -/area/medical/cryo) -"aZo" = ( -/obj/structure/table/glass, -/obj/item/reagent_containers/glass/beaker/cryoxadone, -/obj/item/reagent_containers/glass/beaker/cryoxadone, -/turf/open/floor/plasteel/whitepurple/corner{ - tag = "icon-whitepurplecorner (NORTH)"; - icon_state = "whitepurplecorner"; - dir = 1 - }, -/area/medical/cryo) -"aZp" = ( -/obj/machinery/atmospherics/components/unary/cryo_cell, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (EAST)"; - icon_state = "whiteblue"; - dir = 4 - }, -/area/medical/cryo) -"aZq" = ( -/obj/machinery/power/apc{ - dir = 2; - name = "Cloning Lab APC"; - pixel_y = -24 - }, -/obj/structure/table, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/obj/item/storage/box/bodybags, -/obj/item/pen, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/turf/open/floor/plasteel/whitepurple, -/area/medical/genetics_cloning) -"aZr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/turf/open/floor/plasteel/whitepurple, -/area/medical/genetics_cloning) -"aZs" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light, -/obj/machinery/button/door{ - desc = "A remote control switch for the genetics doors."; - id = "GeneticsDoor"; - name = "Genetics Exit Button"; - normaldoorcontrol = 1; - pixel_x = -8; - pixel_y = -24 - }, -/turf/open/floor/plasteel/whitepurple, -/area/medical/genetics_cloning) -"aZt" = ( -/obj/machinery/clonepod, -/turf/open/floor/plasteel/whitepurple, -/area/medical/genetics_cloning) -"aZu" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = 24 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (EAST)"; - icon_state = "whiteblue"; - dir = 4 - }, -/area/medical/medbay{ - name = "Medbay Central" - }) -"aZv" = ( -/turf/closed/wall, -/area/medical/cmo) -"aZw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (WEST)"; - icon_state = "blue"; - dir = 8 - }, -/area/hallway/primary/fore) -"aZx" = ( -/obj/structure/cable{ - icon_state = "2-4"; - tag = "icon-2-8" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aZy" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aZz" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aZA" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aZB" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aZC" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel{ - icon_state = "L1" - }, -/area/hallway/primary/fore) -"aZD" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel{ - icon_state = "L3" - }, -/area/hallway/primary/fore) -"aZE" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel{ - icon_state = "L5" - }, -/area/hallway/primary/fore) -"aZF" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel{ - icon_state = "L7" - }, -/area/hallway/primary/fore) -"aZG" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel{ - icon_state = "L9" - }, -/area/hallway/primary/fore) -"aZH" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel{ - icon_state = "L11" - }, -/area/hallway/primary/fore) -"aZI" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel{ - desc = ""; - icon_state = "L13"; - name = "floor" - }, -/area/hallway/primary/fore) -"aZJ" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aZK" = ( -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aZL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/radio/intercom{ - desc = "Talk smack through this."; - dir = 4; - pixel_x = 28; - syndie = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"aZM" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"aZN" = ( -/obj/structure/disposalpipe/junction{ - dir = 8; - icon_state = "pipe-j1"; - tag = "icon-pipe-j1 (EAST)" - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"aZO" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"aZP" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"aZQ" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"aZR" = ( -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"aZS" = ( -/turf/open/floor/plasteel/brown{ - dir = 8 - }, -/area/maintenance/starboard) -"aZT" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel, -/area/maintenance/starboard) -"aZU" = ( -/turf/open/floor/plasteel/brown{ - baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; - dir = 4 - }, -/area/maintenance/starboard) -"aZV" = ( -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"aZW" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"aZX" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/item/rack_parts, -/turf/open/floor/plating, -/area/maintenance/port) -"aZY" = ( -/obj/structure/closet/wardrobe/white, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"aZZ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"baa" = ( -/obj/machinery/iv_drip, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bab" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -28 - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bac" = ( -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -23; - pixel_y = 0 - }, -/turf/open/floor/carpet, -/area/medical/medbay3) -"bad" = ( -/turf/open/floor/carpet, -/area/medical/medbay3) -"bae" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - tag = "icon-intact (NORTHEAST)"; - icon_state = "intact"; - dir = 5 - }, -/obj/structure/extinguisher_cabinet{ - pixel_x = -24 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (WEST)"; - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/cryo) -"baf" = ( -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/medical/cryo) -"bag" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/white, -/area/medical/cryo) -"bah" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/medical/cryo) -"bai" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 9 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (EAST)"; - icon_state = "whiteblue"; - dir = 4 - }, -/area/medical/cryo) -"baj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ - id_tag = "CloningDoor"; - name = "Cloning Lab"; - req_access_txt = "0"; - req_one_access_txt = "5" - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/whitepurple, -/area/medical/genetics_cloning) -"bak" = ( -/obj/structure/sign/nosmoking_2, -/turf/closed/wall, -/area/medical/genetics_cloning) -"bal" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; - id = "cmo"; - name = "CMO Privacy Shutters" - }, -/turf/open/floor/plating, -/area/medical/cmo) -"bam" = ( -/obj/structure/bookcase/manuals/medical, -/obj/item/book/manual/wiki/chemistry, -/obj/item/book/manual/medical_cloning, -/turf/open/floor/plasteel/cmo, -/area/medical/cmo) -"ban" = ( -/obj/structure/filingcabinet/medical, -/obj/machinery/light_switch{ - pixel_y = 24 - }, -/turf/open/floor/plasteel/cmo, -/area/medical/cmo) -"bao" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/suit_storage_unit/cmo, -/turf/open/floor/plasteel/cmo, -/area/medical/cmo) -"bap" = ( -/obj/structure/closet/secure_closet/CMO, -/turf/open/floor/plasteel/cmo, -/area/medical/cmo) -"baq" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=QM"; - location = "CHW" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (WEST)"; - icon_state = "blue"; - dir = 8 - }, -/area/hallway/primary/fore) -"bar" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"bas" = ( -/turf/open/floor/plasteel{ - icon_state = "L2" - }, -/area/hallway/primary/fore) -"bat" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel{ - icon_state = "L4" - }, -/area/hallway/primary/fore) -"bau" = ( -/turf/open/floor/plasteel{ - icon_state = "L6" - }, -/area/hallway/primary/fore) -"bav" = ( -/turf/open/floor/plasteel{ - icon_state = "L8" - }, -/area/hallway/primary/fore) -"baw" = ( -/turf/open/floor/plasteel{ - icon_state = "L10" - }, -/area/hallway/primary/fore) -"bax" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel{ - icon_state = "L12" - }, -/area/hallway/primary/fore) -"bay" = ( -/turf/open/floor/plasteel{ - desc = ""; - icon_state = "L14" - }, -/area/hallway/primary/fore) -"baz" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"baA" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"baB" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"baC" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"baD" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "Head of Personnel APC"; - pixel_y = 24 - }, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/crew_quarters/heads) -"baE" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/light/small, -/turf/open/floor/plating, -/area/maintenance/starboard) -"baF" = ( -/turf/closed/wall, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"baG" = ( -/obj/machinery/door/airlock/mining{ - req_access_txt = "48" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"baH" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"baI" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8; - pixel_x = 0 - }, -/turf/open/floor/plating/asteroid/airless{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"baJ" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/open/floor/plating/asteroid/airless{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"baK" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/plating/asteroid/airless{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"baL" = ( -/obj/structure/window/reinforced{ - dir = 8; - pixel_x = 0 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"baM" = ( -/obj/effect/turf_decal/stripes{ - tag = "icon-warningline (NORTH)"; - icon_state = "warningline"; - dir = 1 - }, -/turf/open/floor/plating/airless/astplate, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"baN" = ( -/obj/effect/turf_decal/stripes{ - tag = "icon-warningline (NORTHEAST)"; - icon_state = "warningline"; - dir = 5 - }, -/turf/open/floor/plating/airless/astplate, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"baO" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/structure/table, -/obj/item/phone, -/turf/open/floor/plating, -/area/maintenance/port) -"baP" = ( -/obj/structure/table, -/obj/structure/bedsheetbin, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"baQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"baR" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical{ - name = "Patient Room 1"; - req_access_txt = "5" - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"baS" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"baT" = ( -/obj/machinery/door/airlock/medical{ - name = "Medbay Break Room"; - req_access_txt = "5" - }, -/turf/open/floor/plasteel/barber, -/area/medical/medbay3) -"baU" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/closed/wall, -/area/medical/cryo) -"baV" = ( -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -23; - pixel_y = 0 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (WEST)"; - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/cryo) -"baW" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/open/floor/plasteel/white, -/area/medical/cryo) -"baX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/landmark/start{ - name = "Medical Doctor" - }, -/turf/open/floor/plasteel/white, -/area/medical/cryo) -"baY" = ( -/turf/open/floor/plasteel/white, -/area/medical/cryo) -"baZ" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (EAST)"; - icon_state = "whiteblue"; - dir = 4 - }, -/area/medical/cryo) -"bba" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (EAST)"; - icon_state = "door_open"; - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (WEST)"; - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/cryo) -"bbb" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/whitepurple/corner{ - tag = "icon-whitepurplecorner (EAST)"; - icon_state = "whitepurplecorner"; - dir = 4 - }, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bbc" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (NORTH)"; - icon_state = "whitepurple"; - dir = 1 - }, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bbd" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/whitepurple/corner{ - tag = "icon-whitepurplecorner (NORTH)"; - icon_state = "whitepurplecorner"; - dir = 1 - }, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bbe" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "Medbay Central APC"; - pixel_y = 24 - }, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/turf/open/floor/plasteel/whiteblue/corner{ - tag = "icon-whitebluecorner (EAST)"; - icon_state = "whitebluecorner"; - dir = 4 - }, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bbf" = ( -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (NORTH)"; - icon_state = "whiteblue"; - dir = 1 - }, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bbg" = ( -/turf/open/floor/plasteel/whiteblue/corner{ - tag = "icon-whitebluecorner (NORTH)"; - icon_state = "whitebluecorner"; - dir = 1 - }, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bbh" = ( -/obj/structure/chair/comfy/black, -/obj/effect/landmark/start{ - name = "Chief Medical Officer" - }, -/turf/open/floor/plasteel/cmo, -/area/medical/cmo) -"bbi" = ( -/turf/open/floor/plasteel/cmo, -/area/medical/cmo) -"bbj" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel/cmo, -/area/medical/cmo) -"bbk" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel/cmo, -/area/medical/cmo) -"bbl" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; - id = "cmo"; - name = "CMO Privacy Shutters" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/medical/cmo) -"bbm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/airlock/glass{ - name = "Central Access" - }, -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (WEST)"; - icon_state = "blue"; - dir = 8 - }, -/area/hallway/primary/port) -"bbn" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/glass{ - name = "Central Access" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/hallway/primary/port) -"bbo" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4; - initialize_directions = 11 - }, -/obj/machinery/door/airlock/glass{ - name = "Central Access" - }, -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (EAST)"; - icon_state = "blue"; - dir = 4 - }, -/area/hallway/primary/port) -"bbp" = ( -/turf/closed/wall, -/area/hallway/primary/port) -"bbq" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/hallway/primary/port) -"bbr" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass{ - name = "Grass Enclosure"; - req_access_txt = "12" - }, -/turf/open/floor/plasteel/green, -/area/hallway/primary/port) -"bbs" = ( -/obj/machinery/door/airlock/hatch{ - name = "Bridge Maintenance Access"; - req_access_txt = "0"; - req_one_access_txt = "19; 1" - }, -/turf/open/floor/plating, -/area/bridge) -"bbt" = ( -/turf/closed/wall/r_wall, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bbu" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor/shutters{ - id = "civ armory outer"; - name = "Emergency Storage" - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bbv" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/sign/securearea, -/turf/closed/wall/r_wall, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bbw" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/security{ - name = "Emergency Storage"; - req_access = null; - req_access_txt = "0"; - req_one_access_txt = "19; 3" - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bbx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/structure/sign/securearea, -/turf/closed/wall/r_wall, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bby" = ( -/turf/closed/wall, -/area/hallway/primary/starboard) -"bbz" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/hallway/primary/starboard) -"bbA" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass{ - name = "Grass Enclosure"; - req_access_txt = "12" - }, -/turf/open/floor/plasteel/green, -/area/hallway/primary/starboard) -"bbB" = ( -/obj/structure/sign/directions/medical{ - tag = "icon-direction_med (WEST)"; - icon_state = "direction_med"; - dir = 8 - }, -/obj/structure/sign/directions/evac{ - pixel_y = -10 - }, -/obj/structure/sign/directions/security{ - dir = 8; - icon_state = "direction_sec"; - pixel_y = 10; - tag = "icon-direction_sec (WEST)" - }, -/turf/closed/wall, -/area/hallway/primary/starboard) -"bbC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/airlock/glass{ - name = "Central Access" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bbD" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/airlock/glass{ - name = "Central Access" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bbE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/glass{ - name = "Central Access" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bbF" = ( -/turf/closed/wall, -/area/quartermaster/office) -"bbG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/turf/closed/wall, -/area/quartermaster/office) -"bbH" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/closet/secure_closet/miner, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTHWEST)"; - icon_state = "brown"; - dir = 9 - }, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bbI" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/closet/secure_closet/miner, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bbJ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/closet/secure_closet/miner, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bbK" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/closet/secure_closet/miner, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bbL" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/suit_storage_unit/mining/eva, -/turf/open/floor/plasteel/darkyellow, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bbM" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/ore_box, -/obj/structure/window/reinforced{ - dir = 8; - pixel_x = 0 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bbN" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "Mining APC"; - pixel_y = 24 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bbO" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/ore_box, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bbP" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/ore_box, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTHEAST)"; - icon_state = "brown"; - dir = 5 - }, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bbQ" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bbR" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/closet/secure_closet/miner, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTHWEST)"; - icon_state = "brown"; - dir = 9 - }, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bbS" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/mining{ - pixel_y = 30 - }, -/obj/structure/closet/secure_closet/miner, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bbT" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bbU" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/closet/wardrobe/miner, -/obj/item/device/radio/intercom{ - name = "Station Intercom"; - pixel_x = 0; - pixel_y = 24 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bbV" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/closet/wardrobe/miner, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTHEAST)"; - icon_state = "brown"; - dir = 5 - }, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bbW" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bbX" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"bbY" = ( -/obj/structure/window/reinforced{ - dir = 8; - pixel_x = 0 - }, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/structure/disposaloutlet{ - dir = 4 - }, -/turf/open/floor/plating/asteroid/airless{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"bbZ" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/disposal/deliveryChute{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/airless{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"bca" = ( -/obj/structure/window/reinforced{ - dir = 8; - pixel_x = 0 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/deathsposal{ - pixel_x = 30 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"bcb" = ( -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/structure/disposaloutlet{ - dir = 4 - }, -/turf/open/floor/plating/airless/astplate, -/area/maintenance/starboard) -"bcc" = ( -/obj/effect/turf_decal/stripes{ - tag = "icon-warningline (EAST)"; - icon_state = "warningline"; - dir = 4 - }, -/turf/open/floor/plating/airless/astplate, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"bcd" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/closed/wall, -/area/maintenance/port) -"bce" = ( -/obj/machinery/vending/wallmed{ - pixel_x = -24 - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bcf" = ( -/obj/structure/table, -/obj/machinery/computer/med_data/laptop, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bcg" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bch" = ( -/obj/machinery/vending/snack, -/turf/open/floor/plasteel/barber, -/area/medical/medbay3) -"bci" = ( -/obj/machinery/vending/coffee, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel/barber, -/area/medical/medbay3) -"bcj" = ( -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_y = 24 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/barber, -/area/medical/medbay3) -"bck" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/barber, -/area/medical/medbay3) -"bcl" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4; - initialize_directions = 11 - }, -/turf/closed/wall, -/area/medical/cryo) -"bcm" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - tag = "icon-freezer (EAST)"; - icon_state = "freezer"; - dir = 4 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHEAST)"; - icon_state = "camera"; - dir = 5 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (WEST)"; - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/cryo) -"bcn" = ( -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 4; - initialize_directions = 11 - }, -/turf/open/floor/plasteel/white, -/area/medical/cryo) -"bco" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8; - initialize_directions = 11 - }, -/turf/open/floor/plasteel/white, -/area/medical/cryo) -"bcp" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel/white, -/area/medical/cryo) -"bcq" = ( -/obj/structure/cable, -/obj/machinery/power/apc{ - dir = 4; - name = "Cryogenics APC"; - pixel_x = 24; - pixel_y = 0 - }, -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/wrench, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (EAST)"; - icon_state = "whiteblue"; - dir = 4 - }, -/area/medical/cryo) -"bcr" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/wall, -/area/medical/cryo) -"bcs" = ( -/turf/open/floor/plasteel/whiteblue/corner{ - tag = "icon-whitebluecorner (WEST)"; - icon_state = "whitebluecorner"; - dir = 8 - }, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bct" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8; - initialize_directions = 11 - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bcu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - name = "regular air vent"; - on = 1 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bcv" = ( -/turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bcw" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (EAST)"; - icon_state = "whiteblue"; - dir = 4 - }, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bcx" = ( -/obj/machinery/computer/crew, -/obj/structure/window/reinforced, -/turf/open/floor/plasteel/cmo, -/area/medical/cmo) -"bcy" = ( -/obj/structure/table/wood, -/obj/machinery/computer/med_data/laptop, -/obj/structure/window/reinforced, -/obj/item/folder/white{ - pixel_x = 9 - }, -/obj/item/pen/red, -/turf/open/floor/plasteel/cmo, -/area/medical/cmo) -"bcz" = ( -/obj/machinery/door/window/southleft{ - name = "CMO Desk"; - req_access_txt = "40" - }, -/mob/living/simple_animal/pet/cat/Runtime, -/turf/open/floor/plasteel/cmo, -/area/medical/cmo) -"bcA" = ( -/obj/structure/table/wood, -/obj/structure/window/reinforced, -/obj/machinery/keycard_auth, -/obj/item/stamp/cmo{ - pixel_x = 9 - }, -/turf/open/floor/plasteel/cmo, -/area/medical/cmo) -"bcB" = ( -/obj/machinery/status_display, -/turf/closed/wall, -/area/medical/cmo) -"bcC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (WEST)"; - icon_state = "blue"; - dir = 8 - }, -/area/hallway/primary/port) -"bcD" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/hallway/primary/port) -"bcE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (EAST)"; - icon_state = "blue"; - dir = 4 - }, -/area/hallway/primary/port) -"bcF" = ( -/turf/open/floor/grass, -/area/hallway/primary/port) -"bcG" = ( -/obj/structure/flora/grass/green, -/turf/open/floor/grass, -/area/hallway/primary/port) -"bcH" = ( -/turf/open/floor/plating, -/area/bridge) -"bcI" = ( -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24; - pixel_y = 0 - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bcJ" = ( -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bcK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/window/brigdoor{ - dir = 4; - name = "Security Desk"; - req_access_txt = "1" - }, -/obj/machinery/door/window/westleft{ - base_state = "right"; - dir = 8; - icon_state = "right"; - name = "Outer Window"; - req_access_txt = "0" - }, -/obj/machinery/door/poddoor/shutters{ - id = "civ armory inner"; - name = "Emergency Storage Interior Shutters" - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bcL" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/button/door{ - id = "civ armory outer"; - name = "Civilian Armory Outer Shutters"; - pixel_y = 28; - req_one_access_txt = "19; 3" - }, -/obj/machinery/camera/motion{ - c_tag = "Civ Armory Entrance"; - dir = 1; - network = null - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bcM" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/button/door{ - id = "civ armory inner"; - name = "Civilian Armory Inner Shutters"; - pixel_y = 28; - req_access_txt = "0"; - req_one_access_txt = "19; 3" - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bcN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/window/brigdoor{ - dir = 8; - name = "Security Desk"; - req_access_txt = "1" - }, -/obj/machinery/door/window/westleft{ - base_state = "right"; - dir = 4; - icon_state = "right"; - name = "Outer Window"; - req_access_txt = "0" - }, -/obj/machinery/door/poddoor/shutters{ - id = "civ armory inner"; - name = "Emergency Storage Interior Shutters" - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bcO" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 28; - pixel_y = 0 - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bcP" = ( -/turf/open/floor/grass, -/area/hallway/primary/starboard) -"bcQ" = ( -/obj/structure/flora/grass/green, -/turf/open/floor/grass, -/area/hallway/primary/starboard) -"bcR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bcS" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/disposalpipe/junction{ - tag = "icon-pipe-y (EAST)"; - icon_state = "pipe-y"; - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bcT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bcU" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall, -/area/quartermaster/office) -"bcV" = ( -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/structure/disposaloutlet{ - dir = 4 - }, -/turf/open/floor/plasteel/black, -/area/quartermaster/office) -"bcW" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "garbage" - }, -/turf/open/floor/plasteel/black, -/area/quartermaster/office) -"bcX" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/conveyor{ - dir = 8; - id = "garbage" - }, -/turf/open/floor/plasteel/black, -/area/quartermaster/office) -"bcY" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "garbage" - }, -/obj/machinery/recycler, -/turf/open/floor/plasteel/black, -/area/quartermaster/office) -"bcZ" = ( -/obj/machinery/conveyor{ - tag = "icon-conveyor0 (SOUTHEAST)"; - icon_state = "conveyor0"; - dir = 6; - id = "garbage" - }, -/turf/open/floor/plasteel/black, -/area/quartermaster/office) -"bda" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/wall, -/area/quartermaster/office) -"bdb" = ( -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (WEST)"; - icon_state = "brown"; - dir = 8 - }, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bdc" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bdd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bde" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bdf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel/darkyellow, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bdg" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel/darkyellow, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bdh" = ( -/obj/structure/window/reinforced{ - dir = 8; - pixel_x = 0 - }, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bdi" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bdj" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 2; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bdk" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (EAST)"; - icon_state = "brown"; - dir = 4 - }, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bdl" = ( -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24; - pixel_y = 0 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (WEST)"; - icon_state = "brown"; - dir = 8 - }, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bdm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bdn" = ( -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (EAST)"; - icon_state = "brown"; - dir = 4 - }, -/area/space) -"bdo" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"bdp" = ( -/obj/structure/window/reinforced{ - dir = 8; - pixel_x = 0 - }, -/turf/open/floor/plating/asteroid/airless{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"bdq" = ( -/obj/effect/turf_decal/stripes, -/turf/open/floor/plating/airless/astplate, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"bdr" = ( -/obj/effect/turf_decal/stripes{ - tag = "icon-warningline (SOUTHEAST)"; - icon_state = "warningline"; - dir = 6 - }, -/turf/open/floor/plating/airless/astplate, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"bds" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/port) -"bdt" = ( -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/obj/structure/bed/roller, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bdu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHWEST)"; - icon_state = "camera"; - dir = 10 - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bdv" = ( -/obj/structure/chair/office/light{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bdw" = ( -/obj/structure/table, -/obj/item/folder/white, -/obj/item/pen, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bdx" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/medical/patients_rooms) -"bdy" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bdz" = ( -/obj/machinery/status_display, -/turf/closed/wall, -/area/medical/medbay3) -"bdA" = ( -/turf/open/floor/plasteel/barber, -/area/medical/medbay3) -"bdB" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel/barber, -/area/medical/medbay3) -"bdC" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel/barber, -/area/medical/medbay3) -"bdD" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/portables_connector{ - tag = "icon-connector_map (EAST)"; - icon_state = "connector_map"; - dir = 4 - }, -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/structure/sign/fire{ - pixel_x = -32 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (WEST)"; - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/cryo) -"bdE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/white, -/area/medical/cryo) -"bdF" = ( -/obj/structure/bed/roller, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (EAST)"; - icon_state = "whiteblue"; - dir = 4 - }, -/area/medical/cryo) -"bdG" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/status_display, -/turf/closed/wall, -/area/medical/cryo) -"bdH" = ( -/obj/effect/landmark/start{ - name = "Medical Doctor" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bdI" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/structure/cable{ - tag = "icon-1-4"; - icon_state = "1-4" - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bdJ" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bdK" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (EAST)"; - icon_state = "whiteblue"; - dir = 4 - }, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bdL" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; - id = "cmo"; - name = "CMO Privacy Shutters" - }, -/obj/machinery/door/airlock/glass_command{ - name = "Chief Medical Officer"; - req_access_txt = "40" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/cmo, -/area/medical/cmo) -"bdM" = ( -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/turf/open/floor/plasteel/cmo, -/area/medical/cmo) -"bdN" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel/cmo, -/area/medical/cmo) -"bdO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/cmo, -/area/medical/cmo) -"bdP" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; - id = "cmo"; - name = "CMO Privacy Shutters" - }, -/obj/machinery/door/airlock/glass_command{ - name = "Chief Medical Officer"; - req_access_txt = "40" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/cmo, -/area/medical/cmo) -"bdQ" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (WEST)"; - icon_state = "blue"; - dir = 8 - }, -/area/hallway/primary/port) -"bdR" = ( -/mob/living/carbon/monkey, -/turf/open/floor/grass, -/area/hallway/primary/port) -"bdS" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bdT" = ( -/obj/machinery/camera/motion{ - c_tag = "Civ Armory West"; - dir = 8 - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bdU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bdV" = ( -/turf/closed/wall, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bdW" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor/shutters{ - id = "civ armory inner"; - name = "Emergency Storage Interior Shutters" - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bdX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/closed/wall, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bdY" = ( -/obj/machinery/camera/motion{ - c_tag = "Civ Armory East"; - dir = 4; - network = list("MiniSat") - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bdZ" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bea" = ( -/obj/structure/flora/grass/green, -/mob/living/simple_animal/cow, -/turf/open/floor/grass, -/area/hallway/primary/starboard) -"beb" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bec" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bed" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bee" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/quartermaster/office) -"bef" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/conveyor_switch/oneway{ - convdir = -1; - id = "garbage"; - name = "disposal coveyor" - }, -/obj/effect/turf_decal/stripes, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"beg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/stripes, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"beh" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1; - initialize_directions = 11 - }, -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 1 - }, -/obj/effect/turf_decal/stripes, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"bei" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/effect/turf_decal/stripes, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"bej" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"bek" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/conveyor{ - tag = "icon-conveyor0 (NORTH)"; - icon_state = "conveyor0"; - dir = 1; - id = "garbage" - }, -/turf/open/floor/plasteel/black, -/area/quartermaster/office) -"bel" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/closed/wall, -/area/quartermaster/office) -"bem" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1; - initialize_directions = 11 - }, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24; - pixel_y = 0 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (WEST)"; - icon_state = "brown"; - dir = 8 - }, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"ben" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"beo" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/landmark/start{ - name = "Shaft Miner" - }, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bep" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"beq" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"ber" = ( -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bes" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2; - initialize_directions = 11 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bet" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1; - initialize_directions = 11 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (EAST)"; - icon_state = "brown"; - dir = 4 - }, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"beu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/mining{ - name = "Mining Office"; - req_access_txt = "48" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel/delivery, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bev" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (WEST)"; - icon_state = "brown"; - dir = 8 - }, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bew" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bex" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/effect/landmark/start{ - name = "Shaft Miner" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bey" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4; - initialize_directions = 11 - }, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bez" = ( -/obj/structure/ore_box, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (EAST)"; - icon_state = "brown"; - dir = 4 - }, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"beA" = ( -/obj/structure/window/reinforced{ - dir = 8; - pixel_x = 0 - }, -/obj/structure/window/reinforced, -/turf/open/floor/plating/asteroid/airless{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"beB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/medical/patients_rooms) -"beC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall, -/area/medical/patients_rooms) -"beD" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/vending/wallmed{ - pixel_x = -24 - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"beE" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = 24 - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"beF" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/drinkingglass, -/obj/item/reagent_containers/food/drinks/drinkingglass, -/obj/item/reagent_containers/food/drinks/drinkingglass, -/obj/item/reagent_containers/food/drinks/britcup, -/turf/open/floor/plasteel/barber, -/area/medical/medbay3) -"beG" = ( -/obj/machinery/requests_console{ - announcementConsole = 0; - department = "Medbay"; - departmentType = 1; - name = "Medbay RC"; - pixel_x = 30; - pixel_y = 0; - pixel_z = 0 - }, -/obj/structure/chair/comfy/black{ - dir = 8 - }, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/turf/open/floor/plasteel/barber, -/area/medical/medbay3) -"beH" = ( -/obj/machinery/atmospherics/components/unary/tank/oxygen{ - dir = 4 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (SOUTHWEST)"; - icon_state = "whiteblue"; - dir = 10 - }, -/area/medical/cryo) -"beI" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 9 - }, -/turf/open/floor/plasteel/whiteblue/side, -/area/medical/cryo) -"beJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/whiteblue/side, -/area/medical/cryo) -"beK" = ( -/turf/open/floor/plasteel/whiteblue/side, -/area/medical/cryo) -"beL" = ( -/obj/structure/bed/roller, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (SOUTHEAST)"; - icon_state = "whiteblue"; - dir = 6 - }, -/area/medical/cryo) -"beM" = ( -/obj/structure/disposalpipe/junction{ - icon_state = "pipe-j2"; - dir = 2 - }, -/turf/closed/wall, -/area/medical/cryo) -"beN" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (WEST)"; - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medbay{ - name = "Medbay Central" - }) -"beO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) -"beP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/whiteblue/corner, -/area/medical/medbay{ - name = "Medbay Central" - }) -"beQ" = ( -/obj/structure/table/glass, -/obj/item/soap/nanotrasen, -/obj/item/reagent_containers/spray/cleaner, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/whiteblue/side, -/area/medical/medbay{ - name = "Medbay Central" - }) -"beR" = ( -/obj/machinery/vending/medical, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/whiteblue/side, -/area/medical/medbay{ - name = "Medbay Central" - }) -"beS" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/whiteblue/side, -/area/medical/medbay{ - name = "Medbay Central" - }) -"beT" = ( -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (SOUTHEAST)"; - icon_state = "whiteblue"; - dir = 6 - }, -/area/medical/medbay{ - name = "Medbay Central" - }) -"beU" = ( -/obj/structure/cable, -/obj/machinery/power/apc{ - dir = 2; - name = "CMO's Office APC"; - pixel_x = 0; - pixel_y = -24 - }, -/turf/open/floor/plasteel/cmo, -/area/medical/cmo) -"beV" = ( -/obj/machinery/light, -/obj/machinery/button/door{ - id = "cmo"; - name = "CMO Privacy Shutters"; - pixel_y = -24 - }, -/turf/open/floor/plasteel/cmo, -/area/medical/cmo) -"beW" = ( -/obj/machinery/computer/card/minor/cmo, -/obj/machinery/requests_console{ - announcementConsole = 1; - department = "Chief Medical Officer's Desk"; - departmentType = 5; - name = "Chief Medical Officer RC"; - pixel_x = 0; - pixel_y = -32 - }, -/turf/open/floor/plasteel/cmo, -/area/medical/cmo) -"beX" = ( -/obj/machinery/airalarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, -/obj/item/twohanded/required/kirbyplants, -/turf/open/floor/plasteel/cmo, -/area/medical/cmo) -"beY" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/grass, -/area/hallway/primary/port) -"beZ" = ( -/obj/machinery/airalarm{ - dir = 4; - locked = 0; - pixel_x = -23; - pixel_y = 0 - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bfa" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 2; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bfb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/table/reinforced, -/obj/item/storage/firstaid/brute{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/firstaid/fire, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bfc" = ( -/obj/structure/table/reinforced, -/obj/item/storage/firstaid/o2{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/firstaid/toxin, -/obj/machinery/button/door{ - id = "civ armory outer"; - name = "Civilian Armory Outer Shutters"; - pixel_y = 28; - req_access_txt = "19" - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bfd" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bfe" = ( -/obj/structure/table/reinforced, -/obj/item/storage/box/medipens{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/medipens/utility, -/obj/machinery/button/door{ - id = "civ armory inner"; - name = "Civilian Armory Inner Shutters"; - pixel_y = 28; - req_access_txt = "0"; - req_one_access_txt = "19; 3" - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bff" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/structure/table/reinforced, -/obj/item/storage/backpack/dufflebag/sec{ - contents = newlist(/obj/item/scalpel,/obj/item/hemostat,/obj/item/retractor,/obj/item/cautery,/obj/item/circular_saw,/obj/item/surgical_drapes,/obj/item/clothing/mask/surgical); - desc = "A large dufflebag for holding extra supplies - this one has a material inlay with space for various sharp-looking tools."; - name = "dufflebag"; - pixel_y = 5 - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bfg" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bfh" = ( -/obj/machinery/power/apc{ - cell_type = 5000; - dir = 4; - name = "Emergency Storage APC"; - pixel_x = 24; - pixel_y = 0 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bfi" = ( -/mob/living/simple_animal/cow, -/turf/open/floor/grass, -/area/hallway/primary/starboard) -"bfj" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bfk" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bfl" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/quartermaster/office) -"bfm" = ( -/turf/open/floor/plasteel, -/area/quartermaster/office) -"bfn" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"bfo" = ( -/turf/open/floor/plasteel/loadingarea{ - dir = 8 - }, -/area/quartermaster/office) -"bfp" = ( -/obj/machinery/mineral/stacking_machine{ - input_dir = 4; - stack_amt = 10 - }, -/obj/effect/turf_decal/stripes{ - tag = "icon-warningline (WEST)"; - icon_state = "warningline"; - dir = 8 - }, -/turf/open/floor/plasteel/delivery, -/area/quartermaster/office) -"bfq" = ( -/obj/machinery/conveyor{ - tag = "icon-conveyor0 (NORTH)"; - icon_state = "conveyor0"; - dir = 1; - id = "garbage" - }, -/turf/open/floor/plasteel/black, -/area/quartermaster/office) -"bfr" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -28 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (WEST)"; - icon_state = "brown"; - dir = 8 - }, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bfs" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/effect/landmark/start{ - name = "Shaft Miner" - }, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bft" = ( -/turf/open/floor/plasteel, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bfu" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8; - initialize_directions = 11 - }, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bfv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/landmark/start{ - name = "Shaft Miner" - }, -/turf/open/floor/plasteel, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bfw" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (EAST)"; - icon_state = "brown"; - dir = 4 - }, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bfx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bfy" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/table, -/obj/item/device/gps/mining, -/obj/item/device/gps/mining, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (SOUTHWEST)"; - icon_state = "brown"; - dir = 10 - }, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bfz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/airalarm{ - dir = 1; - icon_state = "alarm0"; - pixel_y = -22 - }, -/obj/structure/table, -/obj/item/pickaxe, -/obj/item/storage/bag/ore, -/turf/open/floor/plasteel/brown, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bfA" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4; - initialize_directions = 11 - }, -/turf/open/floor/plasteel/brown, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bfB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/brown, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bfC" = ( -/obj/machinery/light, -/obj/machinery/mineral/equipment_vendor, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (SOUTHEAST)"; - icon_state = "brown"; - dir = 6 - }, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bfD" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"bfE" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTH)"; - icon_state = "camera"; - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"bfF" = ( -/obj/machinery/light_switch{ - pixel_y = 24 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bfG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/table, -/obj/item/reagent_containers/syringe, -/obj/item/reagent_containers/glass/bottle/salglu_solution, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bfH" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -23; - pixel_y = 0 - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bfI" = ( -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -23; - pixel_y = 0 - }, -/obj/structure/table, -/obj/machinery/juicer, -/obj/item/reagent_containers/food/snacks/grown/apple, -/obj/item/reagent_containers/food/snacks/grown/apple, -/obj/item/reagent_containers/food/snacks/grown/apple, -/obj/item/reagent_containers/food/snacks/grown/apple, -/obj/item/reagent_containers/food/snacks/grown/apple, -/turf/open/floor/plasteel/barber, -/area/medical/medbay3) -"bfJ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/obj/effect/landmark{ - name = "xeno_spawn"; - pixel_x = -1 - }, -/turf/open/floor/plasteel/barber, -/area/medical/medbay3) -"bfK" = ( -/obj/structure/chair/comfy/black{ - dir = 8 - }, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 28; - pixel_y = 0 - }, -/turf/open/floor/plasteel/barber, -/area/medical/medbay3) -"bfL" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/closed/wall, -/area/medical/sleeper{ - name = "Sleepers" - }) -"bfM" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/medical/sleeper{ - name = "Sleepers" - }) -"bfN" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/medical/sleeper{ - name = "Sleepers" - }) -"bfO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/whiteblue, -/area/medical/sleeper{ - name = "Sleepers" - }) -"bfP" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/medical/sleeper{ - name = "Sleepers" - }) -"bfQ" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/wall, -/area/medical/sleeper{ - name = "Sleepers" - }) -"bfR" = ( -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -23; - pixel_y = 0 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (WEST)"; - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bfS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bfT" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (EAST)"; - icon_state = "whiteblue"; - dir = 4 - }, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bfU" = ( -/obj/structure/sign/chemistry, -/turf/closed/wall, -/area/medical/chemistry) -"bfV" = ( -/turf/closed/wall, -/area/medical/chemistry) -"bfW" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/medical/chemistry) -"bfX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (WEST)"; - icon_state = "blue"; - dir = 8 - }, -/area/hallway/primary/port) -"bfY" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) -"bfZ" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4; - initialize_directions = 11 - }, -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (EAST)"; - icon_state = "blue"; - dir = 4 - }, -/area/hallway/primary/port) -"bga" = ( -/obj/structure/flora/grass/green, -/mob/living/carbon/monkey, -/turf/open/floor/grass, -/area/hallway/primary/port) -"bgb" = ( -/turf/closed/wall/r_wall, -/area/hallway/primary/port) -"bgc" = ( -/turf/open/floor/plasteel/darkred/side{ - tag = "icon-darkred (NORTH)"; - icon_state = "darkred"; - dir = 1 - }, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bgd" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel/darkred/side{ - tag = "icon-darkred (NORTH)"; - icon_state = "darkred"; - dir = 1 - }, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bge" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel/darkred/side{ - tag = "icon-darkred (NORTH)"; - icon_state = "darkred"; - dir = 1 - }, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bgf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel/darkred/side{ - tag = "icon-darkred (NORTH)"; - icon_state = "darkred"; - dir = 1 - }, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bgg" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4; - initialize_directions = 11 - }, -/turf/open/floor/plasteel/darkred/side{ - tag = "icon-darkred (NORTH)"; - icon_state = "darkred"; - dir = 1 - }, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bgh" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/extinguisher_cabinet{ - pixel_x = 24 - }, -/turf/open/floor/plasteel/darkred/side{ - tag = "icon-darkred (NORTH)"; - icon_state = "darkred"; - dir = 1 - }, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bgi" = ( -/turf/closed/wall/r_wall, -/area/hallway/primary/starboard) -"bgj" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bgk" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/quartermaster/office) -"bgl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -28 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"bgm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"bgn" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"bgo" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/mineral/stacking_unit_console{ - dir = 1; - machinedir = 1; - pixel_y = -30 - }, -/obj/effect/turf_decal/stripes{ - tag = "icon-warningline (WEST)"; - icon_state = "warningline"; - dir = 8 - }, -/turf/open/floor/plasteel/delivery, -/area/quartermaster/office) -"bgp" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/conveyor{ - tag = "icon-conveyor0 (NORTH)"; - icon_state = "conveyor0"; - dir = 1; - id = "garbage" - }, -/obj/structure/sign/deathsposal{ - pixel_x = 30 - }, -/turf/open/floor/plasteel/black, -/area/quartermaster/office) -"bgq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/closed/wall, -/area/quartermaster/office) -"bgr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/ore_box, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (SOUTHWEST)"; - icon_state = "brown"; - dir = 10 - }, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bgs" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/brown, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bgt" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTH)"; - icon_state = "camera"; - dir = 1 - }, -/turf/open/floor/plasteel/brown, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bgu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/brown, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bgv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/obj/machinery/airalarm{ - dir = 1; - icon_state = "alarm0"; - pixel_y = -22 - }, -/turf/open/floor/plasteel/brown, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bgw" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/brown, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bgx" = ( -/turf/open/floor/plasteel/brown, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bgy" = ( -/obj/structure/table, -/obj/item/pickaxe, -/obj/item/shovel, -/turf/open/floor/plasteel/brown, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bgz" = ( -/obj/structure/table, -/obj/item/storage/bag/ore, -/obj/item/storage/bag/ore, -/obj/item/storage/bag/ore, -/turf/open/floor/plasteel/brown, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bgA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/table, -/obj/item/device/gps/mining, -/obj/item/device/gps/mining, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (SOUTHEAST)"; - icon_state = "brown"; - dir = 6 - }, -/area/quartermaster/miningdock{ - name = "\improper Mining Office" - }) -"bgB" = ( -/turf/closed/wall, -/area/quartermaster/storage) -"bgC" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/quartermaster/storage) -"bgD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/quartermaster/storage) -"bgE" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/effect/landmark{ - name = "blobstart" - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/maintenance/port) -"bgF" = ( -/obj/machinery/atmospherics/components/binary/valve{ - dir = 4 - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/maintenance/port) -"bgG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/glass_engineering{ - name = "Security Atmos Closet"; - req_access_txt = "32" - }, -/turf/open/floor/plating{ - dir = 1; - icon_state = "delivery" - }, -/area/maintenance/port) -"bgH" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plating, -/area/maintenance/port) -"bgI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/iv_drip, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bgJ" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bgK" = ( -/obj/structure/table, -/obj/machinery/microwave, -/obj/item/storage/box/donkpockets, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -28 - }, -/turf/open/floor/plasteel/barber, -/area/medical/medbay3) -"bgL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/barber, -/area/medical/medbay3) -"bgM" = ( -/obj/machinery/photocopier, -/turf/open/floor/plasteel/barber, -/area/medical/medbay3) -"bgN" = ( -/turf/closed/wall, -/area/medical/sleeper{ - name = "Sleepers" - }) -"bgO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/sleeper, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (NORTHWEST)"; - icon_state = "whiteblue"; - dir = 9 - }, -/area/medical/sleeper{ - name = "Sleepers" - }) -"bgP" = ( -/obj/machinery/iv_drip, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (NORTH)"; - icon_state = "whiteblue"; - dir = 1 - }, -/area/medical/sleeper{ - name = "Sleepers" - }) -"bgQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (NORTH)"; - icon_state = "whiteblue"; - dir = 1 - }, -/area/medical/sleeper{ - name = "Sleepers" - }) -"bgR" = ( -/obj/machinery/airalarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/obj/machinery/sleeper, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (NORTHEAST)"; - icon_state = "whiteblue"; - dir = 5 - }, -/area/medical/sleeper{ - name = "Sleepers" - }) -"bgS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/whiteblue/corner{ - tag = "icon-whitebluecorner (EAST)"; - icon_state = "whitebluecorner"; - dir = 4 - }, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bgT" = ( -/obj/machinery/chem_dispenser, -/obj/item/reagent_containers/glass/beaker/large, -/turf/open/floor/plasteel/whiteyellow/side{ - tag = "icon-whiteyellow (NORTHWEST)"; - icon_state = "whiteyellow"; - dir = 9 - }, -/area/medical/chemistry) -"bgU" = ( -/obj/machinery/chem_master, -/obj/item/book/manual/wiki/chemistry, -/turf/open/floor/plasteel/whiteyellow/side{ - tag = "icon-whiteyellow (NORTH)"; - icon_state = "whiteyellow"; - dir = 1 - }, -/area/medical/chemistry) -"bgV" = ( -/obj/machinery/smartfridge/chemistry/preloaded{ - name = "chemical component fridge" - }, -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel/whiteyellow/side{ - tag = "icon-whiteyellow (NORTH)"; - icon_state = "whiteyellow"; - dir = 1 - }, -/area/medical/chemistry) -"bgW" = ( -/obj/structure/table, -/obj/machinery/vending/wallmed{ - pixel_y = 28 - }, -/obj/item/hand_labeler, -/obj/item/clothing/glasses/science, -/turf/open/floor/plasteel/whiteyellow/side{ - tag = "icon-whiteyellow (NORTH)"; - icon_state = "whiteyellow"; - dir = 1 - }, -/area/medical/chemistry) -"bgX" = ( -/obj/structure/table, -/obj/machinery/reagentgrinder, -/obj/item/stack/sheet/mineral/plasma{ - layer = 2.9; - pixel_y = 4 - }, -/obj/item/stack/sheet/mineral/plasma, -/turf/open/floor/plasteel/whiteyellow/side{ - tag = "icon-whiteyellow (NORTH)"; - icon_state = "whiteyellow"; - dir = 1 - }, -/area/medical/chemistry) -"bgY" = ( -/obj/structure/sink{ - pixel_y = 24 - }, -/turf/open/floor/plasteel/whiteyellow/side{ - tag = "icon-whiteyellow (NORTH)"; - icon_state = "whiteyellow"; - dir = 1 - }, -/area/medical/chemistry) -"bgZ" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/chem_master, -/obj/item/book/manual/wiki/chemistry, -/turf/open/floor/plasteel/whiteyellow/side{ - tag = "icon-whiteyellow (NORTH)"; - icon_state = "whiteyellow"; - dir = 1 - }, -/area/medical/chemistry) -"bha" = ( -/obj/machinery/chem_dispenser, -/obj/item/reagent_containers/glass/beaker/large, -/turf/open/floor/plasteel/whiteyellow/side{ - tag = "icon-whiteyellow (NORTHEAST)"; - icon_state = "whiteyellow"; - dir = 5 - }, -/area/medical/chemistry) -"bhb" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/grass, -/area/hallway/primary/port) -"bhc" = ( -/obj/structure/window/reinforced/fulltile, -/obj/structure/grille, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/hallway/primary/port) -"bhd" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/emergency, -/turf/open/floor/plasteel/black, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bhe" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/rack, -/obj/item/storage/toolbox/mechanical, -/turf/open/floor/plasteel/black, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bhf" = ( -/obj/structure/rack, -/obj/item/storage/box/zipties, -/turf/open/floor/plasteel/black, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bhg" = ( -/obj/structure/rack, -/obj/item/storage/box/silver_ids{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/ids, -/turf/open/floor/plasteel/black, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bhh" = ( -/obj/structure/rack, -/obj/item/clothing/suit/armor/bulletproof{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/suit/armor/bulletproof{ - pixel_y = 0 - }, -/obj/item/clothing/suit/armor/bulletproof{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/clothing/head/helmet/alt{ - layer = 3.00001; - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/head/helmet/alt{ - layer = 3.00001 - }, -/obj/item/clothing/head/helmet/alt{ - layer = 3.00001; - pixel_x = 3; - pixel_y = -3 - }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bhi" = ( -/obj/structure/rack, -/obj/item/storage/box/flashbangs, -/turf/open/floor/plasteel/black, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bhj" = ( -/obj/structure/rack, -/obj/item/storage/box/flashes, -/turf/open/floor/plasteel/black, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bhk" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/structure/rack, -/obj/item/storage/box/mechabeacons, -/turf/open/floor/plasteel/black, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bhl" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/rack, -/obj/item/storage/box/teargas, -/turf/open/floor/plasteel/black, -/area/ai_monitored/security/armory{ - name = "Emergency Storage" - }) -"bhm" = ( -/obj/structure/window/reinforced/fulltile, -/obj/structure/grille, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/hallway/primary/starboard) -"bhn" = ( -/obj/effect/landmark/start{ - name = "Cargo Technician" - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"bho" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"bhp" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"bhq" = ( -/obj/machinery/disposal/deliveryChute{ - tag = "icon-intake (NORTH)"; - icon_state = "intake"; - dir = 1 - }, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/plasteel/black, -/area/quartermaster/office) -"bhr" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/quartermaster/office) -"bhs" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/door/airlock/mining{ - name = "Mining Office"; - req_access_txt = "48" - }, -/turf/open/floor/plasteel/delivery, -/area/quartermaster/office) -"bht" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall, -/area/quartermaster/office) -"bhu" = ( -/turf/closed/wall, -/area/quartermaster/sorting{ - name = "\improper Warehouse" - }) -"bhv" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/quartermaster/sorting{ - name = "\improper Warehouse" - }) -"bhw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/quartermaster/sorting{ - name = "\improper Warehouse" - }) -"bhx" = ( -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTHWEST)"; - icon_state = "brown"; - dir = 9 - }, -/area/quartermaster/storage) -"bhy" = ( -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/storage) -"bhz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/storage) -"bhA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/storage) -"bhB" = ( -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/storage) -"bhC" = ( -/obj/item/device/radio/intercom{ - name = "Station Intercom"; - pixel_x = 0; - pixel_y = 24 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/storage) -"bhD" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/storage) -"bhE" = ( -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTHEAST)"; - icon_state = "brown"; - dir = 5 - }, -/area/quartermaster/storage) -"bhF" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/maintenance/port) -"bhG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bhH" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical{ - name = "Patient Room 2"; - req_access_txt = "5" - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bhI" = ( -/obj/structure/sign/examroom, -/turf/closed/wall, -/area/medical/medbay3) -"bhJ" = ( -/obj/machinery/newscaster, -/turf/closed/wall, -/area/medical/medbay3) -"bhK" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical{ - name = "Medbay Break Room"; - req_access_txt = "5" - }, -/turf/open/floor/plasteel/barber, -/area/medical/medbay3) -"bhL" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/medical/medbay3) -"bhM" = ( -/obj/machinery/power/apc{ - dir = 8; - name = "Sleeper Room APC"; - pixel_x = -24; - pixel_y = 0 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (WEST)"; - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/sleeper{ - name = "Sleepers" - }) -"bhN" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel/white, -/area/medical/sleeper{ - name = "Sleepers" - }) -"bhO" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8; - initialize_directions = 11 - }, -/turf/open/floor/plasteel/white, -/area/medical/sleeper{ - name = "Sleepers" - }) -"bhP" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel/white, -/area/medical/sleeper{ - name = "Sleepers" - }) -"bhQ" = ( -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (EAST)"; - icon_state = "whiteblue"; - dir = 4 - }, -/area/medical/sleeper{ - name = "Sleepers" - }) -"bhR" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/sign/examroom, -/turf/closed/wall, -/area/medical/sleeper{ - name = "Sleepers" - }) -"bhS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/noticeboard{ - dir = 8; - pixel_x = 27; - pixel_y = 0 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/whiteyellow/corner, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bhT" = ( -/obj/structure/table, -/obj/item/reagent_containers/dropper, -/obj/item/reagent_containers/dropper, -/obj/item/storage/pill_bottle/epinephrine, -/obj/item/storage/pill_bottle/charcoal, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker/large, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/turf/open/floor/plasteel/white, -/area/medical/chemistry) -"bhU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/obj/structure/chair/office/dark{ - dir = 1 - }, -/obj/effect/landmark/start{ - name = "Chemist" - }, -/turf/open/floor/plasteel/white, -/area/medical/chemistry) -"bhV" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel/white, -/area/medical/chemistry) -"bhW" = ( -/obj/machinery/chem_heater, -/turf/open/floor/plasteel/white, -/area/medical/chemistry) -"bhX" = ( -/turf/open/floor/plasteel/white, -/area/medical/chemistry) -"bhY" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel/white, -/area/medical/chemistry) -"bhZ" = ( -/obj/structure/chair/office/dark{ - dir = 4 - }, -/obj/effect/landmark/start{ - name = "Chemist" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whiteyellow/side{ - tag = "icon-whiteyellow (EAST)"; - icon_state = "whiteyellow"; - dir = 4 - }, -/area/medical/chemistry) -"bia" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/eastright{ - base_state = "left"; - dir = 8; - icon_state = "left"; - name = "Chemistry Desk"; - req_access_txt = "33" - }, -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (EAST)"; - icon_state = "door_open"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/orange, -/area/medical/chemistry) -"bib" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (WEST)"; - icon_state = "blue"; - dir = 8 - }, -/area/hallway/primary/port) -"bic" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/hallway/primary/port) -"bid" = ( -/obj/structure/window/reinforced/fulltile, -/obj/structure/grille, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/security/checkpoint) -"bie" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/computer/security, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint) -"bif" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen/red, -/obj/item/device/radio/intercom{ - name = "Station Intercom"; - pixel_x = 0; - pixel_y = 24 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint) -"big" = ( -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint) -"bih" = ( -/obj/structure/table, -/obj/machinery/recharger, -/obj/machinery/light_switch{ - pixel_y = 24 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHEAST)"; - icon_state = "camera"; - dir = 6 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint) -"bii" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/structure/filingcabinet/security, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint) -"bij" = ( -/turf/closed/wall/r_wall, -/area/bridge) -"bik" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor/preopen{ - id = "bridge blast"; - layer = 2.9; - name = "bridge blast door" - }, -/obj/structure/sign/electricshock{ - pixel_x = -32 - }, -/turf/open/floor/plating, -/area/bridge) -"bil" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor/preopen{ - id = "bridge blast"; - layer = 2.9; - name = "bridge blast door" - }, -/turf/open/floor/plating, -/area/bridge) -"bim" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor/preopen{ - id = "bridge blast"; - layer = 2.9; - name = "bridge blast door" - }, -/turf/open/floor/plating, -/area/bridge) -"bin" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor/preopen{ - id = "bridge blast"; - layer = 2.9; - name = "bridge blast door" - }, -/turf/open/floor/plating, -/area/bridge) -"bio" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/cable, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor/preopen{ - id = "bridge blast"; - layer = 2.9; - name = "bridge blast door" - }, -/obj/structure/sign/electricshock{ - pixel_x = 32 - }, -/turf/open/floor/plating, -/area/bridge) -"bip" = ( -/obj/structure/table, -/obj/machinery/recharger, -/obj/machinery/light_switch{ - pixel_y = 24 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint) -"biq" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen/red, -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHEAST)"; - icon_state = "camera"; - dir = 6 - }, -/obj/item/device/radio/intercom{ - name = "Station Intercom"; - pixel_x = 0; - pixel_y = 24 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint) -"bir" = ( -/obj/machinery/airalarm{ - dir = 4; - locked = 0; - pixel_x = -23; - pixel_y = 0 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"bis" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"bit" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"biu" = ( -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/turf/closed/wall, -/area/quartermaster/office) -"biv" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, -/turf/closed/wall, -/area/quartermaster/office) -"biw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTHWEST)"; - icon_state = "brown"; - dir = 9 - }, -/area/quartermaster/office) -"bix" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/office) -"biy" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/office) -"biz" = ( -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTHEAST)"; - icon_state = "brown"; - dir = 5 - }, -/area/quartermaster/office) -"biA" = ( -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTHWEST)"; - icon_state = "brown"; - dir = 9 - }, -/area/quartermaster/sorting{ - name = "\improper Warehouse" - }) -"biB" = ( -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=8"; - dir = 8; - freq = 1400; - location = "QM #1" - }, -/obj/effect/turf_decal/bot, -/mob/living/simple_animal/bot/mulebot{ - beacon_freq = 1400; - home_destination = "QM #1"; - suffix = "#1" - }, -/turf/open/floor/plasteel, -/area/quartermaster/sorting{ - name = "\improper Warehouse" - }) -"biC" = ( -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=8"; - dir = 8; - freq = 1400; - location = "QM #2" - }, -/obj/effect/turf_decal/bot, -/mob/living/simple_animal/bot/mulebot{ - home_destination = "QM #2"; - suffix = "#2" - }, -/turf/open/floor/plasteel, -/area/quartermaster/sorting{ - name = "\improper Warehouse" - }) -"biD" = ( -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=8"; - dir = 8; - freq = 1400; - location = "QM #3" - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/quartermaster/sorting{ - name = "\improper Warehouse" - }) -"biE" = ( -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=8"; - dir = 8; - freq = 1400; - location = "QM #4" - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/quartermaster/sorting{ - name = "\improper Warehouse" - }) -"biF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTHEAST)"; - icon_state = "brown"; - dir = 5 - }, -/area/quartermaster/sorting{ - name = "\improper Warehouse" - }) -"biG" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (WEST)"; - icon_state = "brown"; - dir = 8 - }, -/area/quartermaster/storage) -"biH" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 2; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel{ - icon_state = "bot" - }, -/area/quartermaster/storage) -"biI" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8; - initialize_directions = 11 - }, -/obj/structure/closet/crate{ - icon_state = "crateopen"; - opened = 1 - }, -/turf/open/floor/plasteel{ - icon_state = "bot" - }, -/area/quartermaster/storage) -"biJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "bot" - }, -/area/quartermaster/storage) -"biK" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/storage) -"biL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "bot" - }, -/area/quartermaster/storage) -"biM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel{ - icon_state = "bot" - }, -/area/quartermaster/storage) -"biN" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (EAST)"; - icon_state = "brown"; - dir = 4 - }, -/area/quartermaster/storage) -"biO" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/maintenance/port) -"biP" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHEAST)"; - icon_state = "camera"; - dir = 6 - }, -/turf/open/floor/plasteel/whiteblue, -/area/medical/medbay3) -"biQ" = ( -/turf/open/floor/plasteel/whiteblue, -/area/medical/medbay3) -"biR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/whiteblue, -/area/medical/medbay3) -"biS" = ( -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (EAST)"; - icon_state = "door_open"; - dir = 4 - }, -/turf/open/floor/plasteel/whiteblue, -/area/medical/sleeper{ - name = "Sleepers" - }) -"biT" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (WEST)"; - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/sleeper{ - name = "Sleepers" - }) -"biU" = ( -/obj/effect/landmark/start{ - name = "Medical Doctor" - }, -/turf/open/floor/plasteel/white, -/area/medical/sleeper{ - name = "Sleepers" - }) -"biV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/white, -/area/medical/sleeper{ - name = "Sleepers" - }) -"biW" = ( -/turf/open/floor/plasteel/white, -/area/medical/sleeper{ - name = "Sleepers" - }) -"biX" = ( -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (EAST)"; - icon_state = "door_open"; - dir = 4 - }, -/turf/open/floor/plasteel/whiteblue, -/area/medical/sleeper{ - name = "Sleepers" - }) -"biY" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/whiteyellow/side{ - tag = "icon-whiteyellow (EAST)"; - icon_state = "whiteyellow"; - dir = 4 - }, -/area/medical/medbay{ - name = "Medbay Central" - }) -"biZ" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass_medical{ - id_tag = null; - name = "Chemistry Lab"; - req_access_txt = "5; 33" - }, -/turf/open/floor/plasteel/orange, -/area/medical/chemistry) -"bja" = ( -/turf/open/floor/plasteel/whiteyellow/side{ - tag = "icon-whiteyellow (WEST)"; - icon_state = "whiteyellow"; - dir = 8 - }, -/area/medical/chemistry) -"bjb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/white, -/area/medical/chemistry) -"bjc" = ( -/obj/structure/closet/secure_closet/chemical, -/turf/open/floor/plasteel/white, -/area/medical/chemistry) -"bjd" = ( -/obj/machinery/smartfridge/chemistry/preloaded{ - name = "chemical component fridge" - }, -/turf/open/floor/plasteel/whiteyellow/side{ - tag = "icon-whiteyellow (EAST)"; - icon_state = "whiteyellow"; - dir = 4 - }, -/area/medical/chemistry) -"bje" = ( -/turf/closed/wall/r_wall, -/area/security/checkpoint) -"bjf" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/obj/machinery/computer/secure_data, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint) -"bjg" = ( -/obj/structure/chair/office/dark{ - dir = 8 - }, -/obj/machinery/firealarm{ - dir = 1; - pixel_x = 0; - pixel_y = -26 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint) -"bjh" = ( -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint) -"bji" = ( -/obj/machinery/button/door{ - id = "bridge door west"; - name = "Port Bridge Door Control"; - pixel_x = 0; - pixel_y = -24; - req_access_txt = "19,1" - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint) -"bjj" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 2; - name = "regular air scrubber"; - on = 1 - }, -/obj/structure/reagent_dispensers/peppertank{ - pixel_y = -28 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint) -"bjk" = ( -/obj/machinery/computer/med_data, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"bjl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/computer/card, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"bjm" = ( -/obj/machinery/computer/crew, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"bjn" = ( -/obj/machinery/computer/station_alert, -/turf/open/floor/plasteel/darkbrown, -/area/bridge) -"bjo" = ( -/obj/machinery/computer/monitor{ - name = "bridge power monitoring console" - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/turf/open/floor/plasteel/darkbrown, -/area/bridge) -"bjp" = ( -/obj/machinery/computer/atmos_alert, -/turf/open/floor/plasteel/darkbrown, -/area/bridge) -"bjq" = ( -/obj/machinery/computer/security, -/turf/open/floor/plasteel/darkred, -/area/bridge) -"bjr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/machinery/computer/secure_data, -/turf/open/floor/plasteel/darkred, -/area/bridge) -"bjs" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/computer/prisoner, -/turf/open/floor/plasteel/darkred, -/area/bridge) -"bjt" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/obj/structure/reagent_dispensers/peppertank{ - pixel_y = -28 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint) -"bju" = ( -/obj/machinery/button/door{ - id = "bridge door east"; - name = "Starbord Bridge Door Control"; - pixel_x = 0; - pixel_y = -24; - req_access_txt = "19,1" - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint) -"bjv" = ( -/obj/structure/chair/office/dark{ - dir = 4 - }, -/obj/machinery/firealarm{ - dir = 1; - pixel_x = 0; - pixel_y = -26 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint) -"bjw" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 2; - name = "regular air scrubber"; - on = 1 - }, -/obj/machinery/computer/secure_data, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint) -"bjx" = ( -/obj/structure/table, -/obj/item/hand_labeler, -/obj/item/hand_labeler_refill, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"bjy" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (WEST)"; - icon_state = "brown"; - dir = 8 - }, -/area/quartermaster/office) -"bjz" = ( -/obj/structure/cable{ - tag = "icon-1-4"; - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"bjA" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"bjB" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (EAST)"; - icon_state = "brown"; - dir = 4 - }, -/area/quartermaster/office) -"bjC" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/poddoor/shutters{ - id = "qm_warehouse"; - name = "warehouse shutters" - }, -/obj/machinery/button/door{ - id = "qm_warehouse"; - name = "Warehouse Door Control"; - pixel_x = -1; - pixel_y = 24; - req_access_txt = "31" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/delivery, -/area/quartermaster/sorting{ - name = "\improper Warehouse" - }) -"bjD" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (WEST)"; - icon_state = "brown"; - dir = 8 - }, -/area/quartermaster/sorting{ - name = "\improper Warehouse" - }) -"bjE" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/closet/crate{ - name = "Silver Crate" - }, -/turf/open/floor/plasteel/delivery, -/area/quartermaster/sorting{ - name = "\improper Warehouse" - }) -"bjF" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/delivery, -/area/quartermaster/sorting{ - name = "\improper Warehouse" - }) -"bjG" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/obj/structure/closet/crate{ - icon_state = "crateopen"; - opened = 1 - }, -/turf/open/floor/plasteel/delivery, -/area/quartermaster/sorting{ - name = "\improper Warehouse" - }) -"bjH" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/delivery, -/area/quartermaster/sorting{ - name = "\improper Warehouse" - }) -"bjI" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4; - initialize_directions = 11 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (EAST)"; - icon_state = "brown"; - dir = 4 - }, -/area/quartermaster/sorting{ - name = "\improper Warehouse" - }) -"bjJ" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (WEST)"; - icon_state = "brown"; - dir = 8 - }, -/area/quartermaster/storage) -"bjK" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/quartermaster/storage) -"bjL" = ( -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/storage) -"bjM" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4; - initialize_directions = 11 - }, -/turf/open/floor/plasteel, -/area/quartermaster/storage) -"bjN" = ( -/turf/open/floor/plasteel, -/area/quartermaster/storage) -"bjO" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (EAST)"; - icon_state = "brown"; - dir = 4 - }, -/area/quartermaster/storage) -"bjP" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/rack, -/obj/item/storage/box/lights/mixed, -/turf/open/floor/plating, -/area/maintenance/starboard) -"bjQ" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) -"bjR" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/maintenance/port) -"bjS" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4"; - tag = "" - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bjT" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bjU" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/obj/machinery/firealarm{ - dir = 1; - pixel_x = 0; - pixel_y = -26 - }, -/turf/open/floor/plasteel/whiteblue, -/area/medical/medbay3) -"bjV" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/obj/machinery/light, -/turf/open/floor/plasteel/whiteblue, -/area/medical/medbay3) -"bjW" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/turf/open/floor/plasteel/whiteblue, -/area/medical/medbay3) -"bjX" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/whiteblue, -/area/medical/medbay3) -"bjY" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/turf/open/floor/plasteel/whiteblue, -/area/medical/medbay3) -"bjZ" = ( -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (EAST)"; - icon_state = "door_open"; - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/whiteblue, -/area/medical/sleeper{ - name = "Sleepers" - }) -"bka" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (SOUTHWEST)"; - icon_state = "whiteblue"; - dir = 10 - }, -/area/medical/sleeper{ - name = "Sleepers" - }) -"bkb" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/whiteblue/side, -/area/medical/sleeper{ - name = "Sleepers" - }) -"bkc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/whiteblue/side, -/area/medical/sleeper{ - name = "Sleepers" - }) -"bkd" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (SOUTHEAST)"; - icon_state = "whiteblue"; - dir = 6 - }, -/area/medical/sleeper{ - name = "Sleepers" - }) -"bke" = ( -/obj/item/device/radio/intercom{ - broadcasting = 0; - freerange = 0; - frequency = 1485; - listening = 1; - name = "Station Intercom (Medbay)"; - pixel_x = 0; - pixel_y = -30 - }, -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (EAST)"; - icon_state = "door_open"; - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/whiteblue, -/area/medical/sleeper{ - name = "Sleepers" - }) -"bkf" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (WEST)"; - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bkg" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bkh" = ( -/obj/machinery/power/apc{ - dir = 4; - name = "Chemistry APC"; - pixel_x = 24; - pixel_y = 0 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/turf/open/floor/plasteel/whiteyellow/corner{ - tag = "icon-whiteyellowcorner (EAST)"; - icon_state = "whiteyellowcorner"; - dir = 4 - }, -/area/medical/chemistry) -"bki" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/structure/closet/wardrobe/chemistry_white, -/obj/item/storage/backpack/chemistry, -/turf/open/floor/plasteel/whiteyellow/side{ - tag = "icon-whiteyellow (SOUTHWEST)"; - icon_state = "whiteyellow"; - dir = 10 - }, -/area/medical/chemistry) -"bkj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/table/glass, -/obj/item/storage/box/beakers{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/storage/box/pillbottles{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/syringes, -/turf/open/floor/plasteel/whiteyellow/side, -/area/medical/chemistry) -"bkk" = ( -/obj/structure/table/glass, -/obj/item/stack/cable_coil/orange, -/obj/item/stack/cable_coil/orange, -/obj/item/clothing/glasses/science, -/obj/machinery/reagentgrinder, -/turf/open/floor/plasteel/whiteyellow/side, -/area/medical/chemistry) -"bkl" = ( -/obj/structure/table/glass, -/obj/item/grenade/chem_grenade, -/obj/item/grenade/chem_grenade, -/obj/item/grenade/chem_grenade, -/obj/item/grenade/chem_grenade, -/obj/item/screwdriver, -/turf/open/floor/plasteel/whiteyellow/side, -/area/medical/chemistry) -"bkm" = ( -/turf/open/floor/plasteel/whiteyellow/side, -/area/medical/chemistry) -"bkn" = ( -/obj/structure/disposalpipe/trunk, -/obj/machinery/disposal/bin, -/obj/machinery/requests_console{ - department = "Chemistry"; - departmentType = 2; - pixel_x = 0; - pixel_y = -30 - }, -/turf/open/floor/plasteel/whiteyellow/side{ - tag = "icon-whiteyellow (SOUTHEAST)"; - icon_state = "whiteyellow"; - dir = 6 - }, -/area/medical/chemistry) -"bko" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8; - initialize_directions = 11 - }, -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (WEST)"; - icon_state = "blue"; - dir = 8 - }, -/area/hallway/primary/port) -"bkp" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) -"bkq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/newscaster/security_unit, -/turf/closed/wall/r_wall, -/area/security/checkpoint) -"bkr" = ( -/obj/machinery/door/airlock/security{ - name = "Security Checkpoint"; - req_access = null; - req_access_txt = "1" - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint) -"bks" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall/r_wall, -/area/security/checkpoint) -"bkt" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/table, -/obj/item/storage/firstaid/regular, -/obj/machinery/status_display{ - dir = 8; - pixel_x = -32 - }, -/turf/open/floor/plasteel/darkblue/side{ - tag = "icon-darkblue (NORTH)"; - icon_state = "darkblue"; - dir = 1 - }, -/area/bridge) -"bku" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/chair/office/dark{ - dir = 1 - }, -/turf/open/floor/plasteel/darkblue/side{ - tag = "icon-darkblue (NORTH)"; - icon_state = "darkblue"; - dir = 1 - }, -/area/bridge) -"bkv" = ( -/obj/structure/table, -/obj/item/device/healthanalyzer, -/turf/open/floor/plasteel/darkblue/side{ - tag = "icon-darkblue (NORTH)"; - icon_state = "darkblue"; - dir = 1 - }, -/area/bridge) -"bkw" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/turf/open/floor/plasteel/darkbrown/side{ - tag = "icon-darkbrown (NORTH)"; - icon_state = "darkbrown"; - dir = 1 - }, -/area/bridge) -"bkx" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/chair/office/dark{ - dir = 1 - }, -/turf/open/floor/plasteel/darkbrown/side{ - tag = "icon-darkbrown (NORTH)"; - icon_state = "darkbrown"; - dir = 1 - }, -/area/bridge) -"bky" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/obj/structure/table, -/obj/item/storage/toolbox/emergency{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/storage/toolbox/mechanical, -/obj/item/device/multitool, -/turf/open/floor/plasteel/darkbrown/side{ - tag = "icon-darkbrown (NORTH)"; - icon_state = "darkbrown"; - dir = 1 - }, -/area/bridge) -"bkz" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/obj/structure/table, -/turf/open/floor/plasteel/darkred/side{ - tag = "icon-darkred (NORTH)"; - icon_state = "darkred"; - dir = 1 - }, -/area/bridge) -"bkA" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/obj/structure/chair/office/dark{ - dir = 1 - }, -/obj/machinery/button/door{ - dir = 8; - id = "civ armory rack"; - name = "Civilian Armory Rack Shutters"; - pixel_x = -28; - pixel_y = 0 - }, -/turf/open/floor/plasteel/darkred/side{ - tag = "icon-darkred (NORTH)"; - icon_state = "darkred"; - dir = 1 - }, -/area/bridge) -"bkB" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/obj/structure/table, -/obj/item/storage/box/zipties, -/obj/item/device/assembly/flash, -/obj/machinery/status_display{ - dir = 4; - pixel_x = 32 - }, -/turf/open/floor/plasteel/darkred/side{ - tag = "icon-darkred (NORTH)"; - icon_state = "darkred"; - dir = 1 - }, -/area/bridge) -"bkC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall/r_wall, -/area/security/checkpoint) -"bkD" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/newscaster/security_unit, -/turf/closed/wall/r_wall, -/area/security/checkpoint) -"bkE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/security/checkpoint) -"bkF" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/hallway/primary/starboard) -"bkG" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/turf/open/floor/plating, -/area/hallway/primary/starboard) -"bkH" = ( -/obj/structure/table, -/obj/machinery/computer/stockexchange, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"bkI" = ( -/obj/structure/chair/office/dark{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"bkJ" = ( -/obj/machinery/door/airlock/glass_mining{ - name = "Mailroom"; - req_access_txt = "0"; - req_one_access_txt = "48;50" - }, -/turf/open/floor/plasteel/delivery, -/area/quartermaster/office) -"bkK" = ( -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (WEST)"; - icon_state = "brown"; - dir = 8 - }, -/area/quartermaster/office) -"bkL" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"bkM" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"bkN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (EAST)"; - icon_state = "brown"; - dir = 4 - }, -/area/quartermaster/office) -"bkO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/quartermaster/sorting{ - name = "\improper Warehouse" - }) -"bkP" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (WEST)"; - icon_state = "brown"; - dir = 8 - }, -/area/quartermaster/sorting{ - name = "\improper Warehouse" - }) -"bkQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/sorting{ - name = "\improper Warehouse" - }) -"bkR" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/quartermaster/sorting{ - name = "\improper Warehouse" - }) -"bkS" = ( -/turf/open/floor/plasteel, -/area/quartermaster/sorting{ - name = "\improper Warehouse" - }) -"bkT" = ( -/obj/machinery/power/apc{ - dir = 4; - name = "Warehouse APC"; - pixel_x = 27; - pixel_y = 0 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (EAST)"; - icon_state = "brown"; - dir = 4 - }, -/area/quartermaster/sorting{ - name = "\improper Warehouse" - }) -"bkU" = ( -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (WEST)"; - icon_state = "brown"; - dir = 8 - }, -/area/quartermaster/storage) -"bkV" = ( -/obj/structure/closet/crate/internals, -/turf/open/floor/plasteel{ - icon_state = "bot" - }, -/area/quartermaster/storage) -"bkW" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel{ - icon_state = "bot" - }, -/area/quartermaster/storage) -"bkX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel{ - icon_state = "bot" - }, -/area/quartermaster/storage) -"bkY" = ( -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (EAST)"; - icon_state = "brown"; - dir = 4 - }, -/area/quartermaster/storage) -"bkZ" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/quartermaster/storage) -"bla" = ( -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/supply) -"blb" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/supply) -"blc" = ( -/turf/closed/wall/r_wall, -/area/medical/medbay3) -"bld" = ( -/obj/machinery/door/firedoor/heavy, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/door/poddoor/shutters{ - id = "medsec"; - name = "Secure Medbay Storage" - }, -/turf/open/floor/plating{ - dir = 1; - icon_state = "delivery" - }, -/area/medical/medbay3) -"ble" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor/shutters{ - id = "medsec"; - name = "Secure Medbay Storage" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating{ - dir = 1; - icon_state = "delivery" - }, -/area/medical/medbay3) -"blf" = ( -/obj/machinery/button/door{ - id = "medsec"; - name = "Secure Medbay Storage"; - req_access_txt = "5" - }, -/turf/closed/wall/r_wall, -/area/medical/medbay3) -"blg" = ( -/turf/closed/wall/r_wall, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"blh" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"bli" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"blj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass_medical{ - id_tag = null; - name = "Medbay Storage"; - req_access_txt = "45" - }, -/turf/open/floor/plasteel/whiteblue, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"blk" = ( -/turf/closed/wall, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"bll" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (WEST)"; - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medbay{ - name = "Medbay Central" - }) -"blm" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/whiteblue/corner, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bln" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/medical/chemistry) -"blo" = ( -/obj/machinery/smartfridge/chemistry/preloaded, -/turf/closed/wall, -/area/medical/chemistry) -"blp" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/southleft{ - dir = 1; - name = "Chemistry Desk"; - req_access_txt = "33" - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plasteel/orange, -/area/medical/chemistry) -"blq" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/wall, -/area/medical/chemistry) -"blr" = ( -/obj/machinery/door/airlock/glass_command{ - name = "Bridge Access"; - req_access_txt = "0"; - req_one_access_txt = "19; 1" - }, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"bls" = ( -/obj/machinery/door/poddoor/preopen{ - id = "bridge blast"; - layer = 2.9; - name = "bridge blast door" - }, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"blt" = ( -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"blu" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = 28 - }, -/obj/machinery/door/poddoor/preopen{ - id = "bridge blast"; - layer = 2.9; - name = "bridge blast door" - }, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"blv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"blw" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "Security Checkpoint APC"; - pixel_x = 0; - pixel_y = 24 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/turf/open/floor/plasteel/darkblue, -/area/security/checkpoint) -"blx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHEAST)"; - icon_state = "camera"; - dir = 6 - }, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"bly" = ( -/obj/structure/table, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24; - pixel_y = 0 - }, -/obj/item/storage/fancy/donut_box, -/turf/open/floor/plasteel/black, -/area/bridge) -"blz" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/black, -/area/bridge) -"blA" = ( -/turf/open/floor/plasteel/black, -/area/bridge) -"blB" = ( -/obj/item/device/radio/beacon, -/turf/open/floor/plasteel/black, -/area/bridge) -"blC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plasteel/black, -/area/bridge) -"blD" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/table, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 28; - pixel_y = 0 - }, -/obj/machinery/recharger, -/turf/open/floor/plasteel/black, -/area/bridge) -"blE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHEAST)"; - icon_state = "camera"; - dir = 6 - }, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"blF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"blG" = ( -/obj/machinery/door/airlock/glass_command{ - name = "Bridge Access"; - req_access_txt = "0"; - req_one_access_txt = "19; 1" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"blH" = ( -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"blI" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"blJ" = ( -/obj/structure/table, -/obj/item/stack/wrapping_paper, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"blK" = ( -/obj/structure/table, -/obj/item/stack/packageWrap, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"blL" = ( -/obj/machinery/light, -/obj/structure/filingcabinet/chestdrawer, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"blM" = ( -/turf/open/floor/plasteel{ - icon_state = "bot" - }, -/area/quartermaster/office) -"blN" = ( -/obj/machinery/light, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"blO" = ( -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (SOUTHWEST)"; - icon_state = "brown"; - dir = 10 - }, -/area/quartermaster/office) -"blP" = ( -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, -/turf/open/floor/plasteel/brown, -/area/quartermaster/office) -"blQ" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/brown, -/area/quartermaster/office) -"blR" = ( -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (SOUTHEAST)"; - icon_state = "brown"; - dir = 6 - }, -/area/quartermaster/office) -"blS" = ( -/obj/structure/closet/crate{ - icon_state = "crateopen"; - opened = 1 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (SOUTHWEST)"; - icon_state = "brown"; - dir = 10 - }, -/area/quartermaster/sorting{ - name = "\improper Warehouse" - }) -"blT" = ( -/obj/structure/closet/crate, -/turf/open/floor/plasteel/brown, -/area/quartermaster/sorting{ - name = "\improper Warehouse" - }) -"blU" = ( -/turf/open/floor/plasteel/brown, -/area/quartermaster/sorting{ - name = "\improper Warehouse" - }) -"blV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/closet/crate, -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (SOUTHEAST)"; - icon_state = "brown"; - dir = 6 - }, -/area/quartermaster/sorting{ - name = "\improper Warehouse" - }) -"blW" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/landmark/start{ - name = "Cargo Technician" - }, -/turf/open/floor/plasteel, -/area/quartermaster/storage) -"blX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/quartermaster/storage) -"blY" = ( -/obj/effect/landmark/start{ - name = "Cargo Technician" - }, -/turf/open/floor/plasteel, -/area/quartermaster/storage) -"blZ" = ( -/turf/open/floor/plasteel/loadingarea{ - baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; - dir = 8 - }, -/area/quartermaster/storage) -"bma" = ( -/turf/open/floor/plasteel/delivery, -/area/quartermaster/storage) -"bmb" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad2" - }, -/turf/open/floor/plasteel/delivery, -/area/quartermaster/storage) -"bmc" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad2" - }, -/obj/machinery/door/poddoor{ - id = "QMLoaddoor2"; - name = "supply dock loading door" - }, -/turf/open/floor/plating, -/area/quartermaster/storage) -"bmd" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad2" - }, -/turf/open/floor/plating, -/area/quartermaster/storage) -"bme" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad2" - }, -/obj/structure/plasticflaps, -/turf/open/floor/plating, -/area/quartermaster/storage) -"bmf" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad2" - }, -/obj/machinery/door/poddoor{ - id = "QMLoaddoor2"; - name = "supply dock loading door" - }, -/turf/open/floor/plating, -/area/shuttle/supply) -"bmg" = ( -/turf/closed/wall/r_wall, -/area/security/transfer) -"bmh" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/machinery/light_switch{ - pixel_y = 24 - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bmi" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/table, -/obj/item/reagent_containers/syringe, -/obj/item/reagent_containers/glass/bottle/salglu_solution, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bmj" = ( -/obj/structure/bed, -/obj/item/bedsheet/medical, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/landmark{ - name = "revenantspawn" - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bmk" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/medical/patients_rooms) -"bml" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bmm" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bmn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/medical/medbay3) -"bmo" = ( -/obj/structure/cable{ - tag = "icon-0-4"; - icon_state = "0-4" - }, -/obj/machinery/power/apc{ - dir = 8; - name = "Medbay Port APC"; - pixel_x = -24; - pixel_y = 0 - }, -/obj/item/defibrillator/loaded, -/obj/structure/table, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/medical/medbay3) -"bmp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/medical/medbay3) -"bmq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/medical/medbay3) -"bmr" = ( -/obj/structure/rack, -/obj/item/caution, -/obj/item/caution, -/obj/item/reagent_containers/spray/cleaner, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/medical/medbay3) -"bms" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"bmt" = ( -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, -/obj/structure/closet/secure_closet/medical1, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (NORTHWEST)"; - icon_state = "whiteblue"; - dir = 9 - }, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"bmu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (NORTH)"; - icon_state = "whiteblue"; - dir = 1 - }, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"bmv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (NORTH)"; - icon_state = "whiteblue"; - dir = 1 - }, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"bmw" = ( -/obj/structure/closet/l3closet, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (NORTHEAST)"; - icon_state = "whiteblue"; - dir = 5 - }, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"bmx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"bmy" = ( -/obj/structure/bed/roller, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (WEST)"; - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bmz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bmA" = ( -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2; - initialize_directions = 11 - }, -/turf/open/floor/plasteel/whiteblue/corner{ - tag = "icon-whitebluecorner (EAST)"; - icon_state = "whitebluecorner"; - dir = 4 - }, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bmB" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = 28 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (NORTH)"; - icon_state = "whiteblue"; - dir = 1 - }, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bmC" = ( -/obj/machinery/button/door{ - desc = "A remote control switch for the medbay foyer."; - id = "MedbayFoyer"; - name = "Medbay Exit Button"; - normaldoorcontrol = 1; - pixel_x = 0; - pixel_y = 26 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (NORTHEAST)"; - icon_state = "whiteblue"; - dir = 5 - }, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bmD" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ - id_tag = "MedbayFoyer"; - name = "Medbay"; - req_access_txt = "5" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/turf/open/floor/plasteel/whiteblue, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bmE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (NORTHWEST)"; - icon_state = "whiteblue"; - dir = 9 - }, -/area/medical/medbay) -"bmF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (NORTH)"; - icon_state = "whiteblue"; - dir = 1 - }, -/area/medical/medbay) -"bmG" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1; - initialize_directions = 11 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (NORTH)"; - icon_state = "whiteblue"; - dir = 1 - }, -/area/medical/medbay) -"bmH" = ( -/obj/structure/disposalpipe/junction{ - dir = 4; - icon_state = "pipe-j2"; - tag = "icon-pipe-j1 (WEST)" - }, -/obj/structure/table/glass, -/obj/item/storage/firstaid/regular, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (NORTHEAST)"; - icon_state = "whiteblue"; - dir = 5 - }, -/area/medical/medbay) -"bmI" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/medical/medbay) -"bmJ" = ( -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (EAST)"; - icon_state = "camera"; - dir = 4 - }, -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (WEST)"; - icon_state = "blue"; - dir = 8 - }, -/area/hallway/primary/port) -"bmK" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/junction{ - dir = 1; - icon_state = "pipe-j2"; - tag = "icon-pipe-j1 (WEST)" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) -"bmL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (EAST)"; - icon_state = "blue"; - dir = 4 - }, -/area/hallway/primary/port) -"bmM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass_command{ - name = "Bridge Access"; - req_access_txt = "0"; - req_one_access_txt = "19; 1" - }, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"bmN" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/poddoor/preopen{ - id = "bridge blast"; - layer = 2.9; - name = "bridge blast door" - }, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"bmO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/glass_command{ - name = "Bridge Access"; - req_access_txt = "0"; - req_one_access_txt = "19; 1" - }, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"bmP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"bmQ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/light, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"bmR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"bmS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "" - }, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"bmT" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, -/obj/machinery/light, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"bmU" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"bmV" = ( -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"bmW" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass_command{ - id_tag = "bridge door west"; - name = "Bridge Port"; - req_access_txt = "19" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"bmX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel/black, -/area/bridge) -"bmY" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4; - initialize_directions = 11 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel/black, -/area/bridge) -"bmZ" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel/black, -/area/bridge) -"bna" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/table/reinforced, -/obj/machinery/keycard_auth{ - pixel_x = -6 - }, -/obj/machinery/button/door{ - id = "bridge blast"; - name = "Bridge Blast Door Control"; - pixel_x = 6; - pixel_y = 0; - req_access_txt = "19" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel/darkblue/side{ - tag = "icon-darkblue (NORTHWEST)"; - icon_state = "darkblue"; - dir = 9 - }, -/area/bridge) -"bnb" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/machinery/computer/communications, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel/darkblue/side{ - tag = "icon-darkblue (NORTH)"; - icon_state = "darkblue"; - dir = 1 - }, -/area/bridge) -"bnc" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/table/reinforced, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel/darkblue/side{ - tag = "icon-darkblue (NORTHEAST)"; - icon_state = "darkblue"; - dir = 5 - }, -/area/bridge) -"bnd" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel/black, -/area/bridge) -"bne" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel/black, -/area/bridge) -"bnf" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/black, -/area/bridge) -"bng" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass_command{ - id_tag = "bridge door east"; - name = "Bridge Starbord"; - req_access_txt = "19" - }, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"bnh" = ( -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"bni" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"bnj" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/machinery/light, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"bnk" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"bnl" = ( -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"bnm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"bnn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"bno" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/poddoor/preopen{ - id = "bridge blast"; - layer = 2.9; - name = "bridge blast door" - }, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"bnp" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/light, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"bnq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/glass_command{ - name = "Bridge Access"; - req_access_txt = "0"; - req_one_access_txt = "19; 1" - }, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"bnr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass_command{ - name = "Bridge Access"; - req_access_txt = "0"; - req_one_access_txt = "19; 1" - }, -/turf/open/floor/plasteel/darkblue, -/area/bridge) -"bns" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bnt" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bnu" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/obj/machinery/airalarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bnv" = ( -/obj/machinery/mineral/ore_redemption, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"bnw" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/glass_mining{ - name = "Cargo Office"; - req_access_txt = "0"; - req_one_access_txt = "48;50" - }, -/turf/open/floor/plasteel/delivery, -/area/quartermaster/office) -"bnx" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/quartermaster/storage) -"bny" = ( -/mob/living/simple_animal/sloth, -/turf/open/floor/plasteel, -/area/quartermaster/storage) -"bnz" = ( -/obj/machinery/conveyor_switch/oneway{ - id = "QMLoad2" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/quartermaster/storage) -"bnA" = ( -/obj/machinery/door/airlock/glass_mining{ - name = "Cargo Bay"; - req_access_txt = "31" - }, -/turf/open/floor/noslip, -/area/quartermaster/storage) -"bnB" = ( -/turf/open/floor/noslip, -/area/quartermaster/storage) -"bnC" = ( -/obj/machinery/light, -/turf/open/floor/noslip, -/area/quartermaster/storage) -"bnD" = ( -/obj/machinery/door/airlock/external{ - name = "Supply Dock Airlock"; - req_access_txt = "31" - }, -/turf/open/floor/noslip, -/area/quartermaster/storage) -"bnE" = ( -/obj/machinery/door/airlock/titanium{ - name = "Supply Shuttle Airlock"; - req_access_txt = "31" - }, -/turf/open/floor/plating, -/area/shuttle/supply) -"bnF" = ( -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/security/transfer) -"bnG" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/security/transfer) -"bnH" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8; - initialize_directions = 11 - }, -/obj/machinery/iv_drip, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bnI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bnJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/medical/patients_rooms) -"bnK" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bnL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/medical/medbay3) -"bnM" = ( -/obj/machinery/light_switch{ - dir = 8; - pixel_x = -24 - }, -/obj/structure/rack, -/obj/item/reagent_containers/glass/bottle/charcoal, -/obj/item/reagent_containers/glass/bottle/charcoal, -/obj/item/reagent_containers/glass/bottle/potass_iodide, -/obj/item/reagent_containers/glass/bottle/morphine, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/medical/medbay3) -"bnN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/medical/medbay3) -"bnO" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/medical/medbay3) -"bnP" = ( -/obj/structure/mopbucket, -/obj/item/mop, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/medical/medbay3) -"bnQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"bnR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/closet/secure_closet/medical3, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (WEST)"; - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"bnS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"bnT" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/turf/open/floor/plasteel/white, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"bnU" = ( -/obj/structure/closet/wardrobe/white/medical, -/obj/item/clothing/suit/hooded/wintercoat/medical, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (EAST)"; - icon_state = "whiteblue"; - dir = 4 - }, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"bnV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"bnW" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/bed/roller, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (SOUTHWEST)"; - icon_state = "whiteblue"; - dir = 10 - }, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bnX" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel/whiteblue/side, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bnY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whiteblue/side, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bnZ" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/whiteblue/side, -/area/medical/medbay{ - name = "Medbay Central" - }) -"boa" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (SOUTHEAST)"; - icon_state = "whiteblue"; - dir = 6 - }, -/area/medical/medbay{ - name = "Medbay Central" - }) -"bob" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_medical{ - id_tag = "MedbayFoyer"; - name = "Medbay"; - req_access_txt = "5" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whiteblue, -/area/medical/medbay{ - name = "Medbay Central" - }) -"boc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (WEST)"; - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medbay) -"bod" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay) -"boe" = ( -/turf/open/floor/plasteel/white, -/area/medical/medbay) -"bof" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay) -"bog" = ( -/obj/structure/table/glass, -/obj/item/device/healthanalyzer, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (EAST)"; - icon_state = "whiteblue"; - dir = 4 - }, -/area/medical/medbay) -"boh" = ( -/turf/closed/wall, -/area/medical/medbay) -"boi" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -23; - pixel_y = 0 - }, -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (WEST)"; - icon_state = "blue"; - dir = 8 - }, -/area/hallway/primary/port) -"boj" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/bridge) -"bok" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall/r_wall, -/area/bridge) -"bol" = ( -/obj/machinery/door/airlock/command{ - name = "Conference Room"; - req_access = null; - req_access_txt = "19" - }, -/turf/open/floor/wood, -/area/bridge/meeting_room) -"bom" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall/r_wall, -/area/bridge) -"bon" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/airlock/hatch{ - name = "Bridge Maintenance Access"; - req_access_txt = "0"; - req_one_access_txt = "19; 1" - }, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"boo" = ( -/obj/structure/table/glass, -/obj/item/device/aicard, -/obj/machinery/airalarm{ - dir = 4; - locked = 0; - pixel_x = -23; - pixel_y = 0 - }, -/turf/open/floor/plasteel/darkpurple, -/area/bridge) -"bop" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel/darkpurple/side{ - tag = "icon-darkpurple (WEST)"; - icon_state = "darkpurple"; - dir = 8 - }, -/area/bridge) -"boq" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel/black, -/area/bridge) -"bor" = ( -/obj/machinery/door/window/brigdoor{ - dir = 8; - name = "Command Desk"; - req_access_txt = "19" - }, -/turf/open/floor/plasteel/darkblue/side{ - tag = "icon-darkblue (WEST)"; - icon_state = "darkblue"; - dir = 8 - }, -/area/bridge) -"bos" = ( -/obj/structure/chair/comfy/brown{ - dir = 1 - }, -/turf/open/floor/plasteel/black, -/area/bridge) -"bot" = ( -/obj/machinery/door/window/brigdoor{ - dir = 4; - name = "Command Desk"; - req_access_txt = "19" - }, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching output from station security cameras."; - name = "Security Camera Monitor"; - network = list("SS13"); - pixel_x = 0; - pixel_y = 30 - }, -/turf/open/floor/plasteel/darkblue/side{ - tag = "icon-darkblue (EAST)"; - icon_state = "darkblue"; - dir = 4 - }, -/area/bridge) -"bou" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/obj/effect/landmark{ - name = "xeno_spawn"; - pixel_x = -1 - }, -/turf/open/floor/plasteel/black, -/area/bridge) -"bov" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel/darkgreen/side{ - tag = "icon-darkgreen (EAST)"; - icon_state = "darkgreen"; - dir = 4 - }, -/area/bridge) -"bow" = ( -/obj/machinery/computer/security/mining, -/obj/machinery/requests_console{ - announcementConsole = 1; - department = "Bridge"; - departmentType = 5; - name = "Bridge RC"; - pixel_x = 32; - pixel_y = 0 - }, -/turf/open/floor/plasteel/darkgreen, -/area/bridge) -"box" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/command{ - name = "Captain's Office"; - req_access = null; - req_access_txt = "20" - }, -/turf/open/floor/wood, -/area/crew_quarters/captain) -"boy" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/disposalpipe/junction{ - dir = 1; - icon_state = "pipe-j1"; - tag = "icon-pipe-j1 (EAST)" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"boz" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/quartermaster/office) -"boA" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/chair, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTHWEST)"; - icon_state = "brown"; - dir = 9 - }, -/area/quartermaster/office) -"boB" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/chair, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/office) -"boC" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/brown/corner{ - dir = 1 - }, -/area/quartermaster/office) -"boD" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/loadingarea{ - baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface - }, -/area/quartermaster/office) -"boE" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/item/device/radio/intercom{ - name = "Station Intercom"; - pixel_x = 0; - pixel_y = 24 - }, -/turf/open/floor/plasteel/brown/corner{ - dir = 4 - }, -/area/quartermaster/office) -"boF" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/office) -"boG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/computer/cargo/request, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTHEAST)"; - icon_state = "brown"; - dir = 5 - }, -/area/quartermaster/office) -"boH" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/quartermaster/office) -"boI" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/computer/cargo, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTHWEST)"; - icon_state = "brown"; - dir = 9 - }, -/area/quartermaster/office) -"boJ" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/office) -"boK" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/filingcabinet, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/office) -"boL" = ( -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/office) -"boM" = ( -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/obj/structure/table, -/obj/item/clipboard, -/obj/item/folder/yellow, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/office) -"boN" = ( -/obj/structure/table, -/obj/machinery/computer/stockexchange, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/office) -"boO" = ( -/obj/machinery/autolathe, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/office) -"boP" = ( -/obj/structure/table, -/obj/item/paper_bin, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/office) -"boQ" = ( -/obj/structure/table, -/obj/item/device/multitool, -/obj/item/screwdriver, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/office) -"boR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/table, -/obj/item/crowbar, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTHEAST)"; - icon_state = "brown"; - dir = 5 - }, -/area/quartermaster/office) -"boS" = ( -/obj/machinery/status_display{ - density = 0; - name = "cargo display"; - pixel_x = 0; - pixel_y = 0; - supply_display = 1 - }, -/turf/closed/wall, -/area/quartermaster/office) -"boT" = ( -/obj/machinery/holopad, -/turf/open/floor/plasteel, -/area/quartermaster/storage) -"boU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/quartermaster/storage) -"boV" = ( -/obj/machinery/computer/cargo, -/obj/machinery/button/door{ - dir = 2; - id = "QMLoaddoor2"; - name = "Loading Doors"; - pixel_x = 24; - pixel_y = 8 - }, -/obj/machinery/button/door{ - id = "QMLoaddoor"; - name = "Loading Doors"; - pixel_x = 24; - pixel_y = -8 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (EAST)"; - icon_state = "brown"; - dir = 4 - }, -/area/quartermaster/storage) -"boW" = ( -/obj/machinery/button/door{ - id = "QMLoaddoor"; - name = "Loading Doors"; - pixel_x = -24; - pixel_y = -8 - }, -/obj/machinery/button/door{ - dir = 2; - id = "QMLoaddoor2"; - name = "Loading Doors"; - pixel_x = -24; - pixel_y = 8 - }, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/supply) -"boX" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/supply) -"boY" = ( -/obj/machinery/power/emitter{ - anchored = 1; - dir = 4; - req_access = list(11,2); - state = 2 - }, -/obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 - }, -/turf/open/floor/plating{ - dir = 1; - icon_state = "delivery" - }, -/area/security/transfer) -"boZ" = ( -/obj/structure/reflector/box{ - tag = "icon-reflector_box (EAST)"; - icon_state = "reflector_box"; - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/transfer) -"bpa" = ( -/turf/open/floor/plating{ - tag = "icon-delivery"; - icon_state = "delivery"; - dir = 2 - }, -/area/security/transfer) -"bpb" = ( -/obj/structure/reflector/box{ - tag = "icon-reflector_box (WEST)"; - icon_state = "reflector_box"; - dir = 8 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/transfer) -"bpc" = ( -/obj/machinery/power/emitter{ - anchored = 1; - dir = 8; - req_access = list(11,2); - state = 2 - }, -/obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 - }, -/turf/open/floor/plating{ - dir = 1; - icon_state = "delivery" - }, -/area/security/transfer) -"bpd" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical{ - name = "Patient Room 3"; - req_access_txt = "5" - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bpe" = ( -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -23; - pixel_y = 0 - }, -/obj/structure/rack, -/obj/item/reagent_containers/glass/bottle/histamine, -/obj/item/reagent_containers/glass/bottle/histamine, -/obj/item/reagent_containers/glass/bottle/formaldehyde, -/obj/item/reagent_containers/glass/bottle/toxin, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/medical/medbay3) -"bpf" = ( -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/medical/medbay3) -"bpg" = ( -/obj/structure/rack, -/obj/item/cartridge/medical, -/obj/item/cartridge/medical, -/obj/item/cartridge/chemistry, -/obj/item/cartridge/chemistry, -/obj/structure/extinguisher_cabinet{ - pixel_x = 24 - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/medical/medbay3) -"bph" = ( -/obj/item/storage/firstaid/regular{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/storage/firstaid/fire{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/firstaid/fire, -/obj/item/storage/firstaid/fire{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/structure/table/glass, -/obj/machinery/light_switch{ - dir = 8; - pixel_x = -24 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (WEST)"; - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"bpi" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"bpj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"bpk" = ( -/obj/effect/landmark/start{ - name = "Medical Doctor" - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"bpl" = ( -/obj/machinery/airalarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/obj/structure/closet/crate/freezer, -/obj/item/reagent_containers/blood/AMinus, -/obj/item/reagent_containers/blood/AMinus, -/obj/item/reagent_containers/blood/APlus, -/obj/item/reagent_containers/blood/APlus, -/obj/item/reagent_containers/blood/BMinus, -/obj/item/reagent_containers/blood/BMinus, -/obj/item/reagent_containers/blood/BPlus, -/obj/item/reagent_containers/blood/BPlus, -/obj/item/reagent_containers/blood/OMinus, -/obj/item/reagent_containers/blood/OMinus, -/obj/item/reagent_containers/blood/OPlus, -/obj/item/reagent_containers/blood/OPlus, -/obj/item/reagent_containers/blood/empty, -/obj/item/reagent_containers/blood/empty, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (EAST)"; - icon_state = "whiteblue"; - dir = 4 - }, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"bpm" = ( -/turf/closed/wall, -/area/security/checkpoint/medical) -"bpn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/newscaster/security_unit, -/turf/closed/wall, -/area/security/checkpoint/medical) -"bpo" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass_security{ - name = "Medbay Security Post"; - req_access_txt = "63" - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/medical) -"bpp" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/security/checkpoint/medical) -"bpq" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/security/checkpoint/medical) -"bpr" = ( -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -23; - pixel_y = 0 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (WEST)"; - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medbay) -"bps" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/white, -/area/medical/medbay) -"bpt" = ( -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (EAST)"; - icon_state = "whiteblue"; - dir = 4 - }, -/area/medical/medbay) -"bpu" = ( -/obj/structure/window/reinforced/fulltile, -/obj/structure/grille, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/bridge/meeting_room) -"bpv" = ( -/obj/structure/chair/comfy/black, -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" - }, -/area/bridge/meeting_room) -"bpw" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/chair/comfy/black, -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" - }, -/area/bridge/meeting_room) -"bpx" = ( -/obj/machinery/light_switch{ - pixel_y = 24 - }, -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" - }, -/area/bridge/meeting_room) -"bpy" = ( -/turf/open/floor/wood, -/area/bridge/meeting_room) -"bpz" = ( -/obj/machinery/vending/coffee, -/turf/open/floor/wood, -/area/bridge/meeting_room) -"bpA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/filingcabinet/chestdrawer, -/turf/open/floor/wood, -/area/bridge/meeting_room) -"bpB" = ( -/turf/closed/wall, -/area/bridge/meeting_room) -"bpC" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"bpD" = ( -/obj/machinery/computer/teleporter, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -28 - }, -/turf/open/floor/plasteel/darkpurple, -/area/bridge) -"bpE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light, -/obj/structure/chair/office/dark{ - dir = 8 - }, -/turf/open/floor/plasteel/darkpurple/side{ - tag = "icon-darkpurple (WEST)"; - icon_state = "darkpurple"; - dir = 8 - }, -/area/bridge) -"bpF" = ( -/obj/structure/fireaxecabinet{ - pixel_y = -32 - }, -/turf/open/floor/plasteel/black, -/area/bridge) -"bpG" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHWEST)"; - icon_state = "camera"; - dir = 10 - }, -/turf/open/floor/plasteel/darkblue/side{ - tag = "icon-darkblue (WEST)"; - icon_state = "darkblue"; - dir = 8 - }, -/area/bridge) -"bpH" = ( -/obj/machinery/holopad, -/turf/open/floor/plasteel/black, -/area/bridge) -"bpI" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/obj/machinery/turretid{ - control_area = "AI Upload Chamber"; - name = "AI Upload turret control"; - pixel_y = -25 - }, -/turf/open/floor/plasteel/darkblue/side{ - tag = "icon-darkblue (EAST)"; - icon_state = "darkblue"; - dir = 4 - }, -/area/bridge) -"bpJ" = ( -/obj/structure/cable, -/obj/machinery/power/apc{ - cell_type = 5000; - dir = 2; - name = "Bridge APC"; - pixel_y = -24 - }, -/turf/open/floor/plasteel/black, -/area/bridge) -"bpK" = ( -/obj/machinery/light, -/obj/structure/chair/office/dark{ - dir = 4 - }, -/turf/open/floor/plasteel/darkgreen/side{ - tag = "icon-darkgreen (EAST)"; - icon_state = "darkgreen"; - dir = 4 - }, -/area/bridge) -"bpL" = ( -/obj/machinery/computer/cargo/request, -/turf/open/floor/plasteel/darkgreen, -/area/bridge) -"bpM" = ( -/turf/closed/wall/r_wall, -/area/crew_quarters/captain) -"bpN" = ( -/obj/structure/displaycase/captain, -/turf/open/floor/wood, -/area/crew_quarters/captain) -"bpO" = ( -/obj/machinery/light_switch{ - pixel_y = 24 - }, -/obj/structure/table/wood, -/obj/item/storage/fancy/cigarettes/cigars, -/obj/item/coin/plasma{ - pixel_x = 3; - pixel_y = 2 - }, -/obj/item/lighter{ - pixel_x = -6 - }, -/turf/open/floor/wood, -/area/crew_quarters/captain) -"bpP" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood, -/area/crew_quarters/captain) -"bpQ" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/obj/machinery/computer/card, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/wood, -/area/crew_quarters/captain) -"bpR" = ( -/obj/machinery/power/apc{ - cell_type = 2500; - dir = 1; - name = "Captain's Office APC"; - pixel_y = 24 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/turf/open/floor/wood, -/area/crew_quarters/captain) -"bpS" = ( -/obj/structure/table/wood, -/obj/item/folder/blue, -/obj/item/stamp/captain, -/obj/machinery/newscaster/security_unit{ - pixel_y = 32 - }, -/obj/item/melee/chainofcommand, -/obj/item/device/radio/intercom{ - desc = "Talk smack through this."; - dir = 4; - pixel_x = 28; - syndie = 1 - }, -/turf/open/floor/wood, -/area/crew_quarters/captain) -"bpT" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8; - initialize_directions = 11 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bpU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTHWEST)"; - icon_state = "brown"; - dir = 9 - }, -/area/quartermaster/office) -"bpV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/brown/corner{ - tag = "icon-browncorner (NORTH)"; - icon_state = "browncorner"; - dir = 1 - }, -/area/quartermaster/office) -"bpW" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (WEST)"; - icon_state = "vent_map"; - dir = 8 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"bpX" = ( -/obj/machinery/holopad, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"bpY" = ( -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (EAST)"; - icon_state = "brown"; - dir = 4 - }, -/area/quartermaster/office) -"bpZ" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/window/westleft{ - dir = 4; - name = "Cargo Desk"; - req_access_txt = "50" - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"bqa" = ( -/obj/structure/chair/office/light{ - dir = 8 - }, -/obj/effect/landmark/start{ - name = "Cargo Technician" - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (WEST)"; - icon_state = "brown"; - dir = 8 - }, -/area/quartermaster/office) -"bqb" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"bqc" = ( -/obj/effect/landmark/start{ - name = "Cargo Technician" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"bqd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"bqe" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (EAST)"; - icon_state = "brown"; - dir = 4 - }, -/area/quartermaster/office) -"bqf" = ( -/obj/machinery/door/airlock/glass_mining{ - glass = 0; - name = "Cargo Bay"; - opacity = 1; - req_access_txt = "0"; - req_one_access_txt = "48;50" - }, -/turf/open/floor/plasteel/delivery, -/area/quartermaster/office) -"bqg" = ( -/obj/machinery/conveyor_switch/oneway{ - convdir = -1; - id = "QMLoad" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/quartermaster/storage) -"bqh" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; - pixel_x = 32; - pixel_y = 0 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (EAST)"; - icon_state = "brown"; - dir = 4 - }, -/area/quartermaster/storage) -"bqi" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/noslip, -/area/quartermaster/storage) -"bqj" = ( -/obj/machinery/door/airlock/titanium{ - name = "Supply Shuttle Airlock"; - req_access_txt = "31" - }, -/obj/docking_port/mobile/supply{ - dir = 4; - dwidth = 5; - height = 7; - port_angle = -90; - width = 12 - }, -/obj/docking_port/stationary{ - dir = 4; - dwidth = 5; - height = 7; - id = "supply_home"; - name = "Cargo Bay"; - width = 12 - }, -/turf/open/floor/plating, -/area/shuttle/supply) -"bqk" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/door/poddoor/preopen{ - icon_state = "closed"; - id = "exc"; - name = "Execution Chamber" - }, -/turf/open/floor/plating{ - tag = "icon-warnplate (NORTH)"; - icon_state = "warnplate"; - dir = 1 - }, -/area/security/transfer) -"bql" = ( -/obj/machinery/door/poddoor/preopen{ - icon_state = "closed"; - id = "exc"; - name = "Execution Chamber" - }, -/turf/open/floor/plating{ - icon_state = "warnplate"; - dir = 5 - }, -/area/security/transfer) -"bqm" = ( -/obj/structure/chair/office/dark, -/turf/open/floor/plating{ - icon_state = "bot" - }, -/area/security/transfer) -"bqn" = ( -/obj/machinery/door/poddoor/preopen{ - icon_state = "closed"; - id = "exc"; - name = "Execution Chamber" - }, -/turf/open/floor/plating{ - icon_state = "warnplate"; - dir = 9 - }, -/area/security/transfer) -"bqo" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (EAST)"; - icon_state = "camera"; - dir = 4 - }, -/mob/living/simple_animal/bot/cleanbot{ - name = "Scrubs, MD"; - on = 0 - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/medical/medbay3) -"bqp" = ( -/mob/living/simple_animal/bot/medbot{ - auto_patrol = 1; - desc = "A little medical robot, officially part of the NanoTrasen medical inspectorate. He looks somewhat underwhelmed."; - name = "Inspector Johnson" - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/medical/medbay3) -"bqq" = ( -/obj/structure/rack, -/obj/item/gun/syringe, -/obj/item/gun/syringe, -/obj/item/storage/box/syringes, -/obj/item/storage/box/syringes, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/medical/medbay3) -"bqr" = ( -/obj/item/storage/firstaid/regular{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/storage/firstaid/brute{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/firstaid/brute, -/obj/item/storage/firstaid/brute{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/machinery/power/apc{ - dir = 2; - name = "Medbay Storage APC"; - pixel_y = -24 - }, -/obj/structure/table/glass, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24; - pixel_y = 0 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (WEST)"; - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"bqs" = ( -/turf/open/floor/plasteel/white, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"bqt" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"bqu" = ( -/obj/structure/table, -/obj/item/storage/box/medipens{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/syringes, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (EAST)"; - icon_state = "whiteblue"; - dir = 4 - }, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"bqv" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/security/checkpoint/medical) -"bqw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/filingcabinet/security, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/medical) -"bqx" = ( -/obj/machinery/button/door{ - desc = "A remote control switch for the medbay foyer."; - id = "MedbayFoyer"; - name = "Medbay Doors Control"; - normaldoorcontrol = 1; - pixel_x = 24; - pixel_y = 24 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/medical) -"bqy" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/machinery/light_switch{ - pixel_y = 24 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/medical) -"bqz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/computer/secure_data, -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHEAST)"; - icon_state = "camera"; - dir = 6 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/medical) -"bqA" = ( -/obj/structure/table, -/obj/item/folder/red, -/obj/item/pen/red, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/medical) -"bqB" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/filingcabinet/medical, -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (NORTH)"; - icon_state = "door_open"; - dir = 1 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (WEST)"; - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medbay) -"bqC" = ( -/obj/machinery/door/window/northleft{ - name = "Medbay Reception"; - req_access_txt = "5" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (NORTH)"; - icon_state = "door_open"; - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay) -"bqD" = ( -/obj/structure/table/reinforced, -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (EAST)"; - icon_state = "door_open"; - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (NORTH)"; - icon_state = "door_open"; - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay) -"bqE" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (EAST)"; - icon_state = "whiteblue"; - dir = 4 - }, -/area/medical/medbay) -"bqF" = ( -/obj/structure/sign/bluecross, -/turf/closed/wall, -/area/medical/medbay) -"bqG" = ( -/obj/structure/flora/grass/green, -/mob/living/simple_animal/chicken, -/turf/open/floor/grass, -/area/hallway/primary/port) -"bqH" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/flora/grass/green, -/turf/open/floor/grass, -/area/hallway/primary/port) -"bqI" = ( -/turf/closed/wall/r_wall, -/area/bridge/meeting_room) -"bqJ" = ( -/obj/structure/table/wood, -/obj/item/folder/white, -/obj/item/pen, -/turf/open/floor/carpet, -/area/bridge/meeting_room) -"bqK" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8; - initialize_directions = 11 - }, -/obj/structure/table/wood, -/obj/item/folder/red, -/obj/item/pen/red, -/turf/open/floor/carpet, -/area/bridge/meeting_room) -"bqL" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - name = "regular air vent"; - on = 1 - }, -/obj/structure/chair/comfy/black{ - dir = 8 - }, -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" - }, -/area/bridge/meeting_room) -"bqM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/airalarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/turf/open/floor/wood, -/area/bridge/meeting_room) -"bqN" = ( -/turf/closed/wall/r_wall, -/area/ai_monitored/turret_protected/ai_upload) -"bqO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall/r_wall, -/area/ai_monitored/turret_protected/ai_upload) -"bqP" = ( -/obj/machinery/door/airlock/highsecurity{ - icon_state = "door_closed"; - locked = 0; - name = "AI Upload"; - req_access_txt = "16" - }, -/turf/open/floor/circuit{ - icon_state = "gcircuit"; - luminosity = 2 - }, -/area/ai_monitored/turret_protected/ai_upload) -"bqQ" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/suit_storage_unit/captain, -/turf/open/floor/wood, -/area/crew_quarters/captain) -"bqR" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/wood, -/area/crew_quarters/captain) -"bqS" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/captain) -"bqT" = ( -/obj/machinery/computer/communications, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/wood, -/area/crew_quarters/captain) -"bqU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/chair/comfy/brown{ - dir = 8 - }, -/obj/effect/landmark/start{ - name = "Captain" - }, -/turf/open/floor/wood, -/area/crew_quarters/captain) -"bqV" = ( -/obj/item/storage/secure/safe{ - pixel_x = 32 - }, -/turf/open/floor/wood, -/area/crew_quarters/captain) -"bqW" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/open/floor/grass, -/area/hallway/primary/starboard) -"bqX" = ( -/obj/structure/flora/grass/green, -/mob/living/simple_animal/pet/dog/corgi, -/turf/open/floor/grass, -/area/hallway/primary/starboard) -"bqY" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bqZ" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bra" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (SOUTHWEST)"; - icon_state = "brown"; - dir = 10 - }, -/area/quartermaster/office) -"brb" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/brown/corner{ - tag = "icon-browncorner (WEST)"; - icon_state = "browncorner"; - dir = 8 - }, -/area/quartermaster/office) -"brc" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"brd" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"bre" = ( -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (EAST)"; - icon_state = "brown"; - dir = 4 - }, -/area/quartermaster/office) -"brf" = ( -/obj/structure/table, -/obj/item/stamp{ - pixel_x = -6 - }, -/obj/item/stamp/denied, -/obj/item/pen{ - pixel_x = 4; - pixel_y = 7 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (WEST)"; - icon_state = "brown"; - dir = 8 - }, -/area/quartermaster/office) -"brg" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/quartermaster/office) -"brh" = ( -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -23; - pixel_y = 0 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (WEST)"; - icon_state = "brown"; - dir = 8 - }, -/area/quartermaster/storage) -"bri" = ( -/turf/open/floor/plasteel/loadingarea{ - tag = "icon-loadingarea (EAST)"; - dir = 4; - baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface - }, -/area/quartermaster/storage) -"brj" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad" - }, -/turf/open/floor/plasteel/delivery, -/area/quartermaster/storage) -"brk" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad" - }, -/obj/machinery/door/poddoor{ - id = "QMLoaddoor"; - name = "supply dock loading door" - }, -/turf/open/floor/plating, -/area/quartermaster/storage) -"brl" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad" - }, -/turf/open/floor/plating, -/area/quartermaster/storage) -"brm" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad" - }, -/obj/structure/plasticflaps, -/turf/open/floor/plating, -/area/quartermaster/storage) -"brn" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad" - }, -/obj/machinery/door/poddoor{ - id = "QMLoaddoor"; - name = "supply dock loading door" - }, -/turf/open/floor/plating, -/area/shuttle/supply) -"bro" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/open/floor/plasteel/darkred/corner{ - tag = "icon-darkredcorners (WEST)"; - icon_state = "darkredcorners"; - dir = 8 - }, -/area/security/transfer) -"brp" = ( -/obj/machinery/door/poddoor/preopen{ - icon_state = "closed"; - id = "exc"; - name = "Execution Chamber" - }, -/turf/open/floor/plating{ - icon_state = "warnplatecorner"; - dir = 8 - }, -/area/security/transfer) -"brq" = ( -/obj/machinery/door/poddoor/preopen{ - icon_state = "closed"; - id = "exc"; - name = "Execution Chamber" - }, -/turf/open/floor/plating{ - tag = "icon-warnplate (NORTH)"; - icon_state = "warnplate"; - dir = 1 - }, -/area/security/transfer) -"brr" = ( -/obj/machinery/door/poddoor/preopen{ - icon_state = "closed"; - id = "exc"; - name = "Execution Chamber" - }, -/turf/open/floor/plating{ - icon_state = "warnplatecorner"; - dir = 4 - }, -/area/security/transfer) -"brs" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/turf/open/floor/plasteel/darkred/corner, -/area/security/transfer) -"brt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHWEST)"; - icon_state = "camera"; - dir = 10 - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"bru" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/obj/structure/chair/office/light{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/medical/patients_rooms) -"brv" = ( -/obj/structure/closet/crate/medical, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/medical/medbay3) -"brw" = ( -/obj/structure/window/reinforced{ - dir = 8; - pixel_x = 0 - }, -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/obj/machinery/door/window/northright{ - name = "Medbay Delivery"; - req_access_txt = "5" - }, -/turf/open/floor/plasteel/delivery, -/area/medical/medbay3) -"brx" = ( -/obj/structure/closet/crate, -/obj/item/surgicaldrill, -/obj/item/circular_saw, -/obj/item/retractor, -/obj/item/scalpel, -/obj/item/hemostat, -/obj/item/cautery, -/obj/item/surgical_drapes, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/medical/medbay3) -"bry" = ( -/obj/machinery/reagentgrinder, -/obj/structure/table, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/medical/medbay3) -"brz" = ( -/obj/item/storage/firstaid/regular{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/storage/firstaid/toxin{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/firstaid/toxin, -/obj/item/storage/firstaid/toxin{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/structure/table/glass, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (SOUTHWEST)"; - icon_state = "whiteblue"; - dir = 10 - }, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"brA" = ( -/obj/item/storage/firstaid/regular{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/storage/firstaid/o2{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/firstaid/o2, -/obj/item/storage/firstaid/o2{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/structure/table/glass, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTH)"; - icon_state = "camera"; - dir = 1 - }, -/turf/open/floor/plasteel/whiteblue/side, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"brB" = ( -/obj/machinery/light, -/obj/structure/closet/secure_closet/medical3, -/turf/open/floor/plasteel/whiteblue/side, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"brC" = ( -/obj/machinery/vending/medical, -/turf/open/floor/plasteel/whiteblue/side, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"brD" = ( -/obj/structure/table, -/obj/item/storage/box/masks{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/gloves, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (SOUTHEAST)"; - icon_state = "whiteblue"; - dir = 6 - }, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"brE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/medical) -"brF" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/medical) -"brG" = ( -/obj/effect/landmark/start/depsec/medical, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/medical) -"brH" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/obj/structure/chair/office/dark{ - dir = 1 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/medical) -"brI" = ( -/obj/structure/closet/secure_closet/security/med, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/medical) -"brJ" = ( -/obj/machinery/computer/med_data, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (WEST)"; - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medbay) -"brK" = ( -/obj/structure/chair/office/dark{ - dir = 4 - }, -/obj/machinery/button/door{ - desc = "A remote control switch for the medbay foyer."; - id = "MedbayFoyer"; - name = "Medbay Doors Control"; - normaldoorcontrol = 1; - pixel_x = 24; - pixel_y = 24 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay) -"brL" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (EAST)"; - icon_state = "door_open"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay) -"brM" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay) -"brN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay) -"brO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (EAST)"; - icon_state = "whiteblue"; - dir = 4 - }, -/area/medical/medbay) -"brP" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/whiteblue, -/area/medical/medbay) -"brQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) -"brR" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/machinery/holopad, -/turf/open/floor/carpet, -/area/bridge/meeting_room) -"brS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/table/wood, -/obj/item/folder/blue, -/obj/item/pen/blue, -/turf/open/floor/carpet, -/area/bridge/meeting_room) -"brT" = ( -/obj/structure/chair/comfy/black{ - dir = 8 - }, -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" - }, -/area/bridge/meeting_room) -"brU" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/wood, -/area/bridge/meeting_room) -"brV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/table/wood, -/obj/item/paper_bin, -/turf/open/floor/wood, -/area/bridge/meeting_room) -"brW" = ( -/obj/structure/grille, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"brX" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/porta_turret/ai{ - dir = 4 - }, -/turf/open/floor/circuit{ - icon_state = "gcircuit"; - luminosity = 2 - }, -/area/ai_monitored/turret_protected/ai_upload) -"brY" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/black, -/area/ai_monitored/turret_protected/ai_upload) -"brZ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/turf/open/floor/plasteel/black, -/area/ai_monitored/turret_protected/ai_upload) -"bsa" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/circuit{ - icon_state = "gcircuit"; - luminosity = 2 - }, -/area/ai_monitored/turret_protected/ai_upload) -"bsb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/camera/motion, -/turf/open/floor/plasteel/black, -/area/ai_monitored/turret_protected/ai_upload) -"bsc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/porta_turret/ai{ - dir = 4 - }, -/turf/open/floor/circuit{ - icon_state = "gcircuit"; - luminosity = 2 - }, -/area/ai_monitored/turret_protected/ai_upload) -"bsd" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/ai_monitored/turret_protected/ai_upload) -"bse" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/grille, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"bsf" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"bsg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance{ - name = "Captain's Office Maintenance"; - req_access_txt = "20" - }, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"bsh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/captain) -"bsi" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/mob/living/simple_animal/pet/fox/Renault, -/turf/open/floor/wood, -/area/crew_quarters/captain) -"bsj" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/captain) -"bsk" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/table/wood, -/obj/machinery/recharger, -/obj/item/hand_tele, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/wood, -/area/crew_quarters/captain) -"bsl" = ( -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, -/turf/open/floor/wood, -/area/crew_quarters/captain) -"bsm" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/captain) -"bsn" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/quartermaster/office) -"bso" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (SOUTHWEST)"; - icon_state = "brown"; - dir = 10 - }, -/area/quartermaster/office) -"bsp" = ( -/obj/machinery/light, -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/plasteel/brown/corner{ - dir = 8 - }, -/area/quartermaster/office) -"bsq" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTH)"; - icon_state = "camera"; - dir = 1 - }, -/turf/open/floor/plasteel{ - icon_state = "bot" - }, -/area/quartermaster/office) -"bsr" = ( -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, -/turf/open/floor/plasteel{ - icon_state = "bot" - }, -/area/quartermaster/office) -"bss" = ( -/obj/structure/closet/crate{ - icon_state = "crateopen"; - opened = 1 - }, -/turf/open/floor/plasteel{ - icon_state = "bot" - }, -/area/quartermaster/office) -"bst" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/brown/corner, -/area/quartermaster/office) -"bsu" = ( -/obj/structure/cable{ - tag = "icon-1-4"; - icon_state = "1-4" - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (SOUTHEAST)"; - icon_state = "brown"; - dir = 6 - }, -/area/quartermaster/office) -"bsv" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/glass_mining{ - name = "Cargo Office"; - req_access_txt = "50" - }, -/turf/open/floor/plasteel/delivery, -/area/quartermaster/office) -"bsw" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (SOUTHWEST)"; - icon_state = "brown"; - dir = 10 - }, -/area/quartermaster/office) -"bsx" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/brown, -/area/quartermaster/office) -"bsy" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/light, -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/turf/open/floor/plasteel/brown, -/area/quartermaster/office) -"bsz" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, -/turf/open/floor/plasteel/brown, -/area/quartermaster/office) -"bsA" = ( -/obj/machinery/power/apc{ - dir = 2; - name = "Cargo Office APC"; - pixel_x = 1; - pixel_y = -24 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/turf/open/floor/plasteel/brown, -/area/quartermaster/office) -"bsB" = ( -/turf/open/floor/plasteel/brown, -/area/quartermaster/office) -"bsC" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/brown, -/area/quartermaster/office) -"bsD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/brown, -/area/quartermaster/office) -"bsE" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTH)"; - icon_state = "camera"; - dir = 1 - }, -/turf/open/floor/plasteel/brown, -/area/quartermaster/office) -"bsF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (SOUTHEAST)"; - icon_state = "brown"; - dir = 6 - }, -/area/quartermaster/office) -"bsG" = ( -/obj/structure/closet/wardrobe/cargotech, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHEAST)"; - icon_state = "camera"; - dir = 5 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (WEST)"; - icon_state = "brown"; - dir = 8 - }, -/area/quartermaster/storage) -"bsH" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel, -/area/quartermaster/storage) -"bsI" = ( -/obj/machinery/status_display{ - density = 0; - name = "cargo display"; - pixel_x = 32; - pixel_y = 0; - supply_display = 1 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (EAST)"; - icon_state = "brown"; - dir = 4 - }, -/area/quartermaster/storage) -"bsJ" = ( -/turf/closed/wall, -/area/maintenance/asmaint2) -"bsK" = ( -/obj/structure/cable{ - tag = "icon-1-4"; - icon_state = "1-4" - }, -/turf/open/floor/plasteel/darkred/side{ - tag = "icon-darkred (SOUTHWEST)"; - icon_state = "darkred"; - dir = 10 - }, -/area/security/transfer) -"bsL" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/darkred/side, -/area/security/transfer) -"bsM" = ( -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "2-4"; - tag = "icon-2-8" - }, -/turf/open/floor/plasteel/darkred/side, -/area/security/transfer) -"bsN" = ( -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/obj/machinery/button/door{ - dir = 4; - id = "exc"; - name = "Execution Chamber"; - pixel_x = 24 - }, -/turf/open/floor/plasteel/darkred/side{ - tag = "icon-darkred (SOUTHEAST)"; - icon_state = "darkred"; - dir = 6 - }, -/area/security/transfer) -"bsO" = ( -/obj/effect/decal/remains/human, -/turf/open/floor/plasteel{ - icon_plating = "asteroid"; - icon_state = "asteroid"; - name = "Asteroid" - }, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"bsP" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/maintenance{ - name = "Medbay Maintenance"; - req_access_txt = "5" - }, -/turf/open/floor/plating, -/area/medical/patients_rooms) -"bsQ" = ( -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=4"; - freq = 1400; - location = "Medbay" - }, -/obj/structure/plasticflaps{ - opacity = 1 - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plasteel{ - icon_state = "bot" - }, -/area/medical/medbay3) -"bsR" = ( -/obj/machinery/airalarm{ - dir = 1; - icon_state = "alarm0"; - pixel_y = -22 - }, -/obj/structure/table, -/obj/machinery/recharger, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/medical) -"bsS" = ( -/obj/structure/reagent_dispensers/peppertank{ - pixel_y = -28 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/medical) -"bsT" = ( -/obj/machinery/light, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/medical) -"bsU" = ( -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/medical) -"bsV" = ( -/obj/structure/closet/wardrobe/red, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/medical) -"bsW" = ( -/obj/machinery/computer/crew, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (SOUTHWEST)"; - icon_state = "whiteblue"; - dir = 10 - }, -/area/medical/medbay) -"bsX" = ( -/obj/structure/table/reinforced, -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/obj/item/clipboard, -/obj/item/folder/white, -/obj/item/pen/blue, -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (EAST)"; - icon_state = "door_open"; - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay) -"bsY" = ( -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (EAST)"; - icon_state = "whiteblue"; - dir = 4 - }, -/area/medical/medbay) -"bsZ" = ( -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/whiteblue, -/area/medical/medbay) -"bta" = ( -/obj/effect/landmark/event_spawn, -/obj/structure/flora/grass/green, -/turf/open/floor/grass, -/area/hallway/primary/port) -"btb" = ( -/mob/living/simple_animal/chicken, -/turf/open/floor/grass, -/area/hallway/primary/port) -"btc" = ( -/obj/structure/table/wood, -/obj/item/folder, -/obj/item/pen, -/obj/machinery/camera/autoname{ - tag = "icon-camera (EAST)"; - icon_state = "camera"; - dir = 4 - }, -/turf/open/floor/carpet, -/area/bridge/meeting_room) -"btd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/table/wood, -/obj/item/folder/yellow, -/obj/item/pen, -/turf/open/floor/carpet, -/area/bridge/meeting_room) -"bte" = ( -/obj/machinery/firealarm{ - dir = 1; - pixel_x = 0; - pixel_y = -26 - }, -/turf/open/floor/wood, -/area/bridge/meeting_room) -"btf" = ( -/obj/machinery/photocopier, -/obj/structure/noticeboard{ - dir = 8; - pixel_x = 27; - pixel_y = 0 - }, -/turf/open/floor/wood, -/area/bridge/meeting_room) -"btg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/black, -/area/ai_monitored/turret_protected/ai_upload) -"bth" = ( -/obj/structure/table, -/obj/item/aiModule/core/full/asimov, -/obj/item/aiModule/core/freeformcore, -/obj/machinery/door/window{ - base_state = "right"; - dir = 4; - icon_state = "right"; - name = "Core Modules"; - req_access_txt = "20" - }, -/obj/structure/window/reinforced, -/obj/item/aiModule/core/full/corp, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/item/aiModule/core/full/custom, -/turf/open/floor/plasteel/blue, -/area/ai_monitored/turret_protected/ai_upload) -"bti" = ( -/turf/open/floor/plasteel/blue, -/area/ai_monitored/turret_protected/ai_upload) -"btj" = ( -/mob/living/simple_animal/bot/secbot/beepsky, -/turf/open/floor/circuit{ - icon_state = "gcircuit"; - luminosity = 2 - }, -/area/ai_monitored/turret_protected/ai_upload) -"btk" = ( -/obj/structure/table, -/obj/item/aiModule/supplied/oxygen, -/obj/item/aiModule/zeroth/oneHuman, -/obj/machinery/door/window{ - base_state = "left"; - dir = 8; - icon_state = "left"; - name = "High-Risk Modules"; - req_access_txt = "20" - }, -/obj/item/aiModule/reset/purge, -/obj/structure/window/reinforced, -/obj/item/aiModule/core/full/antimov, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/aiModule/supplied/protectStation, -/turf/open/floor/plasteel/blue, -/area/ai_monitored/turret_protected/ai_upload) -"btl" = ( -/turf/open/floor/plasteel/black, -/area/ai_monitored/turret_protected/ai_upload) -"btm" = ( -/obj/machinery/airalarm{ - dir = 1; - icon_state = "alarm0"; - pixel_y = -22 - }, -/obj/structure/table/wood, -/obj/item/storage/lockbox/medal, -/turf/open/floor/wood, -/area/crew_quarters/captain) -"btn" = ( -/obj/structure/table/wood, -/obj/item/pinpointer, -/obj/item/disk/nuclear, -/turf/open/floor/wood, -/area/crew_quarters/captain) -"bto" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood, -/area/crew_quarters/captain{ - name = "\improper Captain's Quarters" - }) -"btp" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/firealarm{ - dir = 1; - pixel_x = 0; - pixel_y = -26 - }, -/turf/open/floor/wood, -/area/crew_quarters/captain) -"btq" = ( -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood, -/area/crew_quarters/captain) -"btr" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/wood, -/area/crew_quarters/captain) -"bts" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/crew_quarters/captain) -"btt" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/hallway/primary/starboard) -"btu" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/flora/grass/green, -/turf/open/floor/grass, -/area/hallway/primary/starboard) -"btv" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/landmark/event_spawn, -/obj/structure/flora/grass/green, -/turf/open/floor/grass, -/area/hallway/primary/starboard) -"btw" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/grass, -/area/hallway/primary/starboard) -"btx" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass{ - name = "Grass Enclosure"; - req_access_txt = "12" - }, -/turf/open/floor/plasteel/green, -/area/hallway/primary/starboard) -"bty" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"btz" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/disposalpipe/junction{ - icon_state = "pipe-j2"; - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"btA" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"btB" = ( -/turf/closed/wall, -/area/security/checkpoint/supply) -"btC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall, -/area/security/checkpoint/supply) -"btD" = ( -/obj/machinery/door/airlock/glass_security{ - name = "Security Post - Cargo"; - req_access_txt = "63" - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/supply) -"btE" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/quartermaster/qm) -"btF" = ( -/turf/closed/wall, -/area/quartermaster/qm) -"btG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/glass_mining{ - name = "Quartermaster"; - req_access_txt = "41" - }, -/turf/open/floor/plasteel/delivery, -/area/quartermaster/qm) -"btH" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/quartermaster/qm) -"btI" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/structure/closet/wardrobe/cargotech, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (WEST)"; - icon_state = "brown"; - dir = 8 - }, -/area/quartermaster/storage) -"btJ" = ( -/obj/structure/table, -/obj/item/device/gps, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (EAST)"; - icon_state = "brown"; - dir = 4 - }, -/area/quartermaster/storage) -"btK" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/rack, -/obj/item/storage/box/mousetraps, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"btL" = ( -/turf/open/space, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"btM" = ( -/turf/open/floor/mineral/titanium/blue, -/turf/closed/wall/mineral/titanium/interior, -/area/shuttle/supply) -"btN" = ( -/obj/structure/closet/secure_closet{ - name = "Firing Squad Locker"; - req_access_txt = "2" - }, -/obj/item/ammo_casing/a762, -/obj/item/ammo_casing/a762, -/obj/item/ammo_casing/a762, -/obj/item/ammo_casing/a762, -/obj/item/ammo_casing/a762, -/obj/item/ammo_casing/a762, -/obj/item/ammo_casing/a762, -/obj/item/ammo_casing/a762, -/obj/item/gun/ballistic/shotgun/boltaction, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"btO" = ( -/obj/structure/table/reinforced, -/obj/item/device/electropack, -/obj/item/wrench, -/obj/item/device/assembly/signaler, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"btP" = ( -/obj/structure/rack, -/obj/item/tank/internals/anesthetic, -/obj/item/clothing/mask/breath, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"btQ" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"btR" = ( -/obj/structure/table/reinforced, -/obj/item/device/taperecorder, -/obj/item/restraints/handcuffs, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"btS" = ( -/obj/structure/table/reinforced, -/obj/item/storage/box/bodybags, -/obj/item/pen, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"btT" = ( -/obj/structure/closet/secure_closet/injection, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"btU" = ( -/obj/item/restraints/handcuffs/cable/zipties/used, -/turf/open/floor/plasteel{ - icon_plating = "asteroid"; - icon_state = "asteroid"; - name = "Asteroid" - }, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"btV" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "" - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/maintenance/port) -"btW" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/door/airlock/maintenance_hatch, -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/turf/open/floor/plating, -/area/maintenance/port) -"btX" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/turf/open/floor/plating, -/area/maintenance/port) -"btY" = ( -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/turf/open/floor/plating, -/area/maintenance/port) -"btZ" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/port) -"bua" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "Medbay Storage APC"; - pixel_y = 24 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/turf/open/floor/plating, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"bub" = ( -/obj/machinery/power/apc{ - dir = 4; - name = "Medbay Security APC"; - pixel_x = 24 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/turf/open/floor/plating, -/area/security/checkpoint/medical) -"buc" = ( -/obj/machinery/vending/wallmed{ - pixel_x = -24 - }, -/obj/structure/rack, -/obj/item/storage/firstaid/regular, -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (WEST)"; - icon_state = "whiteblue"; - dir = 8 - }, -/area/medical/medbay) -"bud" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (EAST)"; - icon_state = "door_open"; - dir = 4 - }, -/obj/item/paper_bin, -/turf/open/floor/plasteel/white, -/area/medical/medbay) -"bue" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay) -"buf" = ( -/obj/machinery/shower{ - dir = 8; - icon_state = "shower"; - name = "emergency shower" - }, -/turf/open/floor/plasteel/delivery, -/area/medical/medbay) -"bug" = ( -/obj/structure/chair/comfy/black{ - dir = 1 - }, -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" - }, -/area/bridge/meeting_room) -"buh" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/chair/comfy/black{ - dir = 1 - }, -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" - }, -/area/bridge/meeting_room) -"bui" = ( -/turf/open/floor/carpet{ - icon_state = "carpetsymbol" - }, -/area/bridge/meeting_room) -"buj" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/black, -/area/ai_monitored/turret_protected/ai_upload) -"buk" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel/blue, -/area/ai_monitored/turret_protected/ai_upload) -"bul" = ( -/obj/effect/landmark/start{ - name = "Cyborg" - }, -/turf/open/floor/circuit{ - icon_state = "gcircuit"; - luminosity = 2 - }, -/area/ai_monitored/turret_protected/ai_upload) -"bum" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel/blue, -/area/ai_monitored/turret_protected/ai_upload) -"bun" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/black, -/area/ai_monitored/turret_protected/ai_upload) -"buo" = ( -/turf/closed/wall/r_wall, -/area/crew_quarters/captain{ - name = "\improper Captain's Quarters" - }) -"bup" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall/r_wall, -/area/crew_quarters/captain{ - name = "\improper Captain's Quarters" - }) -"buq" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/airlock/command{ - name = "Captain's Quarters"; - req_access = null; - req_access_txt = "20" - }, -/turf/open/floor/wood, -/area/crew_quarters/captain{ - name = "\improper Captain's Quarters" - }) -"bur" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bus" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"but" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" - }, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"buu" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"buv" = ( -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"buw" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/closet/secure_closet/security/cargo, -/obj/item/device/radio/intercom{ - name = "Station Intercom"; - pixel_x = 0; - pixel_y = 24 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/supply) -"bux" = ( -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/supply) -"buy" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/obj/machinery/computer/security, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/supply) -"buz" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/security/checkpoint/supply) -"buA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/table, -/obj/structure/table, -/obj/machinery/computer/stockexchange, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTHWEST)"; - icon_state = "brown"; - dir = 9 - }, -/area/quartermaster/qm) -"buB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/qm) -"buC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/qm) -"buD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/item/device/radio/intercom{ - name = "Station Intercom"; - pixel_x = 0; - pixel_y = 24 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTH)"; - icon_state = "brown"; - dir = 1 - }, -/area/quartermaster/qm) -"buE" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4; - initialize_directions = 11 - }, -/obj/structure/closet/secure_closet/quartermaster, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (NORTHEAST)"; - icon_state = "brown"; - dir = 5 - }, -/area/quartermaster/qm) -"buF" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/quartermaster/storage) -"buG" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/quartermaster/storage) -"buH" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/quartermaster/storage) -"buI" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/storage) -"buJ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel, -/area/quartermaster/storage) -"buK" = ( -/obj/structure/table, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (EAST)"; - icon_state = "brown"; - dir = 4 - }, -/area/quartermaster/storage) -"buL" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"buM" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/shuttle/engine/heater, -/turf/open/floor/plating/airless, -/area/shuttle/supply) -"buN" = ( -/turf/closed/wall/r_wall, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"buO" = ( -/turf/closed/wall, -/area/security/transfer) -"buP" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/security{ - aiControlDisabled = 1; - id_tag = "prisonereducation"; - name = "Prisoner Education Chamber"; - req_access = null; - req_access_txt = "3" - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"buQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall/r_wall, -/area/security/transfer) -"buR" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/structure/cable{ - tag = "icon-1-4"; - icon_state = "1-4" - }, -/turf/open/floor/plating, -/area/maintenance/port) -"buS" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - tag = "icon-1-4"; - icon_state = "1-4" - }, -/turf/open/floor/plating, -/area/maintenance/port) -"buT" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/open/floor/plating, -/area/maintenance/port) -"buU" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/maintenance{ - name = "Medbay Maintenance"; - req_access_txt = "5" - }, -/turf/open/floor/plating, -/area/medical/medbay) -"buV" = ( -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (SOUTHWEST)"; - icon_state = "whiteblue"; - dir = 10 - }, -/area/medical/medbay) -"buW" = ( -/turf/open/floor/plasteel/whiteblue/side, -/area/medical/medbay) -"buX" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/obj/structure/table/reinforced, -/obj/item/device/healthanalyzer, -/obj/item/device/healthanalyzer, -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (EAST)"; - icon_state = "door_open"; - dir = 4 - }, -/turf/open/floor/plasteel/whiteblue/side, -/area/medical/medbay) -"buY" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel/whiteblue/side, -/area/medical/medbay) -"buZ" = ( -/turf/open/floor/plasteel/whiteblue/side{ - tag = "icon-whiteblue (SOUTHEAST)"; - icon_state = "whiteblue"; - dir = 6 - }, -/area/medical/medbay) -"bva" = ( -/obj/machinery/status_display, -/turf/closed/wall, -/area/medical/medbay) -"bvb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (WEST)"; - icon_state = "blue"; - dir = 8 - }, -/area/hallway/primary/port) -"bvc" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/hallway/primary/port) -"bvd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (EAST)"; - icon_state = "blue"; - dir = 4 - }, -/area/hallway/primary/port) -"bve" = ( -/obj/structure/reagent_dispensers/water_cooler, -/turf/open/floor/wood, -/area/bridge/meeting_room) -"bvf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood, -/area/bridge/meeting_room) -"bvg" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Conference Room Maintenance"; - req_access_txt = "19" - }, -/turf/open/floor/plating, -/area/bridge/meeting_room) -"bvh" = ( -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/machinery/power/apc{ - dir = 1; - name = "Conference Room APC"; - pixel_x = 0; - pixel_y = 24 - }, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"bvi" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"bvj" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"bvk" = ( -/turf/open/floor/circuit, -/area/ai_monitored/turret_protected/ai_upload) -"bvl" = ( -/turf/open/floor/circuit{ - icon_state = "gcircuit"; - luminosity = 2 - }, -/area/ai_monitored/turret_protected/ai_upload) -"bvm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/black, -/area/ai_monitored/turret_protected/ai_upload) -"bvn" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"bvo" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"bvp" = ( -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"bvq" = ( -/obj/machinery/power/apc{ - dir = 8; - name = "Captain's Quarters APC"; - pixel_x = -24; - pixel_y = 0 - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/dresser, -/turf/open/floor/wood, -/area/crew_quarters/captain{ - name = "\improper Captain's Quarters" - }) -"bvr" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/table/wood, -/obj/item/card/id/captains_spare, -/obj/item/reagent_containers/food/drinks/flask/gold, -/turf/open/floor/wood, -/area/crew_quarters/captain{ - name = "\improper Captain's Quarters" - }) -"bvs" = ( -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood, -/area/crew_quarters/captain{ - name = "\improper Captain's Quarters" - }) -"bvt" = ( -/obj/structure/closet/secure_closet/captains, -/turf/open/floor/wood, -/area/crew_quarters/captain{ - name = "\improper Captain's Quarters" - }) -"bvu" = ( -/obj/structure/flora/grass/green, -/mob/living/simple_animal/pet/dog/pug, -/turf/open/floor/grass, -/area/hallway/primary/starboard) -"bvv" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/poddoor/preopen{ - id = "Biohazard"; - name = "biohazard containment door" - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bvw" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/poddoor/preopen{ - id = "Biohazard"; - name = "biohazard containment door" - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bvx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/poddoor/preopen{ - id = "Biohazard"; - name = "biohazard containment door" - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/purple/corner, -/area/hallway/primary/starboard) -"bvy" = ( -/turf/closed/wall/r_wall, -/area/toxins/lab) -"bvz" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bvA" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/obj/structure/closet, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/supply) -"bvB" = ( -/obj/effect/landmark/start/depsec/supply, -/obj/structure/chair/office/dark{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/supply) -"bvC" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/obj/machinery/computer/security/mining, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/supply) -"bvD" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/security/checkpoint/supply) -"bvE" = ( -/obj/structure/table, -/obj/item/folder/yellow, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (WEST)"; - icon_state = "brown"; - dir = 8 - }, -/area/quartermaster/qm) -"bvF" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/obj/structure/chair/office/light{ - dir = 8 - }, -/obj/effect/landmark/start{ - name = "Quartermaster" - }, -/turf/open/floor/plasteel, -/area/quartermaster/qm) -"bvG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/quartermaster/qm) -"bvH" = ( -/turf/open/floor/plasteel, -/area/quartermaster/qm) -"bvI" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (EAST)"; - icon_state = "brown"; - dir = 4 - }, -/area/quartermaster/qm) -"bvJ" = ( -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (SOUTHWEST)"; - icon_state = "brown"; - dir = 10 - }, -/area/quartermaster/storage) -"bvK" = ( -/turf/open/floor/plasteel/brown, -/area/quartermaster/storage) -"bvL" = ( -/obj/machinery/power/apc{ - dir = 2; - name = "Cargo Bay APC"; - pixel_x = 1; - pixel_y = -24 - }, -/obj/structure/cable, -/turf/open/floor/plasteel/brown, -/area/quartermaster/storage) -"bvM" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel/brown, -/area/quartermaster/storage) -"bvN" = ( -/obj/machinery/light, -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel/brown, -/area/quartermaster/storage) -"bvO" = ( -/obj/structure/table, -/obj/item/clothing/gloves/color/brown/cargo, -/turf/open/floor/plasteel/brown, -/area/quartermaster/storage) -"bvP" = ( -/obj/structure/table, -/obj/item/hand_labeler, -/obj/item/hand_labeler_refill, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (SOUTHEAST)"; - icon_state = "brown"; - dir = 6 - }, -/area/quartermaster/storage) -"bvQ" = ( -/obj/structure/shuttle/engine/propulsion{ - icon_state = "burst_l" - }, -/turf/open/floor/plating/airless, -/area/shuttle/supply) -"bvR" = ( -/obj/structure/shuttle/engine/propulsion, -/turf/open/floor/plating/airless, -/area/shuttle/supply) -"bvS" = ( -/obj/structure/shuttle/engine/propulsion{ - icon_state = "burst_r" - }, -/turf/open/floor/plating/airless, -/area/shuttle/supply) -"bvT" = ( -/obj/structure/closet/secure_closet{ - anchored = 1; - name = "Secure Evidence Closet"; - req_access_txt = "0"; - req_one_access_txt = "3,4" - }, -/turf/open/floor/plasteel/black, -/area/security/transfer) -"bvU" = ( -/obj/structure/closet{ - name = "Evidence Closet 1" - }, -/turf/open/floor/plasteel/black, -/area/security/transfer) -"bvV" = ( -/obj/structure/closet{ - name = "Evidence Closet 2" - }, -/turf/open/floor/plasteel/black, -/area/security/transfer) -"bvW" = ( -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bvX" = ( -/obj/structure/cable{ - icon_state = "2-4"; - tag = "icon-2-8" - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bvY" = ( -/obj/machinery/status_display{ - density = 0; - layer = 4; - pixel_x = 0; - pixel_y = 31 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bvZ" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bwa" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "2-4"; - tag = "icon-2-8" - }, -/obj/structure/cable{ - tag = "icon-1-4"; - icon_state = "1-4" - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bwb" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bwc" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "2-4"; - tag = "icon-2-8" - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bwd" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bwe" = ( -/obj/machinery/camera/autoname, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bwf" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 2; - name = "regular air scrubber"; - on = 1 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bwg" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bwh" = ( -/obj/effect/landmark/event_spawn, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bwi" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bwj" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bwk" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/security/transfer) -"bwl" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, -/turf/open/floor/plating, -/area/maintenance/port) -"bwm" = ( -/turf/closed/wall, -/area/crew_quarters/courtroom) -"bwn" = ( -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" - }, -/turf/open/floor/plating, -/area/maintenance/port) -"bwo" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" - }, -/turf/open/floor/plating, -/area/maintenance/port) -"bwp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/redblue/blueside{ - tag = "icon-bluered (WEST)"; - icon_state = "bluered"; - dir = 8 - }, -/area/hallway/primary/port) -"bwq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/redblue/blueside{ - tag = "icon-bluered (EAST)"; - icon_state = "bluered"; - dir = 4 - }, -/area/hallway/primary/port) -"bwr" = ( -/turf/closed/wall/r_wall, -/area/security/hos) -"bws" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall/r_wall, -/area/security/hos) -"bwt" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/command{ - name = "Head of Security's Office"; - req_access = null; - req_access_txt = "58" - }, -/turf/open/floor/wood, -/area/security/hos) -"bwu" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"bwv" = ( -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"bww" = ( -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"bwx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/computer/upload/ai, -/turf/open/floor/plasteel/black, -/area/ai_monitored/turret_protected/ai_upload) -"bwy" = ( -/obj/structure/table, -/obj/item/aiModule/core/full/asimov, -/turf/open/floor/plasteel/blue, -/area/ai_monitored/turret_protected/ai_upload) -"bwz" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/open/floor/circuit{ - icon_state = "gcircuit"; - luminosity = 2 - }, -/area/ai_monitored/turret_protected/ai_upload) -"bwA" = ( -/obj/machinery/power/apc{ - cell_type = 5000; - dir = 2; - name = "Upload APC"; - pixel_y = -24 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/turf/open/floor/plasteel/black, -/area/ai_monitored/turret_protected/ai_upload) -"bwB" = ( -/obj/structure/table, -/obj/item/aiModule/core/freeformcore, -/obj/item/aiModule/reset, -/turf/open/floor/plasteel/blue, -/area/ai_monitored/turret_protected/ai_upload) -"bwC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/computer/upload/borg, -/turf/open/floor/plasteel/black, -/area/ai_monitored/turret_protected/ai_upload) -"bwD" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/obj/structure/bed, -/obj/item/bedsheet/captain, -/turf/open/floor/wood, -/area/crew_quarters/captain{ - name = "\improper Captain's Quarters" - }) -"bwE" = ( -/obj/machinery/light, -/turf/open/floor/wood, -/area/crew_quarters/captain{ - name = "\improper Captain's Quarters" - }) -"bwF" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/wood, -/area/crew_quarters/captain{ - name = "\improper Captain's Quarters" - }) -"bwG" = ( -/obj/item/device/radio/intercom{ - desc = "Talk smack through this."; - dir = 4; - pixel_x = 28; - syndie = 1 - }, -/turf/open/floor/wood, -/area/crew_quarters/captain{ - name = "\improper Captain's Quarters" - }) -"bwH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/purple/corner{ - tag = "icon-purplecorner (EAST)"; - icon_state = "purplecorner"; - dir = 4 - }, -/area/hallway/primary/starboard) -"bwI" = ( -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (NORTHEAST)"; - icon_state = "purple"; - dir = 5 - }, -/area/hallway/primary/starboard) -"bwJ" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "rnd"; - name = "research lab shutters" - }, -/turf/open/floor/plating, -/area/toxins/lab) -"bwK" = ( -/obj/machinery/camera{ - c_tag = "Research and Development"; - dir = 2; - network = list("SS13","RD"); - pixel_x = 22 - }, -/obj/machinery/button/door{ - dir = 2; - id = "rnd"; - name = "Shutters Control Button"; - pixel_x = -6; - pixel_y = 24; - req_access_txt = "47" - }, -/obj/structure/table, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = -1 - }, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bwL" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bwM" = ( -/obj/structure/table, -/obj/item/stack/sheet/glass{ - amount = 50; - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/clothing/glasses/welding, -/obj/item/device/radio/intercom{ - name = "Station Intercom"; - pixel_x = 0; - pixel_y = 24 - }, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bwN" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bwO" = ( -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bwP" = ( -/obj/machinery/door/window/eastright{ - base_state = "left"; - dir = 8; - icon_state = "left"; - name = "Research Division Delivery"; - req_access_txt = "47" - }, -/turf/open/floor/plasteel/delivery, -/area/toxins/lab) -"bwQ" = ( -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=8"; - dir = 8; - freq = 1400; - location = "Research Division" - }, -/obj/structure/plasticflaps, -/turf/open/floor/plasteel/bot, -/area/toxins/lab) -"bwR" = ( -/obj/machinery/airalarm{ - dir = 1; - icon_state = "alarm0"; - pixel_y = -22 - }, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24; - pixel_y = 0 - }, -/obj/structure/filingcabinet/security, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/supply) -"bwS" = ( -/obj/machinery/light/small, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/supply) -"bwT" = ( -/obj/machinery/computer/secure_data, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/supply) -"bwU" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTH)"; - icon_state = "camera"; - dir = 1 - }, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (SOUTHWEST)"; - icon_state = "brown"; - dir = 10 - }, -/area/quartermaster/qm) -"bwV" = ( -/obj/machinery/computer/cargo, -/turf/open/floor/plasteel/brown, -/area/quartermaster/qm) -"bwW" = ( -/obj/machinery/light/small, -/obj/machinery/computer/security/mining, -/turf/open/floor/plasteel/brown, -/area/quartermaster/qm) -"bwX" = ( -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, -/turf/open/floor/plasteel/brown, -/area/quartermaster/qm) -"bwY" = ( -/obj/machinery/airalarm{ - dir = 1; - icon_state = "alarm0"; - pixel_y = -22 - }, -/obj/structure/filingcabinet/chestdrawer, -/turf/open/floor/plasteel/brown{ - tag = "icon-brown (SOUTHEAST)"; - icon_state = "brown"; - dir = 6 - }, -/area/quartermaster/qm) -"bwZ" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Cargo Bay Maintenance"; - req_access_txt = "0"; - req_one_access_txt = "48;50" - }, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bxa" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/open/floor/plasteel/black, -/area/security/transfer) -"bxb" = ( -/turf/open/floor/plasteel/black, -/area/security/transfer) -"bxc" = ( -/obj/machinery/door/airlock/security{ - name = "Evidence Storage"; - req_access = null; - req_access_txt = "0"; - req_one_access_txt = "1;4" - }, -/turf/open/floor/plasteel/black, -/area/security/transfer) -"bxd" = ( -/obj/machinery/firealarm{ - dir = 1; - pixel_x = 0; - pixel_y = -26 - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bxe" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bxf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bxg" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bxh" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bxi" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bxj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bxk" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 28; - pixel_y = 0 - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bxl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/closed/wall/r_wall, -/area/security/transfer) -"bxm" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/maintenance/port) -"bxn" = ( -/turf/open/floor/plasteel/blue, -/area/crew_quarters/courtroom) -"bxo" = ( -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel/redblue/blueside{ - tag = "icon-bluered (WEST)"; - icon_state = "bluered"; - dir = 8 - }, -/area/crew_quarters/courtroom) -"bxp" = ( -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/turf/open/floor/plasteel/redgreen/side{ - tag = "icon-redgreen (EAST)"; - icon_state = "redgreen"; - dir = 4 - }, -/area/crew_quarters/courtroom) -"bxq" = ( -/turf/open/floor/plasteel/green, -/area/crew_quarters/courtroom) -"bxr" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/crew_quarters/courtroom) -"bxs" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/plasteel/red/side{ - dir = 9 - }, -/area/crew_quarters/courtroom) -"bxt" = ( -/turf/open/floor/plasteel/red/side{ - dir = 1 - }, -/area/crew_quarters/courtroom) -"bxu" = ( -/obj/machinery/door/airlock/glass{ - name = "Courtroom" - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/crew_quarters/courtroom) -"bxv" = ( -/obj/structure/sign/directions/evac{ - pixel_y = -10 - }, -/obj/structure/sign/directions/engineering, -/obj/structure/sign/directions/science{ - pixel_y = 10 - }, -/turf/closed/wall, -/area/hallway/primary/port) -"bxw" = ( -/obj/machinery/computer/card/minor/hos, -/obj/machinery/camera/autoname{ - tag = "icon-camera (EAST)"; - icon_state = "camera"; - dir = 4 - }, -/turf/open/floor/wood, -/area/security/hos) -"bxx" = ( -/obj/machinery/requests_console{ - announcementConsole = 1; - department = "Head of Security's Desk"; - departmentType = 5; - name = "Head of Security RC"; - pixel_x = 0; - pixel_y = 30 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood, -/area/security/hos) -"bxy" = ( -/turf/open/floor/wood, -/area/security/hos) -"bxz" = ( -/obj/item/storage/secure/safe/HoS{ - pixel_x = 35 - }, -/obj/structure/closet/secure_closet/hos, -/turf/open/floor/wood, -/area/security/hos) -"bxA" = ( -/obj/machinery/camera/motion{ - c_tag = "MiniSat Foyer"; - dir = 1; - network = list("MiniSat") - }, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"bxB" = ( -/turf/closed/wall/r_wall, -/area/ai_monitored/turret_protected/ai) -"bxC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall/r_wall, -/area/ai_monitored/turret_protected/ai) -"bxD" = ( -/obj/machinery/status_display, -/turf/closed/wall/r_wall, -/area/ai_monitored/turret_protected/ai) -"bxE" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/airlock/highsecurity{ - icon_state = "door_closed"; - locked = 0; - name = "AI Chamber"; - req_access_txt = "16" - }, -/turf/open/floor/circuit{ - icon_state = "gcircuit"; - luminosity = 2 - }, -/area/ai_monitored/turret_protected/ai) -"bxF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall/r_wall, -/area/ai_monitored/turret_protected/ai) -"bxG" = ( -/turf/closed/wall, -/area/crew_quarters/captain{ - name = "\improper Captain's Quarters" - }) -"bxH" = ( -/obj/machinery/door/airlock{ - name = "Private Restroom"; - req_access_txt = "0" - }, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/captain{ - name = "\improper Captain's Quarters" - }) -"bxI" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/purple/corner{ - tag = "icon-purplecorner (WEST)"; - icon_state = "purplecorner"; - dir = 8 - }, -/area/hallway/primary/starboard) -"bxJ" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bxK" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bxL" = ( -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (EAST)"; - icon_state = "purple"; - dir = 4 - }, -/area/hallway/primary/starboard) -"bxM" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/southright{ - dir = 4; - name = "Research and Development Desk"; - req_access_txt = "7" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "rnd"; - name = "research lab shutters" - }, -/turf/open/floor/plating, -/area/toxins/lab) -"bxN" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bxO" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 2; - name = "regular air scrubber"; - on = 1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bxP" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bxQ" = ( -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bxR" = ( -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 1 - }, -/obj/structure/table/glass, -/obj/item/stock_parts/cell/high{ - pixel_x = 10; - pixel_y = 5 - }, -/obj/item/stock_parts/cell/high, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bxS" = ( -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bxT" = ( -/obj/structure/window/reinforced, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bxU" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bxV" = ( -/obj/structure/closet{ - name = "Evidence Closet 5" - }, -/turf/open/floor/plasteel/black, -/area/security/transfer) -"bxW" = ( -/obj/structure/closet{ - name = "Evidence Closet 4" - }, -/turf/open/floor/plasteel/black, -/area/security/transfer) -"bxX" = ( -/obj/structure/closet{ - name = "Evidence Closet 3" - }, -/turf/open/floor/plasteel/black, -/area/security/transfer) -"bxY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/closed/wall, -/area/security/transfer) -"bxZ" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass_security{ - name = "Long-Term Cell 2"; - req_access_txt = "2" - }, -/turf/open/floor/plasteel/darkred/side{ - tag = "icon-darkred (NORTH)"; - icon_state = "darkred"; - dir = 1 - }, -/area/security/transfer) -"bya" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/closed/wall, -/area/security/transfer) -"byb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/security/transfer) -"byc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/security/transfer) -"byd" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass_security{ - name = "Long-Term Cell 3"; - req_access_txt = "2" - }, -/turf/open/floor/plasteel/darkred/side{ - tag = "icon-darkred (NORTH)"; - icon_state = "darkred"; - dir = 1 - }, -/area/security/transfer) -"bye" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/closed/wall, -/area/security/transfer) -"byf" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/security{ - aiControlDisabled = 1; - id_tag = null; - name = "Prisoner Education Supplies"; - req_access = null; - req_access_txt = "3" - }, -/turf/open/floor/plasteel/darkred/side{ - tag = "icon-darkred (NORTH)"; - icon_state = "darkred"; - dir = 1 - }, -/area/security/transfer) -"byg" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2; - initialize_directions = 11 - }, -/turf/closed/wall, -/area/security/transfer) -"byh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/tank_dispenser/oxygen, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (NORTH)"; - icon_state = "door_open"; - dir = 1 - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"byi" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (NORTH)"; - icon_state = "door_open"; - dir = 1 - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"byj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/window/brigdoor{ - dir = 1; - name = "Atmos Locker"; - req_access_txt = "2" - }, -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (NORTH)"; - icon_state = "door_open"; - dir = 1 - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"byk" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (NORTH)"; - icon_state = "door_open"; - dir = 1 - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"byl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8; - pixel_x = 0 - }, -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 0 - }, -/obj/structure/closet/secure_closet/brig, -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (NORTH)"; - icon_state = "door_open"; - dir = 1 - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bym" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (NORTH)"; - icon_state = "door_open"; - dir = 1 - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"byn" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/filingcabinet/security, -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (NORTH)"; - icon_state = "door_open"; - dir = 1 - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"byo" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8; - pixel_x = 0 - }, -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (WEST)"; - icon_state = "door_open"; - dir = 8 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"byp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"byq" = ( -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/machinery/power/apc{ - dir = 4; - name = "Prisoner Transfer Centre"; - pixel_x = 24; - pixel_y = 0 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"byr" = ( -/obj/structure/chair{ - dir = 4; - name = "Prosecution" - }, -/turf/open/floor/plasteel/blue, -/area/crew_quarters/courtroom) -"bys" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/obj/structure/table/wood, -/turf/open/floor/plasteel/blue, -/area/crew_quarters/courtroom) -"byt" = ( -/turf/open/floor/plasteel/redblue/blueside{ - tag = "icon-bluered (WEST)"; - icon_state = "bluered"; - dir = 8 - }, -/area/crew_quarters/courtroom) -"byu" = ( -/turf/open/floor/plasteel/redgreen/side{ - tag = "icon-redgreen (EAST)"; - icon_state = "redgreen"; - dir = 4 - }, -/area/crew_quarters/courtroom) -"byv" = ( -/obj/structure/table/wood, -/turf/open/floor/plasteel/green, -/area/crew_quarters/courtroom) -"byw" = ( -/obj/structure/chair{ - dir = 8; - name = "Defense" - }, -/turf/open/floor/plasteel/green, -/area/crew_quarters/courtroom) -"byx" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/crew_quarters/courtroom) -"byy" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/courtroom) -"byz" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/red/corner, -/area/crew_quarters/courtroom) -"byA" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/red/side, -/area/crew_quarters/courtroom) -"byB" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel/red/side, -/area/crew_quarters/courtroom) -"byC" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/door/airlock/glass{ - name = "Courtroom" - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/crew_quarters/courtroom) -"byD" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/redblue/blueside{ - tag = "icon-bluered (WEST)"; - icon_state = "bluered"; - dir = 8 - }, -/area/hallway/primary/port) -"byE" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/hallway/primary/port) -"byF" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/security/detectives_office) -"byG" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/computer/secure_data, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/security/detectives_office) -"byH" = ( -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/security/detectives_office) -"byI" = ( -/obj/machinery/computer/security/wooden_tv, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/security/detectives_office) -"byJ" = ( -/obj/machinery/airalarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/obj/structure/table/wood, -/obj/item/hand_labeler, -/obj/item/reagent_containers/food/drinks/flask/det, -/obj/item/device/radio/intercom{ - name = "Station Intercom"; - pixel_x = 0; - pixel_y = 24 - }, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/security/detectives_office) -"byK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -23; - pixel_y = 0 - }, -/obj/machinery/computer/secure_data, -/turf/open/floor/wood, -/area/security/hos) -"byL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/security/hos) -"byM" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/carpet, -/area/security/hos) -"byN" = ( -/obj/structure/table/wood, -/obj/item/storage/box/deputy, -/obj/item/storage/box/seccarts{ - pixel_x = 3; - pixel_y = 2 - }, -/obj/machinery/airalarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/turf/open/floor/wood, -/area/security/hos) -"byO" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"byP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/porta_turret/ai{ - dir = 4 - }, -/turf/open/floor/circuit{ - icon_state = "gcircuit"; - luminosity = 2 - }, -/area/ai_monitored/turret_protected/ai) -"byQ" = ( -/turf/open/floor/plasteel/black, -/area/ai_monitored/turret_protected/ai) -"byR" = ( -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/turf/open/floor/plasteel/black, -/area/ai_monitored/turret_protected/ai) -"byS" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/circuit{ - icon_state = "gcircuit"; - luminosity = 2 - }, -/area/ai_monitored/turret_protected/ai) -"byT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/porta_turret/ai{ - dir = 4 - }, -/turf/open/floor/circuit{ - icon_state = "gcircuit"; - luminosity = 2 - }, -/area/ai_monitored/turret_protected/ai) -"byU" = ( -/obj/machinery/light/small{ - brightness = 3; - dir = 8 - }, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"byV" = ( -/obj/structure/toilet{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/captain{ - name = "\improper Captain's Quarters" - }) -"byW" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/item/soap/deluxe, -/obj/machinery/shower{ - tag = "icon-shower (NORTH)"; - icon_state = "shower"; - dir = 1 - }, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/captain{ - name = "\improper Captain's Quarters" - }) -"byX" = ( -/obj/structure/sink{ - pixel_y = 30 - }, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/captain{ - name = "\improper Captain's Quarters" - }) -"byY" = ( -/obj/machinery/airalarm{ - dir = 1; - icon_state = "alarm0"; - pixel_y = -22 - }, -/turf/open/floor/plasteel{ - icon_state = "freezerfloor" - }, -/area/crew_quarters/captain{ - name = "\improper Captain's Quarters" - }) -"byZ" = ( -/turf/closed/wall, -/area/medical/research{ - name = "Research Division" - }) -"bza" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/camera/autoname{ - tag = "icon-camera (EAST)"; - icon_state = "camera"; - dir = 4 - }, -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (WEST)"; - icon_state = "purple"; - dir = 8 - }, -/area/hallway/primary/starboard) -"bzb" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=HOP"; - location = "CHE" - }, -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bzc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/purple/corner, -/area/hallway/primary/starboard) -"bzd" = ( -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (SOUTHEAST)"; - icon_state = "purple"; - dir = 6 - }, -/area/hallway/primary/starboard) -"bze" = ( -/obj/machinery/rnd/destructive_analyzer, -/turf/open/floor/plasteel/purple, -/area/toxins/lab) -"bzf" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/purple, -/area/toxins/lab) -"bzg" = ( -/obj/machinery/rnd/protolathe, -/turf/open/floor/plasteel/purple, -/area/toxins/lab) -"bzh" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bzi" = ( -/obj/structure/table/glass, -/obj/item/stock_parts/manipulator, -/obj/item/stock_parts/capacitor, -/obj/item/stock_parts/capacitor, -/obj/item/stock_parts/manipulator, -/obj/item/stock_parts/micro_laser, -/obj/item/stock_parts/micro_laser, -/obj/item/stack/cable_coil{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/stack/cable_coil, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bzj" = ( -/obj/structure/cable{ - tag = "icon-1-4"; - icon_state = "1-4" - }, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bzk" = ( -/obj/structure/window/reinforced, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bzl" = ( -/obj/structure/window/reinforced, -/obj/machinery/power/apc{ - dir = 1; - name = "Cargo Security APC"; - pixel_x = 1; - pixel_y = 24 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/turf/open/floor/plating, -/area/security/checkpoint/supply) -"bzm" = ( -/obj/structure/window/reinforced, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bzn" = ( -/obj/structure/window/reinforced, -/obj/machinery/power/apc{ - dir = 1; - name = "Quartermaster's Office APC"; - pixel_x = 0; - pixel_y = 30 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/turf/open/floor/plating, -/area/quartermaster/qm) -"bzo" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bzp" = ( -/turf/closed/mineral/random/labormineral, -/area/maintenance/asmaint2) -"bzq" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bzr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plasteel/black, -/area/security/transfer) -"bzs" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/black, -/area/security/transfer) -"bzt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/black, -/area/security/transfer) -"bzu" = ( -/obj/structure/bodycontainer/morgue, -/turf/open/floor/plasteel/black, -/area/security/transfer) -"bzv" = ( -/obj/structure/filingcabinet/security, -/turf/open/floor/plasteel/black, -/area/security/transfer) -"bzw" = ( -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bzx" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "Waste to Filter"; - on = 1 - }, -/obj/item/storage/toolbox/mechanical, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bzy" = ( -/obj/structure/window/reinforced{ - dir = 8; - pixel_x = 0 - }, -/obj/structure/closet/secure_closet/brig, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bzz" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bzA" = ( -/obj/structure/window/reinforced{ - dir = 8; - pixel_x = 0 - }, -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (WEST)"; - icon_state = "door_open"; - dir = 8 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "" - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bzB" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bzC" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/structure/chair{ - dir = 4; - name = "Prosecution" - }, -/turf/open/floor/plasteel/blue, -/area/crew_quarters/courtroom) -"bzD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/table/wood, -/turf/open/floor/plasteel/blue, -/area/crew_quarters/courtroom) -"bzE" = ( -/obj/structure/chair{ - dir = 8; - name = "Defense" - }, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 28; - pixel_y = 0 - }, -/turf/open/floor/plasteel/green, -/area/crew_quarters/courtroom) -"bzF" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/crew_quarters/courtroom) -"bzG" = ( -/obj/item/device/radio/beacon, -/turf/open/floor/plasteel, -/area/crew_quarters/courtroom) -"bzH" = ( -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/crew_quarters/courtroom) -"bzI" = ( -/turf/closed/wall, -/area/lawoffice) -"bzJ" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/lawoffice) -"bzK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/open/floor/plasteel/redblue/blueside{ - tag = "icon-bluered (WEST)"; - icon_state = "bluered"; - dir = 8 - }, -/area/hallway/primary/port) -"bzL" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/hallway/primary/port) -"bzM" = ( -/obj/machinery/computer/med_data, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/security/detectives_office) -"bzN" = ( -/obj/structure/chair/office/dark, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/security/detectives_office) -"bzO" = ( -/obj/machinery/requests_console{ - department = "Detective's office"; - pixel_x = 30; - pixel_y = 0 - }, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/security/detectives_office) -"bzP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/computer/security, -/turf/open/floor/wood, -/area/security/hos) -"bzQ" = ( -/obj/effect/landmark/start{ - name = "Head of Security" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/carpet, -/area/security/hos) -"bzR" = ( -/turf/open/floor/carpet, -/area/security/hos) -"bzS" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/table/wood, -/obj/machinery/recharger, -/turf/open/floor/wood, -/area/security/hos) -"bzT" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/circuit, -/area/ai_monitored/turret_protected/ai) -"bzU" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/circuit, -/area/ai_monitored/turret_protected/ai) -"bzV" = ( -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/obj/effect/landmark/start{ - name = "Cyborg" - }, -/turf/open/floor/circuit{ - icon_state = "gcircuit"; - luminosity = 2 - }, -/area/ai_monitored/turret_protected/ai) -"bzW" = ( -/turf/open/floor/circuit, -/area/ai_monitored/turret_protected/ai) -"bzX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/circuit, -/area/ai_monitored/turret_protected/ai) -"bzY" = ( -/turf/closed/wall/r_wall, -/area/crew_quarters/hor) -"bzZ" = ( -/obj/structure/table, -/obj/machinery/microwave, -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bAa" = ( -/obj/machinery/vending/cola, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/medical/research{ - name = "Research Division" - }) -"bAb" = ( -/obj/machinery/vending/snack, -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bAc" = ( -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/medical/research{ - name = "Research Division" - }) -"bAd" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/medical/research{ - name = "Research Division" - }) -"bAe" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (WEST)"; - icon_state = "purple"; - dir = 8 - }, -/area/hallway/primary/starboard) -"bAf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (EAST)"; - icon_state = "purple"; - dir = 4 - }, -/area/hallway/primary/starboard) -"bAg" = ( -/obj/machinery/computer/rdconsole/core, -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/requests_console{ - department = "Science"; - departmentType = 2; - name = "Science Requests Console"; - pixel_x = -30; - pixel_y = 0 - }, -/turf/open/floor/plasteel/purple, -/area/toxins/lab) -"bAh" = ( -/obj/effect/landmark/start{ - name = "Scientist" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/purple, -/area/toxins/lab) -"bAi" = ( -/obj/machinery/rnd/circuit_imprinter, -/obj/item/reagent_containers/glass/beaker/sulphuric, -/turf/open/floor/plasteel/purple, -/area/toxins/lab) -"bAj" = ( -/obj/machinery/holopad, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bAk" = ( -/obj/item/stock_parts/console_screen, -/obj/structure/table/glass, -/obj/item/stock_parts/console_screen, -/obj/item/stock_parts/console_screen, -/obj/item/stock_parts/matter_bin, -/obj/item/stock_parts/matter_bin, -/obj/item/stock_parts/scanning_module{ - pixel_x = 2; - pixel_y = 3 - }, -/obj/item/stock_parts/scanning_module, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/airalarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bAl" = ( -/obj/structure/window/reinforced{ - dir = 8; - pixel_x = 0 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/open/floor/plating/asteroid/airless{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"bAm" = ( -/obj/structure/window/reinforced{ - dir = 8; - pixel_x = 0 - }, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bAn" = ( -/obj/structure/grille, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bAo" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/obj/structure/table, -/obj/item/paper, -/obj/item/pen, -/turf/open/floor/plasteel/black, -/area/security/transfer) -"bAp" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/obj/structure/bed, -/obj/item/bedsheet/orange, -/turf/open/floor/plasteel/black, -/area/security/transfer) -"bAq" = ( -/obj/machinery/light/small, -/turf/open/floor/plasteel/black, -/area/security/transfer) -"bAr" = ( -/obj/structure/table/reinforced, -/obj/item/storage/box/bodybags, -/turf/open/floor/plasteel/black, -/area/security/transfer) -"bAs" = ( -/obj/machinery/suit_storage_unit/security, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bAt" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/obj/machinery/portable_atmospherics/scrubber, -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bAu" = ( -/obj/machinery/light, -/obj/structure/table, -/obj/structure/window/reinforced{ - dir = 8; - pixel_x = 0 - }, -/obj/item/storage/box/zipties, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bAv" = ( -/obj/structure/table, -/obj/item/storage/box/prisoner, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bAw" = ( -/obj/machinery/computer/prisoner, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bAx" = ( -/obj/machinery/door/airlock/glass_security{ - name = "Security Control"; - req_access_txt = "2" - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bAy" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass_security{ - name = "Prisoner Processing"; - req_access_txt = "2" - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bAz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/blue, -/area/crew_quarters/courtroom) -"bAA" = ( -/obj/machinery/door/airlock/glass{ - name = "Courtroom"; - req_access_txt = "42" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/courtroom) -"bAB" = ( -/turf/open/floor/plasteel/red/side{ - dir = 10 - }, -/area/crew_quarters/courtroom) -"bAC" = ( -/turf/open/floor/plasteel/red/side, -/area/crew_quarters/courtroom) -"bAD" = ( -/turf/open/floor/plasteel/red/side{ - dir = 6 - }, -/area/crew_quarters/courtroom) -"bAE" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock{ - name = "Law Office"; - req_access_txt = "38" - }, -/turf/open/floor/wood, -/area/lawoffice) -"bAF" = ( -/turf/open/floor/wood, -/area/lawoffice) -"bAG" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/wood, -/area/lawoffice) -"bAH" = ( -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/turf/open/floor/wood, -/area/lawoffice) -"bAI" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/wood, -/area/lawoffice) -"bAJ" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/preopen{ - id = "lawyer_blast"; - name = "privacy door" - }, -/turf/open/floor/plating, -/area/lawoffice) -"bAK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/hallway/primary/port) -"bAL" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/structure/disposalpipe/junction{ - icon_state = "pipe-j2"; - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) -"bAM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/red/side{ - tag = "icon-red (EAST)"; - icon_state = "red"; - dir = 4 - }, -/area/hallway/primary/port) -"bAN" = ( -/obj/structure/table/wood, -/obj/item/device/taperecorder, -/obj/item/device/camera, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/security/detectives_office) -"bAO" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 2; - name = "regular air scrubber"; - on = 1 - }, -/obj/structure/table/wood, -/obj/item/folder/red, -/obj/item/pen/red, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/security/detectives_office) -"bAP" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/item/book/manual/wiki/security_space_law, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/security/detectives_office) -"bAQ" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/security/detectives_office) -"bAR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/item/device/radio/intercom{ - dir = 4; - name = "Station Intercom (General)"; - pixel_x = -31 - }, -/turf/open/floor/wood, -/area/security/hos) -"bAS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/carpet, -/area/security/hos) -"bAT" = ( -/obj/machinery/keycard_auth{ - pixel_x = 24; - pixel_y = 10 - }, -/obj/structure/table/wood, -/obj/item/device/radio/off, -/obj/item/device/taperecorder{ - pixel_y = 0 - }, -/turf/open/floor/wood, -/area/security/hos) -"bAU" = ( -/obj/machinery/porta_turret/ai{ - dir = 4 - }, -/turf/open/floor/circuit{ - icon_state = "gcircuit"; - luminosity = 2 - }, -/area/ai_monitored/turret_protected/ai) -"bAV" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/circuit, -/area/ai_monitored/turret_protected/ai) -"bAW" = ( -/turf/open/floor/plasteel/blue, -/area/ai_monitored/turret_protected/ai) -"bAX" = ( -/obj/machinery/camera/motion{ - c_tag = "MiniSat Foyer"; - dir = 1; - network = list("MiniSat") - }, -/turf/open/floor/circuit, -/area/ai_monitored/turret_protected/ai) -"bAY" = ( -/obj/machinery/light, -/turf/open/floor/circuit{ - icon_state = "gcircuit"; - luminosity = 2 - }, -/area/ai_monitored/turret_protected/ai) -"bAZ" = ( -/obj/machinery/turretid{ - name = "AI Chamber turret control"; - pixel_x = 5; - pixel_y = -24 - }, -/turf/open/floor/circuit, -/area/ai_monitored/turret_protected/ai) -"bBa" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/maintenance{ - name = "RD Maintenance"; - req_access_txt = "30" - }, -/turf/open/floor/plating, -/area/crew_quarters/hor) -"bBb" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "RD Office APC"; - pixel_x = 0; - pixel_y = 24 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/turf/open/floor/plasteel/whitepurple/corner, -/area/crew_quarters/hor) -"bBc" = ( -/obj/machinery/requests_console{ - announcementConsole = 1; - department = "Research Director's Desk"; - departmentType = 5; - name = "Research Director RC"; - pixel_x = -2; - pixel_y = 30 - }, -/turf/open/floor/plasteel/whitepurple/corner, -/area/crew_quarters/hor) -"bBd" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/plasteel/whitepurple/corner, -/area/crew_quarters/hor) -"bBe" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/item/twohanded/required/kirbyplants/dead, -/turf/open/floor/plasteel/whitepurple/corner, -/area/crew_quarters/hor) -"bBf" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/hor) -"bBg" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/medical/research{ - name = "Research Division" - }) -"bBh" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bBi" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bBj" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/medical/research{ - name = "Research Division" - }) -"bBk" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (WEST)"; - icon_state = "purple"; - dir = 8 - }, -/area/hallway/primary/starboard) -"bBl" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/disposalpipe/junction{ - icon_state = "pipe-y"; - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bBm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (EAST)"; - icon_state = "purple"; - dir = 4 - }, -/area/hallway/primary/starboard) -"bBn" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "rnd"; - name = "research lab shutters" - }, -/turf/open/floor/plating, -/area/toxins/lab) -"bBo" = ( -/obj/item/folder/white, -/obj/structure/table, -/obj/item/disk/tech_disk{ - pixel_x = 0; - pixel_y = 0 - }, -/obj/item/disk/tech_disk{ - pixel_x = 0; - pixel_y = 0 - }, -/obj/item/disk/design_disk, -/obj/item/disk/design_disk, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bBp" = ( -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bBq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bBr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bBs" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bBt" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - name = "regular air vent"; - on = 1 - }, -/obj/effect/landmark{ - name = "xeno_spawn"; - pixel_x = -1 - }, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bBu" = ( -/obj/structure/table/glass, -/obj/item/reagent_containers/glass/beaker/large{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/reagent_containers/glass/beaker{ - pixel_x = 8; - pixel_y = 2 - }, -/obj/item/reagent_containers/dropper, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bBv" = ( -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 8; - pixel_x = 0 - }, -/turf/open/floor/plating/asteroid/airless{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"bBw" = ( -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/plating/asteroid/airless{ - baseturf = /turf/open/floor/plating/asteroid/airless - }, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"bBx" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -28 - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bBy" = ( -/obj/structure/cable, -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/sign/electricshock{ - pixel_x = -32 - }, -/obj/structure/sign/electricshock{ - pixel_x = 32 - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/security/transfer) -"bBz" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bBA" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8; - initialize_directions = 11 - }, -/turf/closed/wall/r_wall, -/area/security/transfer) -"bBB" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/port) -"bBC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/courtroom) -"bBD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/blue, -/area/crew_quarters/courtroom) -"bBE" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel/blue, -/area/crew_quarters/courtroom) -"bBF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/redblue/blueside{ - tag = "icon-bluered (WEST)"; - icon_state = "bluered"; - dir = 8 - }, -/area/crew_quarters/courtroom) -"bBG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/redgreen/side{ - tag = "icon-redgreen (EAST)"; - icon_state = "redgreen"; - dir = 4 - }, -/area/crew_quarters/courtroom) -"bBH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/chair{ - dir = 1; - name = "Bailiff" - }, -/turf/open/floor/plasteel/green, -/area/crew_quarters/courtroom) -"bBI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/green, -/area/crew_quarters/courtroom) -"bBJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/crew_quarters/courtroom) -"bBK" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/crew_quarters/courtroom) -"bBL" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/crew_quarters/courtroom) -"bBM" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/crew_quarters/courtroom) -"bBN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/lawoffice) -"bBO" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -28 - }, -/turf/open/floor/wood, -/area/lawoffice) -"bBP" = ( -/obj/structure/table/wood, -/obj/item/device/flashlight/lamp, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/item/storage/briefcase, -/turf/open/floor/wood, -/area/lawoffice) -"bBQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/lawoffice) -"bBR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/table/wood, -/obj/item/device/taperecorder, -/obj/item/device/camera, -/turf/open/floor/wood, -/area/lawoffice) -"bBS" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/preopen{ - id = "lawyer_blast"; - name = "privacy door" - }, -/turf/open/floor/plating, -/area/lawoffice) -"bBT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/hallway/primary/port) -"bBU" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/hallway/primary/port) -"bBV" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/turf/open/floor/plasteel/red/side{ - tag = "icon-red (EAST)"; - icon_state = "red"; - dir = 4 - }, -/area/hallway/primary/port) -"bBW" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/security/detectives_office) -"bBX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/table/wood, -/obj/item/storage/briefcase, -/obj/item/clothing/glasses/sunglasses, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/security/detectives_office) -"bBY" = ( -/obj/effect/landmark/start{ - name = "Detective" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/security/detectives_office) -"bBZ" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/security/detectives_office) -"bCa" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/security/detectives_office) -"bCb" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/security/hos) -"bCc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/chair/comfy/black{ - dir = 4 - }, -/turf/open/floor/wood, -/area/security/hos) -"bCd" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/structure/table/wood, -/obj/item/folder/red, -/obj/item/stamp/hos, -/turf/open/floor/carpet, -/area/security/hos) -"bCe" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/carpet, -/area/security/hos) -"bCf" = ( -/obj/machinery/power/apc{ - dir = 4; - name = "Head of Security's Office APC"; - pixel_x = 24 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/turf/open/floor/wood, -/area/security/hos) -"bCg" = ( -/turf/closed/wall, -/area/crew_quarters/hor) -"bCh" = ( -/obj/machinery/suit_storage_unit/rd, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/crew_quarters/hor) -"bCi" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel/whitepurple/corner{ - dir = 1 - }, -/area/crew_quarters/hor) -"bCj" = ( -/turf/open/floor/plasteel/whitepurple/corner{ - dir = 1 - }, -/area/crew_quarters/hor) -"bCk" = ( -/obj/machinery/computer/aifixer, -/turf/open/floor/plasteel/whitepurple/corner{ - dir = 1 - }, -/area/crew_quarters/hor) -"bCl" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/crew_quarters/hor) -"bCm" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bCn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/medical/research{ - name = "Research Division" - }) -"bCo" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/landmark/start{ - name = "Scientist" - }, -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bCp" = ( -/obj/structure/table, -/obj/item/storage/fancy/donut_box, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/medical/research{ - name = "Research Division" - }) -"bCq" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bCr" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bCs" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bCt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bCu" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bCv" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/button/door{ - id = "rnd2"; - name = "Research Lab Shutter Control"; - pixel_x = -5; - pixel_y = -24; - req_access_txt = "47" - }, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bCw" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bCx" = ( -/obj/machinery/power/apc{ - dir = 2; - name = "Research Lab APC"; - pixel_x = 0; - pixel_y = -26 - }, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/obj/structure/table/glass, -/obj/item/device/gps/science, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bCy" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bCz" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/machinery/light/small, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bCA" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bCB" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bCC" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/table, -/obj/item/folder/red, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bCD" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/structure/sign/electricshock{ - pixel_y = -32 - }, -/turf/open/floor/plating, -/area/security/transfer) -"bCE" = ( -/turf/closed/wall, -/area/maintenance/fpmaint2) -"bCF" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "Arrivals North Maintenance APC"; - pixel_x = -1; - pixel_y = 26 - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint2) -"bCG" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint2) -"bCH" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint2) -"bCI" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint2) -"bCJ" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/plasteel/darkred, -/area/maintenance/fpmaint2) -"bCK" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/darkred, -/area/maintenance/fpmaint2) -"bCL" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" - }, -/turf/open/floor/plating, -/area/maintenance/port) -"bCM" = ( -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/maintenance/port) -"bCN" = ( -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 0 - }, -/obj/machinery/light_switch{ - dir = 8; - pixel_x = -24 - }, -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (NORTH)"; - icon_state = "door_open"; - dir = 1 - }, -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (NORTHWEST)"; - icon_state = "blue"; - dir = 9 - }, -/area/crew_quarters/courtroom) -"bCO" = ( -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 0 - }, -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (NORTH)"; - icon_state = "door_open"; - dir = 1 - }, -/obj/machinery/holopad, -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (NORTH)"; - icon_state = "blue"; - dir = 1 - }, -/area/crew_quarters/courtroom) -"bCP" = ( -/obj/structure/table/wood, -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 0 - }, -/obj/item/gavelblock, -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (NORTH)"; - icon_state = "door_open"; - dir = 1 - }, -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (NORTH)"; - icon_state = "blue"; - dir = 1 - }, -/area/crew_quarters/courtroom) -"bCQ" = ( -/obj/structure/table/wood, -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 0 - }, -/obj/item/device/radio/intercom{ - broadcasting = 0; - dir = 8; - listening = 1; - name = "Station Intercom (Court)"; - pixel_x = 0 - }, -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (NORTH)"; - icon_state = "door_open"; - dir = 1 - }, -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (NORTH)"; - icon_state = "blue"; - dir = 1 - }, -/area/crew_quarters/courtroom) -"bCR" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 0 - }, -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (NORTH)"; - icon_state = "door_open"; - dir = 1 - }, -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (NORTH)"; - icon_state = "blue"; - dir = 1 - }, -/area/crew_quarters/courtroom) -"bCS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/door/window/brigdoor{ - dir = 1; - req_access_txt = "1" - }, -/obj/machinery/door/firedoor/border_only{ - tag = "icon-door_open (NORTH)"; - icon_state = "door_open"; - dir = 1 - }, -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (NORTHEAST)"; - icon_state = "blue"; - dir = 5 - }, -/area/crew_quarters/courtroom) -"bCT" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/crew_quarters/courtroom) -"bCU" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1; - initialize_directions = 11 - }, -/obj/structure/table, -/obj/item/paper_bin, -/turf/open/floor/plasteel/black, -/area/crew_quarters/courtroom) -"bCV" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/black, -/area/crew_quarters/courtroom) -"bCW" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/bed, -/obj/item/bedsheet/orange, -/turf/open/floor/plasteel/black, -/area/crew_quarters/courtroom) -"bCX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/lawoffice) -"bCY" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/chair/office/light{ - dir = 4 - }, -/obj/machinery/requests_console{ - department = "Law office"; - pixel_x = -32; - pixel_y = 0 - }, -/obj/effect/landmark/start{ - name = "Lawyer" - }, -/turf/open/floor/wood, -/area/lawoffice) -"bCZ" = ( -/obj/structure/table/wood, -/obj/item/book/manual/wiki/security_space_law, -/obj/item/stamp/law, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/lawoffice) -"bDa" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1; - initialize_directions = 11 - }, -/turf/open/floor/wood, -/area/lawoffice) -"bDb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/photocopier, -/turf/open/floor/wood, -/area/lawoffice) -"bDc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/lawoffice) -"bDd" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4; - initialize_directions = 11 - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/hallway/primary/port) -"bDe" = ( -/obj/structure/filingcabinet/security, -/obj/machinery/firealarm{ - dir = 1; - pixel_x = 0; - pixel_y = -26 - }, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/security/detectives_office) -"bDf" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/security/detectives_office) -"bDg" = ( -/obj/item/storage/secure/safe{ - pixel_x = 0; - pixel_y = -23 - }, -/obj/structure/closet{ - name = "Evidence Closet" - }, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/security/detectives_office) -"bDh" = ( -/obj/structure/closet/secure_closet/detective, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/security/detectives_office) -"bDi" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/table/wood, -/obj/item/book/manual/wiki/security_space_law, -/turf/open/floor/wood, -/area/security/hos) -"bDj" = ( -/obj/structure/table/wood, -/obj/item/device/flashlight/lamp, -/obj/machinery/firealarm{ - dir = 1; - pixel_x = 0; - pixel_y = -26 - }, -/turf/open/floor/wood, -/area/security/hos) -"bDk" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/wood, -/area/security/hos) -"bDl" = ( -/obj/machinery/suit_storage_unit/hos, -/turf/open/floor/wood, -/area/security/hos) -"bDm" = ( -/obj/effect/landmark{ - name = "tripai" - }, -/turf/open/floor/circuit, -/area/ai_monitored/turret_protected/ai) -"bDn" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/circuit, -/area/ai_monitored/turret_protected/ai) -"bDo" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel/blue, -/area/ai_monitored/turret_protected/ai) -"bDp" = ( -/obj/effect/landmark/start{ - name = "AI" - }, -/obj/item/device/radio/intercom{ - broadcasting = 0; - freerange = 1; - listening = 1; - name = "Common Channel"; - pixel_x = -27; - pixel_y = 9 - }, -/obj/item/device/radio/intercom{ - anyai = 1; - freerange = 1; - listening = 0; - name = "Custom Channel"; - pixel_x = 0; - pixel_y = 31 - }, -/obj/item/device/radio/intercom{ - anyai = 1; - broadcasting = 0; - freerange = 1; - frequency = 1447; - name = "Private Channel"; - pixel_x = 27; - pixel_y = -9 - }, -/obj/machinery/newscaster/security_unit{ - pixel_x = -28; - pixel_y = 28 - }, -/obj/machinery/requests_console{ - department = "AI"; - departmentType = 5; - pixel_x = 28; - pixel_y = 28 - }, -/turf/open/floor/circuit, -/area/ai_monitored/turret_protected/ai) -"bDq" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel/blue, -/area/ai_monitored/turret_protected/ai) -"bDr" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/circuit, -/area/ai_monitored/turret_protected/ai) -"bDs" = ( -/obj/structure/displaycase/labcage, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/crew_quarters/hor) -"bDt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plasteel/whitepurple/corner, -/area/crew_quarters/hor) -"bDu" = ( -/obj/effect/landmark/start{ - name = "Research Director" - }, -/obj/structure/chair/office/light{ - dir = 4 - }, -/turf/open/floor/plasteel/whitepurple/corner, -/area/crew_quarters/hor) -"bDv" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/computer/robotics, -/turf/open/floor/plasteel/whitepurple/corner, -/area/crew_quarters/hor) -"bDw" = ( -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/medical/research{ - name = "Research Division" - }) -"bDx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bDy" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/medical/research{ - name = "Research Division" - }) -"bDz" = ( -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/machinery/power/apc{ - cell_type = 10000; - dir = 4; - name = "Research Division APC"; - pixel_x = 24; - pixel_y = 0 - }, -/obj/structure/table, -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bDA" = ( -/obj/structure/sign/directions/medical{ - tag = "icon-direction_med (NORTH)"; - icon_state = "direction_med"; - dir = 1 - }, -/obj/structure/sign/directions/evac{ - pixel_y = -10 - }, -/obj/structure/sign/directions/security{ - pixel_y = 10 - }, -/turf/closed/wall/r_wall, -/area/toxins/lab) -"bDB" = ( -/turf/closed/wall, -/area/toxins/lab) -"bDC" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/wall, -/area/toxins/lab) -"bDD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "rnd2"; - name = "research lab shutters" - }, -/obj/machinery/door/firedoor/heavy, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bDE" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "rnd2"; - name = "research lab shutters" - }, -/obj/machinery/door/firedoor/heavy, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/white, -/area/toxins/lab) -"bDF" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Research Maintenance"; - req_access_txt = "47"; - req_one_access_txt = "0" - }, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bDG" = ( -/turf/closed/wall/r_wall, -/area/medical/research{ - name = "Research Division" - }) -"bDH" = ( -/turf/closed/wall/r_wall, -/area/toxins/storage) -"bDI" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bDJ" = ( -/turf/closed/wall/r_wall, -/area/toxins/test_area) -"bDK" = ( -/obj/structure/table, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bDL" = ( -/turf/open/floor/plating, -/area/maintenance/fpmaint2) -"bDM" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/plating, -/area/security/armory) -"bDN" = ( -/obj/structure/grille, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/floor/plating, -/area/security/armory) -"bDO" = ( -/obj/structure/grille, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/obj/structure/cable, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/floor/plating, -/area/security/armory) -"bDP" = ( -/turf/closed/wall/r_wall, -/area/security/warden{ - name = "Security Control" - }) -"bDQ" = ( -/turf/open/floor/plasteel/darkred, -/area/security/warden{ - name = "Security Control" - }) -"bDR" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plasteel/darkred, -/area/security/warden{ - name = "Security Control" - }) -"bDS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall/r_wall, -/area/security/warden{ - name = "Security Control" - }) -"bDT" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/maintenance/port) -"bDU" = ( -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (WEST)"; - icon_state = "blue"; - dir = 8 - }, -/area/crew_quarters/courtroom) -"bDV" = ( -/turf/open/floor/plasteel, -/area/crew_quarters/courtroom) -"bDW" = ( -/obj/structure/chair{ - dir = 1; - name = "Judge" - }, -/turf/open/floor/plasteel, -/area/crew_quarters/courtroom) -"bDX" = ( -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (EAST)"; - icon_state = "blue"; - dir = 4 - }, -/area/crew_quarters/courtroom) -"bDY" = ( -/turf/closed/wall/r_wall, -/area/crew_quarters/courtroom) -"bDZ" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/flasher{ - id = "PCell 1"; - pixel_x = -28 - }, -/turf/open/floor/plasteel/black, -/area/crew_quarters/courtroom) -"bEa" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/black, -/area/crew_quarters/courtroom) -"bEb" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/black, -/area/crew_quarters/courtroom) -"bEc" = ( -/turf/closed/wall/r_wall, -/area/lawoffice) -"bEd" = ( -/obj/machinery/light_switch{ - dir = 8; - pixel_x = -24 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (EAST)"; - icon_state = "camera"; - dir = 4 - }, -/turf/open/floor/wood, -/area/lawoffice) -"bEe" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/wood, -/area/lawoffice) -"bEf" = ( -/obj/machinery/button/door{ - id = "lawyer_blast"; - name = "Privacy Shutters"; - pixel_x = 25; - pixel_y = 8 - }, -/obj/structure/filingcabinet/chestdrawer, -/turf/open/floor/wood, -/area/lawoffice) -"bEg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/hallway/primary/port) -"bEh" = ( -/turf/closed/wall/r_wall, -/area/security/detectives_office) -"bEi" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass_security{ - name = "Detective"; - req_access_txt = "4" - }, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/security/detectives_office) -"bEj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall/r_wall, -/area/security/hos) -"bEk" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/command{ - name = "Head of Security's Office"; - req_access = null; - req_access_txt = "58" - }, -/turf/open/floor/plasteel, -/area/security/hos) -"bEl" = ( -/obj/machinery/power/apc{ - cell_type = 5000; - dir = 1; - name = "AI Chamber APC"; - pixel_y = 24 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/turf/open/floor/plasteel/blue, -/area/ai_monitored/turret_protected/ai) -"bEm" = ( -/obj/machinery/camera/motion, -/turf/open/floor/plasteel/blue, -/area/ai_monitored/turret_protected/ai) -"bEn" = ( -/obj/structure/rack, -/obj/item/circuitboard/aicore{ - pixel_x = -2; - pixel_y = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -28 - }, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/crew_quarters/hor) -"bEo" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel/whitepurple/corner{ - dir = 1 - }, -/area/crew_quarters/hor) -"bEp" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/holopad, -/turf/open/floor/plasteel/whitepurple/corner{ - dir = 1 - }, -/area/crew_quarters/hor) -"bEq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/computer/mecha, -/turf/open/floor/plasteel/whitepurple/corner{ - dir = 1 - }, -/area/crew_quarters/hor) -"bEr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/crew_quarters/hor) -"bEs" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bEt" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/medical/research{ - name = "Research Division" - }) -"bEu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/landmark/start{ - name = "Scientist" - }, -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bEv" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/table, -/obj/item/storage/fancy/cigarettes, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/medical/research{ - name = "Research Division" - }) -"bEw" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/medical/research{ - name = "Research Division" - }) -"bEx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (WEST)"; - icon_state = "purple"; - dir = 8 - }, -/area/hallway/primary/starboard) -"bEy" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bEz" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bEA" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/medical/research{ - name = "Research Division" - }) -"bEB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor/preopen{ - id = "Biohazard"; - name = "biohazard containment door" - }, -/turf/open/floor/plasteel/delivery, -/area/medical/research{ - name = "Research Division" - }) -"bEC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/closed/wall, -/area/medical/research{ - name = "Research Division" - }) -"bED" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (NORTH)"; - icon_state = "whitepurple"; - dir = 1 - }, -/area/medical/research{ - name = "Research Division" - }) -"bEE" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (NORTH)"; - icon_state = "whitepurple"; - dir = 1 - }, -/area/medical/research{ - name = "Research Division" - }) -"bEF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (NORTH)"; - icon_state = "whitepurple"; - dir = 1 - }, -/area/medical/research{ - name = "Research Division" - }) -"bEG" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (NORTH)"; - icon_state = "whitepurple"; - dir = 1 - }, -/area/medical/research{ - name = "Research Division" - }) -"bEH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (NORTH)"; - icon_state = "whitepurple"; - dir = 1 - }, -/area/medical/research{ - name = "Research Division" - }) -"bEI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (NORTH)"; - icon_state = "whitepurple"; - dir = 1 - }, -/area/medical/research{ - name = "Research Division" - }) -"bEJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (NORTHEAST)"; - icon_state = "whitepurple"; - dir = 5 - }, -/area/medical/research{ - name = "Research Division" - }) -"bEK" = ( -/turf/closed/wall, -/area/toxins/storage) -"bEL" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/plasteel/bot, -/area/toxins/storage) -"bEM" = ( -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/turf/open/floor/plasteel/floorgrime, -/area/toxins/storage) -"bEN" = ( -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel/floorgrime, -/area/toxins/storage) -"bEO" = ( -/obj/machinery/portable_atmospherics/canister/toxins, -/turf/open/floor/plasteel/delivery, -/area/toxins/storage) -"bEP" = ( -/obj/machinery/computer/shuttle/labor, -/obj/structure/reagent_dispensers/peppertank{ - pixel_x = -31; - pixel_y = 0 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/labor) -"bEQ" = ( -/obj/structure/chair/office/dark{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/labor) -"bER" = ( -/obj/structure/table, -/obj/item/folder/red, -/obj/item/restraints/handcuffs, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/labor) -"bES" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - tag = "icon-0-4"; - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/security/transfer) -"bET" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - tag = "icon-0-4"; - icon_state = "0-4" - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/turf/open/floor/plating, -/area/security/transfer) -"bEU" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bEV" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bEW" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/cable, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/plating, -/area/security/armory) -"bEX" = ( -/obj/structure/grille, -/turf/open/floor/plating, -/area/security/armory) -"bEY" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/darkred, -/area/security/warden{ - name = "Security Control" - }) -"bEZ" = ( -/obj/machinery/light/small, -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/obj/item/storage/toolbox/mechanical, -/turf/open/floor/plating, -/area/maintenance/port) -"bFa" = ( -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, -/turf/closed/wall, -/area/crew_quarters/courtroom) -"bFb" = ( -/obj/structure/closet/secure_closet/courtroom, -/obj/item/gavelhammer, -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (SOUTHWEST)"; - icon_state = "blue"; - dir = 10 - }, -/area/crew_quarters/courtroom) -"bFc" = ( -/turf/open/floor/plasteel/blue/side, -/area/crew_quarters/courtroom) -"bFd" = ( -/obj/machinery/firealarm{ - dir = 1; - pixel_x = 0; - pixel_y = -26 - }, -/turf/open/floor/plasteel/blue/side, -/area/crew_quarters/courtroom) -"bFe" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTH)"; - icon_state = "camera"; - dir = 1 - }, -/turf/open/floor/plasteel/blue/side, -/area/crew_quarters/courtroom) -"bFf" = ( -/turf/open/floor/plasteel/blue/side{ - tag = "icon-blue (SOUTHEAST)"; - icon_state = "blue"; - dir = 6 - }, -/area/crew_quarters/courtroom) -"bFg" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/security{ - name = "Court Cell"; - req_access = null; - req_access_txt = "63" - }, -/turf/open/floor/plasteel/black, -/area/crew_quarters/courtroom) -"bFh" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel/black, -/area/crew_quarters/courtroom) -"bFi" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/turf/open/floor/plasteel/black, -/area/crew_quarters/courtroom) -"bFj" = ( -/obj/structure/closet/lawcloset, -/turf/open/floor/wood, -/area/lawoffice) -"bFk" = ( -/obj/item/twohanded/required/kirbyplants{ - tag = "icon-plant-18"; - icon_state = "plant-18" - }, -/turf/open/floor/wood, -/area/lawoffice) -"bFl" = ( -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/lawoffice) -"bFm" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/structure/disposalpipe/junction{ - dir = 1; - icon_state = "pipe-j1"; - tag = "icon-pipe-j1 (EAST)" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) -"bFn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/red/side{ - tag = "icon-red (EAST)"; - icon_state = "red"; - dir = 4 - }, -/area/hallway/primary/port) -"bFo" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/security/main) -"bFp" = ( -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/plasteel/red/side{ - dir = 9 - }, -/area/security/main) -"bFq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/security/main) -"bFr" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/landmark/start{ - name = "Security Officer" - }, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/security/main) -"bFs" = ( -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/machinery/power/apc{ - dir = 1; - name = "Security Office APC"; - pixel_x = 0; - pixel_y = 24 - }, -/obj/structure/table, -/obj/item/storage/fancy/donut_box, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/security/main) -"bFt" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/holopad, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/security/main) -"bFu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/table, -/obj/item/folder/red, -/obj/machinery/camera/autoname, -/obj/item/device/radio/intercom{ - name = "Station Intercom"; - pixel_x = 0; - pixel_y = 24 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/security/main) -"bFv" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/landmark/start{ - name = "Security Officer" - }, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/security/main) -"bFw" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/security/main) -"bFx" = ( -/obj/structure/closet/cabinet, -/obj/item/reagent_containers/food/drinks/bottle/vermouth, -/obj/item/key/security, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel/red/side{ - dir = 5 - }, -/area/security/main) -"bFy" = ( -/turf/closed/wall/r_wall, -/area/security/main) -"bFz" = ( -/obj/structure/cable{ - tag = "icon-1-4"; - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/circuit, -/area/ai_monitored/turret_protected/ai) -"bFA" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - tag = "icon-1-4"; - icon_state = "1-4" - }, -/turf/open/floor/circuit, -/area/ai_monitored/turret_protected/ai) -"bFB" = ( -/obj/machinery/power/smes{ - charge = 5e+006 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/turf/open/floor/circuit, -/area/ai_monitored/turret_protected/ai) -"bFC" = ( -/obj/structure/rack, -/obj/item/device/aicard, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHEAST)"; - icon_state = "camera"; - dir = 5 - }, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/crew_quarters/hor) -"bFD" = ( -/turf/open/floor/plasteel/whitepurple/corner, -/area/crew_quarters/hor) -"bFE" = ( -/obj/machinery/door/airlock/command{ - name = "Research Director's Office"; - req_access_txt = "30"; - req_one_access_txt = "0" - }, -/turf/open/floor/plasteel/white, -/area/crew_quarters/hor) -"bFF" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/medical/research{ - name = "Research Division" - }) -"bFG" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bFH" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 2; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/medical/research{ - name = "Research Division" - }) -"bFI" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bFJ" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/research{ - name = "Research Division"; - req_access_txt = "0"; - req_one_access_txt = "47" - }, -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bFK" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (WEST)"; - icon_state = "purple"; - dir = 8 - }, -/area/medical/research{ - name = "Research Division" - }) -"bFL" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/open/floor/plasteel, -/area/medical/research{ - name = "Research Division" - }) -"bFM" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/medical/research{ - name = "Research Division" - }) -"bFN" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/research{ - name = "Research Division"; - req_access_txt = "0"; - req_one_access_txt = "47" - }, -/turf/open/floor/plasteel, -/area/medical/research{ - name = "Research Division" - }) -"bFO" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor/preopen{ - id = "Biohazard"; - name = "biohazard containment door" - }, -/turf/open/floor/plasteel/delivery, -/area/medical/research{ - name = "Research Division" - }) -"bFP" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/research{ - name = "Research Division"; - req_access_txt = "0"; - req_one_access_txt = "47" - }, -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bFQ" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bFR" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/obj/effect/landmark/start{ - name = "Scientist" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bFS" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bFT" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/landmark/start{ - name = "Scientist" - }, -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bFU" = ( -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bFV" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (EAST)"; - icon_state = "whitepurple"; - dir = 4 - }, -/area/medical/research{ - name = "Research Division" - }) -"bFW" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/plasteel/bot, -/area/toxins/storage) -"bFX" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 2; - name = "regular air scrubber"; - on = 1 - }, -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/plasteel/bot, -/area/toxins/storage) -"bFY" = ( -/turf/open/floor/plasteel/floorgrime, -/area/toxins/storage) -"bFZ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel/floorgrime, -/area/toxins/storage) -"bGa" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/portable_atmospherics/canister/toxins, -/turf/open/floor/plasteel/delivery, -/area/toxins/storage) -"bGb" = ( -/turf/open/floor/plasteel/airless, -/area/toxins/test_area) -"bGc" = ( -/turf/open/floor/mineral/plastitanium, -/area/shuttle/labor) -"bGd" = ( -/obj/machinery/button/flasher{ - id = "gulagshuttleflasher"; - name = "Flash Control"; - pixel_x = 0; - pixel_y = -26; - req_access_txt = "1" - }, -/obj/machinery/light, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/labor) -"bGe" = ( -/obj/machinery/mineral/labor_claim_console{ - machinedir = 2; - pixel_x = 30; - pixel_y = 30 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/labor) -"bGf" = ( -/obj/machinery/door/airlock/titanium{ - name = "Labor Shuttle Airlock"; - req_access_txt = "2" - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/labor) -"bGg" = ( -/obj/machinery/door/airlock/external{ - name = "Arrival Airlock" - }, -/turf/open/floor/noslip, -/area/security/transfer) -"bGh" = ( -/turf/open/floor/noslip, -/area/security/transfer) -"bGi" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass_security{ - name = "Labor Camp Shuttle Airlock"; - req_access_txt = "2" - }, -/turf/open/floor/noslip, -/area/security/transfer) -"bGj" = ( -/obj/machinery/computer/gulag_teleporter_computer, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bGk" = ( -/turf/closed/wall/r_wall, -/area/security/armory) -"bGl" = ( -/obj/machinery/door/airlock/glass_security{ - name = "Security Control"; - req_access_txt = "2" - }, -/turf/open/floor/plasteel/darkred, -/area/security/warden{ - name = "Security Control" - }) -"bGm" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass_security{ - name = "Security Control"; - req_access_txt = "2" - }, -/turf/open/floor/plasteel/darkred, -/area/security/warden{ - name = "Security Control" - }) -"bGn" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/wall/r_wall, -/area/security/warden{ - name = "Security Control" - }) -"bGo" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass_security{ - id_tag = null; - name = "Brig"; - req_access_txt = "63" - }, -/turf/open/floor/plasteel/darkred, -/area/crew_quarters/courtroom) -"bGp" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass_security{ - name = "Long-Term Cell 1"; - req_access_txt = "2" - }, -/turf/open/floor/plasteel/darkred/side{ - tag = "icon-darkred (NORTH)"; - icon_state = "darkred"; - dir = 1 - }, -/area/crew_quarters/courtroom) -"bGq" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8; - initialize_directions = 11 - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/hallway/primary/port) -"bGr" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/hallway/primary/port) -"bGs" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/red/side{ - tag = "icon-red (EAST)"; - icon_state = "red"; - dir = 4 - }, -/area/hallway/primary/port) -"bGt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/security/main) -"bGu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 8 - }, -/area/security/main) -"bGv" = ( -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/security/main) -"bGw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/landmark/start{ - name = "Security Officer" - }, -/turf/open/floor/plasteel, -/area/security/main) -"bGx" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/table, -/obj/item/book/manual/wiki/security_space_law, -/turf/open/floor/plasteel, -/area/security/main) -"bGy" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/table, -/obj/item/folder/red, -/turf/open/floor/plasteel, -/area/security/main) -"bGz" = ( -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, -/obj/structure/table, -/turf/open/floor/plasteel, -/area/security/main) -"bGA" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/landmark/start{ - name = "Security Officer" - }, -/turf/open/floor/plasteel, -/area/security/main) -"bGB" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel, -/area/security/main) -"bGC" = ( -/obj/machinery/airalarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 4 - }, -/area/security/main) -"bGD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/black, -/area/ai_monitored/turret_protected/ai) -"bGE" = ( -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/turf/open/floor/circuit, -/area/ai_monitored/turret_protected/ai) -"bGF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/black, -/area/ai_monitored/turret_protected/ai) -"bGG" = ( -/obj/structure/rack, -/obj/item/device/taperecorder{ - pixel_x = -3 - }, -/obj/item/device/paicard{ - pixel_x = 4 - }, -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -23; - pixel_y = 0 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/crew_quarters/hor) -"bGH" = ( -/obj/machinery/keycard_auth{ - pixel_x = 0; - pixel_y = -24 - }, -/obj/machinery/light, -/obj/machinery/computer/card/minor/rd, -/turf/open/floor/plasteel/whitepurple/corner{ - dir = 1 - }, -/area/crew_quarters/hor) -"bGI" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/obj/structure/table, -/obj/machinery/button/door{ - id = "Biohazard"; - name = "Biohazard Shutter Control"; - pixel_x = -5; - pixel_y = 5; - req_access_txt = "47" - }, -/obj/machinery/button/door{ - id = "rnd2"; - name = "Research Lab Shutter Control"; - pixel_x = 5; - pixel_y = 5; - req_access_txt = "47" - }, -/turf/open/floor/plasteel/whitepurple/corner{ - dir = 1 - }, -/area/crew_quarters/hor) -"bGJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/closet/secure_closet/RD, -/turf/open/floor/plasteel/whitepurple/corner{ - dir = 1 - }, -/area/crew_quarters/hor) -"bGK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/crew_quarters/hor) -"bGL" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bGM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHWEST)"; - icon_state = "camera"; - dir = 10 - }, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/medical/research{ - name = "Research Division" - }) -"bGN" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2; - initialize_directions = 11 - }, -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bGO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/medical/research{ - name = "Research Division" - }) -"bGP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/medical/research{ - name = "Research Division" - }) -"bGQ" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2; - initialize_directions = 11 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (WEST)"; - icon_state = "purple"; - dir = 8 - }, -/area/hallway/primary/starboard) -"bGR" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bGS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bGT" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/medical/research{ - name = "Research Division" - }) -"bGU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor/preopen{ - id = "Biohazard"; - name = "biohazard containment door" - }, -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel/delivery, -/area/medical/research{ - name = "Research Division" - }) -"bGV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/closed/wall, -/area/medical/research{ - name = "Research Division" - }) -"bGW" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2; - initialize_directions = 11 - }, -/turf/open/floor/plasteel/whitepurple/side, -/area/medical/research{ - name = "Research Division" - }) -"bGX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel/whitepurple/side, -/area/medical/research{ - name = "Research Division" - }) -"bGY" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whitepurple/side, -/area/medical/research{ - name = "Research Division" - }) -"bGZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whitepurple/side, -/area/medical/research{ - name = "Research Division" - }) -"bHa" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel/whitepurple/corner{ - tag = "icon-whitepurplecorner (WEST)"; - icon_state = "whitepurplecorner"; - dir = 8 - }, -/area/medical/research{ - name = "Research Division" - }) -"bHb" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (EAST)"; - icon_state = "whitepurple"; - dir = 4 - }, -/area/medical/research{ - name = "Research Division" - }) -"bHc" = ( -/obj/machinery/portable_atmospherics/canister/bz, -/turf/open/floor/plasteel/bot, -/area/toxins/storage) -"bHd" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/portable_atmospherics/canister/bz, -/turf/open/floor/plasteel/bot, -/area/toxins/storage) -"bHe" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/floorgrime, -/area/toxins/storage) -"bHf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/floorgrime, -/area/toxins/storage) -"bHg" = ( -/obj/item/clothing/shoes/sneakers/purple, -/obj/item/clothing/head/soft/purple, -/obj/item/clothing/glasses/regular/hipster, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bHh" = ( -/obj/machinery/door/airlock/titanium{ - name = "Labor Shuttle Airlock"; - req_access_txt = "2" - }, -/turf/open/floor/plasteel/black, -/area/shuttle/labor) -"bHi" = ( -/obj/machinery/mineral/stacking_machine/laborstacker{ - input_dir = 2; - output_dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) -"bHj" = ( -/obj/machinery/gulag_teleporter, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bHk" = ( -/obj/structure/closet/secure_closet/lethalshots, -/turf/open/floor/plasteel{ - icon_state = "vault"; - dir = 4 - }, -/area/ai_monitored/security/armory) -"bHl" = ( -/obj/machinery/door/poddoor/shutters{ - id = "armory"; - name = "armory shutters" - }, -/turf/open/floor/plasteel/black, -/area/ai_monitored/security/armory) -"bHm" = ( -/obj/structure/rack, -/obj/item/storage/box/rubbershot{ - pixel_x = 4; - pixel_y = -6 - }, -/obj/item/storage/box/rubbershot{ - pixel_x = 1; - pixel_y = -2 - }, -/obj/item/storage/box/rubbershot{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/machinery/camera/motion{ - c_tag = "Armory Motion Sensor"; - dir = 2; - name = "motion-sensitive security camera" - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory) -"bHn" = ( -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/obj/structure/rack, -/obj/item/clothing/suit/armor/riot{ - pixel_x = 6; - pixel_y = -6 - }, -/obj/item/clothing/suit/armor/riot{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/clothing/suit/armor/riot{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/item/clothing/head/helmet/riot{ - pixel_x = -4; - pixel_y = -6 - }, -/obj/item/clothing/head/helmet/riot{ - pixel_x = -6; - pixel_y = -2 - }, -/obj/item/clothing/head/helmet/riot{ - pixel_x = -8; - pixel_y = 2 - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory) -"bHo" = ( -/obj/structure/rack, -/obj/item/shield/riot{ - pixel_x = 4; - pixel_y = -7 - }, -/obj/item/shield/riot{ - pixel_x = 0; - pixel_y = -3 - }, -/obj/item/shield/riot{ - pixel_x = -4; - pixel_y = 0 - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory) -"bHp" = ( -/obj/machinery/power/apc{ - cell_type = 5000; - dir = 4; - name = "Armory APC"; - pixel_x = 24; - pixel_y = 0 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/machinery/button/door{ - id = "armory"; - name = "Armory Shutters"; - pixel_x = 0; - pixel_y = 28; - req_access_txt = "3" - }, -/obj/structure/rack, -/obj/item/clothing/mask/gas/sechailer{ - pixel_x = 6; - pixel_y = -6 - }, -/obj/item/clothing/mask/gas/sechailer{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/clothing/mask/gas/sechailer{ - pixel_x = -2; - pixel_y = 2 - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory) -"bHq" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/structure/table, -/obj/item/clothing/ears/earmuffs, -/obj/item/clothing/ears/earmuffs, -/obj/item/clothing/glasses/sunglasses, -/obj/item/clothing/glasses/sunglasses, -/obj/item/storage/firstaid/regular, -/obj/machinery/power/apc{ - cell_type = 5000; - dir = 8; - name = "Brig Control APC"; - pixel_x = -26; - pixel_y = 0 - }, -/obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bHr" = ( -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bHs" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bHt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/table, -/obj/machinery/recharger, -/obj/machinery/status_display{ - density = 0; - layer = 4; - pixel_x = 0; - pixel_y = 31 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bHu" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHEAST)"; - icon_state = "camera"; - dir = 6 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bHv" = ( -/obj/structure/disposalpipe/junction{ - dir = 4; - icon_state = "pipe-j2"; - tag = "icon-pipe-j1 (WEST)" - }, -/turf/closed/wall, -/area/security/warden{ - name = "Security Control" - }) -"bHw" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/requests_console{ - department = "Security"; - departmentType = 5; - pixel_y = 30 - }, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bHx" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bHy" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bHz" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/machinery/power/apc{ - cell_type = 10000; - dir = 1; - name = "Brig APC"; - pixel_x = 0; - pixel_y = 24 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bHA" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/firealarm{ - pixel_y = 28 - }, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bHB" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bHC" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/button/flasher{ - id = "PCell 1"; - pixel_x = 6; - pixel_y = 24 - }, -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bHD" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bHE" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/structure/disposalpipe/junction{ - icon_state = "pipe-j1"; - dir = 4 - }, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bHF" = ( -/obj/machinery/door/airlock/glass_security{ - id_tag = "innersec"; - name = "Security"; - req_access_txt = "63" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bHG" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bHH" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4"; - tag = "" - }, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bHI" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bHJ" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/flasher{ - id = "secentry"; - pixel_x = 0; - pixel_y = 28 - }, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bHK" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_security{ - id_tag = "outersec"; - name = "Security"; - req_access_txt = "63" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bHL" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/hallway/primary/port) -"bHM" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/obj/structure/disposalpipe/junction{ - icon_state = "pipe-j2"; - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) -"bHN" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/red/side{ - tag = "icon-red (EAST)"; - icon_state = "red"; - dir = 4 - }, -/area/hallway/primary/port) -"bHO" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/security{ - name = "Security Office"; - req_access = null; - req_access_txt = "63" - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/main) -"bHP" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/red/corner{ - dir = 8 - }, -/area/security/main) -"bHQ" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/security/main) -"bHR" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/security/main) -"bHS" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8"; - tag = "" - }, -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/main) -"bHT" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/landmark/start{ - name = "Security Officer" - }, -/turf/open/floor/plasteel, -/area/security/main) -"bHU" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/main) -"bHV" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/security/main) -"bHW" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8"; - tag = "" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/security/main) -"bHX" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/red/corner{ - dir = 4 - }, -/area/security/main) -"bHY" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/maintenance{ - name = "Security Maintenance"; - req_access_txt = "1" - }, -/turf/open/floor/plating, -/area/security/main) -"bHZ" = ( -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"bIa" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plasteel/black, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"bIb" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/black, -/area/ai_monitored/turret_protected/ai) -"bIc" = ( -/turf/closed/wall/r_wall, -/area/toxins/server) -"bId" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/airlock/glass_command{ - name = "Server Room"; - req_access_txt = "30" - }, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/toxins/server) -"bIe" = ( -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -28 - }, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/medical/research{ - name = "Research Division" - }) -"bIf" = ( -/obj/machinery/vending/coffee, -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bIg" = ( -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (WEST)"; - icon_state = "purple"; - dir = 8 - }, -/area/hallway/primary/starboard) -"bIh" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel/purple/corner, -/area/hallway/primary/starboard) -"bIi" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/wall, -/area/medical/research{ - name = "Research Division" - }) -"bIj" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor/preopen{ - id = "Biohazard"; - name = "biohazard containment door" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/medical/research{ - name = "Research Division" - }) -"bIk" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor/preopen{ - id = "Biohazard"; - name = "biohazard containment door" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/medical/research{ - name = "Research Division" - }) -"bIl" = ( -/turf/closed/wall, -/area/security/checkpoint/science) -"bIm" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/security/checkpoint/science) -"bIn" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/security/checkpoint/science) -"bIo" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (WEST)"; - icon_state = "whitepurple"; - dir = 8 - }, -/area/medical/research{ - name = "Research Division" - }) -"bIp" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (EAST)"; - icon_state = "whitepurple"; - dir = 4 - }, -/area/medical/research{ - name = "Research Division" - }) -"bIq" = ( -/obj/machinery/power/apc{ - dir = 8; - name = "Toxins Storage APC"; - pixel_x = -25 - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/turf/open/floor/plasteel/bot, -/area/toxins/storage) -"bIr" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/turf/open/floor/plasteel/bot, -/area/toxins/storage) -"bIs" = ( -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/turf/open/floor/plasteel/floorgrime, -/area/toxins/storage) -"bIt" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) -"bIu" = ( -/obj/machinery/mineral/labor_claim_console{ - machinedir = 1; - pixel_x = 30; - pixel_y = 0 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) -"bIv" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/structure/sign/electricshock{ - pixel_x = -32 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bIw" = ( -/obj/structure/table, -/obj/item/storage/firstaid/regular, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bIx" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/cable, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ai_monitored/security/armory) -"bIy" = ( -/obj/structure/grille, -/turf/open/floor/plating, -/area/ai_monitored/security/armory) -"bIz" = ( -/turf/closed/wall/r_wall, -/area/ai_monitored/security/armory) -"bIA" = ( -/obj/structure/closet/secure_closet{ - name = "Autorifle Ammunition Locker"; - req_access_txt = "3" - }, -/obj/item/ammo_box/magazine/wt550m9/wtap, -/obj/item/ammo_box/magazine/wt550m9/wtap, -/obj/item/ammo_box/magazine/wt550m9/wtap, -/obj/item/ammo_box/magazine/wt550m9/wtap, -/obj/item/ammo_box/magazine/wt550m9/wtap, -/obj/item/ammo_box/magazine/wt550m9/wtap, -/obj/item/ammo_box/magazine/wt550m9/wtap, -/obj/item/ammo_box/magazine/wt550m9/wtap, -/obj/item/ammo_box/magazine/wt550m9/wtap, -/obj/item/ammo_box/magazine/wt550m9/wtap, -/turf/open/floor/plasteel{ - icon_state = "vault"; - dir = 4 - }, -/area/ai_monitored/security/armory) -"bIB" = ( -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory) -"bIC" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory) -"bID" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/item/storage/toolbox/mechanical, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bIE" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bIF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bIG" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/security/warden{ - name = "Security Control" - }) -"bIH" = ( -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bII" = ( -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/brig{ - name = "Security" - }) -"bIJ" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/brig{ - name = "Security" - }) -"bIK" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bIL" = ( -/obj/machinery/door/airlock/glass_security{ - id_tag = "innersec"; - name = "Security"; - req_access_txt = "63" - }, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bIM" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bIN" = ( -/obj/machinery/door/airlock/glass_security{ - id_tag = "outersec"; - name = "Security"; - req_access_txt = "63" - }, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bIO" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8; - initialize_directions = 11 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel/red/side{ - tag = "icon-red (EAST)"; - icon_state = "red"; - dir = 4 - }, -/area/hallway/primary/port) -"bIP" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/security/main) -"bIQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -28 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 8 - }, -/area/security/main) -"bIR" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/security/main) -"bIS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/security/main) -"bIT" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/security/main) -"bIU" = ( -/turf/open/floor/plasteel, -/area/security/main) -"bIV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/security/main) -"bIW" = ( -/obj/structure/table, -/obj/item/paper_bin, -/turf/open/floor/plasteel/red/corner{ - dir = 4 - }, -/area/security/main) -"bIX" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/camera/motion{ - c_tag = "MiniSat Core Hallway"; - dir = 4; - network = list("MiniSat") - }, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"bIY" = ( -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/black, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"bIZ" = ( -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/black, -/area/ai_monitored/turret_protected/aisat) -"bJa" = ( -/obj/machinery/rnd/server, -/turf/open/floor/circuit{ - name = "Server Base"; - initial_gas_mix = "n2=500;TEMP=80" - }, -/area/toxins/server) -"bJb" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - external_pressure_bound = 140; - on = 1; - pressure_checks = 0 - }, -/turf/open/floor/circuit{ - name = "Server Base"; - initial_gas_mix = "n2=500;TEMP=80" - }, -/area/toxins/server) -"bJc" = ( -/obj/structure/grille, -/obj/machinery/atmospherics/pipe/simple{ - dir = 4 - }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'SERVER ROOM'."; - name = "SERVER ROOM"; - pixel_y = 32 - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/toxins/server) -"bJd" = ( -/obj/machinery/atmospherics/pipe/simple{ - dir = 10 - }, -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel/black, -/area/toxins/server) -"bJe" = ( -/obj/machinery/camera{ - c_tag = "Server Room"; - dir = 2; - network = list("SS13","RD"); - pixel_x = 22 - }, -/obj/machinery/power/apc{ - dir = 1; - name = "Server Room APC"; - pixel_x = 0; - pixel_y = 25 - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/turf/open/floor/plasteel/black, -/area/toxins/server) -"bJf" = ( -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/turf/open/floor/plasteel/black, -/area/toxins/server) -"bJg" = ( -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bJh" = ( -/obj/structure/rack, -/obj/item/device/gps/science, -/obj/item/device/radio, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/medical/research{ - name = "Research Division" - }) -"bJi" = ( -/obj/structure/frame, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/medical/research{ - name = "Research Division" - }) -"bJj" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/medical/research{ - name = "Research Division" - }) -"bJk" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/medical/research{ - name = "Research Division" - }) -"bJl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/table, -/obj/item/device/radio, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/science) -"bJm" = ( -/obj/structure/table, -/obj/machinery/button/door{ - id = "Biohazard"; - name = "Biohazard Shutter Control"; - pixel_x = -5; - pixel_y = 5; - req_access_txt = "47" - }, -/obj/machinery/button/door{ - id = "rnd2"; - name = "Research Lab Shutter Control"; - pixel_x = 5; - pixel_y = 5; - req_access_txt = "47" - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/science) -"bJn" = ( -/obj/machinery/computer/security, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/science) -"bJo" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (WEST)"; - icon_state = "whitepurple"; - dir = 8 - }, -/area/medical/research{ - name = "Research Division" - }) -"bJp" = ( -/obj/machinery/portable_atmospherics/scrubber/huge/movable, -/turf/open/floor/plasteel/floorgrime, -/area/toxins/storage) -"bJq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/floorgrime, -/area/toxins/storage) -"bJr" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/floorgrime, -/area/toxins/storage) -"bJs" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bJt" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/closet/crate, -/obj/item/storage/belt, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bJu" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) -"bJv" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/flasher{ - id = "gulagshuttleflasher"; - pixel_x = 25 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) -"bJw" = ( -/obj/structure/table, -/obj/item/storage/box/zipties, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bJx" = ( -/obj/structure/rack, -/obj/item/gun/ballistic/shotgun/riot{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/gun/ballistic/shotgun/riot, -/obj/item/gun/ballistic/shotgun/riot{ - pixel_x = 3; - pixel_y = -3 - }, -/turf/open/floor/plasteel{ - icon_state = "vault"; - dir = 4 - }, -/area/ai_monitored/security/armory) -"bJy" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory) -"bJz" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory) -"bJA" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/security{ - name = "Armory"; - req_access = null; - req_access_txt = "3" - }, -/turf/open/floor/plasteel/black, -/area/ai_monitored/security/armory) -"bJB" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - tag = "icon-1-4"; - icon_state = "1-4" - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bJC" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bJD" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bJE" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bJF" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass_security{ - name = "Security Control"; - req_access_txt = "2" - }, -/turf/open/floor/plasteel/darkred, -/area/security/warden{ - name = "Security Control" - }) -"bJG" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bJH" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bJI" = ( -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bJJ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/brig{ - name = "Security" - }) -"bJK" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/obj/machinery/airalarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bJL" = ( -/turf/closed/wall, -/area/security/brig{ - name = "Security" - }) -"bJM" = ( -/obj/machinery/door/firedoor/heavy, -/obj/structure/cable, -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/security/brig{ - name = "Security" - }) -"bJN" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass_security{ - name = "Brig Desk"; - req_access_txt = "1" - }, -/turf/open/floor/plasteel/darkred/side{ - tag = "icon-darkred (NORTH)"; - icon_state = "darkred"; - dir = 1 - }, -/area/security/brig{ - name = "Security" - }) -"bJO" = ( -/turf/closed/wall/r_wall, -/area/security/brig{ - name = "Security" - }) -"bJP" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) -"bJQ" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/photocopier, -/turf/open/floor/plasteel/red/side{ - dir = 10 - }, -/area/security/main) -"bJR" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/red/corner, -/area/security/main) -"bJS" = ( -/obj/machinery/button/flasher{ - id = "insaneflash"; - pixel_y = -26 - }, -/turf/open/floor/plasteel/red/corner, -/area/security/main) -"bJT" = ( -/obj/machinery/computer/security, -/turf/open/floor/plasteel/red/corner, -/area/security/main) -"bJU" = ( -/obj/machinery/computer/secure_data, -/turf/open/floor/plasteel/red/corner, -/area/security/main) -"bJV" = ( -/obj/vehicle/secway, -/turf/open/floor/plasteel/red/corner, -/area/security/main) -"bJW" = ( -/turf/open/floor/plasteel/red/corner, -/area/security/main) -"bJX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/red/corner, -/area/security/main) -"bJY" = ( -/obj/machinery/door/window/eastright{ - base_state = "left"; - dir = 8; - icon_state = "left"; - name = "Security Delivery"; - req_access_txt = "1" - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/floor/plasteel{ - icon_state = "delivery" - }, -/area/security/main) -"bJZ" = ( -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=8"; - freq = 1400; - location = "Security" - }, -/obj/structure/plasticflaps{ - opacity = 1 - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plasteel{ - icon_state = "bot" - }, -/area/security/main) -"bKa" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plasteel/black, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"bKb" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plasteel/black, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"bKc" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/camera/motion{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"bKd" = ( -/obj/machinery/airalarm/server{ - dir = 4; - pixel_x = -22; - pixel_y = 0 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plasteel/black{ - name = "Server Walkway"; - initial_gas_mix = "n2=500;TEMP=80" - }, -/area/toxins/server) -"bKe" = ( -/obj/effect/landmark{ - name = "blobstart" - }, -/turf/open/floor/plasteel/black{ - name = "Server Walkway"; - initial_gas_mix = "n2=500;TEMP=80" - }, -/area/toxins/server) -"bKf" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_command{ - name = "Server Room"; - req_access_txt = "30" - }, -/turf/open/floor/plasteel/black, -/area/toxins/server) -"bKg" = ( -/obj/machinery/atmospherics/pipe/manifold{ - dir = 8 - }, -/turf/open/floor/plasteel/black, -/area/toxins/server) -"bKh" = ( -/obj/structure/chair/office/light, -/obj/machinery/atmospherics/pipe/simple{ - dir = 4 - }, -/turf/open/floor/plasteel/black, -/area/toxins/server) -"bKi" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple{ - dir = 10 - }, -/turf/open/floor/plasteel/black, -/area/toxins/server) -"bKj" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/medical/research{ - name = "Research Division" - }) -"bKk" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/chem_dispenser, -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bKl" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bKm" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "" - }, -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bKn" = ( -/obj/machinery/door/airlock/glass_security{ - name = "Security Post - Research Division"; - req_access_txt = "63" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/science) -"bKo" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/science) -"bKp" = ( -/obj/effect/landmark/start/depsec/science, -/obj/structure/chair/office/dark{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/science) -"bKq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/obj/machinery/computer/secure_data, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/science) -"bKr" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/security/checkpoint/science) -"bKs" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4; - initialize_directions = 11 - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (WEST)"; - icon_state = "whitepurple"; - dir = 8 - }, -/area/medical/research{ - name = "Research Division" - }) -"bKt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall/r_wall, -/area/toxins/storage) -"bKu" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/airlock/research{ - name = "Toxins Storage"; - req_access_txt = "8" - }, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/toxins/storage) -"bKv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall/r_wall, -/area/toxins/storage) -"bKw" = ( -/turf/closed/wall/r_wall, -/area/toxins/mixing) -"bKx" = ( -/turf/closed/mineral/random/labormineral, -/area/toxins/mixing) -"bKy" = ( -/obj/structure/closet/crate, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) -"bKz" = ( -/obj/machinery/door/airlock/titanium{ - id_tag = "prisonshuttle"; - name = "Labor Shuttle Airlock" - }, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 2; - height = 5; - id = "laborcamp"; - name = "labor camp shuttle"; - port_angle = 90; - width = 9 - }, -/obj/docking_port/stationary{ - dir = 8; - dwidth = 2; - height = 5; - id = "laborcamp_home"; - name = "fore bay 1"; - width = 9 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) -"bKA" = ( -/obj/structure/chair, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bKB" = ( -/obj/structure/grille, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"bKC" = ( -/obj/structure/rack, -/obj/item/storage/lockbox/loyalty{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/storage/lockbox/loyalty, -/turf/open/floor/plasteel{ - icon_state = "vault"; - dir = 4 - }, -/area/ai_monitored/security/armory) -"bKD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory) -"bKE" = ( -/obj/structure/rack, -/obj/item/storage/box/chemimp{ - pixel_x = 4; - pixel_y = -3 - }, -/obj/item/storage/box/trackimp, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - on = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory) -"bKF" = ( -/obj/structure/rack, -/obj/item/storage/box/handcuffs{ - pixel_x = 3; - pixel_y = -6 - }, -/obj/item/storage/box/flashbangs{ - pixel_x = -2; - pixel_y = -2 - }, -/obj/item/storage/box/teargas{ - pixel_x = -6; - pixel_y = 3 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory) -"bKG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory) -"bKH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/security/armory) -"bKI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/button/door{ - dir = 8; - id = "armory out"; - name = "Armory Outer Shutters"; - pixel_x = -28; - pixel_y = 0; - req_access_txt = "3" - }, -/obj/machinery/computer/prisoner, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bKJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bKK" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bKL" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bKM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/table/reinforced, -/obj/item/folder/red, -/obj/item/pen/red, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bKN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/heavy, -/obj/structure/cable{ - tag = "icon-0-4"; - icon_state = "0-4" - }, -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/security/warden{ - name = "Security Control" - }) -"bKO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/cable{ - tag = "icon-0-4"; - icon_state = "0-4" - }, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/obj/machinery/door/firedoor/heavy, -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/security/brig{ - name = "Security" - }) -"bKP" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass_security{ - name = "Equipment Room"; - req_access_txt = "1" - }, -/turf/open/floor/plasteel/darkred/side{ - tag = "icon-darkred (NORTH)"; - icon_state = "darkred"; - dir = 1 - }, -/area/security/brig{ - name = "Security" - }) -"bKQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/obj/structure/cable{ - tag = "icon-0-4"; - icon_state = "0-4" - }, -/obj/machinery/door/firedoor/heavy, -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/security/brig{ - name = "Security" - }) -"bKR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 - }, -/obj/machinery/door/firedoor/heavy, -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/security/brig{ - name = "Security" - }) -"bKS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/vending/security, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bKT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/brig{ - name = "Security" - }) -"bKU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/landmark/start{ - name = "Security Officer" - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/brig{ - name = "Security" - }) -"bKV" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/brig{ - name = "Security" - }) -"bKW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/filingcabinet/security, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bKX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/security/brig{ - name = "Security" - }) -"bKY" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/button/door{ - desc = "A remote control switch for the medbay foyer."; - id = "innersec"; - name = "Brig Interior Doors Control"; - normaldoorcontrol = 1; - pixel_x = -26; - pixel_y = 5; - req_access_txt = "63" - }, -/obj/machinery/button/door{ - desc = "A remote control switch for the medbay foyer."; - id = "outersec"; - name = "Brig Exterior Doors Control"; - normaldoorcontrol = 1; - pixel_x = -26; - pixel_y = -5; - req_access_txt = "63" - }, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bKZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bLa" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 2; - name = "regular air scrubber"; - on = 1 - }, -/obj/item/device/radio/intercom{ - dir = 8; - freerange = 1; - name = "Station Intercom (Telecoms)"; - pixel_x = 0; - pixel_y = 26 - }, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bLb" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/sign/electricshock{ - pixel_y = 32 - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "briggate"; - name = "security shutters" - }, -/turf/open/floor/plating, -/area/security/brig{ - name = "Security" - }) -"bLc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/hallway/primary/port) -"bLd" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) -"bLe" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/side{ - tag = "icon-red (EAST)"; - icon_state = "red"; - dir = 4 - }, -/area/hallway/primary/port) -"bLf" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/glass_security{ - name = "Insanity Ward"; - req_access_txt = "2" - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/main) -"bLg" = ( -/turf/closed/wall/r_wall, -/area/security/brig{ - name = "Interrogation" - }) -"bLh" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/security{ - name = "Interrogation"; - req_access = null; - req_access_txt = "0"; - req_one_access_txt = "1;4" - }, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Interrogation" - }) -"bLi" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall/r_wall, -/area/security/brig{ - name = "Interrogation" - }) -"bLj" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"bLk" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"bLl" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"bLm" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"bLn" = ( -/obj/machinery/power/apc{ - cell_type = 5000; - dir = 1; - name = "AI Maintenance APC"; - pixel_y = 24 - }, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/landmark/event_spawn, -/obj/machinery/camera/motion{ - c_tag = "MiniSat Foyer"; - dir = 1; - network = list("MiniSat") - }, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"bLo" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"bLp" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat{ - name = "AI Maintenance" - }) -"bLq" = ( -/obj/machinery/rnd/server, -/turf/open/floor/circuit{ - name = "Server Base"; - initial_gas_mix = "n2=500;TEMP=80" - }, -/area/toxins/server) -"bLr" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - external_pressure_bound = 120; - initialize_directions = 1; - internal_pressure_bound = 4000; - on = 1; - pressure_checks = 2; - pump_direction = 0 - }, -/turf/open/floor/circuit{ - name = "Server Base"; - initial_gas_mix = "n2=500;TEMP=80" - }, -/area/toxins/server) -"bLs" = ( -/obj/structure/grille, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'SERVER ROOM'."; - name = "SERVER ROOM"; - pixel_y = -32 - }, -/obj/machinery/atmospherics/pipe/simple{ - dir = 4 - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/toxins/server) -"bLt" = ( -/obj/machinery/atmospherics/pipe/simple{ - dir = 9 - }, -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, -/obj/structure/table, -/obj/item/folder/white, -/obj/item/pen{ - desc = "Writes upside down!"; - name = "astronaut pen" - }, -/turf/open/floor/plasteel/black, -/area/toxins/server) -"bLu" = ( -/obj/machinery/computer/rdservercontrol, -/turf/open/floor/plasteel/black, -/area/toxins/server) -"bLv" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 1 - }, -/turf/open/floor/plasteel/black, -/area/toxins/server) -"bLw" = ( -/obj/structure/closet/wardrobe/science_white, -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bLx" = ( -/obj/structure/closet/wardrobe/science_white, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/medical/research{ - name = "Research Division" - }) -"bLy" = ( -/obj/machinery/autolathe, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHEAST)"; - icon_state = "camera"; - dir = 5 - }, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/medical/research{ - name = "Research Division" - }) -"bLz" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/button/door{ - dir = 2; - id = "robotics_lab"; - name = "Robotics Door Control"; - pixel_x = 0; - pixel_y = -24; - req_access_txt = "29" - }, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/medical/research{ - name = "Research Division" - }) -"bLA" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 1; - on = 1 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/science) -"bLB" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/science) -"bLC" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/science) -"bLD" = ( -/obj/structure/closet/bombcloset, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bLE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/closet/bombcloset, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bLF" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bLG" = ( -/obj/machinery/portable_atmospherics/canister, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/firealarm{ - dir = 2; - pixel_y = 24 - }, -/obj/machinery/camera{ - c_tag = "Toxins Lab West"; - dir = 2; - network = list("SS13","RD"); - pixel_y = 0 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bLH" = ( -/obj/machinery/portable_atmospherics/canister, -/obj/item/device/radio/intercom{ - pixel_y = 25 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bLI" = ( -/obj/machinery/portable_atmospherics/scrubber, -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/obj/item/storage/firstaid/toxin, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bLJ" = ( -/obj/machinery/portable_atmospherics/pump, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bLK" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bLL" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bLM" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" - }, -/turf/open/floor/plating, -/area/toxins/mixing) -"bLN" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plating/airless, -/area/toxins/test_area) -"bLO" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/toxins/test_area) -"bLP" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plating/airless, -/area/toxins/test_area) -"bLQ" = ( -/obj/structure/shuttle/engine/heater, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/floor/plating/airless, -/area/shuttle/labor) -"bLR" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bLS" = ( -/obj/machinery/computer/shuttle/labor, -/turf/open/floor/plasteel/darkred, -/area/security/transfer) -"bLT" = ( -/obj/structure/rack, -/obj/item/gun/energy/plasma/light{ - pixel_x = 4; - pixel_y = -4 - }, -/obj/item/gun/energy/plasma/light{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/gun/energy/plasma/light, -/turf/open/floor/plasteel{ - icon_state = "vault"; - dir = 4 - }, -/area/ai_monitored/security/armory) -"bLU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory) -"bLV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory) -"bLW" = ( -/obj/structure/rack, -/obj/item/gun/energy/e_gun{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/gun/energy/e_gun, -/obj/item/gun/energy/e_gun{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "armory out"; - name = "armory" - }, -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/black, -/area/ai_monitored/security/armory) -"bLX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/computer/security, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bLY" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bLZ" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2; - initialize_directions = 11 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bMa" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bMb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/chair/office/dark{ - dir = 4 - }, -/obj/effect/landmark/start{ - name = "Warden" - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bMc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/heavy, -/obj/structure/table/reinforced, -/obj/machinery/door/window/brigdoor{ - dir = 8; - name = "Brig Control Desk"; - req_access_txt = "2" - }, -/obj/machinery/door/window/eastleft{ - name = "Brig Desk"; - req_access_txt = "1" - }, -/turf/open/floor/plasteel/black, -/area/security/warden{ - name = "Security Control" - }) -"bMd" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/landmark{ - name = "secequipment" - }, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bMe" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bMf" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/closet/secure_closet/security, -/obj/item/storage/belt/security/full, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bMg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 - }, -/obj/structure/cable, -/obj/machinery/door/firedoor/heavy, -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/security/brig{ - name = "Security" - }) -"bMh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/table, -/obj/item/book/manual/wiki/security_space_law, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bMi" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1; - initialize_directions = 11 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/brig{ - name = "Security" - }) -"bMj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/brig{ - name = "Security" - }) -"bMk" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/landmark/start{ - name = "Security Officer" - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/brig{ - name = "Security" - }) -"bMl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/reagent_dispensers/peppertank{ - pixel_x = 30 - }, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bMm" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/security/brig{ - name = "Security" - }) -"bMn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bMo" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/computer/security, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bMp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/computer/secure_data, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bMq" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2; - initialize_directions = 11 - }, -/obj/structure/chair/office/dark{ - dir = 4 - }, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bMr" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/table/reinforced, -/obj/machinery/door/window/southleft{ - dir = 4; - name = "Brig Desk"; - req_access_txt = "1" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "briggate"; - name = "security shutters" - }, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bMs" = ( -/turf/closed/wall, -/area/security/main) -"bMt" = ( -/obj/structure/table, -/obj/item/folder/red, -/obj/item/pen/red, -/turf/open/floor/plasteel/whitered/side{ - tag = "icon-whitered (NORTHWEST)"; - icon_state = "whitered"; - dir = 9 - }, -/area/security/main) -"bMu" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/whitered/side{ - tag = "icon-whitered (NORTH)"; - icon_state = "whitered"; - dir = 1 - }, -/area/security/main) -"bMv" = ( -/obj/machinery/sleeper{ - icon_state = "sleeper-open"; - dir = 8 - }, -/turf/open/floor/plasteel/whitered/side{ - tag = "icon-whitered (NORTH)"; - icon_state = "whitered"; - dir = 1 - }, -/area/security/main) -"bMw" = ( -/obj/machinery/airalarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/obj/machinery/computer/med_data, -/turf/open/floor/plasteel/whitered/side{ - tag = "icon-whitered (NORTHEAST)"; - icon_state = "whitered"; - dir = 5 - }, -/area/security/main) -"bMx" = ( -/turf/closed/wall, -/area/security/brig{ - name = "Interrogation" - }) -"bMy" = ( -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Interrogation" - }) -"bMz" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Interrogation" - }) -"bMA" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall/r_wall, -/area/maintenance/maintcentral) -"bMB" = ( -/turf/closed/wall/r_wall, -/area/maintenance/maintcentral) -"bMC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall/r_wall, -/area/maintenance/maintcentral) -"bMD" = ( -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -28 - }, -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (WEST)"; - icon_state = "purple"; - dir = 8 - }, -/area/hallway/primary/starboard) -"bME" = ( -/obj/machinery/airalarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (EAST)"; - icon_state = "purple"; - dir = 4 - }, -/area/hallway/primary/starboard) -"bMF" = ( -/turf/closed/wall/r_wall, -/area/assembly/robotics) -"bMG" = ( -/turf/closed/wall, -/area/assembly/robotics) -"bMH" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/wall, -/area/assembly/robotics) -"bMI" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor/shutters{ - id = "robotics_lab"; - name = "robotics" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/assembly/robotics) -"bMJ" = ( -/obj/machinery/light, -/obj/structure/closet, -/obj/item/screwdriver, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -28 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/science) -"bMK" = ( -/obj/machinery/power/apc{ - dir = 2; - name = "Science Security APC"; - pixel_y = -24 - }, -/obj/structure/cable, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/science) -"bML" = ( -/obj/machinery/airalarm{ - dir = 1; - icon_state = "alarm0"; - pixel_y = -22 - }, -/obj/structure/filingcabinet/security, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/science) -"bMM" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (WEST)"; - icon_state = "whitepurple"; - dir = 8 - }, -/area/medical/research{ - name = "Research Division" - }) -"bMN" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8; - initialize_directions = 11 - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (EAST)"; - icon_state = "whitepurple"; - dir = 4 - }, -/area/medical/research{ - name = "Research Division" - }) -"bMO" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/research{ - name = "Toxins Lab"; - req_access_txt = "8" - }, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bMP" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bMQ" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bMR" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bMS" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bMT" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bMU" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 5 - }, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bMV" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/general/visible, -/obj/machinery/meter, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bMW" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 9 - }, -/turf/open/floor/plasteel/whitepurple/corner, -/area/toxins/mixing) -"bMX" = ( -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/toxins/mixing) -"bMY" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/toxins/mixing) -"bMZ" = ( -/obj/structure/closet, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bNa" = ( -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bNb" = ( -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bNc" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bNd" = ( -/obj/machinery/button/massdriver{ - dir = 2; - id = "toxinsdriver"; - pixel_y = 24 - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel, -/area/toxins/mixing) -"bNe" = ( -/obj/machinery/doppler_array{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/toxins/mixing) -"bNf" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/toxins/test_area) -"bNg" = ( -/turf/open/floor/plating/airless, -/area/toxins/test_area) -"bNh" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/toxins/test_area) -"bNi" = ( -/obj/structure/shuttle/engine/propulsion, -/turf/open/floor/plating/airless, -/area/shuttle/labor) -"bNj" = ( -/obj/structure/rack, -/obj/item/gun/energy/laser/rifle{ - pixel_x = 4; - pixel_y = -4 - }, -/obj/item/gun/energy/laser/rifle{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/gun/energy/laser/rifle, -/turf/open/floor/plasteel{ - icon_state = "vault"; - dir = 4 - }, -/area/ai_monitored/security/armory) -"bNk" = ( -/obj/structure/rack, -/obj/item/gun/energy/e_gun/dragnet{ - layer = 3.1; - pixel_x = -4; - pixel_y = 3 - }, -/obj/item/storage/box/firingpins{ - pixel_x = 3; - pixel_y = -6 - }, -/obj/item/storage/box/firingpins, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory) -"bNl" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/obj/structure/rack, -/obj/item/clothing/suit/armor/laserproof, -/obj/item/gun/energy/ionrifle{ - pixel_y = -4 - }, -/turf/open/floor/plasteel/darkred, -/area/ai_monitored/security/armory) -"bNm" = ( -/obj/structure/rack, -/obj/item/gun/energy/laser{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/gun/energy/laser, -/obj/item/gun/energy/laser{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "armory out"; - name = "armory" - }, -/turf/open/floor/plasteel/black, -/area/ai_monitored/security/armory) -"bNn" = ( -/obj/machinery/computer/secure_data, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bNo" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bNp" = ( -/obj/machinery/airalarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/obj/structure/table/reinforced, -/obj/item/hand_labeler, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bNq" = ( -/turf/closed/wall, -/area/security/warden{ - name = "Security Control" - }) -"bNr" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/structure/table, -/obj/machinery/recharger, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bNs" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bNt" = ( -/obj/structure/closet/secure_closet/security, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/obj/item/storage/belt/security/full, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bNu" = ( -/obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 - }, -/obj/structure/cable, -/obj/machinery/door/firedoor/heavy, -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/security/brig{ - name = "Security" - }) -"bNv" = ( -/obj/structure/table, -/obj/item/device/radio, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bNw" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/brig{ - name = "Security" - }) -"bNx" = ( -/obj/machinery/status_display{ - dir = 4; - pixel_x = 32 - }, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bNy" = ( -/obj/structure/cable{ - tag = "icon-0-4"; - icon_state = "0-4" - }, -/obj/machinery/door/firedoor/heavy, -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/security/brig{ - name = "Security" - }) -"bNz" = ( -/obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 - }, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/obj/machinery/door/firedoor/heavy, -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/security/brig{ - name = "Security" - }) -"bNA" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/closed/wall/r_wall, -/area/security/brig{ - name = "Security" - }) -"bNB" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel/red/side{ - tag = "icon-red (EAST)"; - icon_state = "red"; - dir = 4 - }, -/area/hallway/primary/port) -"bNC" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/security/main) -"bND" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whitered/side{ - tag = "icon-whitered (WEST)"; - icon_state = "whitered"; - dir = 8 - }, -/area/security/main) -"bNE" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8"; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/white, -/area/security/main) -"bNF" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/security/main) -"bNG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/flasher{ - id = "insaneflash"; - pixel_x = 26 - }, -/turf/open/floor/plasteel/whitered/side{ - tag = "icon-whitered (EAST)"; - icon_state = "whitered"; - dir = 4 - }, -/area/security/main) -"bNH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/security/brig{ - name = "Interrogation" - }) -"bNI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Interrogation" - }) -"bNJ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - name = "regular air vent"; - on = 1 - }, -/obj/structure/table, -/obj/item/device/flashlight/lamp, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Interrogation" - }) -"bNK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/chair/office/dark{ - dir = 8 - }, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Interrogation" - }) -"bNL" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Security Maintenance"; - req_access_txt = "1" - }, -/turf/open/floor/plating, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bNM" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bNN" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bNO" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/space, -/area/space/nearstation) -"bNP" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/space, -/area/space/nearstation) -"bNQ" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bNR" = ( -/obj/structure/cable{ - tag = "icon-1-4"; - icon_state = "1-4" - }, -/turf/open/floor/plating, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bNS" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bNT" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4"; - tag = "" - }, -/turf/open/floor/plating, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bNU" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" - }, -/turf/open/floor/plating, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bNV" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (NORTH)"; - icon_state = "purple"; - dir = 1 - }, -/area/hallway/primary/starboard) -"bNW" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/purple/corner{ - tag = "icon-purplecorner (NORTH)"; - icon_state = "purplecorner"; - dir = 1 - }, -/area/hallway/primary/starboard) -"bNX" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bNY" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (EAST)"; - icon_state = "purple"; - dir = 4 - }, -/area/hallway/primary/starboard) -"bNZ" = ( -/obj/machinery/requests_console{ - department = "Robotics"; - departmentType = 2; - name = "Robotics RC"; - pixel_y = 30 - }, -/obj/machinery/button/door{ - dir = 2; - id = "robotics"; - name = "Shutters Control Button"; - pixel_x = -24; - pixel_y = 0; - req_access_txt = "29" - }, -/obj/structure/table, -/obj/item/stock_parts/cell/high, -/obj/item/stock_parts/cell/high{ - pixel_x = 10; - pixel_y = 5 - }, -/obj/item/stock_parts/cell/high{ - pixel_x = 10; - pixel_y = 5 - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (NORTHWEST)"; - icon_state = "whitepurple"; - dir = 9 - }, -/area/assembly/robotics) -"bOa" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (NORTH)"; - icon_state = "whitepurple"; - dir = 1 - }, -/area/assembly/robotics) -"bOb" = ( -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (NORTH)"; - icon_state = "whitepurple"; - dir = 1 - }, -/area/assembly/robotics) -"bOc" = ( -/obj/machinery/button/door{ - dir = 2; - id = "robotics_lab"; - name = "Robotics Door Control"; - pixel_x = 24; - pixel_y = 0; - req_access_txt = "29" - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (NORTHEAST)"; - icon_state = "whitepurple"; - dir = 5 - }, -/area/assembly/robotics) -"bOd" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (WEST)"; - icon_state = "whitepurple"; - dir = 8 - }, -/area/medical/research{ - name = "Research Division" - }) -"bOe" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (EAST)"; - icon_state = "whitepurple"; - dir = 4 - }, -/area/medical/research{ - name = "Research Division" - }) -"bOf" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/toxins/mixing) -"bOg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHEAST)"; - icon_state = "camera"; - dir = 5 - }, -/turf/open/floor/plasteel/whitepurple/corner{ - tag = "icon-whitepurplecorner (WEST)"; - icon_state = "whitepurplecorner"; - dir = 8 - }, -/area/toxins/mixing) -"bOh" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bOi" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bOj" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1; - initialize_directions = 11 - }, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bOk" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bOl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bOm" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bOn" = ( -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bOo" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (EAST)"; - icon_state = "whitepurple"; - dir = 4 - }, -/area/toxins/mixing) -"bOp" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/research{ - name = "Toxins Lab"; - req_access_txt = "8" - }, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bOq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bOr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/research{ - name = "Toxins Launch Room"; - req_access_txt = "8" - }, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bOs" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bOt" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - name = "regular air vent"; - on = 1 - }, -/obj/effect/landmark{ - name = "xeno_spawn"; - pixel_x = -1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bOu" = ( -/obj/machinery/airalarm{ - dir = 1; - icon_state = "alarm0"; - pixel_y = -22 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bOv" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 2; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/toxins/mixing) -"bOw" = ( -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the test chamber."; - dir = 8; - layer = 4; - name = "Test Chamber Telescreen"; - network = list("Toxins"); - pixel_x = 30; - pixel_y = 0 - }, -/obj/structure/chair/office/dark{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/toxins/mixing) -"bOx" = ( -/obj/structure/rack, -/obj/item/gun/ballistic/automatic/wt550{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/gun/ballistic/automatic/wt550{ - pixel_x = -3; - pixel_y = 3 - }, -/turf/open/floor/plasteel{ - icon_state = "vault"; - dir = 4 - }, -/area/ai_monitored/security/armory) -"bOy" = ( -/obj/structure/rack, -/obj/item/gun/energy/e_gun/advtaser{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/gun/energy/e_gun/advtaser, -/obj/item/gun/energy/e_gun/advtaser{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "armory out"; - name = "armory" - }, -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/turf/open/floor/plasteel/black, -/area/ai_monitored/security/armory) -"bOz" = ( -/obj/structure/table, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bOA" = ( -/obj/machinery/button/door{ - id = "Secure Gate"; - name = "Cell Shutters"; - pixel_x = -27; - pixel_y = -2; - req_access_txt = "0" - }, -/obj/machinery/button/door{ - id = "Prison Gate"; - name = "Prison Wing Lockdown"; - pixel_x = -27; - pixel_y = 8; - req_access_txt = "2" - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bOB" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/closet/secure_closet/warden, -/obj/item/key/security, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bOC" = ( -/obj/machinery/newscaster/security_unit, -/turf/closed/wall, -/area/security/warden{ - name = "Security Control" - }) -"bOD" = ( -/obj/structure/table, -/obj/machinery/recharger, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bOE" = ( -/obj/effect/landmark{ - name = "secequipment" - }, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bOF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/closet/secure_closet/security, -/obj/item/storage/belt/security/full, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bOG" = ( -/obj/machinery/door_timer{ - id = "Cell 1"; - name = "Cell 1"; - pixel_y = -32 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTH)"; - icon_state = "camera"; - dir = 1 - }, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bOH" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bOI" = ( -/obj/machinery/door_timer{ - id = "Cell 2"; - name = "Cell 2"; - pixel_y = -32 - }, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bOJ" = ( -/obj/machinery/door_timer{ - id = "Cell 3"; - name = "Cell 3"; - pixel_y = -32 - }, -/turf/open/floor/plasteel/darkred, -/area/security/brig{ - name = "Security" - }) -"bOK" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "briggate"; - name = "security shutters" - }, -/turf/open/floor/plating, -/area/security/brig{ - name = "Security" - }) -"bOL" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/hallway/primary/port) -"bOM" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) -"bON" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable, -/obj/structure/sign/electricshock{ - pixel_y = -32 - }, -/turf/open/floor/plating, -/area/security/main) -"bOO" = ( -/obj/structure/table/glass, -/obj/item/reagent_containers/glass/bottle/morphine, -/obj/item/reagent_containers/syringe, -/turf/open/floor/plasteel/whitered/side{ - tag = "icon-whitered (WEST)"; - icon_state = "whitered"; - dir = 8 - }, -/area/security/main) -"bOP" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel/white, -/area/security/main) -"bOQ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/turf/open/floor/plasteel/white, -/area/security/main) -"bOR" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/table/glass, -/obj/item/reagent_containers/glass/bottle/morphine, -/obj/item/reagent_containers/syringe, -/turf/open/floor/plasteel/whitered/side{ - tag = "icon-whitered (EAST)"; - icon_state = "whitered"; - dir = 4 - }, -/area/security/main) -"bOS" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Interrogation" - }) -"bOT" = ( -/obj/structure/table, -/obj/item/device/taperecorder, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Interrogation" - }) -"bOU" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/obj/structure/chair/office/light{ - dir = 8 - }, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Interrogation" - }) -"bOV" = ( -/obj/machinery/airalarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Interrogation" - }) -"bOW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bOX" = ( -/turf/closed/wall, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bOY" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall/r_wall, -/area/engine/gravity_generator) -"bOZ" = ( -/obj/machinery/ai_status_display, -/turf/closed/wall/r_wall, -/area/engine/gravity_generator) -"bPa" = ( -/turf/closed/wall/r_wall, -/area/engine/gravity_generator) -"bPb" = ( -/obj/machinery/status_display{ - density = 0; - layer = 4 - }, -/turf/closed/wall/r_wall, -/area/engine/gravity_generator) -"bPc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall/r_wall, -/area/engine/gravity_generator) -"bPd" = ( -/turf/open/floor/plating, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bPe" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/plating, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bPf" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bPg" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHEAST)"; - icon_state = "camera"; - dir = 5 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bPh" = ( -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bPi" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/assembly/robotics) -"bPj" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/turf/open/floor/plasteel/whitepurple/corner{ - tag = "icon-whitepurplecorner (NORTH)"; - icon_state = "whitepurplecorner"; - dir = 1 - }, -/area/assembly/robotics) -"bPk" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/white, -/area/assembly/robotics) -"bPl" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/obj/effect/landmark{ - name = "xeno_spawn"; - pixel_x = -1 - }, -/turf/open/floor/plasteel/white, -/area/assembly/robotics) -"bPm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whitepurple/corner{ - tag = "icon-whitepurplecorner (EAST)"; - icon_state = "whitepurplecorner"; - dir = 4 - }, -/area/assembly/robotics) -"bPn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (NORTH)"; - icon_state = "whitepurple"; - dir = 1 - }, -/area/assembly/robotics) -"bPo" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (NORTH)"; - icon_state = "whitepurple"; - dir = 1 - }, -/area/assembly/robotics) -"bPp" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHEAST)"; - icon_state = "camera"; - dir = 6 - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (NORTH)"; - icon_state = "whitepurple"; - dir = 1 - }, -/area/assembly/robotics) -"bPq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (NORTHEAST)"; - icon_state = "whitepurple"; - dir = 5 - }, -/area/assembly/robotics) -"bPr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/research{ - name = "Robotics Lab"; - req_access_txt = "29"; - req_one_access_txt = "0" - }, -/turf/open/floor/plasteel/white, -/area/assembly/robotics) -"bPs" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (WEST)"; - icon_state = "whitepurple"; - dir = 8 - }, -/area/medical/research{ - name = "Research Division" - }) -"bPt" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4; - initialize_directions = 11 - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (EAST)"; - icon_state = "whitepurple"; - dir = 4 - }, -/area/medical/research{ - name = "Research Division" - }) -"bPu" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/toxins/mixing) -"bPv" = ( -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (WEST)"; - icon_state = "whitepurple"; - dir = 8 - }, -/area/toxins/mixing) -"bPw" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bPx" = ( -/obj/item/device/assembly/prox_sensor{ - pixel_x = -4; - pixel_y = 1 - }, -/obj/item/device/assembly/prox_sensor{ - pixel_x = 8; - pixel_y = 9 - }, -/obj/item/device/assembly/prox_sensor{ - pixel_x = 9; - pixel_y = -2 - }, -/obj/item/device/assembly/prox_sensor{ - pixel_x = 0; - pixel_y = 2 - }, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bPy" = ( -/obj/structure/chair/stool, -/obj/effect/landmark/start{ - name = "Scientist" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bPz" = ( -/obj/structure/table/reinforced, -/obj/item/wrench, -/obj/item/screwdriver{ - pixel_y = 10 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bPA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bPB" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (EAST)"; - icon_state = "whitepurple"; - dir = 4 - }, -/area/toxins/mixing) -"bPC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/light/small, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/toxins/mixing) -"bPD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "whitepurplefull" - }, -/area/toxins/mixing) -"bPE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/window/southleft, -/turf/open/floor/plasteel/loadingarea, -/area/toxins/mixing) -"bPF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/toxins/mixing) -"bPG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/toxins/mixing) -"bPH" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/toxins/mixing) -"bPI" = ( -/obj/structure/rack, -/obj/item/gun/ballistic/automatic/wt550{ - pixel_x = 6; - pixel_y = -6 - }, -/obj/item/gun/ballistic/automatic/wt550{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/gun/ballistic/automatic/wt550, -/turf/open/floor/plasteel{ - icon_state = "vault"; - dir = 4 - }, -/area/security/armory) -"bPJ" = ( -/obj/machinery/door/poddoor/shutters{ - id = "armory"; - name = "armory shutters" - }, -/turf/open/floor/plasteel/black, -/area/security/armory) -"bPK" = ( -/obj/structure/rack, -/obj/item/grenade/barrier{ - pixel_x = 4; - pixel_y = -4 - }, -/obj/item/grenade/barrier{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/grenade/barrier, -/obj/item/grenade/barrier{ - pixel_x = -2; - pixel_y = 2 - }, -/turf/open/floor/plasteel/darkred, -/area/security/armory) -"bPL" = ( -/obj/machinery/flasher/portable, -/turf/open/floor/plasteel/darkred, -/area/security/armory) -"bPM" = ( -/obj/structure/closet/secure_closet{ - anchored = 1; - name = "Contraband Locker"; - req_access_txt = "3" - }, -/turf/open/floor/plasteel/darkred, -/area/security/armory) -"bPN" = ( -/obj/machinery/vending/security, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bPO" = ( -/obj/machinery/firealarm{ - dir = 1; - pixel_x = 0; - pixel_y = -26 - }, -/obj/vehicle/secway, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bPP" = ( -/obj/structure/table, -/obj/item/device/radio/intercom{ - desc = "Talk smack through this."; - dir = 4; - pixel_x = 28; - syndie = 1 - }, -/obj/item/book/manual/wiki/security_space_law, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bPQ" = ( -/obj/structure/table, -/obj/item/storage/fancy/donut_box, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden{ - name = "Security Control" - }) -"bPR" = ( -/obj/structure/closet/wardrobe/red, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -28 - }, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bPS" = ( -/obj/structure/cable{ - tag = "icon-1-4"; - icon_state = "1-4" - }, -/turf/closed/wall, -/area/security/brig{ - name = "Security" - }) -"bPT" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor/preopen{ - id = "briglockdown"; - name = "brig shutters" - }, -/turf/open/floor/plating, -/area/security/brig{ - name = "Security" - }) -"bPU" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/poddoor/preopen{ - id = "briglockdown"; - name = "brig shutters" - }, -/obj/machinery/door/window/brigdoor{ - id = "Cell 1"; - name = "Cell 1"; - req_access_txt = "2" - }, -/turf/open/floor/plasteel/darkred/side{ - tag = "icon-darkred (NORTH)"; - icon_state = "darkred"; - dir = 1 - }, -/area/security/brig{ - name = "Security" - }) -"bPV" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/closed/wall, -/area/security/brig{ - name = "Security" - }) -"bPW" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/poddoor/preopen{ - id = "briglockdown"; - name = "brig shutters" - }, -/obj/machinery/door/window/brigdoor{ - id = "Cell 2"; - name = "Cell 2"; - req_access_txt = "2" - }, -/turf/open/floor/plasteel/darkred/side{ - tag = "icon-darkred (NORTH)"; - icon_state = "darkred"; - dir = 1 - }, -/area/security/brig{ - name = "Security" - }) -"bPX" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/firedoor/border_only, -/obj/structure/cable{ - tag = "icon-1-4"; - icon_state = "1-4" - }, -/obj/machinery/door/poddoor/preopen{ - id = "briglockdown"; - name = "brig shutters" - }, -/obj/machinery/door/window/brigdoor{ - id = "Cell 3"; - name = "Cell 3"; - req_access_txt = "2" - }, -/turf/open/floor/plasteel/darkred/side{ - tag = "icon-darkred (NORTH)"; - icon_state = "darkred"; - dir = 1 - }, -/area/security/brig{ - name = "Security" - }) -"bPY" = ( -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/turf/closed/wall/r_wall, -/area/security/brig{ - name = "Security" - }) -"bPZ" = ( -/obj/structure/bed, -/obj/item/clothing/suit/straight_jacket, -/turf/open/floor/plasteel/whitered/side{ - tag = "icon-whitered (SOUTHWEST)"; - icon_state = "whitered"; - dir = 10 - }, -/area/security/main) -"bQa" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel/whitered/side, -/area/security/main) -"bQb" = ( -/turf/open/floor/plasteel/whitered/side, -/area/security/main) -"bQc" = ( -/obj/structure/bed, -/obj/item/clothing/suit/straight_jacket, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel/whitered/side{ - tag = "icon-whitered (SOUTHEAST)"; - icon_state = "whitered"; - dir = 6 - }, -/area/security/main) -"bQd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/radio, -/turf/open/floor/plating, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bQe" = ( -/obj/structure/table, -/obj/item/device/taperecorder, -/obj/item/device/tape, -/turf/open/floor/plating, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bQf" = ( -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/gravity_generator) -"bQg" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHEAST)"; - icon_state = "camera"; - dir = 6 - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/gravity_generator) -"bQh" = ( -/obj/machinery/light/small, -/turf/open/floor/plating, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bQi" = ( -/obj/machinery/power/apc{ - dir = 2; - name = "Telecoms Monitoring APC"; - pixel_y = -24 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bQj" = ( -/obj/structure/closet/firecloset/full, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bQk" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/eastright{ - base_state = "left"; - dir = 4; - icon_state = "left"; - name = "Robotics Desk"; - req_access_txt = "29" - }, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "robotics"; - name = "robotics lab shutters" - }, -/turf/open/floor/plating, -/area/assembly/robotics) -"bQl" = ( -/obj/structure/chair/office/dark{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel/white, -/area/assembly/robotics) -"bQm" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel/white, -/area/assembly/robotics) -"bQn" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel/white, -/area/assembly/robotics) -"bQo" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/assembly/robotics) -"bQp" = ( -/obj/machinery/holopad, -/turf/open/floor/plasteel/white, -/area/assembly/robotics) -"bQq" = ( -/turf/open/floor/plasteel/white, -/area/assembly/robotics) -"bQr" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/storage/toolbox/electrical{ - pixel_x = 1; - pixel_y = 6 - }, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = -1 - }, -/obj/item/clothing/head/welding{ - pixel_x = -3; - pixel_y = 5 - }, -/obj/item/clothing/glasses/welding, -/turf/open/floor/plasteel/white, -/area/assembly/robotics) -"bQs" = ( -/obj/structure/closet/l3closet, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (SOUTHWEST)"; - icon_state = "whitepurple"; - dir = 10 - }, -/area/toxins/mixing) -"bQt" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/whitepurple/side, -/area/toxins/mixing) -"bQu" = ( -/turf/open/floor/plasteel/whitepurple/side, -/area/toxins/mixing) -"bQv" = ( -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/plasteel/whitepurple/side, -/area/toxins/mixing) -"bQw" = ( -/obj/item/device/assembly/signaler{ - pixel_x = 0; - pixel_y = 8 - }, -/obj/item/device/assembly/signaler{ - pixel_x = -8; - pixel_y = 5 - }, -/obj/item/device/assembly/signaler{ - pixel_x = 6; - pixel_y = 5 - }, -/obj/item/device/assembly/signaler{ - pixel_x = -2; - pixel_y = -2 - }, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bQx" = ( -/obj/item/device/transfer_valve{ - pixel_x = -5 - }, -/obj/item/device/transfer_valve{ - pixel_x = -5 - }, -/obj/item/device/transfer_valve{ - pixel_x = 0 - }, -/obj/item/device/transfer_valve{ - pixel_x = 0 - }, -/obj/item/device/transfer_valve{ - pixel_x = 5 - }, -/obj/item/device/transfer_valve{ - pixel_x = 5 - }, -/obj/machinery/requests_console{ - department = "Science"; - departmentType = 2; - name = "Science Requests Console"; - pixel_x = 0; - pixel_y = -30 - }, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bQy" = ( -/obj/item/device/assembly/timer{ - pixel_x = 5; - pixel_y = 4 - }, -/obj/item/device/assembly/timer{ - pixel_x = -4; - pixel_y = 2 - }, -/obj/item/device/assembly/timer{ - pixel_x = 6; - pixel_y = -4 - }, -/obj/item/device/assembly/timer{ - pixel_x = 0; - pixel_y = 0 - }, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/white, -/area/toxins/mixing) -"bQz" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/whitepurple/side, -/area/toxins/mixing) -"bQA" = ( -/obj/machinery/power/apc{ - dir = 4; - name = "Toxins Lab APC"; - pixel_x = 26; - pixel_y = 0 - }, -/obj/structure/cable, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (SOUTHEAST)"; - icon_state = "whitepurple"; - dir = 6 - }, -/area/toxins/mixing) -"bQB" = ( -/obj/machinery/mass_driver{ - dir = 4; - id = "toxinsdriver" - }, -/turf/open/floor/plating, -/area/toxins/mixing) -"bQC" = ( -/turf/open/floor/plating, -/area/toxins/mixing) -"bQD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/toxins/mixing) -"bQE" = ( -/obj/machinery/door/poddoor{ - id = "toxinsdriver"; - name = "toxins launcher bay door" - }, -/turf/open/floor/plating, -/area/space) -"bQF" = ( -/obj/item/device/radio/beacon, -/turf/open/floor/plating/airless, -/area/toxins/test_area) -"bQG" = ( -/obj/machinery/camera{ - active_power_usage = 0; - c_tag = "Bomb Test Site"; - desc = "A specially-reinforced camera with a long lasting battery, used to monitor the bomb testing site."; - dir = 8; - invuln = 1; - light = null; - name = "Hardened Bomb-Test Camera"; - network = list("Toxins"); - use_power = 0 - }, -/obj/item/target/alien{ - anchored = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating{ - luminosity = 2; - initial_gas_mix = "o2=0.01;n2=0.01" - }, -/area/toxins/test_area) -"bQH" = ( -/turf/closed/indestructible/riveted, -/area/toxins/test_area) -"bQI" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/structure/closet/bombcloset, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bQJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/obj/effect/landmark{ - name = "secequipment" - }, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bQK" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/closet/secure_closet/security, -/obj/item/storage/belt/security/full, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bQL" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bQM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 2; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bQN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/security/brig{ - name = "Security" - }) -"bQO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass{ - name = "Port Primary Hallway" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) -"bQP" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass{ - name = "Port Primary Hallway" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) -"bQQ" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass{ - name = "Port Primary Hallway" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) -"bQR" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/structure/cable, -/obj/structure/sign/electricshock{ - pixel_x = -32 - }, -/turf/open/floor/plating, -/area/security/main) -"bQS" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/turf/open/floor/plating, -/area/security/main) -"bQT" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bQU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/landmark{ - name = "blobstart" - }, -/turf/open/floor/plating, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bQV" = ( -/obj/structure/table, -/obj/item/book/manual/wiki/security_space_law, -/obj/item/folder/red, -/turf/open/floor/plating, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bQW" = ( -/turf/open/floor/plasteel{ - icon_state = "vault"; - dir = 1 - }, -/area/engine/gravity_generator) -"bQX" = ( -/turf/open/floor/plasteel{ - icon_state = "vault"; - dir = 8 - }, -/area/engine/gravity_generator) -"bQY" = ( -/turf/open/floor/plasteel{ - icon_state = "vault"; - dir = 4 - }, -/area/engine/gravity_generator) -"bQZ" = ( -/turf/closed/wall/r_wall, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bRa" = ( -/turf/closed/wall/r_wall, -/area/tcommsat/chamber) -"bRb" = ( -/turf/closed/wall/r_wall, -/area/tcommsat/computer) -"bRc" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel/caution, -/area/hallway/primary/starboard) -"bRd" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 2; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel/caution/corner{ - tag = "icon-cautioncorner (WEST)"; - icon_state = "cautioncorner"; - dir = 8 - }, -/area/hallway/primary/starboard) -"bRe" = ( -/obj/structure/grille, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "robotics"; - name = "robotics lab shutters" - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/assembly/robotics) -"bRf" = ( -/obj/structure/table, -/obj/item/storage/firstaid/regular{ - empty = 1; - name = "First-Aid (empty)" - }, -/obj/item/storage/firstaid/regular{ - empty = 1; - name = "First-Aid (empty)" - }, -/obj/item/storage/firstaid/regular{ - empty = 1; - name = "First-Aid (empty)" - }, -/obj/item/device/healthanalyzer, -/obj/item/device/healthanalyzer, -/obj/item/device/healthanalyzer, -/turf/open/floor/plasteel, -/area/assembly/robotics) -"bRg" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/assembly/robotics) -"bRh" = ( -/obj/machinery/mecha_part_fabricator, -/turf/open/floor/plasteel, -/area/assembly/robotics) -"bRi" = ( -/obj/effect/landmark/start{ - name = "Roboticist" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/assembly/robotics) -"bRj" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel/white, -/area/assembly/robotics) -"bRk" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/assembly/robotics) -"bRl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/closet/wardrobe/black, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (EAST)"; - icon_state = "whitepurple"; - dir = 4 - }, -/area/assembly/robotics) -"bRm" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/assembly/robotics) -"bRn" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4; - initialize_directions = 11 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (WEST)"; - icon_state = "whitepurple"; - dir = 8 - }, -/area/medical/research{ - name = "Research Division" - }) -"bRo" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (NORTH)"; - icon_state = "whitepurple"; - dir = 1 - }, -/area/toxins/mixing) -"bRp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (NORTH)"; - icon_state = "whitepurple"; - dir = 1 - }, -/area/toxins/mixing) -"bRq" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bRr" = ( -/obj/machinery/space_heater, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bRs" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/toxins/test_area) -"bRt" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating/airless, -/area/toxins/test_area) -"bRu" = ( -/obj/item/clothing/glasses/red, -/obj/item/clothing/head/beret, -/obj/item/clothing/shoes/sneakers/red, -/obj/item/clothing/under/color/red, -/turf/open/floor/plating, -/area/maintenance/fpmaint2) -"bRv" = ( -/obj/structure/closet/l3closet/security, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bRw" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bRx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/obj/structure/closet/secure_closet/security, -/obj/item/storage/belt/security/full, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bRy" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/obj/machinery/flasher{ - id = "Cell 1"; - pixel_x = -28 - }, -/obj/structure/bed, -/obj/item/bedsheet/orange, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bRz" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2; - initialize_directions = 11 - }, -/obj/structure/closet/secure_closet/brig{ - id = "Cell 1"; - name = "Cell 1 Locker" - }, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bRA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/obj/machinery/flasher{ - id = "Cell 2"; - pixel_x = -28 - }, -/obj/structure/bed, -/obj/item/bedsheet/orange, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bRB" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2; - initialize_directions = 11 - }, -/obj/structure/closet/secure_closet/brig{ - id = "Cell 2"; - name = "Cell 2 Locker" - }, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bRC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/obj/machinery/flasher{ - id = "Cell 3"; - pixel_x = -28 - }, -/obj/structure/bed, -/obj/item/bedsheet/orange, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bRD" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2; - initialize_directions = 11 - }, -/obj/structure/closet/secure_closet/brig{ - id = "Cell 3"; - name = "Cell 3 Locker" - }, -/turf/open/floor/plasteel/black, -/area/security/brig{ - name = "Security" - }) -"bRE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/security/brig{ - name = "Security" - }) -"bRF" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4; - initialize_directions = 11 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bRG" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bRH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bRI" = ( -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/hallway/secondary/entry) -"bRJ" = ( -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/hallway/secondary/entry) -"bRK" = ( -/obj/machinery/vending/coffee, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/hallway/secondary/entry) -"bRL" = ( -/obj/machinery/vending/cola, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/hallway/secondary/entry) -"bRM" = ( -/obj/machinery/vending/snack, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/hallway/secondary/entry) -"bRN" = ( -/obj/machinery/vending/cigarette, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/hallway/secondary/entry) -"bRO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bRP" = ( -/obj/structure/table, -/obj/item/storage/briefcase, -/obj/item/pen/red, -/turf/open/floor/plating, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bRQ" = ( -/turf/open/floor/circuit{ - name = "Mainframe Base"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bRR" = ( -/obj/machinery/telecomms/server/presets/engineering, -/turf/open/floor/plasteel/black{ - name = "Mainframe Floor"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bRS" = ( -/obj/machinery/telecomms/bus/preset_four, -/turf/open/floor/plasteel/black{ - name = "Mainframe Floor"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bRT" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/power/apc{ - cell_type = 5000; - dir = 1; - name = "Telecoms Server APC"; - pixel_x = 0; - pixel_y = 25 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/turf/open/floor/circuit{ - name = "Mainframe Base"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bRU" = ( -/obj/machinery/telecomms/processor/preset_three, -/turf/open/floor/plasteel/black{ - name = "Mainframe Floor"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bRV" = ( -/obj/machinery/telecomms/server/presets/security, -/turf/open/floor/plasteel/black{ - name = "Mainframe Floor"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bRW" = ( -/obj/structure/window/reinforced/fulltile, -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/turf/open/floor/plating, -/area/tcommsat/computer) -"bRX" = ( -/obj/structure/table, -/turf/open/floor/plasteel/yellow/side{ - dir = 9 - }, -/area/tcommsat/computer) -"bRY" = ( -/obj/item/device/radio/intercom{ - dir = 8; - freerange = 1; - name = "Station Intercom (Telecoms)"; - pixel_x = 0; - pixel_y = 26 - }, -/turf/open/floor/plasteel, -/area/tcommsat/computer) -"bRZ" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/announcement_system, -/turf/open/floor/plasteel, -/area/tcommsat/computer) -"bSa" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/caution{ - tag = "icon-caution (WEST)"; - icon_state = "caution"; - dir = 8 - }, -/area/hallway/primary/starboard) -"bSb" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/table, -/obj/item/device/assembly/flash, -/obj/item/device/assembly/flash, -/obj/item/device/assembly/flash, -/obj/item/device/assembly/flash, -/obj/item/device/assembly/flash, -/obj/item/device/assembly/prox_sensor{ - pixel_x = 4; - pixel_y = 1 - }, -/obj/item/device/assembly/prox_sensor{ - pixel_x = 4; - pixel_y = 1 - }, -/obj/item/device/assembly/prox_sensor{ - pixel_x = 4; - pixel_y = 1 - }, -/turf/open/floor/plasteel, -/area/assembly/robotics) -"bSc" = ( -/turf/open/floor/plasteel/bot, -/area/assembly/robotics) -"bSd" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/assembly/robotics) -"bSe" = ( -/obj/machinery/vending/robotics, -/turf/open/floor/plasteel/whitepurple/corner{ - tag = "icon-whitepurplecorner (EAST)"; - icon_state = "whitepurplecorner"; - dir = 4 - }, -/area/assembly/robotics) -"bSf" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8; - initialize_directions = 11 - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (WEST)"; - icon_state = "whitepurple"; - dir = 8 - }, -/area/medical/research{ - name = "Research Division" - }) -"bSg" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (EAST)"; - icon_state = "whitepurple"; - dir = 4 - }, -/area/medical/research{ - name = "Research Division" - }) -"bSh" = ( -/obj/structure/lattice, -/turf/open/space, -/area/toxins/mixing) -"bSi" = ( -/obj/machinery/door/poddoor{ - id = "mixvent"; - name = "Mixer Room Vent" - }, -/turf/open/floor/engine/vacuum, -/area/toxins/mixing) -"bSj" = ( -/turf/open/floor/engine/vacuum, -/area/toxins/mixing) -"bSk" = ( -/obj/machinery/sparker{ - dir = 2; - id = "mixingsparker"; - pixel_x = 25 - }, -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - external_pressure_bound = 0; - initialize_directions = 1; - internal_pressure_bound = 4000; - on = 1; - pressure_checks = 2; - pump_direction = 0 - }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; - pixel_x = 0; - pixel_y = 32 - }, -/turf/open/floor/engine/vacuum, -/area/toxins/mixing) -"bSl" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/toxins/mixing) -"bSm" = ( -/obj/machinery/airlock_sensor{ - id_tag = "tox_airlock_sensor"; - master_tag = "tox_airlock_control"; - pixel_y = 24 - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4; - on = 1 - }, -/turf/open/floor/engine, -/area/toxins/mixing) -"bSn" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/obj/machinery/meter, -/obj/machinery/embedded_controller/radio/airlock_controller{ - airpump_tag = "tox_airlock_pump"; - exterior_door_tag = "tox_airlock_exterior"; - id_tag = "tox_airlock_control"; - interior_door_tag = "tox_airlock_interior"; - pixel_x = -24; - pixel_y = 0; - sanitize_external = 1; - sensor_tag = "tox_airlock_sensor" - }, -/turf/open/floor/engine, -/area/toxins/mixing) -"bSo" = ( -/obj/machinery/atmospherics/components/binary/valve{ - dir = 4; - name = "mix to port" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/engine, -/area/toxins/mixing) -"bSp" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/turf/open/floor/engine, -/area/toxins/mixing) -"bSq" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bSr" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/structure/cable, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/plating, -/area/security/armory) -"bSs" = ( -/obj/structure/grille, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/structure/window/reinforced, -/turf/open/floor/plating, -/area/security/armory) -"bSt" = ( -/obj/structure/grille, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/obj/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/turf/open/floor/plating, -/area/security/armory) -"bSu" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/security/brig{ - name = "Security" - }) -"bSv" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bSw" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bSx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bSy" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/hallway/secondary/entry) -"bSz" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/table/wood, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/hallway/secondary/entry) -"bSA" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1; - initialize_directions = 11 - }, -/turf/open/floor/carpet, -/area/hallway/secondary/entry) -"bSB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/chair/comfy/beige, -/obj/effect/landmark/start{ - name = "Assistant" - }, -/turf/open/floor/carpet, -/area/hallway/secondary/entry) -"bSC" = ( -/obj/structure/chair/comfy/beige, -/obj/effect/landmark/start{ - name = "Assistant" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1; - initialize_directions = 11 - }, -/turf/open/floor/carpet, -/area/hallway/secondary/entry) -"bSD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/hallway/secondary/entry) -"bSE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/obj/machinery/door/airlock/maintenance, -/turf/open/floor/plating, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bSF" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/open/floor/plating, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bSG" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bSH" = ( -/obj/machinery/power/apc{ - cell_type = 2500; - dir = 4; - name = "Central Maintenance APC"; - pixel_x = 26; - pixel_y = 0 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/turf/open/floor/plating, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bSI" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/closed/wall/r_wall, -/area/engine/gravity_generator) -"bSJ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/gravity_generator) -"bSK" = ( -/obj/machinery/gravity_generator/main/station, -/turf/open/floor/plasteel{ - icon_state = "vault"; - dir = 8 - }, -/area/engine/gravity_generator) -"bSL" = ( -/obj/machinery/camera{ - c_tag = "Gravity Generator Room"; - dir = 8; - network = list("SS13"); - pixel_x = 0; - pixel_y = 0 - }, -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/gravity_generator) -"bSM" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/engine/gravity_generator) -"bSN" = ( -/obj/machinery/telecomms/server/presets/common, -/turf/open/floor/plasteel/black{ - name = "Mainframe Floor"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bSO" = ( -/obj/machinery/telecomms/processor/preset_four, -/turf/open/floor/plasteel/black{ - name = "Mainframe Floor"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bSP" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/circuit{ - name = "Mainframe Base"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bSQ" = ( -/obj/machinery/telecomms/bus/preset_three, -/turf/open/floor/plasteel/black{ - name = "Mainframe Floor"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bSR" = ( -/obj/machinery/telecomms/server/presets/command, -/turf/open/floor/plasteel/black{ - name = "Mainframe Floor"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bSS" = ( -/obj/structure/window/reinforced/fulltile, -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/tcommsat/computer) -"bST" = ( -/obj/machinery/computer/message_monitor, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/tcommsat/computer) -"bSU" = ( -/obj/structure/chair/office/dark{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/tcommsat/computer) -"bSV" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - on = 1 - }, -/turf/open/floor/plasteel, -/area/tcommsat/computer) -"bSW" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/tcommsat/computer) -"bSX" = ( -/obj/machinery/power/apc{ - dir = 8; - name = "Robotics Lab APC"; - pixel_x = -25 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/turf/open/floor/plasteel, -/area/assembly/robotics) -"bSY" = ( -/turf/open/floor/plasteel, -/area/assembly/robotics) -"bSZ" = ( -/obj/item/device/radio/intercom{ - desc = "Talk smack through this."; - dir = 4; - pixel_x = 28; - syndie = 1 - }, -/turf/open/floor/plasteel, -/area/assembly/robotics) -"bTa" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/floor/plasteel/white, -/area/assembly/robotics) -"bTb" = ( -/obj/structure/table, -/obj/item/device/mmi, -/obj/item/device/mmi, -/obj/item/device/mmi, -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 1 - }, -/turf/open/floor/plasteel/white, -/area/assembly/robotics) -"bTc" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/engine/vacuum, -/area/toxins/mixing) -"bTd" = ( -/obj/machinery/door/airlock/glass_research{ - autoclose = 0; - frequency = 1449; - glass = 1; - heat_proof = 1; - icon_state = "door_locked"; - id_tag = "tox_airlock_exterior"; - locked = 1; - name = "Mixing Room Exterior Airlock"; - req_access_txt = "8" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/engine, -/area/toxins/mixing) -"bTe" = ( -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ - dir = 2; - frequency = 1449; - id = "tox_airlock_pump" - }, -/turf/open/floor/engine, -/area/toxins/mixing) -"bTf" = ( -/obj/machinery/door/airlock/glass_research{ - autoclose = 0; - frequency = 1449; - glass = 1; - heat_proof = 1; - icon_state = "door_locked"; - id_tag = "tox_airlock_interior"; - locked = 1; - name = "Mixing Room Interior Airlock"; - req_access_txt = "8" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/engine, -/area/toxins/mixing) -"bTg" = ( -/turf/open/floor/engine, -/area/toxins/mixing) -"bTh" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/engine, -/area/toxins/mixing) -"bTi" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 - }, -/obj/machinery/camera{ - c_tag = "Toxins Lab East"; - dir = 8; - network = list("SS13","RD"); - pixel_y = -22 - }, -/turf/open/floor/engine, -/area/toxins/mixing) -"bTj" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint2) -"bTk" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint2) -"bTl" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8"; - tag = "" - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint2) -"bTm" = ( -/turf/closed/mineral/random/labormineral, -/area/hallway/secondary/entry) -"bTn" = ( -/turf/closed/wall, -/area/hallway/secondary/entry) -"bTo" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bTp" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bTq" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bTr" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/flora/ausbushes/ppflowers, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/grass, -/area/hallway/secondary/entry) -"bTs" = ( -/obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/hallway/secondary/entry) -"bTt" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/carpet, -/area/hallway/secondary/entry) -"bTu" = ( -/obj/structure/table/wood, -/turf/open/floor/carpet, -/area/hallway/secondary/entry) -"bTv" = ( -/obj/structure/table/wood, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/carpet, -/area/hallway/secondary/entry) -"bTw" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/hallway/secondary/entry) -"bTx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bTy" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/gravity_generator) -"bTz" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/gravity_generator) -"bTA" = ( -/turf/open/floor/plasteel/black{ - name = "Mainframe Floor"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bTB" = ( -/obj/machinery/blackbox_recorder, -/turf/open/floor/plasteel/black{ - name = "Mainframe Floor"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bTC" = ( -/obj/machinery/telecomms/broadcaster/preset_right, -/turf/open/floor/plasteel/black{ - name = "Mainframe Floor"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bTD" = ( -/obj/machinery/telecomms/receiver/preset_right, -/turf/open/floor/plasteel/black{ - name = "Mainframe Floor"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bTE" = ( -/obj/machinery/computer/telecomms/server{ - network = "tcommsat" - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 10 - }, -/area/tcommsat/computer) -"bTF" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel, -/area/tcommsat/computer) -"bTG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/tcommsat/computer) -"bTH" = ( -/obj/structure/table, -/obj/item/folder/blue, -/obj/item/pen/blue, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/tcommsat/computer) -"bTI" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (EAST)"; - icon_state = "purple"; - dir = 4 - }, -/area/hallway/primary/starboard) -"bTJ" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/assembly/robotics) -"bTK" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/plasteel, -/area/assembly/robotics) -"bTL" = ( -/obj/machinery/rnd/circuit_imprinter, -/turf/open/floor/plasteel, -/area/assembly/robotics) -"bTM" = ( -/obj/machinery/computer/rdconsole/robotics, -/turf/open/floor/plasteel, -/area/assembly/robotics) -"bTN" = ( -/obj/structure/table, -/obj/item/retractor, -/obj/item/hemostat, -/turf/open/floor/plasteel/white, -/area/assembly/robotics) -"bTO" = ( -/obj/effect/landmark/start{ - name = "Roboticist" - }, -/turf/open/floor/plasteel/white, -/area/assembly/robotics) -"bTP" = ( -/obj/structure/table, -/obj/item/clothing/gloves/color/latex, -/obj/item/surgical_drapes, -/obj/item/razor, -/turf/open/floor/plasteel/white, -/area/assembly/robotics) -"bTQ" = ( -/obj/machinery/sparker{ - dir = 2; - id = "mixingsparker"; - pixel_x = 25 - }, -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 4; - frequency = 1441; - id = "air_in" - }, -/turf/open/floor/engine/vacuum, -/area/toxins/mixing) -"bTR" = ( -/obj/structure/sign/fire{ - pixel_y = -32 - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - on = 1 - }, -/turf/open/floor/engine, -/area/toxins/mixing) -"bTS" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/obj/machinery/meter, -/obj/machinery/button/door{ - id = "mixvent"; - name = "Mixing Room Vent Control"; - pixel_x = -25; - pixel_y = 5; - req_access_txt = "7" - }, -/obj/machinery/button/ignition{ - id = "mixingsparker"; - pixel_x = -25; - pixel_y = -5 - }, -/turf/open/floor/engine, -/area/toxins/mixing) -"bTT" = ( -/obj/machinery/light, -/obj/machinery/atmospherics/components/binary/valve{ - dir = 4; - name = "port to mix" - }, -/turf/open/floor/engine, -/area/toxins/mixing) -"bTU" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bTV" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/storage/box/disks, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bTW" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating/airless, -/area/toxins/test_area) -"bTX" = ( -/turf/closed/wall, -/area/ruin/unpowered{ - name = "Asteroid" - }) -"bTY" = ( -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/plating, -/area/maintenance/fpmaint2) -"bTZ" = ( -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 0 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bUa" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bUb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bUc" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bUd" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bUe" = ( -/obj/structure/table/wood, -/obj/effect/holodeck_effect/cards, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -28 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/hallway/secondary/entry) -"bUf" = ( -/turf/open/floor/carpet, -/area/hallway/secondary/entry) -"bUg" = ( -/obj/structure/chair/comfy/beige{ - dir = 1; - icon_state = "comfychair" - }, -/obj/effect/landmark/start{ - name = "Assistant" - }, -/turf/open/floor/carpet, -/area/hallway/secondary/entry) -"bUh" = ( -/obj/structure/chair/comfy/beige{ - dir = 1; - icon_state = "comfychair" - }, -/obj/effect/landmark/start{ - name = "Assistant" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/carpet, -/area/hallway/secondary/entry) -"bUi" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/hallway/secondary/entry) -"bUj" = ( -/obj/structure/grille, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; - pixel_x = -32; - pixel_y = 0 - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/engine/gravity_generator) -"bUk" = ( -/obj/structure/grille, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/engine/gravity_generator) -"bUl" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/glass_engineering{ - name = "Gravity Generator"; - req_access_txt = "11"; - req_one_access_txt = "0" - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/gravity_generator) -"bUm" = ( -/obj/structure/grille, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; - pixel_x = 32; - pixel_y = 0 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/engine/gravity_generator) -"bUn" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/open/floor/circuit{ - name = "Mainframe Base"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bUo" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/open/floor/circuit{ - name = "Mainframe Base"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bUp" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/open/floor/circuit{ - name = "Mainframe Base"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bUq" = ( -/obj/structure/window/reinforced/fulltile, -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/turf/open/floor/plating, -/area/tcommsat/chamber) -"bUr" = ( -/obj/structure/window/reinforced/fulltile, -/obj/structure/grille, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/tcommsat/computer) -"bUs" = ( -/obj/machinery/status_display, -/turf/closed/wall, -/area/tcommsat/computer) -"bUt" = ( -/obj/structure/window/reinforced/fulltile, -/obj/structure/grille, -/turf/open/floor/plating, -/area/tcommsat/computer) -"bUu" = ( -/obj/machinery/door/airlock/glass_command{ - name = "Control Room"; - req_access_txt = "19; 61" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/tcommsat/computer) -"bUv" = ( -/obj/structure/window/reinforced/fulltile, -/obj/structure/grille, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/tcommsat/computer) -"bUw" = ( -/turf/closed/wall/r_wall, -/area/assembly/chargebay) -"bUx" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/door/airlock/research{ - name = "Mech Bay"; - req_access_txt = "29"; - req_one_access_txt = "0" - }, -/turf/open/floor/plasteel/white, -/area/assembly/chargebay) -"bUy" = ( -/turf/closed/wall, -/area/assembly/chargebay) -"bUz" = ( -/obj/structure/table, -/obj/item/circular_saw, -/obj/item/scalpel{ - pixel_y = 12 - }, -/turf/open/floor/plasteel/white, -/area/assembly/robotics) -"bUA" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (WEST)"; - icon_state = "whitepurple"; - dir = 8 - }, -/area/medical/research{ - name = "Research Division" - }) -"bUB" = ( -/obj/structure/table, -/obj/item/rack_parts, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bUC" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/storage/box/lights, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bUD" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bUE" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bUF" = ( -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bUG" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTH)"; - icon_state = "camera"; - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bUH" = ( -/obj/machinery/light, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bUI" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bUJ" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bUK" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/hallway/secondary/entry) -"bUL" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/hallway/secondary/entry) -"bUM" = ( -/obj/machinery/airalarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/turf/open/floor/plasteel{ - icon_state = "grimy" - }, -/area/hallway/secondary/entry) -"bUN" = ( -/turf/closed/wall/r_wall, -/area/ai_monitored/nuke_storage) -"bUO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall/r_wall, -/area/ai_monitored/nuke_storage) -"bUP" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall/r_wall, -/area/ai_monitored/nuke_storage) -"bUQ" = ( -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -24 - }, -/obj/effect/turf_decal/stripes{ - tag = "icon-warningline (NORTH)"; - icon_state = "warningline"; - dir = 1 - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"bUR" = ( -/obj/effect/turf_decal/stripes{ - tag = "icon-warningline (NORTH)"; - icon_state = "warningline"; - dir = 1 - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"bUS" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/turf_decal/stripes{ - tag = "icon-warningline (NORTH)"; - icon_state = "warningline"; - dir = 1 - }, -/obj/machinery/airalarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"bUT" = ( -/obj/machinery/power/terminal{ - dir = 4 - }, -/obj/machinery/ntnet_relay, -/turf/open/floor/circuit{ - name = "Mainframe Base"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bUU" = ( -/obj/machinery/power/smes{ - charge = 5e+006 - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/turf/open/floor/circuit{ - name = "Mainframe Base"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bUV" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/open/floor/circuit{ - name = "Mainframe Base"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bUW" = ( -/obj/machinery/telecomms/hub/preset, -/turf/open/floor/plasteel/vault{ - dir = 8; - name = "Mainframe Floor"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bUX" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/open/floor/circuit{ - name = "Mainframe Base"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bUY" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/circuit{ - name = "Mainframe Base"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bUZ" = ( -/obj/machinery/door/airlock/glass_engineering{ - cyclelinkeddir = 4; - name = "Server Room"; - req_access_txt = "61" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/tcommsat/chamber) -"bVa" = ( -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/tcommsat/entrance) -"bVb" = ( -/obj/machinery/door/airlock/glass_engineering{ - cyclelinkeddir = 8; - name = "Server Room"; - req_access_txt = "61" - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/tcommsat/entrance) -"bVc" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/tcommsat/entrance) -"bVd" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/tcommsat/entrance) -"bVe" = ( -/obj/structure/closet/emcloset, -/obj/machinery/camera{ - c_tag = "Telecoms Monitoring"; - dir = 8; - network = list("SS13") - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/tcommsat/entrance) -"bVf" = ( -/turf/closed/wall/r_wall, -/area/tcommsat/entrance) -"bVg" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/button/door{ - dir = 2; - id = "Skynet_launch"; - name = "Mech Bay Door Control"; - pixel_x = 24; - pixel_y = 0; - req_access_txt = "29" - }, -/turf/open/floor/plasteel/purple/corner{ - tag = "icon-purplecorner (EAST)"; - icon_state = "purplecorner"; - dir = 4 - }, -/area/hallway/primary/starboard) -"bVh" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/obj/machinery/button/door{ - dir = 2; - id = "Skynet_launch"; - name = "Mech Bay Door Control"; - pixel_x = -24; - pixel_y = 0; - req_access_txt = "29" - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/assembly/chargebay) -"bVi" = ( -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/turf/open/floor/circuit, -/area/assembly/chargebay) -"bVj" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/turf/open/floor/circuit, -/area/assembly/chargebay) -"bVk" = ( -/obj/machinery/power/apc{ - dir = 4; - name = "Mech Bay APC"; - pixel_x = 28; - pixel_y = 0 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/turf/open/floor/circuit, -/area/assembly/chargebay) -"bVl" = ( -/obj/structure/table, -/obj/item/storage/box/bodybags, -/obj/item/pen, -/turf/open/floor/plasteel/white, -/area/assembly/robotics) -"bVm" = ( -/obj/structure/table/optable{ - name = "Robotics Operating Table" - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/white, -/area/assembly/robotics) -"bVn" = ( -/obj/machinery/computer/operating{ - name = "Robotics Operating Computer" - }, -/obj/machinery/light, -/turf/open/floor/plasteel/white, -/area/assembly/robotics) -"bVo" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (WEST)"; - icon_state = "whitepurple"; - dir = 8 - }, -/area/medical/research{ - name = "Research Division" - }) -"bVp" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (EAST)"; - icon_state = "whitepurple"; - dir = 4 - }, -/area/medical/research{ - name = "Research Division" - }) -"bVq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/toxins/misc_lab) -"bVr" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/table, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/glass{ - amount = 50; - pixel_x = 3; - pixel_y = 3 - }, -/turf/open/floor/plasteel, -/area/toxins/misc_lab) -"bVs" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/obj/structure/table, -/obj/item/stack/sheet/mineral/plasma, -/obj/item/stack/sheet/mineral/plasma, -/obj/item/stack/sheet/mineral/plasma, -/turf/open/floor/plasteel, -/area/toxins/misc_lab) -"bVt" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/toxins/misc_lab) -"bVu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/table, -/obj/item/device/taperecorder, -/turf/open/floor/plasteel, -/area/toxins/misc_lab) -"bVv" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/engine, -/area/toxins/misc_lab) -"bVw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/engine, -/area/toxins/misc_lab) -"bVx" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/turf/open/floor/engine, -/area/toxins/misc_lab) -"bVy" = ( -/turf/open/floor/engine, -/area/toxins/misc_lab) -"bVz" = ( -/turf/closed/wall/r_wall, -/area/toxins/misc_lab) -"bVA" = ( -/obj/structure/table, -/obj/item/device/assembly/prox_sensor{ - pixel_x = 0; - pixel_y = 2 - }, -/obj/item/device/assembly/signaler{ - pixel_x = -2; - pixel_y = -2 - }, -/obj/machinery/light/small{ - brightness = 3; - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bVB" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/hallway/secondary/entry) -"bVC" = ( -/obj/machinery/door/airlock/external{ - name = "Arrivals Docking Bay 1" - }, -/turf/open/floor/noslip, -/area/hallway/secondary/entry) -"bVD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -28 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bVE" = ( -/turf/closed/wall, -/area/storage/eva) -"bVF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall, -/area/storage/eva) -"bVG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/storage/eva) -"bVH" = ( -/obj/machinery/computer/bank_machine, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ai_monitored/nuke_storage) -"bVI" = ( -/obj/machinery/light_switch{ - pixel_y = 28 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/circuit, -/area/ai_monitored/nuke_storage) -"bVJ" = ( -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/circuit, -/area/ai_monitored/nuke_storage) -"bVK" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "Vault APC"; - pixel_x = 0; - pixel_y = 25 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/circuit, -/area/ai_monitored/nuke_storage) -"bVL" = ( -/obj/structure/filingcabinet, -/obj/item/folder/documents, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ai_monitored/nuke_storage) -"bVM" = ( -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/machinery/power/apc{ - dir = 8; - name = "Gravity Generator APC"; - pixel_x = -25; - pixel_y = 1 - }, -/obj/structure/table, -/obj/item/paper/gravity_gen{ - layer = 3 - }, -/obj/item/pen/blue, -/obj/item/device/radio/intercom{ - name = "Station Intercom (General)"; - pixel_y = -35 - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"bVN" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"bVO" = ( -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/structure/cable, -/obj/machinery/power/smes{ - charge = 5e+006 - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"bVP" = ( -/obj/machinery/camera{ - c_tag = "Telecoms Server Room"; - dir = 4; - network = list("SS13") - }, -/turf/open/floor/plasteel/black{ - name = "Mainframe Floor"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bVQ" = ( -/obj/structure/window/reinforced/fulltile, -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/tcommsat/chamber) -"bVR" = ( -/obj/structure/window/reinforced/fulltile, -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/turf/open/floor/plating, -/area/tcommsat/entrance) -"bVS" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'SERVER ROOM'."; - name = "SERVER ROOM"; - pixel_y = 0 - }, -/turf/closed/wall, -/area/tcommsat/entrance) -"bVT" = ( -/turf/open/floor/plasteel, -/area/tcommsat/entrance) -"bVU" = ( -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/tcommsat/entrance) -"bVV" = ( -/obj/machinery/requests_console{ - announcementConsole = 1; - department = "Telecoms Admin"; - departmentType = 5; - name = "Telecoms RC"; - pixel_x = 30; - pixel_y = 0 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/tcommsat/entrance) -"bVW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/loadingarea{ - dir = 8 - }, -/area/hallway/primary/starboard) -"bVX" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters{ - id = "Skynet_launch"; - name = "mech bay" - }, -/turf/open/floor/plasteel/delivery, -/area/assembly/chargebay) -"bVY" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/assembly/chargebay) -"bVZ" = ( -/obj/machinery/mech_bay_recharge_port, -/obj/structure/cable, -/turf/open/floor/plating, -/area/assembly/chargebay) -"bWa" = ( -/turf/open/floor/mech_bay_recharge_floor, -/area/assembly/chargebay) -"bWb" = ( -/obj/machinery/computer/mech_bay_power_console, -/obj/structure/cable, -/turf/open/floor/circuit, -/area/assembly/chargebay) -"bWc" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/open/floor/plasteel/whitepurple/side{ - tag = "icon-whitepurple (WEST)"; - icon_state = "whitepurple"; - dir = 8 - }, -/area/medical/research{ - name = "Research Division" - }) -"bWd" = ( -/turf/closed/wall, -/area/toxins/misc_lab) -"bWe" = ( -/obj/structure/table, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHEAST)"; - icon_state = "camera"; - dir = 5 - }, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -28 - }, -/turf/open/floor/plasteel, -/area/toxins/misc_lab) -"bWf" = ( -/turf/open/floor/plasteel, -/area/toxins/misc_lab) -"bWg" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/turf/open/floor/plasteel, -/area/toxins/misc_lab) -"bWh" = ( -/obj/structure/table, -/obj/item/device/plant_analyzer, -/obj/item/device/gps/science, -/obj/item/storage/belt, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bWi" = ( -/turf/open/floor/noslip, -/area/hallway/secondary/entry) -"bWj" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/junction{ - dir = 1; - icon_state = "pipe-j1"; - tag = "icon-pipe-j1 (EAST)" - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bWk" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bWl" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "EVA Storage APC"; - pixel_x = 0; - pixel_y = 24 - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/tank_dispenser/oxygen, -/turf/open/floor/plasteel, -/area/storage/eva) -"bWm" = ( -/turf/open/floor/plasteel, -/area/storage/eva) -"bWn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/airalarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/obj/structure/closet/crate/rcd, -/obj/machinery/camera/motion{ - c_tag = "EVA Motion Sensor"; - name = "motion-sensitive security camera" - }, -/turf/open/floor/plasteel, -/area/storage/eva) -"bWo" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel/vault{ - dir = 1 - }, -/area/ai_monitored/nuke_storage) -"bWp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/turf/open/floor/circuit, -/area/ai_monitored/nuke_storage) -"bWq" = ( -/obj/machinery/nuclearbomb/selfdestruct, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/ai_monitored/nuke_storage) -"bWr" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/circuit, -/area/ai_monitored/nuke_storage) -"bWs" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - on = 1 - }, -/turf/open/floor/plasteel/vault{ - dir = 4 - }, -/area/ai_monitored/nuke_storage) -"bWt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/closed/wall/r_wall, -/area/engine/gravity_generator) -"bWu" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/closed/wall/r_wall, -/area/engine/gravity_generator) -"bWv" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"bWw" = ( -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"bWx" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/engine/gravity_generator) -"bWy" = ( -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/closed/wall/r_wall, -/area/engine/gravity_generator) -"bWz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/closed/wall/r_wall, -/area/engine/gravity_generator) -"bWA" = ( -/obj/machinery/message_server, -/turf/open/floor/plasteel/black{ - name = "Mainframe Floor"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bWB" = ( -/obj/machinery/telecomms/broadcaster/preset_left, -/turf/open/floor/plasteel/black{ - name = "Mainframe Floor"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bWC" = ( -/obj/machinery/telecomms/receiver/preset_left, -/turf/open/floor/plasteel/black{ - name = "Mainframe Floor"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bWD" = ( -/obj/structure/window/reinforced/fulltile, -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/tcommsat/entrance) -"bWE" = ( -/obj/structure/table, -/obj/item/device/multitool, -/turf/open/floor/plasteel/yellow/side{ - dir = 9 - }, -/area/tcommsat/entrance) -"bWF" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - on = 1 - }, -/turf/open/floor/plasteel, -/area/tcommsat/entrance) -"bWG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/tcommsat/entrance) -"bWH" = ( -/obj/machinery/light_switch{ - pixel_x = 27 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel, -/area/tcommsat/entrance) -"bWI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/tcommsat/entrance) -"bWJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHEAST)"; - icon_state = "camera"; - dir = 5 - }, -/turf/open/floor/plasteel/caution{ - tag = "icon-caution (WEST)"; - icon_state = "caution"; - dir = 8 - }, -/area/hallway/primary/starboard) -"bWK" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/turf/open/floor/plasteel/loadingarea{ - dir = 8 - }, -/area/hallway/primary/starboard) -"bWL" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters{ - id = "Skynet_launch"; - name = "mech bay" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/delivery, -/area/assembly/chargebay) -"bWM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/turf/open/floor/plasteel, -/area/assembly/chargebay) -"bWN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/obj/structure/cable{ - icon_state = "2-4"; - tag = "icon-2-8" - }, -/turf/open/floor/plasteel, -/area/assembly/chargebay) -"bWO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/landmark/start{ - name = "Roboticist" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/turf/open/floor/plasteel, -/area/assembly/chargebay) -"bWP" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHEAST)"; - icon_state = "camera"; - dir = 6 - }, -/turf/open/floor/plasteel, -/area/assembly/chargebay) -"bWQ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - name = "regular air vent"; - on = 1 - }, -/obj/item/device/radio/intercom{ - name = "Station Intercom"; - pixel_x = 0; - pixel_y = 24 - }, -/turf/open/floor/plasteel/white, -/area/assembly/chargebay) -"bWR" = ( -/obj/structure/closet/wardrobe/robotics_black, -/turf/open/floor/plasteel/white, -/area/assembly/chargebay) -"bWS" = ( -/obj/machinery/recharge_station, -/turf/open/floor/plasteel/bot, -/area/assembly/chargebay) -"bWT" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/research{ - name = "Testing Lab"; - req_access_txt = "47" - }, -/turf/open/floor/plasteel/white, -/area/toxins/misc_lab) -"bWU" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/toxins/misc_lab) -"bWV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/open/floor/plasteel, -/area/toxins/misc_lab) -"bWW" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/toxins/misc_lab) -"bWX" = ( -/obj/machinery/door/airlock/glass_research{ - name = "Test Chamber"; - req_access_txt = "47" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/engine, -/area/toxins/misc_lab) -"bWY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/engine, -/area/toxins/misc_lab) -"bWZ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/engine, -/area/toxins/misc_lab) -"bXa" = ( -/obj/item/device/radio/beacon, -/obj/effect/landmark/event_spawn, -/turf/open/floor/engine, -/area/toxins/misc_lab) -"bXb" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/engine, -/area/toxins/misc_lab) -"bXc" = ( -/obj/effect/spawner/lootdrop/crate_spawner, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bXd" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/tank/jetpack/carbondioxide, -/turf/open/floor/plasteel, -/area/storage/eva) -"bXe" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/clothing/shoes/magboots, -/turf/open/floor/plasteel, -/area/storage/eva) -"bXf" = ( -/obj/structure/closet/crate{ - name = "Gold Crate" - }, -/obj/item/stack/sheet/mineral/gold{ - pixel_x = -1; - pixel_y = 5 - }, -/obj/item/stack/sheet/mineral/gold{ - pixel_y = 2 - }, -/obj/item/stack/sheet/mineral/gold{ - pixel_x = 1; - pixel_y = -2 - }, -/obj/item/storage/belt/champion, -/turf/open/floor/plasteel/vault{ - dir = 1 - }, -/area/ai_monitored/nuke_storage) -"bXg" = ( -/turf/open/floor/circuit, -/area/ai_monitored/nuke_storage) -"bXh" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/circuit, -/area/ai_monitored/nuke_storage) -"bXi" = ( -/obj/item/coin/silver{ - pixel_x = 7; - pixel_y = 12 - }, -/obj/item/coin/silver{ - pixel_x = 12; - pixel_y = 7 - }, -/obj/item/coin/silver{ - pixel_x = 4; - pixel_y = 8 - }, -/obj/item/coin/silver{ - pixel_x = -6; - pixel_y = 5 - }, -/obj/item/coin/silver{ - pixel_x = 5; - pixel_y = -8 - }, -/obj/structure/closet/crate{ - name = "Silver Crate" - }, -/turf/open/floor/plasteel/vault{ - dir = 4 - }, -/area/ai_monitored/nuke_storage) -"bXj" = ( -/obj/structure/closet/radiation, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/gravity_generator) -"bXk" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTH)"; - icon_state = "camera"; - dir = 1 - }, -/obj/structure/closet/radiation, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/gravity_generator) -"bXl" = ( -/obj/machinery/telecomms/server/presets/supply, -/turf/open/floor/plasteel/black{ - name = "Mainframe Floor"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bXm" = ( -/obj/machinery/telecomms/bus/preset_two, -/turf/open/floor/plasteel/black{ - name = "Mainframe Floor"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bXn" = ( -/obj/machinery/telecomms/processor/preset_one, -/turf/open/floor/plasteel/black{ - name = "Mainframe Floor"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bXo" = ( -/obj/machinery/telecomms/server/presets/medical, -/turf/open/floor/plasteel/black{ - name = "Mainframe Floor"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bXp" = ( -/obj/machinery/computer/telecomms/monitor{ - network = "tcommsat" - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/tcommsat/entrance) -"bXq" = ( -/obj/structure/chair/office/dark{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/tcommsat/entrance) -"bXr" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/tcommsat/entrance) -"bXs" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/tcommsat/entrance) -"bXt" = ( -/obj/machinery/door/airlock/engineering{ - name = "Telecommunications"; - req_access_txt = "61" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/tcommsat/entrance) -"bXu" = ( -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, -/turf/open/floor/plasteel/caution{ - tag = "icon-caution (WEST)"; - icon_state = "caution"; - dir = 8 - }, -/area/hallway/primary/starboard) -"bXv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/purple/corner, -/area/hallway/primary/starboard) -"bXw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/assembly/chargebay) -"bXx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/assembly/chargebay) -"bXy" = ( -/obj/machinery/mech_bay_recharge_port, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/assembly/chargebay) -"bXz" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/mech_bay_recharge_floor, -/area/assembly/chargebay) -"bXA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/obj/machinery/computer/mech_bay_power_console, -/obj/structure/cable, -/turf/open/floor/circuit, -/area/assembly/chargebay) -"bXB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/turf/open/floor/plasteel, -/area/assembly/chargebay) -"bXC" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/assembly/chargebay) -"bXD" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "delivery" - }, -/area/assembly/chargebay) -"bXE" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/research{ - name = "Mech Bay"; - req_access_txt = "29"; - req_one_access_txt = "0" - }, -/turf/open/floor/plasteel/white, -/area/assembly/chargebay) -"bXF" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/whitepurple/corner{ - dir = 1 - }, -/area/medical/research{ - name = "Research Division" - }) -"bXG" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4; - initialize_directions = 11 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel/whitepurple/corner{ - tag = "icon-whitepurplecorner (EAST)"; - icon_state = "whitepurplecorner"; - dir = 4 - }, -/area/medical/research{ - name = "Research Division" - }) -"bXH" = ( -/obj/machinery/atmospherics/components/unary/portables_connector{ - tag = "icon-connector_map (EAST)"; - icon_state = "connector_map"; - dir = 4 - }, -/turf/open/floor/plasteel, -/area/toxins/misc_lab) -"bXI" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/toxins/misc_lab) -"bXJ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/turf/open/floor/plasteel, -/area/toxins/misc_lab) -"bXK" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/open/floor/engine, -/area/toxins/misc_lab) -"bXL" = ( -/obj/machinery/portable_atmospherics/canister/air, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bXM" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"bXN" = ( -/obj/structure/grille, -/obj/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/escape) -"bXO" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/arrival) -"bXP" = ( -/obj/machinery/door/airlock/shuttle{ - name = "Arrivals Shuttle Airlock" - }, -/turf/open/floor/plasteel/shuttle, -/area/shuttle/arrival) -"bXQ" = ( -/obj/structure/grille, -/obj/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/arrival) -"bXR" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/storage/eva) -"bXS" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/tank/jetpack/carbondioxide, -/turf/open/floor/plasteel, -/area/storage/eva) -"bXT" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/clothing/shoes/magboots, -/turf/open/floor/plasteel, -/area/storage/eva) -"bXU" = ( -/obj/machinery/camera/motion{ - c_tag = "Vault"; - dir = 1; - network = list("MiniSat") - }, -/turf/open/floor/plasteel/vault{ - dir = 1 - }, -/area/ai_monitored/nuke_storage) -"bXV" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/vault{ - dir = 6 - }, -/area/ai_monitored/nuke_storage) -"bXW" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/open/floor/plasteel/vault, -/area/ai_monitored/nuke_storage) -"bXX" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/machinery/light, -/turf/open/floor/plasteel/vault{ - dir = 10 - }, -/area/ai_monitored/nuke_storage) -"bXY" = ( -/obj/structure/safe, -/obj/item/clothing/head/bearpelt, -/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, -/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, -/obj/item/gun/ballistic/revolver/russian, -/obj/item/ammo_box/a357, -/obj/item/reagent_containers/food/drinks/bottle/vodka/badminka, -/turf/open/floor/plasteel/vault{ - dir = 4 - }, -/area/ai_monitored/nuke_storage) -"bXZ" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "Gravity Generator Room"; - req_access_txt = "19;23" - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/gravity_generator) -"bYa" = ( -/obj/machinery/telecomms/server/presets/service, -/turf/open/floor/plasteel/black{ - name = "Mainframe Floor"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bYb" = ( -/obj/machinery/telecomms/processor/preset_two, -/turf/open/floor/plasteel/black{ - name = "Mainframe Floor"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bYc" = ( -/obj/structure/sign/nosmoking_2{ - pixel_y = -32 - }, -/obj/machinery/light, -/turf/open/floor/circuit{ - name = "Mainframe Base"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bYd" = ( -/obj/machinery/telecomms/bus/preset_one, -/turf/open/floor/plasteel/black{ - name = "Mainframe Floor"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bYe" = ( -/obj/machinery/telecomms/server/presets/science, -/turf/open/floor/plasteel/black{ - name = "Mainframe Floor"; - initial_gas_mix = "n2=100;TEMP=80" - }, -/area/tcommsat/chamber) -"bYf" = ( -/obj/structure/window/reinforced/fulltile, -/obj/structure/grille, -/obj/structure/cable, -/turf/open/floor/plating, -/area/tcommsat/entrance) -"bYg" = ( -/obj/structure/table, -/obj/item/device/radio/off, -/turf/open/floor/plasteel/yellow/side{ - dir = 10 - }, -/area/tcommsat/entrance) -"bYh" = ( -/obj/item/device/radio/intercom{ - name = "Station Intercom (General)"; - pixel_y = -35 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel, -/area/tcommsat/entrance) -"bYi" = ( -/obj/machinery/airalarm{ - dir = 1; - icon_state = "alarm0"; - pixel_y = -22 - }, -/obj/machinery/light, -/obj/structure/filingcabinet/chestdrawer, -/turf/open/floor/plasteel, -/area/tcommsat/entrance) -"bYj" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = -1 - }, -/turf/open/floor/plasteel, -/area/tcommsat/entrance) -"bYk" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/research{ - name = "Mech Bay"; - req_access_txt = "29"; - req_one_access_txt = "0" - }, -/turf/open/floor/plasteel, -/area/assembly/chargebay) -"bYl" = ( -/turf/open/floor/plasteel, -/area/assembly/chargebay) -"bYm" = ( -/turf/open/floor/circuit, -/area/assembly/chargebay) -"bYn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/open/floor/circuit, -/area/assembly/chargebay) -"bYo" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/assembly/chargebay) -"bYp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/light, -/turf/open/floor/plasteel/white, -/area/assembly/chargebay) -"bYq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/droneDispenser, -/turf/open/floor/plasteel/white, -/area/assembly/chargebay) -"bYr" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/recharge_station, -/turf/open/floor/plasteel/bot, -/area/assembly/chargebay) -"bYs" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/assembly/chargebay) -"bYt" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4; - initialize_directions = 11 - }, -/obj/machinery/door/poddoor/preopen{ - id = "Biohazard"; - name = "biohazard containment door" - }, -/obj/machinery/door/firedoor/heavy, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bYu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/poddoor/preopen{ - id = "Biohazard"; - name = "biohazard containment door" - }, -/obj/machinery/door/firedoor/heavy, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/white, -/area/medical/research{ - name = "Research Division" - }) -"bYv" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/toxins/misc_lab) -"bYw" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/obj/machinery/atmospherics/pipe/manifold/general/visible, -/obj/machinery/meter, -/turf/open/floor/plasteel, -/area/toxins/misc_lab) -"bYx" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/toxins/misc_lab) -"bYy" = ( -/obj/machinery/power/apc{ - dir = 2; - name = "Testing Lab APC"; - pixel_x = 0; - pixel_y = -24 - }, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/toxins/misc_lab) -"bYz" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/turf/open/floor/engine, -/area/toxins/misc_lab) -"bYA" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 8 - }, -/turf/open/floor/engine, -/area/toxins/misc_lab) -"bYB" = ( -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bYC" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/portable_atmospherics/pump, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bYD" = ( -/turf/open/floor/mineral/titanium, -/turf/closed/wall/mineral/titanium/interior, -/area/shuttle/escape) -"bYE" = ( -/obj/structure/table, -/obj/machinery/recharger, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"bYF" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"bYG" = ( -/obj/machinery/computer/emergency_shuttle, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"bYH" = ( -/obj/structure/table, -/obj/item/storage/firstaid/regular{ - pixel_x = 2; - pixel_y = 3 - }, -/obj/item/crowbar, -/obj/item/storage/firstaid/fire, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"bYI" = ( -/obj/structure/shuttle/engine/propulsion{ - tag = "icon-propulsion_l (EAST)"; - icon_state = "propulsion_l"; - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/arrival) -"bYJ" = ( -/obj/structure/shuttle/engine/heater{ - icon_state = "heater"; - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/arrival) -"bYK" = ( -/turf/open/floor/plasteel/shuttle, -/area/shuttle/arrival) -"bYL" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/shuttle, -/area/shuttle/arrival) -"bYM" = ( -/obj/structure/closet/wardrobe/black, -/turf/open/floor/plasteel/shuttle, -/area/shuttle/arrival) -"bYN" = ( -/obj/structure/closet/wardrobe/grey, -/turf/open/floor/plasteel/shuttle, -/area/shuttle/arrival) -"bYO" = ( -/obj/structure/closet/wardrobe/mixed, -/turf/open/floor/plasteel/shuttle, -/area/shuttle/arrival) -"bYP" = ( -/obj/structure/closet/wardrobe/white, -/turf/open/floor/plasteel/shuttle, -/area/shuttle/arrival) -"bYQ" = ( -/turf/closed/wall/mineral/titanium/interior, -/area/shuttle/arrival) -"bYR" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/storage/eva) -"bYS" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/storage/eva) -"bYT" = ( -/obj/structure/sign/securearea, -/turf/closed/wall/r_wall, -/area/ai_monitored/nuke_storage) -"bYU" = ( -/obj/machinery/door/airlock/vault{ - icon_state = "door_locked"; - locked = 1; - req_access_txt = "53" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/yellow, -/area/ai_monitored/nuke_storage) -"bYV" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/hallway/primary/aft) -"bYW" = ( -/turf/open/floor/plasteel/stairs, -/area/hallway/primary/aft) -"bYX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/airlock/glass{ - name = "Starboard Primary Hallway" - }, -/obj/machinery/door/poddoor/preopen{ - id = "Biohazard"; - name = "biohazard containment door" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/caution{ - tag = "icon-caution (WEST)"; - icon_state = "caution"; - dir = 8 - }, -/area/hallway/primary/starboard) -"bYY" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/airlock/glass{ - name = "Starboard Primary Hallway" - }, -/obj/machinery/door/poddoor/preopen{ - id = "Biohazard"; - name = "biohazard containment door" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) -"bYZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/glass{ - name = "Starboard Primary Hallway" - }, -/obj/machinery/door/poddoor/preopen{ - id = "Biohazard"; - name = "biohazard containment door" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (EAST)"; - icon_state = "purple"; - dir = 4 - }, -/area/hallway/primary/starboard) -"bZa" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/assembly/chargebay) -"bZb" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/airlock/research{ - name = "Research Division"; - req_access_txt = "0"; - req_one_access_txt = "47" - }, -/turf/open/floor/plasteel/whitepurple, -/area/medical/research{ - name = "Research Division" - }) -"bZc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/research{ - name = "Research Division"; - req_access_txt = "0"; - req_one_access_txt = "47" - }, -/turf/open/floor/plasteel/whitepurple, -/area/medical/research{ - name = "Research Division" - }) -"bZd" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/engine, -/area/toxins/misc_lab) -"bZe" = ( -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" - }, -/turf/open/floor/plating, -/area/maintenance/asmaint2) -"bZf" = ( -/obj/machinery/computer/atmos_alert, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"bZg" = ( -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"bZh" = ( -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"bZi" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"bZj" = ( -/obj/machinery/computer/security, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"bZk" = ( -/obj/structure/shuttle/engine/propulsion{ - icon_state = "propulsion"; - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/arrival) -"bZl" = ( -/obj/effect/landmark/latejoin, -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/plasteel/shuttle, -/area/shuttle/arrival) -"bZm" = ( -/obj/machinery/door/airlock/shuttle{ - name = "bridge" - }, -/turf/open/floor/plasteel/shuttle{ - icon_state = "shuttlefloor3" - }, -/area/shuttle/arrival) -"bZn" = ( -/turf/open/floor/plasteel/shuttle{ - icon_state = "shuttlefloor3" - }, -/area/shuttle/arrival) -"bZo" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/storage/eva) -"bZp" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/storage/eva) -"bZq" = ( -/obj/structure/grille, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/hallway/primary/aft) -"bZr" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/stairs, -/area/hallway/primary/aft) -"bZs" = ( -/turf/open/floor/plasteel/yellow, -/area/hallway/primary/aft) -"bZt" = ( -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" - }, -/turf/open/floor/plating, -/area/maintenance/maintcentral{ - name = "Central Maintenance" - }) -"bZu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/caution{ - tag = "icon-caution (WEST)"; - icon_state = "caution"; - dir = 8 - }, -/area/hallway/secondary/exit) -"bZv" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"bZw" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=CHE"; - location = "AIE" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/purple/corner{ - tag = "icon-purplecorner (EAST)"; - icon_state = "purplecorner"; - dir = 4 - }, -/area/hallway/secondary/exit) -"bZx" = ( -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (NORTH)"; - icon_state = "purple"; - dir = 1 - }, -/area/hallway/secondary/exit) -"bZy" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (NORTH)"; - icon_state = "purple"; - dir = 1 - }, -/area/hallway/secondary/exit) -"bZz" = ( -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (NORTH)"; - icon_state = "purple"; - dir = 1 - }, -/area/hallway/secondary/exit) -"bZA" = ( -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (NORTH)"; - icon_state = "purple"; - dir = 1 - }, -/area/hallway/secondary/exit) -"bZB" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (NORTH)"; - icon_state = "purple"; - dir = 1 - }, -/area/hallway/secondary/exit) -"bZC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (NORTH)"; - icon_state = "purple"; - dir = 1 - }, -/area/hallway/secondary/exit) -"bZD" = ( -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/turf/open/floor/plasteel/purple/side{ - tag = "icon-purple (NORTH)"; - icon_state = "purple"; - dir = 1 - }, -/area/hallway/secondary/exit) -"bZE" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "Escape Hallway APC"; - pixel_x = 0; - pixel_y = 24 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/turf/open/floor/plasteel/purple/corner{ - tag = "icon-purplecorner (NORTH)"; - icon_state = "purplecorner"; - dir = 1 - }, -/area/hallway/secondary/exit) -"bZF" = ( -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"bZG" = ( -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"bZH" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/vending/cigarette, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"bZI" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/hallway/secondary/exit) -"bZJ" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/hallway/secondary/exit) -"bZK" = ( -/turf/closed/wall, -/area/hallway/secondary/exit) -"bZL" = ( -/obj/machinery/computer/crew, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"bZM" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/structure/extinguisher_cabinet{ - pixel_x = 0; - pixel_y = -30 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"bZN" = ( -/obj/item/device/radio/intercom{ - name = "Station Intercom (General)"; - pixel_x = 0; - pixel_y = -29 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"bZO" = ( -/obj/machinery/button/flasher{ - id = "cockpit_flasher"; - pixel_x = 6; - pixel_y = -24 - }, -/obj/machinery/light, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"bZP" = ( -/obj/machinery/computer/communications, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"bZQ" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel/shuttle, -/area/shuttle/arrival) -"bZR" = ( -/obj/machinery/computer, -/turf/open/floor/plasteel/shuttle{ - icon_state = "shuttlefloor3" - }, -/area/shuttle/arrival) -"bZS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bZT" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bZU" = ( -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"bZV" = ( -/obj/structure/sign/directions/medical{ - tag = "icon-direction_med (NORTH)"; - icon_state = "direction_med"; - dir = 1 - }, -/obj/structure/sign/directions/evac{ - dir = 4; - icon_state = "direction_evac"; - pixel_y = -10; - tag = "icon-direction_evac (EAST)" - }, -/obj/structure/sign/directions/security{ - dir = 1; - icon_state = "direction_sec"; - pixel_y = 10; - tag = "icon-direction_sec (NORTH)" - }, -/turf/closed/wall, -/area/storage/eva) -"bZW" = ( -/obj/structure/sign/directions/science{ - tag = "icon-direction_sci (EAST)"; - icon_state = "direction_sci"; - dir = 4 - }, -/obj/structure/sign/directions/engineering{ - dir = 4; - icon_state = "direction_eng"; - pixel_y = 10; - tag = "icon-direction_eng (EAST)" - }, -/turf/closed/wall, -/area/storage/eva) -"bZX" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command{ - name = "E.V.A. Storage"; - req_access_txt = "18" - }, -/turf/open/floor/plasteel, -/area/storage/eva) -"bZY" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel/yellow, -/area/hallway/primary/aft) -"bZZ" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/hallway/primary/aft) -"caa" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/hallway/primary/aft) -"cab" = ( -/turf/closed/wall, -/area/hallway/primary/aft) -"cac" = ( -/obj/structure/sign/directions/medical{ - tag = "icon-direction_med (WEST)"; - icon_state = "direction_med"; - dir = 8 - }, -/obj/structure/sign/directions/evac{ - dir = 4; - icon_state = "direction_evac"; - pixel_y = -10; - tag = "icon-direction_evac (EAST)" - }, -/obj/structure/sign/directions/security{ - dir = 8; - icon_state = "direction_sec"; - pixel_y = 10; - tag = "icon-direction_sec (WEST)" - }, -/turf/closed/wall, -/area/hallway/primary/aft) -"cad" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8; - initialize_directions = 11 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cae" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"caf" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cag" = ( -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cah" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cai" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"caj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cak" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cal" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cam" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"can" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass{ - name = "Departures" - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cao" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/escape{ - tag = "icon-escape (NORTHWEST)"; - icon_state = "escape"; - dir = 9 - }, -/area/hallway/secondary/exit) -"cap" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/escape{ - tag = "icon-escape (NORTH)"; - icon_state = "escape"; - dir = 1 - }, -/area/hallway/secondary/exit) -"caq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/chair, -/turf/open/floor/plasteel/escape{ - tag = "icon-escape (NORTH)"; - icon_state = "escape"; - dir = 1 - }, -/area/hallway/secondary/exit) -"car" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/chair, -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel/escape{ - tag = "icon-escape (NORTH)"; - icon_state = "escape"; - dir = 1 - }, -/area/hallway/secondary/exit) -"cas" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel/escape{ - tag = "icon-escape (NORTH)"; - icon_state = "escape"; - dir = 1 - }, -/area/hallway/secondary/exit) -"cat" = ( -/obj/machinery/computer/arcade, -/turf/open/floor/plasteel/escape{ - tag = "icon-escape (NORTHEAST)"; - icon_state = "escape"; - dir = 5 - }, -/area/hallway/secondary/exit) -"cau" = ( -/obj/machinery/door/airlock/glass{ - name = "Emergency Shuttle Cockpit"; - req_access_txt = "19" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"cav" = ( -/obj/machinery/status_display, -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"caw" = ( -/obj/effect/landmark{ - name = "Observer-Start" - }, -/turf/open/floor/plasteel/shuttle, -/area/shuttle/arrival) -"cax" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/open/floor/plasteel/shuttle{ - icon_state = "shuttlefloor3" - }, -/area/shuttle/arrival) -"cay" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/plasteel/shuttle{ - icon_state = "shuttlefloor3" - }, -/area/shuttle/arrival) -"caz" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"caA" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"caB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass{ - name = "Engineering Hallway" - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTHWEST)"; - icon_state = "yellow"; - dir = 9 - }, -/area/hallway/primary/aft) -"caC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/hallway/primary/aft) -"caD" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/hallway/primary/aft) -"caE" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/hallway/primary/aft) -"caF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/hallway/primary/aft) -"caG" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/hallway/primary/aft) -"caH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/hallway/primary/aft) -"caI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/hallway/primary/aft) -"caJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass{ - name = "Engineering Hallway" - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTHEAST)"; - icon_state = "yellow"; - dir = 5 - }, -/area/hallway/primary/aft) -"caK" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/caution{ - tag = "icon-caution (WEST)"; - icon_state = "caution"; - dir = 8 - }, -/area/hallway/secondary/exit) -"caL" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"caM" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"caN" = ( -/obj/machinery/button/door{ - id = 9966; - req_access_txt = "19" - }, -/turf/closed/wall, -/area/storage/tools) -"caO" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = 9966; - name = "Tool Storage shutters" - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel/black, -/area/storage/tools) -"caP" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = 9966; - name = "Tool Storage shutters" - }, -/obj/machinery/door/window/northleft, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel/black, -/area/storage/tools) -"caQ" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = 9966; - name = "Tool Storage shutters" - }, -/obj/machinery/light/small{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel/black, -/area/storage/tools) -"caR" = ( -/turf/closed/wall, -/area/storage/tools) -"caS" = ( -/obj/machinery/power/apc{ - dir = 8; - name = "Tool Storage APC"; - pixel_x = -24; - pixel_y = 0 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/turf/open/floor/plasteel, -/area/storage/tools) -"caT" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"caU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"caV" = ( -/turf/closed/wall, -/area/storage/emergency) -"caW" = ( -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel/black, -/area/storage/emergency) -"caX" = ( -/obj/machinery/door/window/northleft, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel/black, -/area/storage/emergency) -"caY" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel/black, -/area/storage/emergency) -"caZ" = ( -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/machinery/power/apc{ - dir = 8; - name = "Port Emergency Storage APC"; - pixel_x = -24; - pixel_y = 0 - }, -/turf/open/floor/plasteel, -/area/storage/emergency) -"cba" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cbb" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cbc" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass{ - name = "Departures" - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cbd" = ( -/turf/open/floor/plasteel/escape{ - tag = "icon-escape (WEST)"; - icon_state = "escape"; - dir = 8 - }, -/area/hallway/secondary/exit) -"cbe" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cbf" = ( -/turf/open/floor/plasteel/escape{ - tag = "icon-escape (EAST)"; - icon_state = "escape"; - dir = 4 - }, -/area/hallway/secondary/exit) -"cbg" = ( -/obj/structure/closet, -/turf/open/floor/mineral/titanium/yellow, -/area/shuttle/escape) -"cbh" = ( -/turf/open/floor/mineral/titanium/yellow, -/area/shuttle/escape) -"cbi" = ( -/obj/machinery/flasher{ - id = "cockpit_flasher"; - pixel_x = 6; - pixel_y = 24 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"cbj" = ( -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"cbk" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"cbl" = ( -/obj/structure/table, -/obj/item/storage/firstaid/fire, -/obj/item/storage/firstaid/regular{ - pixel_x = 2; - pixel_y = 3 - }, -/obj/item/crowbar, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"cbm" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=AIW"; - location = "QM" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"cbn" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"cbo" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"cbp" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass{ - name = "Engineering Hallway" - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (WEST)"; - icon_state = "yellow"; - dir = 8 - }, -/area/hallway/primary/aft) -"cbq" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"cbr" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"cbs" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "2-4"; - tag = "icon-2-8" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"cbt" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"cbu" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"cbv" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"cbw" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"cbx" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/structure/cable{ - icon_state = "2-4"; - tag = "icon-2-8" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"cby" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 2; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"cbz" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"cbA" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"cbB" = ( -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "2-4"; - tag = "icon-2-8" - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"cbC" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"cbD" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"cbE" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"cbF" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"cbG" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 2; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"cbH" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"cbI" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass{ - name = "Engineering Hallway" - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (EAST)"; - icon_state = "yellow"; - dir = 4 - }, -/area/hallway/primary/aft) -"cbJ" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/caution{ - tag = "icon-caution (WEST)"; - icon_state = "caution"; - dir = 8 - }, -/area/hallway/secondary/exit) -"cbK" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cbL" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cbM" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/storage/tools) -"cbN" = ( -/obj/structure/table/reinforced, -/obj/item/stack/cable_coil, -/obj/item/device/multitool, -/obj/item/device/geiger_counter, -/turf/open/floor/plasteel{ - tag = "icon-vault (WEST)"; - icon_state = "vault"; - dir = 8 - }, -/area/storage/tools) -"cbO" = ( -/obj/machinery/vending/tool, -/turf/open/floor/plasteel{ - tag = "icon-vault (WEST)"; - icon_state = "vault"; - dir = 8 - }, -/area/storage/tools) -"cbP" = ( -/obj/machinery/vending/assist, -/turf/open/floor/plasteel{ - tag = "icon-vault (WEST)"; - icon_state = "vault"; - dir = 8 - }, -/area/storage/tools) -"cbQ" = ( -/obj/structure/table/reinforced, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/plasteel{ - amount = 10 - }, -/obj/item/stack/sheet/plasteel{ - amount = 10 - }, -/turf/open/floor/plasteel{ - tag = "icon-vault (WEST)"; - icon_state = "vault"; - dir = 8 - }, -/area/storage/tools) -"cbR" = ( -/obj/structure/table/reinforced, -/obj/item/stack/sheet/rglass{ - amount = 50 - }, -/obj/item/stack/sheet/glass{ - amount = 50 - }, -/obj/item/stack/rods{ - amount = 50 - }, -/turf/open/floor/plasteel{ - tag = "icon-vault (WEST)"; - icon_state = "vault"; - dir = 8 - }, -/area/storage/tools) -"cbS" = ( -/obj/structure/closet/toolcloset, -/turf/open/floor/plasteel{ - tag = "icon-vault (WEST)"; - icon_state = "vault"; - dir = 8 - }, -/area/storage/tools) -"cbT" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cbU" = ( -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cbV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cbW" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cbX" = ( -/obj/structure/tank_dispenser/oxygen, -/turf/open/floor/plasteel{ - tag = "icon-vault (WEST)"; - icon_state = "vault"; - dir = 8 - }, -/area/storage/emergency) -"cbY" = ( -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/structure/closet/crate, -/turf/open/floor/plasteel{ - tag = "icon-vault (WEST)"; - icon_state = "vault"; - dir = 8 - }, -/area/storage/emergency) -"cbZ" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/plasteel{ - tag = "icon-vault (WEST)"; - icon_state = "vault"; - dir = 8 - }, -/area/storage/emergency) -"cca" = ( -/obj/machinery/portable_atmospherics/canister/air, -/turf/open/floor/plasteel{ - tag = "icon-vault (WEST)"; - icon_state = "vault"; - dir = 8 - }, -/area/storage/emergency) -"ccb" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plasteel{ - tag = "icon-vault (WEST)"; - icon_state = "vault"; - dir = 8 - }, -/area/storage/emergency) -"ccc" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plasteel{ - tag = "icon-vault (WEST)"; - icon_state = "vault"; - dir = 8 - }, -/area/storage/emergency) -"ccd" = ( -/obj/machinery/space_heater, -/turf/open/floor/plasteel{ - tag = "icon-vault (WEST)"; - icon_state = "vault"; - dir = 8 - }, -/area/storage/emergency) -"cce" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/obj/structure/cable{ - icon_state = "2-4"; - tag = "icon-2-8" - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"ccf" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"ccg" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=AIE"; - location = "AftH" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cch" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/hallway/secondary/exit) -"cci" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/open/floor/plasteel/escape{ - tag = "icon-escape (WEST)"; - icon_state = "escape"; - dir = 8 - }, -/area/hallway/secondary/exit) -"ccj" = ( -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8; - pixel_x = 0 - }, -/obj/structure/flora/ausbushes/ppflowers, -/turf/open/floor/grass, -/area/hallway/secondary/exit) -"cck" = ( -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/flora/ausbushes/ppflowers, -/turf/open/floor/grass, -/area/hallway/secondary/exit) -"ccl" = ( -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/flora/ausbushes/ppflowers, -/turf/open/floor/grass, -/area/hallway/secondary/exit) -"ccm" = ( -/obj/machinery/light/small{ - brightness = 3; - dir = 8 - }, -/turf/open/floor/mineral/titanium/yellow, -/area/shuttle/escape) -"ccn" = ( -/obj/machinery/door/airlock/glass{ - name = "Emergency Shuttle Cargo" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"cco" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"ccp" = ( -/obj/structure/shuttle/engine/propulsion{ - tag = "icon-propulsion_r (EAST)"; - icon_state = "propulsion_r"; - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/arrival) -"ccq" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/shuttle, -/area/shuttle/arrival) -"ccr" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"ccs" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"cct" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass{ - name = "Engineering Hallway" - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (SOUTHWEST)"; - icon_state = "yellow"; - dir = 10 - }, -/area/hallway/primary/aft) -"ccu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/light, -/turf/open/floor/plasteel/yellow/side, -/area/hallway/primary/aft) -"ccv" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plasteel/yellow/side, -/area/hallway/primary/aft) -"ccw" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1; - initialize_directions = 11 - }, -/turf/open/floor/plasteel/yellow/side, -/area/hallway/primary/aft) -"ccx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side, -/area/hallway/primary/aft) -"ccy" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/light, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/yellow/side, -/area/hallway/primary/aft) -"ccz" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side, -/area/hallway/primary/aft) -"ccA" = ( -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, -/turf/open/floor/plasteel/yellow/side, -/area/hallway/primary/aft) -"ccB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHWEST)"; - icon_state = "camera"; - dir = 10 - }, -/turf/open/floor/plasteel/yellow/side, -/area/hallway/primary/aft) -"ccC" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2; - initialize_directions = 11 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/yellow/side, -/area/hallway/primary/aft) -"ccD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/yellow/side, -/area/hallway/primary/aft) -"ccE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side, -/area/hallway/primary/aft) -"ccF" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side, -/area/hallway/primary/aft) -"ccG" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/yellow/side, -/area/hallway/primary/aft) -"ccH" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass{ - name = "Engineering Hallway" - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (SOUTHEAST)"; - icon_state = "yellow"; - dir = 6 - }, -/area/hallway/primary/aft) -"ccI" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel/caution{ - tag = "icon-caution (WEST)"; - icon_state = "caution"; - dir = 8 - }, -/area/hallway/secondary/exit) -"ccJ" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=AftH"; - location = "AIW" - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"ccK" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"ccL" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = 9966; - name = "Tool Storage shutters" - }, -/obj/structure/window/reinforced, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel/black, -/area/storage/tools) -"ccM" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = 9966; - name = "Tool Storage shutters" - }, -/obj/machinery/door/window, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel/black, -/area/storage/tools) -"ccN" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = 9966; - name = "Tool Storage shutters" - }, -/obj/structure/window/reinforced, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel/black, -/area/storage/tools) -"ccO" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"ccP" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/structure/window/reinforced, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel/black, -/area/storage/emergency) -"ccQ" = ( -/obj/machinery/door/window, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel/black, -/area/storage/emergency) -"ccR" = ( -/obj/structure/window/reinforced, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel/black, -/area/storage/emergency) -"ccS" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"ccT" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel/escape{ - tag = "icon-escape (WEST)"; - icon_state = "escape"; - dir = 8 - }, -/area/hallway/secondary/exit) -"ccU" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"ccV" = ( -/obj/machinery/door/airlock/external{ - name = "Escape Airlock" - }, -/turf/open/floor/noslip, -/area/hallway/secondary/exit) -"ccW" = ( -/turf/open/floor/noslip, -/area/hallway/secondary/exit) -"ccX" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock"; - req_access_txt = "2" - }, -/turf/open/floor/noslip, -/area/shuttle/escape) -"ccY" = ( -/obj/structure/closet/crate, -/turf/open/floor/mineral/titanium/yellow, -/area/shuttle/escape) -"ccZ" = ( -/obj/structure/chair, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"cda" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"cdb" = ( -/obj/structure/table, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"cdc" = ( -/obj/machinery/door/airlock/titanium{ - name = "Arrivals Shuttle Airlock" - }, -/obj/docking_port/mobile{ - dwidth = 3; - height = 8; - id = "arrival"; - name = "arrival shuttle"; - port_angle = -90; - preferred_direction = 8; - width = 16 - }, -/obj/docking_port/stationary{ - dwidth = 3; - height = 8; - id = "arrival_home"; - name = "port bay 1"; - width = 16 - }, -/turf/open/floor/plating, -/area/shuttle/arrival) -"cdd" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"cde" = ( -/obj/machinery/power/apc{ - dir = 4; - name = "Entry Hall APC"; - pixel_x = 24; - pixel_y = 0 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"cdf" = ( -/turf/closed/wall/r_wall, -/area/hallway/secondary/entry) -"cdg" = ( -/turf/closed/wall/r_wall, -/area/teleporter) -"cdh" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/closed/wall/r_wall, -/area/teleporter) -"cdi" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command{ - name = "Teleport Access"; - req_access_txt = "17" - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/turf/open/floor/plasteel, -/area/teleporter) -"cdj" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_engineering{ - name = "Engineering Foyer"; - req_access_txt = "0"; - req_one_access_txt = "32;19" - }, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"cdk" = ( -/turf/closed/wall, -/area/engine/engineering) -"cdl" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/wall, -/area/engine/engineering) -"cdm" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/closed/wall, -/area/engine/chiefs_office) -"cdn" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/engine/chiefs_office) -"cdo" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/turf/open/floor/plating, -/area/engine/chiefs_office) -"cdp" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/engine/chiefs_office) -"cdq" = ( -/turf/closed/wall, -/area/engine/chiefs_office) -"cdr" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"cds" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_engineering{ - name = "Engineering Foyer"; - req_access_txt = "0"; - req_one_access_txt = "32;19" - }, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"cdt" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/engine/engineering) -"cdu" = ( -/turf/closed/wall/r_wall, -/area/ai_monitored/storage/secure) -"cdv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall/r_wall, -/area/ai_monitored/storage/secure) -"cdw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall/r_wall, -/area/ai_monitored/storage/secure) -"cdx" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering{ - name = "Tech Storage"; - req_access_txt = "0"; - req_one_access_txt = "23;30" - }, -/turf/open/floor/plating{ - tag = "icon-delivery"; - icon_state = "delivery"; - dir = 2 - }, -/area/ai_monitored/storage/secure) -"cdy" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" - }, -/turf/open/floor/plating, -/area/maintenance/aft) -"cdz" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHEAST)"; - icon_state = "camera"; - dir = 5 - }, -/turf/open/floor/plasteel/caution{ - tag = "icon-caution (WEST)"; - icon_state = "caution"; - dir = 8 - }, -/area/hallway/secondary/exit) -"cdA" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cdB" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cdC" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "2-4"; - tag = "icon-2-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cdD" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4; - initialize_directions = 11 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cdE" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cdF" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cdG" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 2; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cdH" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cdI" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cdJ" = ( -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cdK" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cdL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass{ - name = "Departures" - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cdM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel/escape{ - tag = "icon-escape (WEST)"; - icon_state = "escape"; - dir = 8 - }, -/area/hallway/secondary/exit) -"cdN" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4; - initialize_directions = 11 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cdO" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/escape{ - tag = "icon-escape (EAST)"; - icon_state = "escape"; - dir = 4 - }, -/area/hallway/secondary/exit) -"cdP" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/shuttle/escape) -"cdQ" = ( -/obj/structure/table, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"cdR" = ( -/obj/machinery/shieldwallgen, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/teleporter) -"cdS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/turf/open/floor/plasteel, -/area/teleporter) -"cdT" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/turf/open/floor/plasteel, -/area/teleporter) -"cdU" = ( -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"cdV" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"cdW" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) -"cdX" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/electricshock{ - pixel_y = 32 - }, -/turf/open/floor/plating, -/area/engine/chiefs_office) -"cdY" = ( -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/wood, -/area/engine/chiefs_office) -"cdZ" = ( -/turf/open/floor/wood, -/area/engine/chiefs_office) -"cea" = ( -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/wood, -/area/engine/chiefs_office) -"ceb" = ( -/obj/structure/closet/secure_closet/engineering_chief{ - req_access_txt = "0" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (EAST)"; - icon_state = "yellow"; - dir = 4 - }, -/area/engine/chiefs_office) -"cec" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"ced" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"cee" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel/yellow, -/area/hallway/primary/aft) -"cef" = ( -/obj/structure/table, -/obj/item/device/flashlight{ - pixel_x = 1; - pixel_y = 5 - }, -/obj/item/device/flashlight{ - pixel_x = 1; - pixel_y = 5 - }, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/machinery/ai_status_display{ - pixel_x = -32; - pixel_y = 0 - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"ceg" = ( -/obj/structure/table, -/obj/item/electronics/apc, -/obj/item/electronics/airlock, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"ceh" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cei" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/vending/assist, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cej" = ( -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cek" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "Tech Storage APC"; - pixel_y = 24 - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cel" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cem" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cen" = ( -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"ceo" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/maintenance/aft) -"cep" = ( -/turf/open/floor/plasteel/caution{ - tag = "icon-caution (WEST)"; - icon_state = "caution"; - dir = 8 - }, -/area/hallway/secondary/exit) -"ceq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/caution/corner, -/area/hallway/secondary/exit) -"cer" = ( -/turf/open/floor/plasteel/caution, -/area/hallway/secondary/exit) -"ces" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/caution, -/area/hallway/secondary/exit) -"cet" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/caution, -/area/hallway/secondary/exit) -"ceu" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel/caution, -/area/hallway/secondary/exit) -"cev" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/caution, -/area/hallway/secondary/exit) -"cew" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel/caution, -/area/hallway/secondary/exit) -"cex" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/caution, -/area/hallway/secondary/exit) -"cey" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/caution, -/area/hallway/secondary/exit) -"cez" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTH)"; - icon_state = "camera"; - dir = 1 - }, -/turf/open/floor/plasteel/caution, -/area/hallway/secondary/exit) -"ceA" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/caution/corner{ - tag = "icon-cautioncorner (WEST)"; - icon_state = "cautioncorner"; - dir = 8 - }, -/area/hallway/secondary/exit) -"ceB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"ceC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/light, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"ceD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"ceE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/obj/structure/closet/firecloset/full, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"ceF" = ( -/obj/machinery/door/airlock/external{ - name = "External Access"; - req_access = null; - req_access_txt = "13" - }, -/turf/open/floor/noslip, -/area/hallway/secondary/exit) -"ceG" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"ceH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"ceI" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"ceJ" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock" - }, -/obj/docking_port/mobile/emergency{ - name = "Box emergency shuttle"; - timid = 0 - }, -/obj/docking_port/stationary{ - dir = 4; - dwidth = 12; - height = 18; - id = "emergency_home"; - name = "BoxStation emergency evac bay"; - turf_type = /turf/open/space; - width = 32 - }, -/turf/open/floor/noslip, -/area/shuttle/escape) -"ceK" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"ceL" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -5; - pixel_y = 30 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"ceM" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"ceN" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/turf/open/floor/plasteel, -/area/teleporter) -"ceO" = ( -/obj/machinery/shieldwallgen, -/obj/effect/turf_decal/bot, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/teleporter) -"ceP" = ( -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"ceQ" = ( -/turf/open/floor/plasteel/yellow/side{ - dir = 4 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"ceR" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"ceS" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/turf/open/floor/plating, -/area/engine/chiefs_office) -"ceT" = ( -/obj/machinery/computer/atmos_alert, -/turf/open/floor/wood, -/area/engine/chiefs_office) -"ceU" = ( -/obj/structure/table/reinforced, -/obj/item/clipboard, -/obj/item/lighter, -/obj/item/clothing/glasses/meson{ - pixel_y = 4 - }, -/obj/item/stamp/ce, -/obj/item/stock_parts/cell/high/plus, -/turf/open/floor/wood, -/area/engine/chiefs_office) -"ceV" = ( -/obj/item/cartridge/engineering{ - pixel_x = 4; - pixel_y = 5 - }, -/obj/item/cartridge/engineering{ - pixel_x = -3; - pixel_y = 2 - }, -/obj/item/cartridge/engineering{ - pixel_x = 3 - }, -/obj/structure/table/reinforced, -/obj/machinery/light_switch{ - pixel_x = 27 - }, -/obj/item/cartridge/atmos, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (EAST)"; - icon_state = "yellow"; - dir = 4 - }, -/area/engine/chiefs_office) -"ceW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/engine/engineering) -"ceX" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"ceY" = ( -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (EAST)"; - icon_state = "yellow"; - dir = 4 - }, -/area/engine/engineering) -"ceZ" = ( -/obj/structure/table, -/obj/item/device/aicard, -/obj/item/aiModule/reset, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cfa" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cfb" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/circuitboard/computer/pandemic{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/computer/rdconsole, -/obj/item/circuitboard/machine/rdserver{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/machine/destructive_analyzer, -/obj/item/circuitboard/machine/protolathe, -/obj/item/circuitboard/computer/aifixer, -/obj/item/circuitboard/computer/teleporter, -/obj/item/circuitboard/machine/circuit_imprinter, -/obj/item/circuitboard/machine/mechfab, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cfc" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/circuitboard/computer/mining, -/obj/item/circuitboard/machine/autolathe{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/computer/arcade/battle, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cfd" = ( -/obj/structure/rack, -/obj/item/circuitboard/machine/telecomms/processor, -/obj/item/circuitboard/machine/telecomms/receiver, -/obj/item/circuitboard/machine/telecomms/server, -/obj/item/circuitboard/machine/telecomms/bus, -/obj/item/circuitboard/machine/telecomms/broadcaster, -/obj/item/circuitboard/computer/message_monitor{ - pixel_y = -5 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cfe" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cff" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel{ - dir = 8; - icon_state = "caution" - }, -/area/hallway/secondary/exit) -"cfg" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/turf/open/floor/plasteel{ - icon_state = "caution"; - dir = 4 - }, -/area/hallway/secondary/exit) -"cfh" = ( -/turf/closed/wall/r_wall, -/area/atmos) -"cfi" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall/r_wall, -/area/atmos) -"cfj" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/glass_engineering{ - name = "Atmospherics"; - req_access_txt = "32" - }, -/turf/open/floor/plasteel, -/area/atmos) -"cfk" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/closed/wall/r_wall, -/area/atmos) -"cfl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/atmos) -"cfm" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1; - initialize_directions = 11 - }, -/turf/closed/wall/r_wall, -/area/atmos) -"cfn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/turf/closed/wall/r_wall, -/area/atmos) -"cfo" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/closed/wall/r_wall, -/area/atmos) -"cfp" = ( -/obj/machinery/power/apc{ - cell_type = 5000; - dir = 8; - name = "Departure Lounge APC"; - pixel_x = -24; - pixel_y = 0 - }, -/obj/structure/cable, -/turf/open/floor/plasteel/escape{ - tag = "icon-escape (WEST)"; - icon_state = "escape"; - dir = 8 - }, -/area/hallway/secondary/exit) -"cfq" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"cfr" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"cfs" = ( -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"cft" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; - name = "KEEP CLEAR: DOCKING AREA"; - pixel_y = 0 - }, -/turf/closed/wall, -/area/hallway/secondary/entry) -"cfu" = ( -/turf/open/floor/plasteel, -/area/teleporter) -"cfv" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/closed/wall, -/area/engine/chiefs_office) -"cfw" = ( -/obj/machinery/computer/station_alert, -/obj/machinery/camera{ - c_tag = "Chief Engineer's Office"; - dir = 4; - network = list("SS13") - }, -/obj/machinery/requests_console{ - announcementConsole = 1; - department = "Chief Engineer's Desk"; - departmentType = 3; - name = "Chief Engineer RC"; - pixel_x = -32; - pixel_y = 0 - }, -/turf/open/floor/wood, -/area/engine/chiefs_office) -"cfx" = ( -/obj/structure/chair/office/light{ - dir = 4 - }, -/obj/effect/landmark/start{ - name = "Chief Engineer" - }, -/turf/open/floor/wood, -/area/engine/chiefs_office) -"cfy" = ( -/obj/structure/table/reinforced, -/obj/item/folder/yellow, -/obj/item/paper/monitorkey, -/obj/effect/landmark/event_spawn, -/turf/open/floor/wood, -/area/engine/chiefs_office) -"cfz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (EAST)"; - icon_state = "yellow"; - dir = 4 - }, -/area/engine/chiefs_office) -"cfA" = ( -/obj/machinery/door/airlock/command{ - name = "Chief Engineer's Office"; - req_access_txt = "56"; - req_one_access_txt = "0" - }, -/turf/open/floor/plasteel/yellow, -/area/engine/chiefs_office) -"cfB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cfC" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cfD" = ( -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (EAST)"; - icon_state = "yellow"; - dir = 4 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cfE" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/turf/open/floor/plating, -/area/ai_monitored/storage/secure) -"cfF" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/circuitboard/computer/borgupload{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/item/circuitboard/computer/aiupload{ - pixel_x = 2; - pixel_y = -2 - }, -/turf/open/floor/plasteel, -/area/ai_monitored/storage/secure) -"cfG" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/machinery/camera/autoname, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cfH" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cfI" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cfJ" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/obj/structure/table, -/obj/item/stack/cable_coil{ - pixel_y = 3 - }, -/obj/item/stack/cable_coil, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cfK" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cfL" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cfM" = ( -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cfN" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cfO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/radio/beacon, -/turf/open/floor/plasteel{ - dir = 8; - icon_state = "caution" - }, -/area/hallway/secondary/exit) -"cfP" = ( -/turf/open/floor/plasteel{ - icon_state = "caution"; - dir = 4 - }, -/area/hallway/secondary/exit) -"cfQ" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/plasteel{ - dir = 2; - icon_state = "bot" - }, -/area/atmos) -"cfR" = ( -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel{ - dir = 2; - icon_state = "bot" - }, -/area/atmos) -"cfS" = ( -/obj/machinery/portable_atmospherics/canister/nitrogen, -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel{ - dir = 2; - icon_state = "bot" - }, -/area/atmos) -"cfT" = ( -/obj/machinery/portable_atmospherics/canister/bz, -/turf/open/floor/plasteel{ - dir = 2; - icon_state = "bot" - }, -/area/atmos) -"cfU" = ( -/obj/machinery/portable_atmospherics/canister/toxins, -/turf/open/floor/plasteel{ - dir = 2; - icon_state = "bot" - }, -/area/atmos) -"cfV" = ( -/turf/open/floor/plasteel{ - icon_state = "delivery"; - name = "floor" - }, -/area/atmos) -"cfW" = ( -/obj/machinery/firealarm{ - dir = 2; - pixel_y = 24 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/atmos) -"cfX" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/atmos) -"cfY" = ( -/obj/machinery/pipedispenser, -/turf/open/floor/plasteel, -/area/atmos) -"cfZ" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/atmos) -"cga" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ - dir = 8 - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/meter{ - frequency = 1441; - id_tag = "waste_meter"; - name = "Waste Loop" - }, -/turf/open/floor/plasteel, -/area/atmos) -"cgb" = ( -/obj/machinery/camera{ - c_tag = "Atmospherics North East" - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Distro to Waste"; - on = 0 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cgc" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/visible{ - dir = 2 - }, -/obj/machinery/meter{ - frequency = 1441; - id_tag = "distro_meter"; - name = "Distribution Loop" - }, -/turf/open/floor/plasteel, -/area/atmos) -"cgd" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/visible{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cge" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Air to Distro"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cgf" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 10; - initialize_directions = 10 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cgg" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/turf/open/floor/plasteel, -/area/atmos) -"cgh" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel/escape{ - tag = "icon-escape (EAST)"; - icon_state = "escape"; - dir = 4 - }, -/area/hallway/secondary/exit) -"cgi" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_1) -"cgj" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 4; - icon_state = "propulsion"; - tag = "icon-propulsion (WEST)" - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_1) -"cgk" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plating, -/area/hallway/secondary/entry) -"cgl" = ( -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"cgm" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"cgn" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"cgo" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8; - initialize_directions = 11 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"cgp" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"cgq" = ( -/obj/machinery/bluespace_beacon, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - tag = "icon-intact (NORTH)"; - icon_state = "intact"; - dir = 1 - }, -/turf/open/floor/plasteel, -/area/teleporter) -"cgr" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 4 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cgs" = ( -/obj/machinery/computer/card/minor/ce, -/turf/open/floor/wood, -/area/engine/chiefs_office) -"cgt" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/storage/fancy/cigarettes, -/turf/open/floor/wood, -/area/engine/chiefs_office) -"cgu" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/wood, -/area/engine/chiefs_office) -"cgv" = ( -/obj/item/device/radio/intercom{ - dir = 4; - name = "Station Intercom (General)"; - pixel_x = 27 - }, -/obj/structure/filingcabinet/chestdrawer, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/mob/living/simple_animal/parrot/Poly, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (EAST)"; - icon_state = "yellow"; - dir = 4 - }, -/area/engine/chiefs_office) -"cgw" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/cable, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/turf/open/floor/plating, -/area/ai_monitored/storage/secure) -"cgx" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/circuitboard/computer/crew{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/item/circuitboard/computer/card{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/circuitboard/computer/communications{ - pixel_x = 5; - pixel_y = -5 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel, -/area/ai_monitored/storage/secure) -"cgy" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/door/airlock/highsecurity{ - name = "Secure Tech Storage"; - req_access_txt = "19;23" - }, -/turf/open/floor/plating{ - dir = 1; - icon_state = "delivery" - }, -/area/ai_monitored/storage/secure) -"cgz" = ( -/obj/structure/table, -/obj/item/stock_parts/subspace/analyzer, -/obj/item/stock_parts/subspace/analyzer, -/obj/item/stock_parts/subspace/analyzer, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cgA" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cgB" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cgC" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cgD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 - }, -/obj/machinery/portable_atmospherics/pump, -/turf/open/floor/plasteel{ - icon_state = "arrival"; - dir = 8 - }, -/area/hallway/secondary/exit) -"cgE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel{ - icon_state = "caution"; - dir = 4 - }, -/area/hallway/secondary/exit) -"cgF" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; - id = "atmos"; - name = "Atmos Blast Door"; - opacity = 0 - }, -/turf/open/floor/plating, -/area/atmos) -"cgG" = ( -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/turf/open/floor/plasteel{ - dir = 2; - icon_state = "bot" - }, -/area/atmos) -"cgH" = ( -/obj/machinery/portable_atmospherics/canister/nitrogen, -/turf/open/floor/plasteel{ - dir = 2; - icon_state = "bot" - }, -/area/atmos) -"cgI" = ( -/turf/open/floor/plasteel, -/area/atmos) -"cgJ" = ( -/obj/machinery/computer/atmos_control, -/turf/open/floor/plasteel{ - icon_state = "caution"; - dir = 4 - }, -/area/atmos) -"cgK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - on = 1 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cgL" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/turf/open/floor/plasteel, -/area/atmos) -"cgM" = ( -/obj/machinery/pipedispenser/disposal, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cgN" = ( -/obj/structure/grille, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/atmos) -"cgO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cgP" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - on = 1 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cgQ" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "Mix to Distro"; - on = 0 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cgR" = ( -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 8; - initialize_directions = 11 - }, -/obj/machinery/meter, -/turf/open/floor/plasteel, -/area/atmos) -"cgS" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "Mix to Incinerator"; - on = 0 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cgT" = ( -/obj/structure/grille, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 10; - initialize_directions = 10 - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/atmos) -"cgU" = ( -/obj/structure/grille, -/turf/closed/wall/r_wall, -/area/atmos) -"cgV" = ( -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/space/nearstation) -"cgW" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/escape{ - tag = "icon-escape (WEST)"; - icon_state = "escape"; - dir = 8 - }, -/area/hallway/secondary/exit) -"cgX" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cgY" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4; - initialize_directions = 11 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cgZ" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel/escape{ - tag = "icon-escape (EAST)"; - icon_state = "escape"; - dir = 4 - }, -/area/hallway/secondary/exit) -"cha" = ( -/obj/docking_port/stationary/random{ - dir = 8; - id = "pod_asteroid1"; - name = "asteroid" - }, -/turf/open/space, -/area/space) -"chb" = ( -/obj/structure/grille, -/obj/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/pod_1) -"chc" = ( -/obj/machinery/computer/shuttle/pod{ - pixel_x = 0; - pixel_y = -32; - possible_destinations = "pod_asteroid1"; - shuttleId = "pod1" - }, -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/status_display{ - density = 0; - layer = 3; - pixel_x = 0; - pixel_y = 32 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) -"chd" = ( -/obj/item/storage/pod{ - pixel_x = 6; - pixel_y = -28 - }, -/obj/item/device/radio/intercom{ - pixel_x = 0; - pixel_y = 25 - }, -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) -"che" = ( -/obj/machinery/door/airlock/titanium{ - name = "Escape Pod Airlock" - }, -/obj/docking_port/mobile/pod{ - dir = 8; - id = "pod1"; - name = "escape pod 1"; - port_angle = 180 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_1) -"chf" = ( -/obj/machinery/door/airlock/external{ - cyclelinkeddir = 1; - name = "Escape Pod One" - }, -/turf/open/floor/plating, -/area/hallway/secondary/entry) -"chg" = ( -/turf/open/floor/plating, -/area/hallway/secondary/entry) -"chh" = ( -/obj/structure/closet/crate, -/obj/machinery/power/apc{ - dir = 8; - name = "Teleporter APC"; - pixel_x = -24 - }, -/obj/structure/cable{ - tag = "icon-0-4"; - icon_state = "0-4" - }, -/turf/open/floor/plasteel, -/area/teleporter) -"chi" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/plasteel, -/area/teleporter) -"chj" = ( -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/teleporter) -"chk" = ( -/obj/structure/closet/crate, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/turf/open/floor/plasteel, -/area/teleporter) -"chl" = ( -/obj/machinery/suit_storage_unit/ce, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plasteel/yellow, -/area/engine/chiefs_office) -"chm" = ( -/obj/machinery/light, -/turf/open/floor/wood, -/area/engine/chiefs_office) -"chn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood, -/area/engine/chiefs_office) -"cho" = ( -/obj/machinery/power/apc{ - dir = 4; - name = "CE Office APC"; - pixel_x = 28; - pixel_y = 0 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (EAST)"; - icon_state = "yellow"; - dir = 4 - }, -/area/engine/chiefs_office) -"chp" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable, -/turf/open/floor/plating, -/area/ai_monitored/storage/secure) -"chq" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/circuitboard/computer/robotics{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/circuitboard/computer/mecha_control{ - pixel_x = 1; - pixel_y = -1 - }, -/turf/open/floor/plasteel, -/area/ai_monitored/storage/secure) -"chr" = ( -/obj/structure/table, -/obj/item/stock_parts/micro_laser, -/obj/item/stock_parts/manipulator, -/obj/item/stock_parts/manipulator, -/obj/item/stock_parts/manipulator, -/obj/item/stock_parts/manipulator, -/obj/item/stock_parts/capacitor, -/obj/item/stock_parts/micro_laser/high, -/obj/item/stock_parts/micro_laser/high, -/obj/item/stock_parts/micro_laser/high, -/obj/item/stock_parts/micro_laser/high, -/obj/machinery/camera/autoname{ - tag = "icon-camera (EAST)"; - icon_state = "camera"; - dir = 4 - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"chs" = ( -/obj/structure/table, -/obj/item/stock_parts/subspace/amplifier, -/obj/item/stock_parts/subspace/amplifier, -/obj/item/stock_parts/subspace/amplifier, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cht" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/circuitboard/computer/cloning{ - pixel_x = 0 - }, -/obj/item/circuitboard/computer/med_data{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/machine/clonescanner, -/obj/item/circuitboard/machine/clonepod, -/obj/item/circuitboard/computer/scan_consolenew, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"chu" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/circuitboard/computer/secure_data{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/circuitboard/computer/security{ - pixel_x = 1; - pixel_y = -1 - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"chv" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/circuitboard/computer/powermonitor{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/circuitboard/computer/stationalert{ - pixel_x = 1; - pixel_y = -1 - }, -/obj/item/circuitboard/computer/atmos_alert{ - pixel_x = 3; - pixel_y = -3 - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"chw" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "caution"; - dir = 4 - }, -/area/hallway/secondary/exit) -"chx" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "pdoor0"; - id = "atmos"; - name = "Atmos Blast Door"; - opacity = 0 - }, -/obj/machinery/door/window/northleft{ - dir = 4; - icon_state = "left"; - name = "Atmospherics Desk"; - req_access_txt = "24" - }, -/obj/item/folder/yellow, -/obj/item/folder/yellow, -/obj/item/pen, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; - id = "atmos"; - name = "Atmos Blast Door"; - opacity = 0 - }, -/turf/open/floor/plasteel{ - icon_state = "delivery"; - name = "floor" - }, -/area/atmos) -"chy" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel, -/area/atmos) -"chz" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/atmos) -"chA" = ( -/obj/machinery/computer/atmos_control, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "caution"; - dir = 4 - }, -/area/atmos) -"chB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/atmos) -"chC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "delivery"; - name = "floor" - }, -/area/atmos) -"chD" = ( -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers, -/turf/open/floor/plasteel, -/area/atmos) -"chE" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/atmos) -"chF" = ( -/obj/machinery/pipedispenser/disposal/transit_tube, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/atmos) -"chG" = ( -/obj/structure/grille, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/atmos) -"chH" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 0; - name = "Waste In"; - on = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/atmos) -"chI" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel, -/area/atmos) -"chJ" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/atmos) -"chK" = ( -/obj/machinery/atmospherics/pipe/manifold/yellow/visible, -/turf/open/floor/plasteel, -/area/atmos) -"chL" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Mix Outlet Pump"; - on = 0 - }, -/turf/open/floor/plasteel, -/area/atmos) -"chM" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 0; - name = "Air to Mix"; - on = 0 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/atmos) -"chN" = ( -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/obj/machinery/atmospherics/pipe/manifold/yellow/visible, -/turf/open/floor/plasteel/green/side{ - dir = 5 - }, -/area/atmos) -"chO" = ( -/obj/structure/grille, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - dir = 4 - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/atmos) -"chP" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - dir = 4 - }, -/turf/open/space, -/area/space/nearstation) -"chQ" = ( -/obj/machinery/atmospherics/pipe/simple{ - dir = 4 - }, -/obj/structure/grille, -/obj/machinery/meter, -/turf/closed/wall/r_wall, -/area/atmos) -"chR" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - external_pressure_bound = 0; - frequency = 1441; - id_tag = "mix_in"; - initialize_directions = 1; - internal_pressure_bound = 4000; - on = 1; - pressure_checks = 2; - pump_direction = 0 - }, -/turf/open/floor/engine/vacuum, -/area/atmos) -"chS" = ( -/obj/machinery/camera{ - c_tag = "Atmospherics Waste Tank" - }, -/turf/open/floor/engine/vacuum, -/area/atmos) -"chT" = ( -/turf/open/floor/engine/vacuum, -/area/atmos) -"chU" = ( -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -23; - pixel_y = 0 - }, -/turf/open/floor/plasteel/escape{ - tag = "icon-escape (WEST)"; - icon_state = "escape"; - dir = 8 - }, -/area/hallway/secondary/exit) -"chV" = ( -/obj/machinery/camera{ - c_tag = "Arrivals Escape Pod 1"; - dir = 8 - }, -/obj/machinery/light/small, -/turf/open/floor/plating, -/area/hallway/secondary/entry) -"chW" = ( -/obj/structure/sign/pods, -/turf/closed/wall, -/area/hallway/secondary/entry) -"chX" = ( -/obj/machinery/airalarm{ - dir = 1; - icon_state = "alarm0"; - pixel_y = -22 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"chY" = ( -/obj/structure/table, -/obj/effect/turf_decal/stripes/line, -/obj/item/device/radio/beacon, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -28 - }, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/turf/open/floor/plasteel, -/area/teleporter) -"chZ" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/teleporter) -"cia" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/turf/closed/wall, -/area/engine/chiefs_office) -"cib" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/closed/wall, -/area/engine/chiefs_office) -"cic" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/structure/cable{ - tag = "icon-0-4"; - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/engine/chiefs_office) -"cid" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plating, -/area/engine/chiefs_office) -"cie" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - tag = "icon-intact (EAST)"; - icon_state = "intact"; - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/chiefs_office) -"cif" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - tag = "icon-intact (EAST)"; - icon_state = "intact"; - dir = 4 - }, -/turf/closed/wall, -/area/engine/chiefs_office) -"cig" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cih" = ( -/obj/structure/table, -/obj/item/stock_parts/subspace/transmitter, -/obj/item/stock_parts/subspace/transmitter, -/obj/item/stock_parts/subspace/treatment, -/obj/item/stock_parts/subspace/treatment, -/obj/item/stock_parts/subspace/treatment, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cii" = ( -/obj/structure/table, -/obj/item/stock_parts/subspace/filter, -/obj/item/stock_parts/subspace/filter, -/obj/item/stock_parts/subspace/filter, -/obj/item/stock_parts/subspace/filter, -/obj/item/stock_parts/subspace/filter, -/obj/machinery/light/small, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cij" = ( -/obj/structure/table, -/obj/item/stock_parts/subspace/ansible, -/obj/item/stock_parts/subspace/ansible, -/obj/item/stock_parts/subspace/ansible, -/obj/item/stock_parts/subspace/crystal, -/obj/item/stock_parts/subspace/crystal, -/obj/item/stock_parts/subspace/crystal, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cik" = ( -/obj/machinery/vending/engivend, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/ai_monitored/storage/secure) -"cil" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 - }, -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/plasteel{ - dir = 8; - icon_state = "escape" - }, -/area/hallway/secondary/exit) -"cim" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cin" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel{ - icon_state = "caution"; - dir = 4 - }, -/area/hallway/secondary/exit) -"cio" = ( -/obj/structure/tank_dispenser, -/turf/open/floor/plasteel, -/area/atmos) -"cip" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - on = 1 - }, -/turf/open/floor/plasteel, -/area/atmos) -"ciq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cir" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/chair/office/dark{ - dir = 4 - }, -/obj/effect/landmark/start{ - name = "Atmospheric Technician" - }, -/turf/open/floor/plasteel, -/area/atmos) -"cis" = ( -/obj/machinery/computer/atmos_alert, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "caution"; - dir = 4 - }, -/area/atmos) -"cit" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/atmos) -"ciu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "delivery"; - name = "floor" - }, -/area/atmos) -"civ" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel, -/area/atmos) -"ciw" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cix" = ( -/obj/structure/closet/crate, -/turf/open/floor/plasteel, -/area/atmos) -"ciy" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ - dir = 8 - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel, -/area/atmos) -"ciz" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Mix to Filter"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/atmos) -"ciA" = ( -/obj/machinery/atmospherics/pipe/manifold/yellow/visible{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/atmos) -"ciB" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/atmos) -"ciC" = ( -/obj/machinery/atmospherics/pipe/manifold/green/visible{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/atmos) -"ciD" = ( -/obj/machinery/atmospherics/pipe/manifold/green/visible{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/atmos) -"ciE" = ( -/obj/machinery/computer/atmos_control/tank{ - frequency = 1441; - input_tag = "mix_in"; - name = "Gas Mix Tank Control"; - output_tag = "mix_out"; - sensors = list("mix_sensor" = "Tank") - }, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/atmos) -"ciF" = ( -/obj/structure/grille, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/atmos) -"ciG" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating/airless, -/area/atmos) -"ciH" = ( -/obj/machinery/air_sensor{ - frequency = 1441; - id_tag = "mix_sensor" - }, -/turf/open/floor/engine/vacuum, -/area/atmos) -"ciI" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/engine/vacuum, -/area/atmos) -"ciJ" = ( -/obj/machinery/vending/cola, -/turf/open/floor/plasteel/escape{ - tag = "icon-escape (WEST)"; - icon_state = "escape"; - dir = 8 - }, -/area/hallway/secondary/exit) -"ciK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light{ - dir = 8 - }, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -28 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"ciL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"ciM" = ( -/obj/structure/table, -/obj/item/hand_tele, -/turf/open/floor/plasteel, -/area/teleporter) -"ciN" = ( -/obj/machinery/computer/teleporter, -/turf/open/floor/plating, -/area/teleporter) -"ciO" = ( -/obj/machinery/teleport/station, -/turf/open/floor/plating, -/area/teleporter) -"ciP" = ( -/obj/machinery/teleport/hub, -/turf/open/floor/plating, -/area/teleporter) -"ciQ" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"ciR" = ( -/turf/open/floor/plasteel/yellow/side{ - dir = 4 - }, -/area/engine/break_room) -"ciS" = ( -/turf/closed/wall, -/area/engine/break_room) -"ciT" = ( -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) -"ciU" = ( -/obj/structure/lattice, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/space, -/area/space/nearstation) -"ciV" = ( -/obj/structure/disposalpipe/junction{ - dir = 8; - icon_state = "pipe-j2" - }, -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) -"ciW" = ( -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) -"ciX" = ( -/turf/closed/wall, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"ciY" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering{ - name = "Tech Storage"; - req_access_txt = "0"; - req_one_access_txt = "23;30" - }, -/turf/open/floor/plating{ - tag = "icon-delivery"; - icon_state = "delivery"; - dir = 2 - }, -/area/ai_monitored/storage/secure) -"ciZ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/turf/open/floor/plating, -/area/maintenance/aft) -"cja" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall, -/area/hallway/secondary/exit) -"cjb" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 - }, -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/plasteel{ - dir = 8; - icon_state = "escape" - }, -/area/hallway/secondary/exit) -"cjc" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4; - initialize_directions = 11 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit) -"cjd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "caution"; - dir = 4 - }, -/area/hallway/secondary/exit) -"cje" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/plasticflaps{ - opacity = 1 - }, -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=4"; - freq = 1400; - location = "Atmospherics" - }, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; - id = "atmos"; - name = "Atmos Blast Door"; - opacity = 0 - }, -/turf/open/floor/plasteel{ - icon_state = "delivery"; - name = "floor" - }, -/area/atmos) -"cjf" = ( -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, -/obj/structure/table, -/obj/item/clothing/mask/breath, -/turf/open/floor/plasteel, -/area/atmos) -"cjg" = ( -/obj/machinery/computer/station_alert, -/turf/open/floor/plasteel{ - dir = 6; - icon_state = "caution" - }, -/area/atmos) -"cjh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 6 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/atmos) -"cji" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cjj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_atmos{ - name = "Distribution Loop"; - req_access_txt = "24" - }, -/turf/open/floor/plasteel, -/area/atmos) -"cjk" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cjl" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cjm" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "Pure to Mix"; - on = 0 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cjn" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 5; - initialize_directions = 12 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cjo" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "Unfiltered to Mix"; - on = 1 - }, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4; - initialize_directions = 12 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cjp" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/turf/open/floor/plasteel/green/side{ - dir = 6 - }, -/area/atmos) -"cjq" = ( -/obj/structure/grille, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/atmos) -"cjr" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/turf/open/space, -/area/space/nearstation) -"cjs" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 8; - frequency = 1441; - id = "mix_in"; - pixel_y = 1 - }, -/turf/open/floor/engine/vacuum, -/area/atmos) -"cjt" = ( -/obj/machinery/vending/snack, -/turf/open/floor/plasteel/escape{ - tag = "icon-escape (SOUTHWEST)"; - icon_state = "escape"; - dir = 10 - }, -/area/hallway/secondary/exit) -"cju" = ( -/turf/open/floor/plasteel/escape, -/area/hallway/secondary/exit) -"cjv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/escape, -/area/hallway/secondary/exit) -"cjw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/escape, -/area/hallway/secondary/exit) -"cjx" = ( -/turf/open/floor/plasteel/escape{ - tag = "icon-escape (SOUTHEAST)"; - icon_state = "escape"; - dir = 6 - }, -/area/hallway/secondary/exit) -"cjy" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock" - }, -/turf/open/floor/noslip, -/area/shuttle/escape) -"cjz" = ( -/obj/machinery/light/small, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"cjA" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = 0; - pixel_y = -30 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"cjB" = ( -/obj/machinery/light, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"cjC" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"cjD" = ( -/turf/closed/wall/r_wall, -/area/hallway/primary/aft) -"cjE" = ( -/turf/closed/wall/r_wall, -/area/security/checkpoint/engineering) -"cjF" = ( -/turf/open/floor/plasteel/yellow/side{ - dir = 10 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cjG" = ( -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (SOUTHEAST)"; - icon_state = "yellow"; - dir = 6 - }, -/area/engine/break_room) -"cjH" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/wall, -/area/engine/break_room) -"cjI" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel/yellow, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cjJ" = ( -/turf/open/floor/plasteel/yellow, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cjK" = ( -/turf/open/floor/plasteel/yellow, -/area/space) -"cjL" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/maintenance/aft) -"cjM" = ( -/obj/item/crowbar, -/obj/item/wrench, -/obj/structure/table, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel{ - dir = 8; - icon_state = "cautioncorner" - }, -/area/hallway/secondary/exit) -"cjN" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, -/turf/open/floor/plasteel{ - icon_state = "caution"; - dir = 4 - }, -/area/hallway/secondary/exit) -"cjO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/atmos) -"cjP" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/table, -/obj/item/wrench, -/turf/open/floor/plasteel, -/area/atmos) -"cjQ" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Air to External"; - on = 1 - }, -/turf/open/floor/plasteel{ - icon_state = "delivery"; - name = "floor" - }, -/area/atmos) -"cjR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cjS" = ( -/obj/structure/grille, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 6; - initialize_directions = 6 - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/atmos) -"cjT" = ( -/obj/structure/grille, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/visible, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/atmos) -"cjU" = ( -/obj/structure/grille, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/atmos) -"cjV" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/structure/grille, -/obj/machinery/atmospherics/pipe/simple/yellow/visible, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/atmos) -"cjW" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/atmos) -"cjX" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/atmos) -"cjY" = ( -/obj/structure/grille, -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 4; - initialize_directions = 11 - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/atmos) -"cjZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/security{ - name = "Brig"; - req_access = null; - req_access_txt = "63; 42" - }, -/turf/open/floor/plasteel/red, -/area/hallway/secondary/exit) -"cka" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/hallway/secondary/exit) -"ckb" = ( -/obj/machinery/door/airlock/glass{ - name = "Emergency Shuttle Brig"; - req_access_txt = "2" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"ckc" = ( -/obj/machinery/door/airlock/glass{ - name = "Emergency Shuttle Infirmary" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"ckd" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/transport) -"cke" = ( -/obj/structure/grille, -/obj/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/transport) -"ckf" = ( -/obj/machinery/door/airlock/external, -/turf/open/floor/pod/dark, -/area/shuttle/transport) -"ckg" = ( -/turf/open/space, -/area/hallway/secondary/entry) -"ckh" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"cki" = ( -/turf/closed/wall, -/area/security/checkpoint/engineering) -"ckj" = ( -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/obj/structure/table, -/obj/machinery/recharger, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/engineering) -"ckk" = ( -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/machinery/power/apc{ - dir = 1; - name = "Engineering Security APC"; - pixel_x = 0; - pixel_y = 24 - }, -/obj/structure/chair/office/dark{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/engineering) -"ckl" = ( -/obj/machinery/computer/security, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/engineering) -"ckm" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/turf/open/floor/plating, -/area/security/checkpoint/engineering) -"ckn" = ( -/turf/open/floor/plasteel, -/area/engine/break_room) -"cko" = ( -/obj/structure/table, -/obj/item/device/radio/intercom{ - name = "Station Intercom"; - pixel_x = 0; - pixel_y = 24 - }, -/turf/open/floor/plasteel/yellow, -/area/engine/break_room) -"ckp" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/soda_cans/thirteenloko, -/turf/open/floor/plasteel, -/area/engine/break_room) -"ckq" = ( -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/obj/structure/table, -/turf/open/floor/plasteel/yellow, -/area/engine/break_room) -"ckr" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel, -/area/engine/break_room) -"cks" = ( -/obj/structure/lattice, -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/turf/open/space, -/area/space/nearstation) -"ckt" = ( -/turf/open/floor/plasteel, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cku" = ( -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (EAST)"; - icon_state = "yellow"; - dir = 4 - }, -/area/space) -"ckv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel{ - dir = 10; - icon_state = "yellow" - }, -/area/hallway/secondary/exit) -"ckw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel/yellow/side, -/area/hallway/secondary/exit) -"ckx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel{ - dir = 6; - icon_state = "yellow" - }, -/area/hallway/secondary/exit) -"cky" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/plasteel, -/area/atmos) -"ckz" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/sign/atmosplaque{ - pixel_y = -30 - }, -/turf/open/floor/plasteel, -/area/atmos) -"ckA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/glass_atmos{ - name = "Atmospherics Monitoring"; - req_access_txt = "24" - }, -/obj/structure/sign/nosmoking_2{ - pixel_y = 30 - }, -/turf/open/floor/plasteel, -/area/atmos) -"ckB" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4; - name = "External to Filter"; - on = 1 - }, -/turf/open/floor/plasteel{ - icon_state = "delivery"; - name = "floor" - }, -/area/atmos) -"ckC" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/atmos) -"ckD" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - tag = "icon-intact (NORTHEAST)"; - icon_state = "intact"; - dir = 5 - }, -/turf/open/floor/plasteel, -/area/atmos) -"ckE" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/atmos) -"ckF" = ( -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 4; - initialize_directions = 11 - }, -/obj/machinery/meter, -/turf/open/floor/plasteel, -/area/atmos) -"ckG" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible, -/obj/machinery/meter, -/turf/open/floor/plasteel, -/area/atmos) -"ckH" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - dir = 6 - }, -/obj/machinery/meter, -/turf/open/floor/plasteel, -/area/atmos) -"ckI" = ( -/obj/machinery/atmospherics/pipe/manifold/yellow/visible{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/atmos) -"ckJ" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible, -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/atmos) -"ckK" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "N2O Outlet Pump"; - on = 0 - }, -/turf/open/floor/plasteel/escape{ - dir = 5 - }, -/area/atmos) -"ckL" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - external_pressure_bound = 0; - frequency = 1441; - id_tag = "n2o_out"; - initialize_directions = 1; - internal_pressure_bound = 4000; - on = 1; - pressure_checks = 2; - pump_direction = 0 - }, -/turf/open/floor/engine/n2o, -/area/atmos) -"ckM" = ( -/turf/open/floor/engine/n2o, -/area/atmos) -"ckN" = ( -/turf/open/floor/plasteel/red, -/area/hallway/secondary/exit) -"ckO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/red, -/area/hallway/secondary/exit) -"ckP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/red, -/area/hallway/secondary/exit) -"ckQ" = ( -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/escape) -"ckR" = ( -/obj/structure/chair{ - name = "tactical chair" - }, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/escape) -"ckS" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 - }, -/obj/structure/chair{ - name = "tactical chair" - }, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/escape) -"ckT" = ( -/obj/machinery/sleeper{ - icon_state = "sleeper-open"; - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"ckU" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 8; - icon_state = "propulsion_l" - }, -/turf/open/floor/plating/airless, -/area/shuttle/transport) -"ckV" = ( -/obj/structure/shuttle/engine/heater{ - icon_state = "heater"; - dir = 8 - }, -/obj/structure/window/reinforced, -/turf/open/floor/plating/airless, -/area/shuttle/transport) -"ckW" = ( -/obj/structure/chair, -/turf/open/floor/pod/dark, -/area/shuttle/transport) -"ckX" = ( -/obj/structure/chair, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/shuttle/transport) -"ckY" = ( -/turf/open/floor/pod/light, -/area/shuttle/transport) -"ckZ" = ( -/obj/structure/grille, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; - pixel_x = 0 - }, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/hallway/secondary/entry) -"cla" = ( -/obj/structure/closet/firecloset/full, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"clb" = ( -/obj/structure/reagent_dispensers/peppertank{ - pixel_x = -30 - }, -/obj/structure/table, -/obj/item/book/manual/wiki/security_space_law, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/engineering) -"clc" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/engineering) -"cld" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/computer/secure_data, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/engineering) -"cle" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/security/checkpoint/engineering) -"clf" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"clg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow, -/area/engine/break_room) -"clh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/chair/stool, -/turf/open/floor/plasteel, -/area/engine/break_room) -"cli" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/obj/structure/chair/stool, -/obj/effect/landmark/start{ - name = "Station Engineer" - }, -/turf/open/floor/plasteel/yellow, -/area/engine/break_room) -"clj" = ( -/obj/structure/chair/stool, -/turf/open/floor/plasteel, -/area/engine/break_room) -"clk" = ( -/obj/structure/sink/kitchen{ - dir = 8; - pixel_x = 11 - }, -/turf/open/floor/plasteel/yellow, -/area/engine/break_room) -"cll" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"clm" = ( -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cln" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"clo" = ( -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (EAST)"; - icon_state = "yellow"; - dir = 4 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"clp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/airlock/maintenance, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/maintenance/aft) -"clq" = ( -/turf/closed/wall/r_wall, -/area/engine/break_room) -"clr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall/r_wall, -/area/engine/break_room) -"cls" = ( -/obj/machinery/door/airlock/glass_engineering{ - name = "Engineering Storage"; - req_access_txt = "32" - }, -/turf/open/floor/plasteel/yellow, -/area/engine/break_room) -"clt" = ( -/obj/machinery/door/airlock/glass_atmos{ - name = "Atmospherics Monitoring"; - req_access_txt = "24" - }, -/turf/open/floor/plasteel, -/area/engine/break_room) -"clu" = ( -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -23; - pixel_y = 0 - }, -/turf/open/floor/plasteel{ - icon_state = "delivery"; - name = "floor" - }, -/area/atmos) -"clv" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/turf/open/floor/plasteel, -/area/atmos) -"clw" = ( -/obj/item/device/radio/beacon, -/turf/open/floor/plasteel, -/area/atmos) -"clx" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 0; - name = "Air to Port"; - on = 0 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cly" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 0; - name = "Mix to Port"; - on = 0 - }, -/turf/open/floor/plasteel, -/area/atmos) -"clz" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 0; - name = "Pure to Port"; - on = 0 - }, -/turf/open/floor/plasteel, -/area/atmos) -"clA" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible, -/turf/open/floor/plasteel, -/area/atmos) -"clB" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/open/floor/plasteel, -/area/atmos) -"clC" = ( -/obj/machinery/computer/atmos_control/tank{ - frequency = 1441; - input_tag = "n2o_in"; - name = "Nitrous Oxide Supply Control"; - output_tag = "n2o_out"; - sensors = list("n2o_sensor" = "Tank") - }, -/turf/open/floor/plasteel/escape{ - dir = 4 - }, -/area/atmos) -"clD" = ( -/obj/machinery/air_sensor{ - frequency = 1441; - id_tag = "n2o_sensor" - }, -/turf/open/floor/engine/n2o, -/area/atmos) -"clE" = ( -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/turf/open/floor/engine/n2o, -/area/atmos) -"clF" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/engine/n2o, -/area/atmos) -"clG" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel/red, -/area/hallway/secondary/exit) -"clH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel/red, -/area/hallway/secondary/exit) -"clI" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel/red, -/area/hallway/secondary/exit) -"clJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel/red, -/area/hallway/secondary/exit) -"clK" = ( -/obj/machinery/flasher{ - id = "shuttle_flasher"; - pixel_x = -24; - pixel_y = 6 - }, -/obj/machinery/button/flasher{ - id = "shuttle_flasher"; - pixel_x = -24; - pixel_y = -6 - }, -/obj/machinery/light/small{ - brightness = 3; - dir = 8 - }, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/escape) -"clL" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/machinery/flasher{ - id = "shuttle_flasher"; - pixel_x = 24; - pixel_y = 6 - }, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/escape) -"clM" = ( -/obj/machinery/light/small{ - brightness = 3; - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"clN" = ( -/obj/structure/table, -/obj/item/storage/firstaid/fire, -/obj/item/storage/firstaid/regular{ - pixel_x = 2; - pixel_y = 3 - }, -/obj/item/crowbar, -/obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"clO" = ( -/obj/structure/shuttle/engine/heater{ - icon_state = "heater"; - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 0 - }, -/turf/open/floor/plating/airless, -/area/shuttle/transport) -"clP" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/shuttle/transport) -"clQ" = ( -/obj/machinery/door/airlock/titanium, -/turf/open/floor/pod/light, -/area/shuttle/transport) -"clR" = ( -/obj/machinery/computer/shuttle/ferry/request, -/turf/open/floor/pod/dark, -/area/shuttle/transport) -"clS" = ( -/obj/machinery/door/airlock/titanium, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 2; - height = 13; - id = "ferry"; - name = "ferry shuttle"; - port_angle = 0; - preferred_direction = 4; - roundstart_move = "ferry_away"; - width = 5 - }, -/obj/docking_port/stationary{ - dir = 8; - dwidth = 2; - height = 13; - id = "ferry_home"; - name = "port bay 2"; - turf_type = /turf/open/space; - width = 5 - }, -/turf/open/floor/pod/light, -/area/shuttle/transport) -"clT" = ( -/obj/machinery/door/airlock/external{ - id_tag = null; - name = "Port Docking Bay 2"; - req_access_txt = "0" - }, -/turf/open/floor/noslip, -/area/hallway/secondary/entry) -"clU" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -28 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/engineering) -"clV" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/engineering) -"clW" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/engineering) -"clX" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/structure/cable{ - tag = "icon-1-4"; - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "2-4"; - tag = "icon-2-8" - }, -/obj/machinery/door/airlock/glass_security{ - name = "Engineering Security Post"; - req_access_txt = "63" - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/engineering) -"clY" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/open/floor/plasteel/yellow, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"clZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel, -/area/engine/break_room) -"cma" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel/yellow, -/area/engine/break_room) -"cmb" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/engine/break_room) -"cmc" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 2; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel/yellow, -/area/engine/break_room) -"cmd" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel, -/area/engine/break_room) -"cme" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_engineering{ - name = "Engineering Foyer"; - req_access_txt = "0"; - req_one_access_txt = "32;19" - }, -/turf/open/floor/plasteel/yellow, -/area/engine/break_room) -"cmf" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cmg" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cmh" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cmi" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel/yellow/corner{ - tag = "icon-yellowcorner (NORTH)"; - icon_state = "yellowcorner"; - dir = 1 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cmj" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cmk" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel/yellow/corner{ - tag = "icon-yellowcorner (EAST)"; - icon_state = "yellowcorner"; - dir = 4 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cml" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "Engineering Foyer APC"; - pixel_x = 0; - pixel_y = 24 - }, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cmm" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cmn" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHEAST)"; - icon_state = "camera"; - dir = 6 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cmo" = ( -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cmp" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 2; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cmq" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/obj/effect/landmark{ - name = "xeno_spawn"; - pixel_x = -1 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cmr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_engineering{ - name = "Engineering Foyer"; - req_access_txt = "0"; - req_one_access_txt = "32;19" - }, -/turf/open/floor/plasteel/yellow, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cms" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cmt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/corner{ - tag = "icon-yellowcorner (NORTH)"; - icon_state = "yellowcorner"; - dir = 1 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cmu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cmv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/corner{ - tag = "icon-yellowcorner (EAST)"; - icon_state = "yellowcorner"; - dir = 4 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cmw" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cmx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTHEAST)"; - icon_state = "yellow"; - dir = 5 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cmy" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_engineering{ - name = "Engineering Storage"; - req_access_txt = "32" - }, -/turf/open/floor/plasteel/yellow, -/area/engine/break_room) -"cmz" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTHWEST)"; - icon_state = "yellow"; - dir = 9 - }, -/area/engine/break_room) -"cmA" = ( -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/engine/break_room) -"cmB" = ( -/obj/machinery/vending/engivend, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/engine/break_room) -"cmC" = ( -/obj/machinery/vending/tool, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/engine/break_room) -"cmD" = ( -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/obj/structure/closet/secure_closet/engineering_welding, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/engine/break_room) -"cmE" = ( -/obj/structure/closet/secure_closet/engineering_electrical, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/engine/break_room) -"cmF" = ( -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTHEAST)"; - icon_state = "yellow"; - dir = 5 - }, -/area/engine/break_room) -"cmG" = ( -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/yellow, -/area/engine/break_room) -"cmH" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plasteel, -/area/atmos) -"cmI" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plasteel, -/area/atmos) -"cmJ" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/clothing/suit/hazardvest, -/obj/item/clothing/suit/hazardvest, -/obj/item/clothing/suit/hazardvest, -/obj/item/clothing/suit/hazardvest, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas, -/turf/open/floor/plasteel, -/area/atmos) -"cmK" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cmL" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible, -/obj/machinery/meter, -/turf/open/floor/plasteel, -/area/atmos) -"cmM" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 4; - initialize_directions = 11 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cmN" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 1; - filter_type = "n2o"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cmO" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/turf/open/floor/plasteel/escape{ - dir = 6 - }, -/area/atmos) -"cmP" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 8; - frequency = 1441; - id = "n2o_in"; - pixel_y = 1 - }, -/turf/open/floor/engine/n2o, -/area/atmos) -"cmQ" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/plasteel/red, -/area/hallway/secondary/exit) -"cmR" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHWEST)"; - icon_state = "camera"; - dir = 10 - }, -/turf/open/floor/plasteel/red, -/area/hallway/secondary/exit) -"cmS" = ( -/obj/machinery/light, -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/plasteel/red, -/area/hallway/secondary/exit) -"cmT" = ( -/obj/structure/chair{ - dir = 1; - name = "tactical chair" - }, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/escape) -"cmU" = ( -/obj/structure/shuttle/engine/heater{ - icon_state = "heater"; - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 1 - }, -/turf/open/floor/plating/airless, -/area/shuttle/transport) -"cmV" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/shuttle/transport) -"cmW" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/machinery/light, -/turf/open/floor/pod/dark, -/area/shuttle/transport) -"cmX" = ( -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"cmY" = ( -/obj/structure/filingcabinet/security, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/engineering) -"cmZ" = ( -/obj/effect/landmark/start/depsec/engineering, -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/engineering) -"cna" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/engineering) -"cnb" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/security/checkpoint/engineering) -"cnc" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cnd" = ( -/turf/open/floor/plasteel/yellow, -/area/engine/break_room) -"cne" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/engine/break_room) -"cnf" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2; - initialize_directions = 11 - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel/yellow, -/area/engine/break_room) -"cng" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2; - initialize_directions = 11 - }, -/turf/open/floor/plasteel, -/area/engine/break_room) -"cnh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_engineering{ - name = "Engineering Foyer"; - req_access_txt = "0"; - req_one_access_txt = "32;19" - }, -/turf/open/floor/plasteel/yellow, -/area/engine/break_room) -"cni" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cnj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/yellow/side, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cnk" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHWEST)"; - icon_state = "camera"; - dir = 10 - }, -/turf/open/floor/plasteel/yellow/side, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cnl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/corner{ - tag = "icon-yellowcorner (WEST)"; - icon_state = "yellowcorner"; - dir = 8 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cnm" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cnn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/corner, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cno" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2; - initialize_directions = 11 - }, -/turf/open/floor/plasteel/yellow/side, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cnp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_engineering{ - name = "Engineering Foyer"; - req_access_txt = "0"; - req_one_access_txt = "32;19" - }, -/turf/open/floor/plasteel/yellow, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cnq" = ( -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (SOUTHEAST)"; - icon_state = "yellow"; - dir = 6 - }, -/area/engine/break_room) -"cnr" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass_engineering{ - name = "Engineering Storage"; - req_access_txt = "32" - }, -/turf/open/floor/plasteel/yellow, -/area/engine/break_room) -"cns" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (WEST)"; - icon_state = "yellow"; - dir = 8 - }, -/area/engine/break_room) -"cnt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/break_room) -"cnu" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel, -/area/engine/break_room) -"cnv" = ( -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (EAST)"; - icon_state = "yellow"; - dir = 4 - }, -/area/engine/break_room) -"cnw" = ( -/obj/machinery/door/airlock/glass_engineering{ - name = "Atmospherics"; - req_access_txt = "32" - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/atmos) -"cnx" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 0 - }, -/obj/machinery/camera{ - c_tag = "Atmospherics West"; - dir = 8; - network = list("SS13") - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/turf/open/floor/plasteel, -/area/atmos) -"cny" = ( -/turf/closed/wall, -/area/atmos) -"cnz" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -27; - pixel_y = 0 - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 0; - name = "Air to Port"; - on = 0 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cnA" = ( -/obj/effect/landmark/start{ - name = "Atmospheric Technician" - }, -/turf/open/floor/plasteel, -/area/atmos) -"cnB" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cnC" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/shuttle/engine/heater, -/turf/open/floor/plating/airless, -/area/shuttle/escape) -"cnD" = ( -/obj/machinery/door/airlock/external, -/turf/open/floor/pod/light, -/area/shuttle/transport) -"cnE" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"cnF" = ( -/obj/structure/closet, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/engineering) -"cnG" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTH)"; - icon_state = "camera"; - dir = 1 - }, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/engineering) -"cnH" = ( -/obj/item/device/radio, -/turf/open/floor/plasteel{ - icon_state = "redfull" - }, -/area/security/checkpoint/engineering) -"cnI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/yellow, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cnJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/noticeboard{ - dir = 1; - pixel_y = -27 - }, -/turf/open/floor/plasteel/yellow, -/area/engine/break_room) -"cnK" = ( -/obj/structure/table, -/obj/machinery/microwave, -/turf/open/floor/plasteel, -/area/engine/break_room) -"cnL" = ( -/obj/machinery/light/small, -/obj/machinery/vending/cola, -/turf/open/floor/plasteel/yellow, -/area/engine/break_room) -"cnM" = ( -/obj/machinery/vending/snack, -/turf/open/floor/plasteel, -/area/engine/break_room) -"cnN" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cnO" = ( -/turf/closed/wall, -/area/maintenance/aft) -"cnP" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/tank_dispenser/oxygen, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (WEST)"; - icon_state = "yellow"; - dir = 8 - }, -/area/engine/break_room) -"cnQ" = ( -/obj/structure/closet/secure_closet/atmospherics, -/turf/open/floor/plasteel{ - dir = 2; - icon_state = "bot" - }, -/area/engine/break_room) -"cnR" = ( -/obj/structure/closet/secure_closet/engineering_personal, -/turf/open/floor/plasteel{ - dir = 2; - icon_state = "bot" - }, -/area/engine/break_room) -"cnS" = ( -/obj/effect/turf_decal/delivery, -/obj/item/device/radio/intercom{ - desc = "Talk smack through this."; - dir = 4; - pixel_x = 28; - syndie = 1 - }, -/turf/open/floor/plasteel/yellow, -/area/engine/break_room) -"cnT" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/atmos) -"cnU" = ( -/obj/structure/closet/secure_closet/atmospherics, -/turf/open/floor/plasteel{ - icon_state = "delivery"; - name = "floor" - }, -/area/atmos) -"cnV" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 - }, -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/plasteel{ - dir = 2; - icon_state = "bot" - }, -/area/atmos) -"cnW" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/turf/open/floor/plasteel{ - dir = 2 - }, -/area/atmos) -"cnX" = ( -/obj/machinery/atmospherics/pipe/manifold/yellow/visible{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cnY" = ( -/obj/machinery/camera{ - c_tag = "Atmospherics East"; - dir = 8; - network = list("SS13") - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Plasma Outlet Pump"; - on = 0 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cnZ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - external_pressure_bound = 0; - frequency = 1441; - id_tag = "tox_out"; - initialize_directions = 1; - internal_pressure_bound = 4000; - on = 1; - pressure_checks = 2; - pump_direction = 0 - }, -/turf/open/floor/engine/plasma, -/area/atmos) -"coa" = ( -/turf/open/floor/engine/plasma, -/area/atmos) -"cob" = ( -/obj/effect/landmark{ - name = "xeno_spawn"; - pixel_x = -1 - }, -/turf/open/floor/engine/plasma, -/area/atmos) -"coc" = ( -/obj/structure/shuttle/engine/propulsion, -/turf/open/floor/plating/airless, -/area/shuttle/escape) -"cod" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 9 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"coe" = ( -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTHEAST)"; - icon_state = "yellow"; - dir = 5 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cof" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cog" = ( -/obj/structure/lattice, -/obj/structure/disposalpipe/junction{ - dir = 1; - icon_state = "pipe-j1"; - tag = "icon-pipe-j1 (EAST)" - }, -/turf/open/space, -/area/space/nearstation) -"coh" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"coi" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"coj" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cok" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (EAST)"; - icon_state = "yellow"; - dir = 4 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"col" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall, -/area/maintenance/aft) -"com" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/junction{ - tag = "icon-pipe-y (WEST)"; - icon_state = "pipe-y"; - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/aft) -"con" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/machinery/suit_storage_unit/engine, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (WEST)"; - icon_state = "yellow"; - dir = 8 - }, -/area/engine/break_room) -"coo" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (EAST)"; - icon_state = "yellow"; - dir = 4 - }, -/area/engine/break_room) -"cop" = ( -/obj/structure/fireaxecabinet{ - pixel_x = -30 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (EAST)"; - icon_state = "camera"; - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "delivery"; - name = "floor" - }, -/area/atmos) -"coq" = ( -/obj/machinery/suit_storage_unit/atmos, -/turf/open/floor/plasteel{ - icon_state = "delivery"; - name = "floor" - }, -/area/atmos) -"cor" = ( -/obj/structure/sign/nosmoking_2, -/turf/closed/wall, -/area/atmos) -"cos" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 4; - initialize_directions = 11 - }, -/obj/machinery/meter, -/turf/open/floor/plasteel, -/area/atmos) -"cot" = ( -/obj/machinery/computer/atmos_control/tank{ - frequency = 1441; - input_tag = "tox_in"; - name = "Plasma Supply Control"; - output_tag = "tox_out"; - sensors = list("tox_sensor" = "Tank") - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cou" = ( -/obj/machinery/air_sensor{ - frequency = 1441; - id_tag = "tox_sensor" - }, -/turf/open/floor/engine/plasma, -/area/atmos) -"cov" = ( -/obj/machinery/portable_atmospherics/canister/toxins, -/turf/open/floor/engine/plasma, -/area/atmos) -"cow" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/engine/plasma, -/area/atmos) -"cox" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"coy" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"coz" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"coA" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"coB" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8; - initialize_directions = 11 - }, -/obj/machinery/suit_storage_unit/engine, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (WEST)"; - icon_state = "yellow"; - dir = 8 - }, -/area/engine/break_room) -"coC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/break_room) -"coD" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/engine/break_room) -"coE" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/engine/break_room) -"coF" = ( -/turf/open/floor/plasteel/yellow/corner{ - tag = "icon-yellowcorner (EAST)"; - icon_state = "yellowcorner"; - dir = 4 - }, -/area/engine/break_room) -"coG" = ( -/obj/structure/closet/toolcloset, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTHEAST)"; - icon_state = "yellow"; - dir = 5 - }, -/area/engine/break_room) -"coH" = ( -/obj/machinery/power/apc{ - dir = 8; - name = "Atmospherics APC"; - pixel_x = -24 - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/atmos) -"coI" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/turf/open/floor/plasteel{ - icon_state = "delivery"; - name = "floor" - }, -/area/atmos) -"coJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/open/floor/plasteel, -/area/atmos) -"coK" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 4; - initialize_directions = 11 - }, -/obj/item/wrench, -/turf/open/floor/plasteel, -/area/atmos) -"coL" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 8 - }, -/obj/machinery/meter, -/turf/open/floor/plasteel, -/area/atmos) -"coM" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 1; - filter_type = "plasma"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/atmos) -"coN" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/atmos) -"coO" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 8; - frequency = 1441; - id = "tox_in"; - pixel_y = 1 - }, -/turf/open/floor/engine/plasma, -/area/atmos) -"coP" = ( -/obj/structure/grille, -/obj/structure/lattice, -/turf/open/space, -/area/space) -"coQ" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, -/obj/structure/lattice, -/turf/open/space, -/area/space) -"coR" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_2) -"coS" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 4; - icon_state = "propulsion"; - tag = "icon-propulsion (WEST)" - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/pod_2) -"coT" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"coU" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/maintenance/aft) -"coV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/machinery/suit_storage_unit/atmos, -/turf/open/floor/plasteel/green/side{ - dir = 10 - }, -/area/engine/break_room) -"coW" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (SOUTHWEST)"; - icon_state = "camera"; - dir = 10 - }, -/turf/open/floor/plasteel/green/side, -/area/engine/break_room) -"coX" = ( -/obj/machinery/suit_storage_unit/engine, -/turf/open/floor/plasteel/orange/side, -/area/engine/break_room) -"coY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plasteel/yellow/corner{ - tag = "icon-yellowcorner (WEST)"; - icon_state = "yellowcorner"; - dir = 8 - }, -/area/engine/break_room) -"coZ" = ( -/turf/open/floor/plasteel/yellow/corner, -/area/engine/break_room) -"cpa" = ( -/turf/open/floor/plasteel/yellow/side, -/area/engine/break_room) -"cpb" = ( -/obj/structure/closet/radiation, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (SOUTHEAST)"; - icon_state = "yellow"; - dir = 6 - }, -/area/engine/break_room) -"cpc" = ( -/obj/structure/closet/wardrobe/atmospherics_yellow, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/atmos) -"cpd" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel{ - icon_state = "delivery"; - name = "floor" - }, -/area/atmos) -"cpe" = ( -/obj/machinery/requests_console{ - department = "Atmospherics"; - departmentType = 4; - name = "Atmos RC"; - pixel_x = 30; - pixel_y = 0 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/obj/machinery/light{ - dir = 4; - icon_state = "tube1" - }, -/turf/open/floor/plasteel, -/area/atmos) -"cpf" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/machinery/camera{ - c_tag = "Atmospherics Central"; - dir = 4; - network = list("SS13") - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 0; - name = "Port to Filter"; - on = 0 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cpg" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 8 - }, -/obj/structure/chair/stool, -/turf/open/floor/plasteel, -/area/atmos) -"cph" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/heater{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cpi" = ( -/obj/structure/grille, -/obj/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/pod_2) -"cpj" = ( -/obj/machinery/computer/shuttle/pod{ - pixel_x = 0; - pixel_y = -32; - possible_destinations = "pod_asteroid2"; - shuttleId = "pod2" - }, -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/status_display{ - density = 0; - layer = 3; - pixel_x = 0; - pixel_y = 32 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_2) -"cpk" = ( -/obj/item/storage/pod{ - pixel_x = 6; - pixel_y = -28 - }, -/obj/item/device/radio/intercom{ - pixel_x = 0; - pixel_y = 25 - }, -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_2) -"cpl" = ( -/obj/machinery/door/airlock/titanium{ - name = "Escape Pod Airlock" - }, -/obj/docking_port/mobile/pod{ - dir = 8; - id = "pod2"; - name = "escape pod 2"; - port_angle = 180 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/pod_2) -"cpm" = ( -/obj/machinery/door/airlock/external{ - cyclelinkeddir = 1; - name = "Escape Pod Two" - }, -/turf/open/floor/plating, -/area/hallway/secondary/entry) -"cpn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cpo" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plating, -/area/maintenance/aft) -"cpp" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plating, -/area/maintenance/aft) -"cpq" = ( -/obj/machinery/portable_atmospherics/canister/air, -/turf/open/floor/plating, -/area/maintenance/aft) -"cpr" = ( -/mob/living/simple_animal/bot/floorbot, -/turf/open/floor/plating, -/area/maintenance/aft) -"cps" = ( -/turf/closed/wall/r_wall, -/area/maintenance/atmos_control) -"cpt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/closed/wall/r_wall, -/area/maintenance/atmos_control) -"cpu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (SOUTHWEST)"; - icon_state = "yellow"; - dir = 10 - }, -/area/engine/break_room) -"cpv" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (SOUTHEAST)"; - icon_state = "yellow"; - dir = 6 - }, -/area/engine/break_room) -"cpw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/atmos) -"cpx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/turf/open/floor/plasteel, -/area/atmos) -"cpy" = ( -/obj/structure/closet/wardrobe/atmospherics_yellow, -/turf/open/floor/plasteel, -/area/atmos) -"cpz" = ( -/obj/machinery/space_heater, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cpA" = ( -/obj/machinery/space_heater, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cpB" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cpC" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Port to Filter"; - on = 0 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cpD" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible, -/obj/item/cigbutt, -/turf/open/floor/plasteel, -/area/atmos) -"cpE" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cpF" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "CO2 Outlet Pump"; - on = 0 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 5 - }, -/area/atmos) -"cpG" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 8; - external_pressure_bound = 0; - frequency = 1441; - id_tag = "co2_out"; - initialize_directions = 1; - internal_pressure_bound = 4000; - on = 1; - pressure_checks = 2; - pump_direction = 0 - }, -/turf/open/floor/engine/co2, -/area/atmos) -"cpH" = ( -/turf/open/floor/engine/co2, -/area/atmos) -"cpI" = ( -/obj/machinery/camera{ - c_tag = "Arrivals Escape Pod 2"; - dir = 8 - }, -/obj/machinery/light/small, -/turf/open/floor/plating, -/area/hallway/secondary/entry) -"cpJ" = ( -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -22 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"cpK" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "" - }, -/turf/open/floor/plasteel/yellow, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cpL" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/open/floor/plasteel/yellow, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cpM" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/yellow/side, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cpN" = ( -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (SOUTHEAST)"; - icon_state = "yellow"; - dir = 6 - }, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cpO" = ( -/turf/open/floor/plating, -/area/maintenance/aft) -"cpP" = ( -/obj/structure/cable{ - icon_state = "2-4"; - tag = "icon-2-8" - }, -/turf/open/floor/plating, -/area/maintenance/aft) -"cpQ" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plating, -/area/maintenance/aft) -"cpR" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/aft) -"cpS" = ( -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/maintenance/aft) -"cpT" = ( -/obj/structure/grille, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/atmos_control) -"cpU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/obj/structure/closet/crate{ - name = "solar pack crate" - }, -/turf/open/floor/plating, -/area/maintenance/atmos_control) -"cpV" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/atmos_control) -"cpW" = ( -/obj/item/storage/backpack/industrial, -/turf/open/floor/plating, -/area/maintenance/atmos_control) -"cpX" = ( -/turf/closed/wall/r_wall, -/area/maintenance/aft) -"cpY" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Storage Room"; - req_access_txt = "32" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/maintenance/aft) -"cpZ" = ( -/obj/structure/disposalpipe/trunk, -/obj/machinery/disposal/bin, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/atmos) -"cqa" = ( -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/atmos) -"cqb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cqc" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ - dir = 1 - }, -/obj/machinery/meter, -/turf/open/floor/plasteel, -/area/atmos) -"cqd" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cqe" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 9 - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel, -/area/atmos) -"cqf" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 6; - initialize_directions = 6 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cqg" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4; - name = "N2 to Pure"; - on = 0 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cqh" = ( -/obj/machinery/computer/atmos_control/tank{ - frequency = 1441; - input_tag = "co2_in"; - name = "Carbon Dioxide Supply Control"; - output_tag = "co2_out"; - sensors = list("co2_sensor" = "Tank") - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 4 - }, -/area/atmos) -"cqi" = ( -/obj/machinery/air_sensor{ - frequency = 1441; - id_tag = "co2_sensor" - }, -/turf/open/floor/engine/co2, -/area/atmos) -"cqj" = ( -/obj/machinery/portable_atmospherics/canister/carbon_dioxide, -/turf/open/floor/engine/co2, -/area/atmos) -"cqk" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/engine/co2, -/area/atmos) -"cql" = ( -/obj/structure/lattice, -/obj/structure/grille, -/turf/open/space, -/area/space) -"cqm" = ( -/turf/closed/wall, -/area/mining_construction) -"cqn" = ( -/turf/closed/wall/r_wall, -/area/engine/engineering) -"cqo" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"cqp" = ( -/obj/machinery/door/airlock/glass_engineering{ - name = "Power Monitoring"; - req_access_txt = "32" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"cqq" = ( -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, -/turf/closed/wall, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cqr" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/yellow, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cqs" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/yellow, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cqt" = ( -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/yellow, -/area/engine/break_room{ - name = "Engineering Hallway" - }) -"cqu" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/storage/belt/utility, -/turf/open/floor/plating, -/area/maintenance/aft) -"cqv" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/aft) -"cqw" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/maintenance/aft) -"cqx" = ( -/obj/machinery/light/small, -/turf/open/floor/plating, -/area/maintenance/aft) -"cqy" = ( -/obj/structure/grille, -/turf/open/floor/plating, -/area/maintenance/aft) -"cqz" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/turf/open/floor/plating, -/area/maintenance/atmos_control) -"cqA" = ( -/obj/structure/grille, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/atmos_control) -"cqB" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/atmos_control) -"cqC" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/landmark{ - name = "blobstart" - }, -/turf/open/floor/plating, -/area/maintenance/aft) -"cqD" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/aft) -"cqE" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/turf/open/floor/plating, -/area/maintenance/aft) -"cqF" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/door/airlock/maintenance{ - name = "Atmospherics Maintenance"; - req_access_txt = "24" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/aft) -"cqG" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/atmos) -"cqH" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel{ - icon_state = "delivery"; - name = "floor" - }, -/area/atmos) -"cqI" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/turf/open/floor/plasteel, -/area/atmos) -"cqJ" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/machinery/meter, -/turf/open/floor/plasteel, -/area/atmos) -"cqK" = ( -/obj/machinery/atmospherics/pipe/manifold/cyan/visible, -/turf/open/floor/plasteel, -/area/atmos) -"cqL" = ( -/obj/machinery/atmospherics/components/trinary/mixer{ - dir = 4; - node1_concentration = 0.8; - node2_concentration = 0.2; - on = 1; - pixel_x = 0; - pixel_y = 0; - target_pressure = 4500 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cqM" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "O2 to Pure"; - on = 0 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cqN" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 1; - filter_type = "co2"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/atmos) -"cqO" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 6 - }, -/area/atmos) -"cqP" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 8; - frequency = 1441; - id = "co2_in"; - pixel_y = 1 - }, -/turf/open/floor/engine/co2, -/area/atmos) -"cqQ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cqR" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cqS" = ( -/obj/structure/closet/secure_closet/miner{ - locked = 0 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cqT" = ( -/obj/machinery/computer/arcade, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"cqU" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/machinery/computer/station_alert, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTHWEST)"; - icon_state = "yellow"; - dir = 9 - }, -/area/engine/engineering) -"cqV" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/engine/engineering) -"cqW" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/item/device/radio/intercom{ - name = "Station Intercom"; - pixel_x = 0; - pixel_y = 24 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/engine/engineering) -"cqX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/camera/autoname, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/engine/engineering) -"cqY" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8"; - tag = "" - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTHEAST)"; - icon_state = "yellow"; - dir = 5 - }, -/area/engine/engineering) -"cqZ" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"cra" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"crb" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering{ - name = "Engine Room"; - req_access_txt = "10" - }, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"crc" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/door/airlock/maintenance{ - name = "Engine Maintenance"; - req_access_txt = "10" - }, -/turf/open/floor/plating, -/area/maintenance/aft) -"crd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"cre" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/obj/machinery/power/apc{ - dir = 8; - name = "Engineering Maintenance APC"; - pixel_x = -25; - pixel_y = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/maintenance/aft) -"crf" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plating, -/area/maintenance/aft) -"crg" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/open/floor/plating, -/area/maintenance/aft) -"crh" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plating, -/area/maintenance/aft) -"cri" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating{ - tag = "icon-platingdmg3"; - icon_state = "platingdmg3" - }, -/area/maintenance/aft) -"crj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/atmos) -"crk" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plasteel{ - icon_state = "delivery"; - name = "floor" - }, -/area/atmos) -"crl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/atmos) -"crm" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/open/floor/plasteel, -/area/atmos) -"crn" = ( -/obj/machinery/atmospherics/components/binary/valve/digital{ - name = "Waste Release" - }, -/turf/open/floor/plasteel, -/area/atmos) -"cro" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/atmos) -"crp" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 9 - }, -/turf/open/floor/plating, -/area/atmos) -"crq" = ( -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/machinery/power/solar{ - id = "portsolar"; - name = "Port Solar Array" - }, -/turf/open/floor/plasteel/airless/solarpanel, -/area/solar/auxstarboard{ - name = "Auxiliary Solar Array" - }) -"crr" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/solar/auxstarboard{ - name = "Auxiliary Solar Array" - }) -"crs" = ( -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/power/solar{ - id = "portsolar"; - name = "Port Solar Array" - }, -/turf/open/floor/plasteel/airless/solarpanel, -/area/solar/auxstarboard{ - name = "Auxiliary Solar Array" - }) -"crt" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cru" = ( -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"crv" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"crw" = ( -/obj/machinery/vending/cola, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"crx" = ( -/obj/machinery/computer/monitor{ - name = "primary power monitoring console" - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (SOUTHWEST)"; - icon_state = "yellow"; - dir = 10 - }, -/area/engine/engineering) -"cry" = ( -/obj/structure/chair/office/dark{ - dir = 8 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8"; - tag = "" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8"; - tag = "" - }, -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) -"crz" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 4; - name = "regular air vent"; - on = 1 - }, -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) -"crA" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8"; - d1 = 4; - d2 = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) -"crB" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8"; - d1 = 4; - d2 = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - tag = "icon-intact (EAST)"; - icon_state = "intact"; - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (SOUTHEAST)"; - icon_state = "yellow"; - dir = 6 - }, -/area/engine/engineering) -"crC" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8"; - d1 = 4; - d2 = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"crD" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8"; - d1 = 4; - d2 = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/glass_engineering{ - name = "Power Monitoring"; - req_access_txt = "32" - }, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"crE" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8"; - d1 = 4; - d2 = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTHWEST)"; - icon_state = "yellow"; - dir = 9 - }, -/area/engine/engineering) -"crF" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8"; - d1 = 4; - d2 = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/engine/engineering) -"crG" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8"; - d1 = 4; - d2 = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/rack, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/engine/engineering) -"crH" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8"; - d1 = 4; - d2 = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/rack, -/obj/item/clothing/head/welding, -/obj/item/clothing/glasses/welding, -/obj/item/clothing/glasses/welding, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/engine/engineering) -"crI" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8"; - d1 = 4; - d2 = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/airalarm{ - frequency = 1439; - locked = 0; - pixel_y = 23 - }, -/obj/structure/rack, -/obj/item/storage/belt/utility, -/turf/open/floor/plasteel/yellow/side{ - dir = 5 - }, -/area/engine/engineering) -"crJ" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8"; - d1 = 4; - d2 = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/engine/engineering) -"crK" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"crL" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/engine/engineering) -"crM" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8"; - tag = "" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/engine/engineering) -"crN" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/obj/structure/chair/office/dark{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/engine/engineering) -"crO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/computer/station_alert, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"crP" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/engine/engineering) -"crQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/closet/secure_closet/engineering_personal, -/turf/open/floor/plasteel/yellow/side{ - dir = 9 - }, -/area/engine/engineering) -"crR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/closet/secure_closet/engineering_personal, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/engine/engineering) -"crS" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/engine/engineering) -"crT" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/obj/structure/closet/wardrobe/engineering_yellow, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTH)"; - icon_state = "yellow"; - dir = 1 - }, -/area/engine/engineering) -"crU" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (NORTHEAST)"; - icon_state = "yellow"; - dir = 5 - }, -/area/engine/engineering) -"crV" = ( -/obj/machinery/power/port_gen/pacman, -/turf/open/floor/plasteel{ - tag = "icon-vault (WEST)"; - icon_state = "vault"; - dir = 8 - }, -/area/engine/engineering) -"crW" = ( -/obj/machinery/portable_atmospherics/scrubber/huge/movable, -/turf/open/floor/plasteel{ - tag = "icon-vault (WEST)"; - icon_state = "vault"; - dir = 8 - }, -/area/engine/engineering) -"crX" = ( -/obj/machinery/portable_atmospherics/canister/toxins, -/turf/open/floor/plasteel{ - tag = "icon-vault (WEST)"; - icon_state = "vault"; - dir = 8 - }, -/area/engine/engineering) -"crY" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/engineering) -"crZ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/open/floor/plating, -/area/maintenance/aft) -"csa" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/aft) -"csb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/maintenance/aft) -"csc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/atmos) -"csd" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plasteel{ - icon_state = "delivery"; - name = "floor" - }, -/area/atmos) -"cse" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/atmos) -"csf" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 2; - filter_type = "n2"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/atmos) -"csg" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/atmos) -"csh" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/atmos) -"csi" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/solar/auxstarboard{ - name = "Auxiliary Solar Array" - }) -"csj" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/mining_construction) -"csk" = ( -/obj/machinery/vending/snack, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"csl" = ( -/turf/closed/wall/r_wall, -/area/engine/engine_smes) -"csm" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/engine/engine_smes) -"csn" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/engine/engine_smes) -"cso" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/airlock/glass_engineering{ - name = "Power Monitoring"; - req_access_txt = "32" - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/engine_smes) -"csp" = ( -/turf/closed/wall, -/area/engine/engine_smes) -"csq" = ( -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -28 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (WEST)"; - icon_state = "yellow"; - dir = 8 - }, -/area/engine/engineering) -"csr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/engine/engineering) -"css" = ( -/turf/open/floor/plasteel, -/area/engine/engineering) -"cst" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4"; - d1 = 1; - d2 = 4 - }, -/obj/structure/closet/secure_closet/engineering_personal, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"csu" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8"; - d1 = 4; - d2 = 8 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"csv" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/engine/engineering) -"csw" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"csx" = ( -/obj/machinery/computer/monitor, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"csy" = ( -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/engine/engineering) -"csz" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"csA" = ( -/obj/machinery/door/poddoor{ - id = "Secure Storage"; - name = "secure storage" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"csB" = ( -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/engineering) -"csC" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/structure/tank_dispenser, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/engineering) -"csD" = ( -/obj/machinery/portable_atmospherics/scrubber, -/obj/machinery/camera/autoname{ - tag = "icon-camera (EAST)"; - icon_state = "camera"; - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/atmos) -"csE" = ( -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/plasteel{ - icon_state = "delivery"; - name = "floor" - }, -/area/atmos) -"csF" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible, -/obj/machinery/portable_atmospherics/pump, -/turf/open/floor/plasteel, -/area/atmos) -"csG" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/open/floor/plasteel, -/area/atmos) -"csH" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/turf/open/floor/plasteel, -/area/atmos) -"csI" = ( -/obj/machinery/atmospherics/components/trinary/filter{ - dir = 4; - filter_type = "o2"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/atmos) -"csJ" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/atmos) -"csK" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4; - initialize_directions = 12 - }, -/turf/open/floor/plasteel, -/area/atmos) -"csL" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/atmos) -"csM" = ( -/obj/machinery/light, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"csN" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; - pixel_x = 0; - pixel_y = 32 - }, -/turf/open/floor/plating, -/area/mining_construction) -"csO" = ( -/obj/structure/closet/toolcloset, -/turf/open/floor/plasteel/yellow/side{ - dir = 9 - }, -/area/mining_construction) -"csP" = ( -/obj/structure/closet/toolcloset, -/turf/open/floor/plasteel/yellow/side{ - dir = 1 - }, -/area/mining_construction) -"csQ" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plasteel/yellow/side{ - dir = 5 - }, -/area/mining_construction) -"csR" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"csS" = ( -/obj/structure/table, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"csT" = ( -/obj/machinery/power/apc{ - dir = 8; - name = "SMES Room APC"; - pixel_x = -24; - pixel_y = 0 - }, -/obj/structure/cable{ - tag = "icon-0-4"; - icon_state = "0-4" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/engine_smes) -"csU" = ( -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/engine_smes) -"csV" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/engine_smes) -"csW" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/engine_smes) -"csX" = ( -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/engine_smes) -"csY" = ( -/obj/structure/table, -/obj/item/device/flashlight, -/turf/open/floor/plasteel/yellow/side{ - dir = 9 - }, -/area/engine/engineering) -"csZ" = ( -/turf/open/floor/plasteel/yellow/side{ - dir = 1 - }, -/area/engine/engineering) -"cta" = ( -/turf/open/floor/plasteel/yellow/corner{ - tag = "icon-yellowcorner (NORTH)"; - icon_state = "yellowcorner"; - dir = 1 - }, -/area/engine/engineering) -"ctb" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 4; - name = "regular air scrubber"; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"ctc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (EAST)"; - icon_state = "yellow"; - dir = 4 - }, -/area/engine/engineering) -"ctd" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/engineering{ - name = "Engine Room"; - req_access_txt = "10" - }, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"cte" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"ctf" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"ctg" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/effect/landmark/start{ - name = "Station Engineer" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"cth" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"cti" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/engine/engineering) -"ctj" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8; - name = "regular air scrubber"; - on = 1; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"ctk" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel, -/area/engine/engineering) -"ctl" = ( -/obj/machinery/shieldgen, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/engineering) -"ctm" = ( -/obj/machinery/portable_atmospherics/pump, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/atmos) -"ctn" = ( -/obj/machinery/portable_atmospherics/pump, -/turf/open/floor/plasteel{ - icon_state = "delivery"; - name = "floor" - }, -/area/atmos) -"cto" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible, -/obj/machinery/portable_atmospherics/pump, -/turf/open/floor/plasteel/red/side{ - dir = 10 - }, -/area/atmos) -"ctp" = ( -/obj/machinery/computer/atmos_control/tank{ - frequency = 1441; - input_tag = "n2_in"; - name = "Nitrogen Supply Control"; - output_tag = "n2_out"; - sensors = list("n2_sensor" = "Tank") - }, -/turf/open/floor/plasteel/red/side, -/area/atmos) -"ctq" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "N2 Outlet Pump"; - on = 1 - }, -/turf/open/floor/plasteel/red/side{ - dir = 6 - }, -/area/atmos) -"ctr" = ( -/obj/machinery/light, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/turf/open/floor/plasteel, -/area/atmos) -"cts" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/open/floor/plasteel/blue/side{ - dir = 10 - }, -/area/atmos) -"ctt" = ( -/obj/machinery/computer/atmos_control/tank{ - frequency = 1441; - input_tag = "o2_in"; - name = "Oxygen Supply Control"; - output_tag = "o2_out"; - sensors = list("o2_sensor" = "Tank") - }, -/turf/open/floor/plasteel/blue/side{ - dir = 0 - }, -/area/atmos) -"ctu" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "O2 Outlet Pump"; - on = 1 - }, -/turf/open/floor/plasteel/blue/side{ - dir = 6 - }, -/area/atmos) -"ctv" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/open/floor/plasteel/arrival{ - dir = 10 - }, -/area/atmos) -"ctw" = ( -/obj/machinery/computer/atmos_control/tank{ - frequency = 1441; - input_tag = "air_in"; - name = "Mixed Air Supply Control"; - output_tag = "air_out"; - sensors = list("air_sensor" = "Tank") - }, -/turf/open/floor/plasteel/arrival, -/area/atmos) -"ctx" = ( -/obj/machinery/camera{ - c_tag = "Atmospherics South East"; - dir = 1 - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "Air Outlet Pump"; - on = 1 - }, -/turf/open/floor/plasteel/arrival{ - dir = 6 - }, -/area/atmos) -"cty" = ( -/obj/machinery/door/airlock/external{ - name = "Atmospherics External Airlock"; - req_access_txt = "24" - }, -/turf/open/floor/noslip, -/area/atmos) -"ctz" = ( -/turf/open/floor/noslip, -/area/atmos) -"ctA" = ( -/obj/machinery/camera{ - c_tag = "Auxillary Mining Base"; - dir = 8; - network = list("SS13","AuxBase") - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"ctB" = ( -/obj/docking_port/mobile/auxillary_base{ - dheight = 4; - dir = 4; - dwidth = 4; - height = 9; - width = 9 - }, -/obj/machinery/bluespace_beacon, -/obj/machinery/computer/auxillary_base{ - pixel_y = 0 - }, -/turf/closed/wall, -/area/shuttle/auxillary_base) -"ctC" = ( -/obj/structure/mining_shuttle_beacon{ - dir = 4 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"ctD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/docking_port/stationary/public_mining_dock{ - dir = 8 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"ctE" = ( -/obj/machinery/door/airlock/external{ - cyclelinkeddir = 1; - name = "Construction Zone"; - req_access = null; - req_access_txt = "0"; - req_one_access_txt = "0" - }, -/turf/open/floor/plating, -/area/mining_construction) -"ctF" = ( -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/mining_construction) -"ctG" = ( -/turf/open/floor/plasteel, -/area/mining_construction) -"ctH" = ( -/obj/machinery/airalarm{ - dir = 8; - icon_state = "alarm0"; - pixel_x = 24 - }, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 4 - }, -/obj/machinery/camera{ - c_tag = "Auxillary Base Construction"; - dir = 8 - }, -/obj/machinery/computer/camera_advanced/base_construction, -/turf/open/floor/plasteel/yellow/side{ - dir = 4 - }, -/area/mining_construction) -"ctI" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/engine_smes) -"ctJ" = ( -/obj/machinery/power/smes/engineering, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/turf/open/floor/plasteel{ - tag = "icon-vault (WEST)"; - icon_state = "vault"; - dir = 8 - }, -/area/engine/engine_smes) -"ctK" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/engine_smes) -"ctL" = ( -/obj/machinery/power/smes/engineering, -/obj/structure/cable{ - tag = "icon-0-4"; - icon_state = "0-4" - }, -/turf/open/floor/plasteel{ - tag = "icon-vault (WEST)"; - icon_state = "vault"; - dir = 8 - }, -/area/engine/engine_smes) -"ctM" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/engine_smes) -"ctN" = ( -/obj/machinery/power/apc{ - cell_type = 10000; - dir = 8; - name = "Engine Room APC"; - pixel_x = -26; - pixel_y = 0 - }, -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (WEST)"; - icon_state = "yellow"; - dir = 8 - }, -/area/engine/engineering) -"ctO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4"; - tag = "" - }, -/obj/structure/table, -/obj/item/storage/toolbox, -/obj/item/storage/toolbox, -/turf/open/floor/plasteel, -/area/engine/engineering) -"ctP" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"ctQ" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (EAST)"; - icon_state = "yellow"; - dir = 4 - }, -/area/engine/engineering) -"ctR" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/engine/engineering) -"ctS" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/closet/radiation, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"ctT" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8"; - tag = "" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 1; - name = "regular air scrubber"; - on = 1 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"ctU" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"ctV" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/table, -/obj/item/clothing/gloves/color/yellow, -/obj/item/reagent_containers/pill/charcoal, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"ctW" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/table, -/obj/item/storage/box/lights/mixed, -/obj/machinery/camera/autoname{ - tag = "icon-camera (EAST)"; - icon_state = "camera"; - dir = 4 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/engine/engineering) -"ctX" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"ctY" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/engine/engineering) -"ctZ" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/closet/secure_closet/engineering_electrical, -/obj/machinery/button/door{ - desc = "A remote control-switch for secure storage."; - id = "Secure Storage"; - name = "Engineering Secure Storage"; - pixel_x = 24; - pixel_y = 0; - req_access_txt = "11" - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (EAST)"; - icon_state = "yellow"; - dir = 4 - }, -/area/engine/engineering) -"cua" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/rods{ - amount = 50 - }, -/obj/item/stack/sheet/glass{ - amount = 50 - }, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/stock_parts/cell/high{ - charge = 100; - maxcharge = 15000 - }, -/obj/item/stack/sheet/mineral/plasma{ - amount = 30 - }, -/obj/item/device/gps, -/obj/machinery/button/door{ - desc = "A remote control-switch for secure storage."; - id = "Secure Storage"; - name = "Engineering Secure Storage"; - pixel_x = -24; - pixel_y = 0; - req_access_txt = "11" - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/engineering) -"cub" = ( -/obj/machinery/shieldgen, -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHWEST)"; - icon_state = "camera"; - dir = 9 - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/engineering) -"cuc" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/closed/wall/r_wall, -/area/atmos) -"cud" = ( -/obj/structure/grille, -/obj/machinery/atmospherics/pipe/simple/yellow/visible, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/atmos) -"cue" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/turf/open/floor/plating, -/area/atmos) -"cuf" = ( -/obj/structure/grille, -/obj/machinery/atmospherics/pipe/simple/green/visible, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/atmos) -"cug" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/atmos) -"cuh" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/closed/wall/r_wall, -/area/atmos) -"cui" = ( -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/space) -"cuj" = ( -/turf/closed/wall/r_wall, -/area/maintenance/auxsolarstarboard{ - name = "Auxiliary Solar Control" - }) -"cuk" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating/airless, -/area/maintenance/auxsolarstarboard{ - name = "Auxiliary Solar Control" - }) -"cul" = ( -/obj/docking_port/stationary{ - dheight = 9; - dir = 2; - dwidth = 5; - height = 24; - id = "syndicate_southmaint"; - name = "south maintenance airlock"; - turf_type = /turf/open/space; - width = 18 - }, -/turf/open/space, -/area/space) -"cum" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cun" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - on = 1 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/mining_construction) -"cuo" = ( -/obj/structure/rack{ - dir = 4 - }, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/stack/cable_coil, -/obj/item/stack/cable_coil, -/obj/item/wallframe/camera, -/obj/item/wallframe/camera, -/obj/item/wallframe/camera, -/obj/item/wallframe/camera, -/obj/item/device/assault_pod/mining, -/obj/machinery/computer/security/telescreen{ - desc = "Used for the Auxillary Mining Base."; - dir = 8; - name = "Auxillary Base Monitor"; - network = list("AuxBase"); - pixel_x = 28 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 4 - }, -/area/mining_construction) -"cup" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/engine_smes) -"cuq" = ( -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable/yellow{ - d2 = 4; - icon_state = "0-4" - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/engine_smes) -"cur" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 8; - icon_state = "1-8"; - tag = "" - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/engine_smes) -"cus" = ( -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable/yellow{ - d2 = 8; - icon_state = "0-8" - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/engine_smes) -"cut" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/structure/table, -/obj/item/folder/yellow, -/obj/item/clothing/ears/earmuffs{ - pixel_x = -3; - pixel_y = -2 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (WEST)"; - icon_state = "yellow"; - dir = 8 - }, -/area/engine/engineering) -"cuu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/structure/table, -/obj/item/storage/toolbox/electrical, -/turf/open/floor/plasteel, -/area/engine/engineering) -"cuv" = ( -/obj/effect/landmark/start{ - name = "Station Engineer" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"cuw" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/table, -/obj/item/electronics/apc, -/obj/item/electronics/apc, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (EAST)"; - icon_state = "yellow"; - dir = 4 - }, -/area/engine/engineering) -"cux" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8"; - d1 = 4; - d2 = 8 - }, -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/engine/engineering) -"cuy" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8"; - d1 = 4; - d2 = 8 - }, -/obj/machinery/light, -/obj/structure/closet/radiation, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"cuz" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8"; - d1 = 4; - d2 = 8 - }, -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) -"cuA" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4"; - d1 = 1; - d2 = 4 - }, -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) -"cuB" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8"; - d1 = 4; - d2 = 8 - }, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the singularity chamber."; - dir = 2; - layer = 4; - name = "Engine Containment Telescreen"; - network = list("Singularity"); - pixel_x = 0; - pixel_y = -30 - }, -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) -"cuC" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8"; - d1 = 4; - d2 = 8 - }, -/obj/machinery/light, -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"cuD" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/table, -/obj/item/book/manual/wiki/engineering_construction{ - pixel_x = 6 - }, -/obj/item/book/manual/wiki/engineering_guide, -/obj/item/book/manual/wiki/engineering_hacking{ - pixel_x = -6 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/engine/engineering) -"cuE" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/structure/closet/secure_closet/engineering_welding, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (EAST)"; - icon_state = "yellow"; - dir = 4 - }, -/area/engine/engineering) -"cuF" = ( -/obj/machinery/field/generator{ - anchored = 0; - state = 2 - }, -/obj/machinery/camera/autoname{ - tag = "icon-camera (EAST)"; - icon_state = "camera"; - dir = 4 - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/engineering) -"cuG" = ( -/obj/machinery/field/generator{ - anchored = 0; - state = 2 - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/engineering) -"cuH" = ( -/obj/machinery/the_singularitygen{ - anchored = 0 - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/engineering) -"cuI" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/open/space, -/area/space/nearstation) -"cuJ" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/yellow/visible, -/turf/open/space, -/area/space/nearstation) -"cuK" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 1; - frequency = 1441; - id = "waste_out" - }, -/turf/open/floor/plating/airless, -/area/atmos) -"cuL" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/open/space, -/area/space/nearstation) -"cuM" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "0-2"; - pixel_y = 1; - d2 = 2 - }, -/turf/open/space, -/area/space) -"cuN" = ( -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/machinery/power/smes, -/turf/open/floor/plating, -/area/maintenance/auxsolarstarboard{ - name = "Auxiliary Solar Control" - }) -"cuO" = ( -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/power/terminal{ - tag = "icon-term (WEST)"; - icon_state = "term"; - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/auxsolarstarboard{ - name = "Auxiliary Solar Control" - }) -"cuP" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; - pixel_x = 32; - pixel_y = 0 - }, -/obj/item/stack/cable_coil, -/turf/open/floor/plating, -/area/maintenance/auxsolarstarboard{ - name = "Auxiliary Solar Control" - }) -"cuQ" = ( -/obj/structure/cable, -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/solar/auxstarboard{ - name = "Auxiliary Solar Array" - }) -"cuR" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/space, -/area/solar/auxstarboard{ - name = "Auxiliary Solar Array" - }) -"cuS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/yellow/side{ - dir = 8 - }, -/area/mining_construction) -"cuT" = ( -/obj/structure/table, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/glass{ - amount = 50 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 4 - }, -/area/mining_construction) -"cuU" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/engine_smes) -"cuV" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/engine/engine_smes) -"cuW" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/structure/table, -/obj/item/stack/sheet/glass{ - amount = 50 - }, -/obj/item/stack/sheet/glass{ - amount = 50 - }, -/obj/item/stack/sheet/glass{ - amount = 50 - }, -/obj/item/stack/rods{ - amount = 50 - }, -/obj/item/stack/rods{ - amount = 50 - }, -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (WEST)"; - icon_state = "yellow"; - dir = 8 - }, -/area/engine/engineering) -"cuX" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/obj/structure/table, -/obj/item/storage/toolbox/emergency, -/turf/open/floor/plasteel, -/area/engine/engineering) -"cuY" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/table, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (EAST)"; - icon_state = "yellow"; - dir = 4 - }, -/area/engine/engineering) -"cuZ" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/button/door{ - id = "Singularity"; - name = "Shutters Control"; - pixel_x = -25; - pixel_y = 0; - req_access_txt = "11" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "Singularity"; - name = "radiation shutters" - }, -/obj/machinery/door/airlock/engineering{ - name = "Engine Room"; - req_access_txt = "10" - }, -/turf/open/floor/plating{ - dir = 1; - icon_state = "delivery" - }, -/area/engine/engineering) -"cva" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/table, -/obj/item/book/manual/engineering_particle_accelerator{ - pixel_x = 3 - }, -/obj/item/book/manual/engineering_singularity_safety{ - pixel_x = -3 - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (WEST)"; - icon_state = "yellow"; - dir = 8 - }, -/area/engine/engineering) -"cvb" = ( -/obj/structure/table, -/obj/item/stack/sheet/rglass{ - amount = 50 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"cvc" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - tag = "icon-vent_map (NORTH)"; - name = "regular air vent"; - icon_state = "vent_map"; - dir = 1; - on = 1 - }, -/obj/effect/landmark{ - name = "xeno_spawn"; - pixel_x = -1 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"cvd" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/structure/closet/toolcloset, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (EAST)"; - icon_state = "yellow"; - dir = 4 - }, -/area/engine/engineering) -"cve" = ( -/obj/machinery/field/generator{ - anchored = 0; - state = 2 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/engineering) -"cvf" = ( -/obj/machinery/atmospherics/pipe/simple, -/obj/structure/grille, -/obj/machinery/meter, -/turf/closed/wall/r_wall, -/area/atmos) -"cvg" = ( -/obj/machinery/atmospherics/pipe/simple, -/obj/structure/grille, -/obj/machinery/meter{ - name = "Mixed Air Tank In" - }, -/turf/closed/wall/r_wall, -/area/atmos) -"cvh" = ( -/obj/machinery/atmospherics/pipe/simple, -/obj/structure/grille, -/obj/machinery/meter{ - name = "Mixed Air Tank Out" - }, -/turf/closed/wall/r_wall, -/area/atmos) -"cvi" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4"; - tag = "" - }, -/turf/open/space, -/area/space) -"cvj" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/space, -/area/space) -"cvk" = ( -/obj/machinery/door/airlock/external{ - cyclelinkeddir = 8; - name = "Solar Maintenance"; - req_access = null; - req_access_txt = "10; 13" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/auxsolarstarboard{ - name = "Auxiliary Solar Control" - }) -"cvl" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/auxsolarstarboard{ - name = "Auxiliary Solar Control" - }) -"cvm" = ( -/obj/machinery/door/airlock/external{ - cyclelinkeddir = 4; - name = "Solar Maintenance"; - req_access = null; - req_access_txt = "10; 13" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/auxsolarstarboard{ - name = "Auxiliary Solar Control" - }) -"cvn" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8"; - tag = "" - }, -/turf/open/floor/plating, -/area/maintenance/auxsolarstarboard{ - name = "Auxiliary Solar Control" - }) -"cvo" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "" - }, -/turf/open/floor/plating, -/area/maintenance/auxsolarstarboard{ - name = "Auxiliary Solar Control" - }) -"cvp" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/open/floor/plating, -/area/maintenance/auxsolarstarboard{ - name = "Auxiliary Solar Control" - }) -"cvq" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/external{ - cyclelinkeddir = 8; - name = "Solar Maintenance"; - req_access = null; - req_access_txt = "10; 13" - }, -/turf/open/floor/plating, -/area/maintenance/auxsolarstarboard{ - name = "Auxiliary Solar Control" - }) -"cvr" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/airlock/external{ - cyclelinkeddir = 4; - name = "Solar Maintenance"; - req_access = null; - req_access_txt = "10; 13" - }, -/turf/open/floor/plating, -/area/maintenance/auxsolarstarboard{ - name = "Auxiliary Solar Control" - }) -"cvs" = ( -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/maintenance/auxsolarstarboard{ - name = "Auxiliary Solar Control" - }) -"cvt" = ( -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/solar/auxstarboard{ - name = "Auxiliary Solar Array" - }) -"cvu" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/turf/open/space, -/area/solar/auxstarboard{ - name = "Auxiliary Solar Array" - }) -"cvv" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/space, -/area/solar/auxstarboard{ - name = "Auxiliary Solar Array" - }) -"cvw" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8"; - tag = "" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8"; - tag = "" - }, -/turf/open/space, -/area/solar/auxstarboard{ - name = "Auxiliary Solar Array" - }) -"cvx" = ( -/obj/structure/lattice/catwalk, -/obj/item/stack/cable_coil, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/space, -/area/solar/auxstarboard{ - name = "Auxiliary Solar Array" - }) -"cvy" = ( -/obj/machinery/power/tracker, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/turf/open/floor/plasteel/airless/solarpanel, -/area/solar/auxstarboard{ - name = "Auxiliary Solar Array" - }) -"cvz" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/open/floor/plasteel, -/area/mining_construction) -"cvA" = ( -/obj/structure/table, -/obj/item/stack/sheet/plasteel{ - amount = 10 - }, -/obj/item/stack/rods{ - amount = 50 - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 4 - }, -/area/mining_construction) -"cvB" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"cvC" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0; - tag = "" - }, -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/engine/engine_smes) -"cvD" = ( -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/engine_smes) -"cvE" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 8; - icon_state = "1-8"; - tag = "" - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/engine_smes) -"cvF" = ( -/obj/structure/table, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (WEST)"; - icon_state = "yellow"; - dir = 8 - }, -/area/engine/engineering) -"cvG" = ( -/obj/structure/table, -/obj/item/storage/toolbox/mechanical, -/turf/open/floor/plasteel, -/area/engine/engineering) -"cvH" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/table, -/obj/item/electronics/firealarm, -/obj/item/stack/cable_coil{ - pixel_x = 5 - }, -/obj/item/stack/cable_coil, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (EAST)"; - icon_state = "yellow"; - dir = 4 - }, -/area/engine/engineering) -"cvI" = ( -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/engine/engineering) -"cvJ" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/engine/engineering) -"cvK" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/engine/engineering) -"cvL" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/table, -/obj/item/airlock_painter, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (WEST)"; - icon_state = "yellow"; - dir = 8 - }, -/area/engine/engineering) -"cvM" = ( -/obj/structure/table, -/obj/item/stack/sheet/glass{ - amount = 50 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"cvN" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/structure/table, -/obj/item/wrench, -/obj/item/crowbar/red, -/obj/item/storage/belt/utility, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (EAST)"; - icon_state = "yellow"; - dir = 4 - }, -/area/engine/engineering) -"cvO" = ( -/obj/machinery/power/emitter, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/engineering) -"cvP" = ( -/obj/structure/closet/crate, -/obj/machinery/power/rad_collector, -/obj/machinery/power/rad_collector, -/obj/machinery/power/rad_collector, -/obj/machinery/power/rad_collector, -/obj/machinery/power/rad_collector, -/obj/machinery/power/rad_collector, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/engine/engineering) -"cvQ" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 1; - frequency = 1441; - id = "n2_in" - }, -/turf/open/floor/engine/n2, -/area/atmos) -"cvR" = ( -/obj/machinery/air_sensor{ - frequency = 1441; - id_tag = "n2_sensor" - }, -/turf/open/floor/engine/n2, -/area/atmos) -"cvS" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 1; - external_pressure_bound = 0; - frequency = 1441; - id_tag = "n2_out"; - initialize_directions = 1; - internal_pressure_bound = 4000; - on = 1; - pressure_checks = 2; - pump_direction = 0 - }, -/turf/open/floor/engine/n2, -/area/atmos) -"cvT" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 1; - frequency = 1441; - id = "o2_in" - }, -/turf/open/floor/engine/o2, -/area/atmos) -"cvU" = ( -/obj/machinery/air_sensor{ - frequency = 1441; - id_tag = "o2_sensor" - }, -/turf/open/floor/engine/o2, -/area/atmos) -"cvV" = ( -/obj/machinery/atmospherics/components/unary/vent_pump{ - dir = 1; - external_pressure_bound = 0; - frequency = 1441; - id_tag = "o2_out"; - initialize_directions = 1; - internal_pressure_bound = 4000; - on = 1; - pressure_checks = 2; - pump_direction = 0 - }, -/turf/open/floor/engine/o2, -/area/atmos) -"cvW" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 1; - frequency = 1441; - id = "air_in" - }, -/turf/open/floor/engine/air, -/area/atmos) -"cvX" = ( -/obj/machinery/air_sensor{ - frequency = 1441; - id_tag = "air_sensor" - }, -/turf/open/floor/engine/air, -/area/atmos) -"cvY" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume{ - dir = 1; - external_pressure_bound = 0; - frequency = 1441; - icon_state = "vent_map"; - id_tag = "air_out"; - internal_pressure_bound = 2000; - on = 1; - pressure_checks = 2; - pump_direction = 0 - }, -/turf/open/floor/engine/air, -/area/atmos) -"cvZ" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/turf/open/space, -/area/space) -"cwa" = ( -/obj/machinery/power/apc{ - dir = 8; - name = "Aft Port Solar APC"; - pixel_x = -23; - pixel_y = 2 - }, -/obj/machinery/camera{ - c_tag = "Aft Port Solar Control"; - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/maintenance/auxsolarstarboard{ - name = "Auxiliary Solar Control" - }) -"cwb" = ( -/turf/open/floor/plating, -/area/maintenance/auxsolarstarboard{ - name = "Auxiliary Solar Control" - }) -"cwc" = ( -/obj/machinery/power/solar_control{ - id = "portsolar"; - name = "Aft Port Solar Control"; - track = 0 - }, -/obj/structure/cable, -/turf/open/floor/plating, -/area/maintenance/auxsolarstarboard{ - name = "Auxiliary Solar Control" - }) -"cwd" = ( -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/solar/auxstarboard{ - name = "Auxiliary Solar Array" - }) -"cwe" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cwf" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cwg" = ( -/obj/machinery/portable_atmospherics/canister/air, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) -"cwh" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/yellow/side{ - dir = 10 - }, -/area/mining_construction) -"cwi" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/yellow/side, -/area/mining_construction) -"cwj" = ( -/obj/structure/table, -/obj/item/storage/box/lights/mixed, -/obj/item/pipe_dispenser, -/obj/machinery/button/door{ - id = "aux_base_shutters"; - name = "Public Shutters Control"; - pixel_x = 24; - pixel_y = 0; - req_access_txt = "0"; - req_one_access_txt = "32;47;48" - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 6 - }, -/area/mining_construction) -"cwk" = ( -/obj/structure/table, -/obj/item/stack/sheet/plasteel{ - amount = 10 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 10 - }, -/area/engine/engineering) -"cwl" = ( -/obj/structure/table, -/obj/item/clothing/gloves/color/yellow, -/turf/open/floor/plasteel, -/area/engine/engineering) -"cwm" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel, -/area/engine/engineering) -"cwn" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/button/door{ - id = "Singularity"; - name = "Shutters Control"; - pixel_x = 25; - pixel_y = 0; - req_access_txt = "11" - }, -/obj/structure/closet/radiation, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (EAST)"; - icon_state = "yellow"; - dir = 4 - }, -/area/engine/engineering) -"cwo" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4"; - tag = "" - }, -/obj/machinery/button/door{ - id = "Singularity"; - name = "Shutters Control"; - pixel_x = -25; - pixel_y = 0; - req_access_txt = "11" - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/engine/engineering) -"cwp" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 8; - icon_state = "1-8"; - tag = "" - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/engine/engineering) -"cwq" = ( -/obj/structure/particle_accelerator/end_cap, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/engine/engineering) -"cwr" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/button/door{ - id = "Singularity"; - name = "Shutters Control"; - pixel_x = 25; - pixel_y = 0; - req_access_txt = "11" - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/engine/engineering) -"cws" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/button/door{ - id = "Singularity"; - name = "Shutters Control"; - pixel_x = -25; - pixel_y = 0; - req_access_txt = "11" - }, -/obj/structure/closet/radiation, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (WEST)"; - icon_state = "yellow"; - dir = 8 - }, -/area/engine/engineering) -"cwt" = ( -/obj/structure/table, -/obj/item/stack/sheet/metal{ - amount = 50 - }, -/obj/item/stack/rods{ - amount = 50 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"cwu" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/structure/table, -/obj/item/clothing/gloves/color/yellow, -/obj/item/storage/firstaid/fire, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (EAST)"; - icon_state = "yellow"; - dir = 4 - }, -/area/engine/engineering) -"cwv" = ( -/turf/open/floor/engine/n2, -/area/atmos) -"cww" = ( -/obj/machinery/portable_atmospherics/canister/nitrogen, -/turf/open/floor/engine/n2, -/area/atmos) -"cwx" = ( -/turf/open/floor/engine/o2, -/area/atmos) -"cwy" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/engine/o2, -/area/atmos) -"cwz" = ( -/obj/effect/landmark{ - name = "xeno_spawn"; - pixel_x = -1 - }, -/turf/open/floor/engine/air, -/area/atmos) -"cwA" = ( -/obj/machinery/portable_atmospherics/canister/air, -/obj/effect/landmark/event_spawn, -/turf/open/floor/engine/air, -/area/atmos) -"cwB" = ( -/turf/open/floor/engine/air, -/area/atmos) -"cwC" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/solar/auxstarboard{ - name = "Auxiliary Solar Array" - }) -"cwD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/poddoor/shutters{ - id = "aux_base_shutters"; - name = "Auxillary Base Shutters" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/mining_construction) -"cwE" = ( -/obj/machinery/door/airlock/engineering{ - cyclelinkeddir = 1; - name = "Auxillary Base Construction"; - req_access_txt = "0"; - req_one_access_txt = "32;47;48" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/mining_construction) -"cwF" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"cwG" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (WEST)"; - icon_state = "yellow"; - dir = 8 - }, -/area/engine/engineering) -"cwH" = ( -/obj/structure/table, -/obj/item/book/manual/wiki/engineering_guide, -/turf/open/floor/plasteel, -/area/engine/engineering) -"cwI" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (EAST)"; - icon_state = "yellow"; - dir = 4 - }, -/area/engine/engineering) -"cwJ" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "Singularity"; - name = "radiation shutters" - }, -/obj/machinery/door/airlock/engineering{ - name = "Engine Room"; - req_access_txt = "10" - }, -/turf/open/floor/plating{ - dir = 1; - icon_state = "delivery" - }, -/area/engine/engineering) -"cwK" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/engine/engineering) -"cwL" = ( -/obj/structure/cable/yellow, -/obj/machinery/particle_accelerator/control_box, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/engine/engineering) -"cwM" = ( -/obj/structure/particle_accelerator/fuel_chamber, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/engine/engineering) -"cwN" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (WEST)"; - icon_state = "yellow"; - dir = 8 - }, -/area/engine/engineering) -"cwO" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (EAST)"; - icon_state = "yellow"; - dir = 4 - }, -/area/engine/engineering) -"cwP" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"cwQ" = ( -/obj/machinery/light/small, -/turf/open/floor/engine/n2, -/area/atmos) -"cwR" = ( -/obj/machinery/light/small, -/turf/open/floor/engine/o2, -/area/atmos) -"cwS" = ( -/obj/machinery/light/small, -/turf/open/floor/engine/air, -/area/atmos) -"cwT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - req_access_txt = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"cwU" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2; - initialize_directions = 11 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"cwV" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"cwW" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"cwX" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTHEAST)"; - icon_state = "camera"; - dir = 5 - }, -/obj/structure/closet/firecloset, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"cwY" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/yellow/side{ - dir = 10 - }, -/area/engine/engineering) -"cwZ" = ( -/turf/open/floor/plasteel/yellow/side, -/area/engine/engineering) -"cxa" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (SOUTHEAST)"; - icon_state = "yellow"; - dir = 6 - }, -/area/engine/engineering) -"cxb" = ( -/obj/structure/particle_accelerator/power_box, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/engine/engineering) -"cxc" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (SOUTHWEST)"; - icon_state = "yellow"; - dir = 10 - }, -/area/engine/engineering) -"cxd" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/turf/open/floor/plasteel/yellow/side{ - tag = "icon-yellow (SOUTHEAST)"; - icon_state = "yellow"; - dir = 6 - }, -/area/engine/engineering) -"cxe" = ( -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"cxf" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable, -/turf/open/space, -/area/space) -"cxg" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"cxh" = ( -/obj/machinery/camera/autoname{ - tag = "icon-camera (NORTH)"; - icon_state = "camera"; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9; - pixel_y = 0 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"cxi" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"cxj" = ( -/obj/structure/cable{ - tag = "icon-1-8"; - icon_state = "1-8" - }, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"cxk" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/open/floor/plating{ - dir = 1; - icon_state = "delivery" - }, -/area/engine/engineering) -"cxl" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8"; - d1 = 4; - d2 = 8 - }, -/turf/open/floor/plating{ - dir = 1; - icon_state = "delivery" - }, -/area/engine/engineering) -"cxm" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plating{ - dir = 1; - icon_state = "delivery" - }, -/area/engine/engineering) -"cxn" = ( -/obj/structure/particle_accelerator/particle_emitter/left, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/engine/engineering) -"cxo" = ( -/obj/structure/particle_accelerator/particle_emitter/center, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/engine/engineering) -"cxp" = ( -/obj/structure/particle_accelerator/particle_emitter/right, -/turf/open/floor/plating{ - icon_state = "floorgrime" - }, -/area/engine/engineering) -"cxq" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4"; - d1 = 1; - d2 = 4 - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plating{ - dir = 1; - icon_state = "delivery" - }, -/area/engine/engineering) -"cxr" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8"; - d1 = 4; - d2 = 8 - }, -/turf/open/floor/plating{ - dir = 1; - icon_state = "delivery" - }, -/area/engine/engineering) -"cxs" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/open/floor/plating{ - dir = 1; - icon_state = "delivery" - }, -/area/engine/engineering) -"cxt" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"cxu" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"cxv" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"cxw" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"cxx" = ( -/obj/machinery/door/airlock/external{ - cyclelinkedairlock = 4; - name = "External Access"; - req_access = null; - req_access_txt = "13" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/noslip, -/area/engine/engineering) -"cxy" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/noslip, -/area/engine/engineering) -"cxz" = ( -/obj/machinery/door/airlock/external{ - cyclelinkedairlock = 8; - name = "External Access"; - req_access = null; - req_access_txt = "13" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/noslip, -/area/engine/engineering) -"cxA" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8"; - tag = "" - }, -/turf/open/space, -/area/space) -"cxB" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/effect/landmark{ - name = "Syndicate Breach Area" - }, -/turf/open/floor/plating, -/area/hallway/secondary/entry) -"cxC" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"cxD" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"cxE" = ( -/obj/structure/cable/yellow, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "Singularity"; - name = "radiation shutters" - }, -/turf/open/floor/plating{ - dir = 1; - icon_state = "delivery" - }, -/area/engine/engineering) -"cxF" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "Singularity"; - name = "radiation shutters" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"cxG" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4"; - d1 = 1; - d2 = 4 - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "Singularity"; - name = "radiation shutters" - }, -/turf/open/floor/plating{ - dir = 1; - icon_state = "delivery" - }, -/area/engine/engineering) -"cxH" = ( -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "Singularity"; - name = "radiation shutters" - }, -/turf/open/floor/plating{ - dir = 1; - icon_state = "delivery" - }, -/area/engine/engineering) -"cxI" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "Singularity"; - name = "radiation shutters" - }, -/turf/open/floor/plating{ - dir = 1; - icon_state = "delivery" - }, -/area/engine/engineering) -"cxJ" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "Singularity"; - name = "radiation shutters" - }, -/turf/open/floor/plating{ - dir = 1; - icon_state = "delivery" - }, -/area/engine/engineering) -"cxK" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "Singularity"; - name = "radiation shutters" - }, -/obj/machinery/camera/emp_proof{ - c_tag = "Containment - Particle Accelerator"; - dir = 1; - network = list("Singularity") - }, -/turf/open/floor/plating{ - dir = 1; - icon_state = "delivery" - }, -/area/engine/engineering) -"cxL" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"cxM" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"cxN" = ( -/obj/structure/cable{ - tag = "icon-2-8"; - icon_state = "2-8" - }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; - pixel_x = 32; - pixel_y = 0 - }, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"cxO" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/solar/auxstarboard{ - name = "Auxiliary Solar Array" - }) -"cxP" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/yellow, -/area/engine/engineering) -"cxQ" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"cxR" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/obj/machinery/light/small{ - brightness = 3; - dir = 8 - }, -/turf/open/floor/noslip, -/area/engine/engineering) -"cxS" = ( -/obj/machinery/door/airlock/external{ - cyclelinkedairlock = 0; - name = "Engineering External Access"; - req_access = null; - req_access_txt = "10;13" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/turf/open/floor/noslip, -/area/engine/engineering) -"cxT" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/turf/open/floor/noslip, -/area/engine/engineering) -"cxU" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0; - tag = "" - }, -/obj/machinery/door/airlock/external{ - cyclelinkedairlock = 0; - name = "Engineering External Access"; - req_access = null; - req_access_txt = "10;13" - }, -/turf/open/floor/noslip, -/area/engine/engineering) -"cxV" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/open/space, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cxW" = ( -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cxX" = ( -/obj/machinery/power/grounding_rod, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plating/airless, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cxY" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/space, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cxZ" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - icon_state = "2-4"; - tag = "icon-2-8" - }, -/turf/open/space, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cya" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8"; - tag = "" - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/noslip, -/area/engine/engineering) -"cyb" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "" - }, -/turf/open/space, -/area/space) -"cyc" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8"; - tag = "" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4"; - tag = "" - }, -/turf/open/space, -/area/space) -"cyd" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/turf/open/space, -/area/space) -"cye" = ( -/turf/closed/wall/r_wall, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cyf" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - tag = "" - }, -/turf/open/space, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cyg" = ( -/turf/closed/wall/r_wall, -/area/maintenance/starboardsolar) -"cyh" = ( -/obj/machinery/door/airlock/external{ - cyclelinkeddir = 2; - name = "Solar Maintenance"; - req_access = null; - req_access_txt = "10; 13" - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/starboardsolar) -"cyi" = ( -/obj/structure/lattice, -/turf/open/space, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cyj" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8"; - tag = "" - }, -/turf/open/space, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cyk" = ( -/turf/open/floor/plating/airless, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cyl" = ( -/turf/open/space, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cym" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/turf/open/space, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cyn" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/starboardsolar) -"cyo" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/camera/emp_proof{ - c_tag = "Containment - Fore Port"; - dir = 4; - icon_state = "camera"; - network = list("Singularity"); - tag = "icon-camera (EAST)" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cyp" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4"; - tag = "" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cyq" = ( -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cyr" = ( -/obj/structure/cable/yellow{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/structure/cable/yellow{ - tag = "icon-0-8"; - icon_state = "0-8" - }, -/obj/machinery/power/tesla_coil, -/obj/effect/turf_decal/bot, -/turf/open/floor/plating/airless, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cys" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 8; - icon_state = "1-8"; - tag = "" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4"; - d1 = 1; - d2 = 4 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cyt" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cyu" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/obj/machinery/camera/emp_proof{ - c_tag = "Containment - Fore Starboard"; - dir = 8; - icon_state = "camera"; - network = list("Singularity"); - tag = "icon-camera (WEST)" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cyv" = ( -/obj/machinery/door/airlock/external{ - cyclelinkeddir = 1; - name = "Solar Maintenance"; - req_access = null; - req_access_txt = "10; 13" - }, -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/starboardsolar) -"cyw" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; - pixel_y = 0 - }, -/turf/closed/wall/r_wall, -/area/maintenance/starboardsolar) -"cyx" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cyy" = ( -/obj/machinery/power/emitter{ - anchored = 1; - dir = 4; - state = 2 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plating/airless, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cyz" = ( -/obj/effect/turf_decal/delivery, -/turf/open/floor/plating/airless, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cyA" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plating/airless, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cyB" = ( -/obj/machinery/field/generator{ - anchored = 1; - state = 2 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plating/airless, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cyC" = ( -/obj/machinery/power/emitter{ - anchored = 1; - dir = 8; - state = 2 - }, -/obj/effect/turf_decal/delivery, -/obj/structure/cable{ - tag = "icon-0-4"; - icon_state = "0-4" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cyD" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8"; - tag = "" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cyE" = ( -/obj/machinery/power/apc{ - dir = 8; - name = "Aft Starboard Solar APC"; - pixel_x = -26; - pixel_y = 3 - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboardsolar) -"cyF" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_y = 0 - }, -/turf/open/floor/plating, -/area/maintenance/starboardsolar) -"cyG" = ( -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/power/smes, -/turf/open/floor/plating, -/area/maintenance/starboardsolar) -"cyH" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0; - tag = "" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cyI" = ( -/obj/structure/cable/yellow{ - d2 = 2; - icon_state = "0-2" - }, -/obj/structure/cable/yellow, -/obj/machinery/power/tesla_coil, -/obj/effect/turf_decal/bot, -/turf/open/floor/plating/airless, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cyJ" = ( -/obj/structure/chair/stool, -/obj/machinery/camera{ - c_tag = "Aft Starboard Solar Control"; - dir = 4; - network = list("SS13") - }, -/turf/open/floor/plating, -/area/maintenance/starboardsolar) -"cyK" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/turf/open/floor/plating, -/area/maintenance/starboardsolar) -"cyL" = ( -/obj/machinery/power/terminal{ - icon_state = "term"; - dir = 1 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboardsolar) -"cyM" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cyN" = ( -/obj/machinery/power/solar_control{ - id = "starboardsolar"; - name = "Aft Starboard Solar Control"; - track = 0 - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboardsolar) -"cyO" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/open/floor/plating, -/area/maintenance/starboardsolar) -"cyP" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; - pixel_x = 0; - pixel_y = -32 - }, -/obj/item/stack/cable_coil, -/turf/open/floor/plating, -/area/maintenance/starboardsolar) -"cyQ" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/turf/open/floor/plating, -/area/maintenance/starboardsolar) -"cyR" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/obj/machinery/door/airlock/external{ - cyclelinkeddir = 2; - name = "Solar Maintenance"; - req_access = null; - req_access_txt = "10; 13" - }, -/turf/open/floor/plating, -/area/maintenance/starboardsolar) -"cyS" = ( -/obj/machinery/the_singularitygen/tesla, -/obj/effect/turf_decal/bot, -/turf/open/floor/plating/airless, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cyT" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/turf/open/floor/plating, -/area/maintenance/starboardsolar) -"cyU" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/obj/machinery/door/airlock/external{ - cyclelinkeddir = 1; - name = "Solar Maintenance"; - req_access = null; - req_access_txt = "10; 13" - }, -/turf/open/floor/plating, -/area/maintenance/starboardsolar) -"cyV" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2"; - pixel_y = 0 - }, -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/solar/starboard) -"cyW" = ( -/obj/structure/cable{ - tag = "icon-1-2"; - icon_state = "1-2" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cyX" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4"; - tag = "90Curve" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cyY" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8"; - tag = "" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cyZ" = ( -/obj/structure/lattice, -/obj/structure/grille/broken, -/turf/open/space, -/area/space) -"cza" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Containment - Aft Port"; - dir = 4; - icon_state = "camera"; - network = list("Singularity"); - tag = "icon-camera (NORTHEAST)" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"czb" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4"; - d1 = 1; - d2 = 4 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"czc" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 8; - icon_state = "1-8"; - tag = "" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"czd" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Containment - Aft Starboard"; - dir = 8; - icon_state = "camera"; - network = list("Singularity"); - tag = "icon-camera (NORTHWEST)" - }, -/turf/open/floor/plating/airless, -/area/engine/engineering{ - name = "Singularity Chamber" - }) -"cze" = ( -/obj/structure/cable, -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/solar/starboard) -"czf" = ( -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/machinery/power/solar{ - id = "starboardsolar"; - name = "Starboard Solar Array" - }, -/turf/open/floor/plasteel/airless/solarpanel, -/area/solar/starboard) -"czg" = ( -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/solar/starboard) -"czh" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/solar/starboard) -"czi" = ( -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/solar/starboard) -"czj" = ( -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/solar/starboard) -"czk" = ( -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/solar/starboard) -"czl" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/solar/starboard) -"czm" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/solar/starboard) -"czn" = ( -/obj/structure/cable, -/obj/machinery/power/solar{ - id = "starboardsolar"; - name = "Starboard Solar Array" - }, -/turf/open/floor/plasteel/airless/solarpanel, -/area/solar/starboard) -"czo" = ( -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/solar/starboard) -"czp" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8"; - pixel_x = 0 - }, -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/solar/starboard) -"czq" = ( -/obj/structure/cable{ - icon_state = "0-2"; - d2 = 2 - }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/structure/cable, -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/solar/starboard) -"czr" = ( -/obj/docking_port/stationary{ - dheight = 9; - dir = 2; - dwidth = 5; - height = 24; - id = "syndicate_s"; - name = "south of station"; - turf_type = /turf/open/space; - width = 18 - }, -/turf/open/space, -/area/space) -"czs" = ( -/obj/structure/cable, -/obj/machinery/power/tracker, -/turf/open/floor/plasteel/airless/solarpanel, -/area/solar/starboard) - -(1,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(2,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(3,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(4,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(5,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(6,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(7,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(8,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(9,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(10,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(11,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(12,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(13,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(14,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(15,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(16,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(17,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(18,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(19,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(20,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(21,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(22,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(23,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(24,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(25,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(26,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(27,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(28,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(29,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(30,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(31,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(32,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(33,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(34,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(35,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(36,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aap -aaq -aaq -aaq -aaq -aev -aaq -aaq -aaq -abm -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(37,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aap -aaq -aaq -aaq -aaq -aaq -aaq -adt -adJ -adt -adu -aew -aff -afD -afG -agd -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(38,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaq -aci -aci -acw -aci -aci -aaq -adu -adu -adu -adu -aex -adu -afE -afG -age -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(39,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaq -aay -aay -aay -aay -aay -aaq -adv -adu -adu -adu -aey -afg -afF -afG -agf -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -agI -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abl -abl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(40,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aap -aaq -aaq -aaq -abm -aaa -aaa -aaq -aay -acp -aay -aay -aay -aaq -adw -adu -adu -adu -aez -aaq -aaq -aaq -agJ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abl -abl -abl -abl -abl -abl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(41,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaq -aax -aaQ -abe -aaq -aby -aaa -aaq -acj -acq -acx -aay -aay -aaq -adx -adu -adu -adu -aeA -aaq -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abl -abl -abl -abl -abl -abl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(42,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aar -aay -aay -aay -aaq -aaq -aaq -aaq -aaq -aaq -aaq -acF -acX -aaq -aaq -adK -adR -aec -aaq -aaq -aaq -abm -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abl -abl -abl -abl -abl -abl -abl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(43,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aar -aaz -aay -aay -aaq -abz -aay -abU -aay -aay -acy -aay -aay -adi -abU -aay -aay -aay -aay -acy -afG -agd -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -agI -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abl -abl -abl -abl -abl -abl -abl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(44,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aar -aaA -aaR -aay -abn -aay -aay -aay -aay -aay -acz -aay -aay -aay -aay -aay -aay -aay -aay -afh -afG -age -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -agI -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abl -abl -abl -abl -abl -abl -abl -abl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(45,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aar -aaB -aay -abf -aaq -abA -abM -abV -abM -abM -acy -aay -aay -aay -aaS -aay -aay -aay -aay -acy -afG -agf -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abl -abl -abl -abl -abl -abl -abl -abl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(46,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aar -aaC -aay -aay -aaq -aaq -aaq -abW -aaq -aaq -aaq -acG -acy -aaq -aaq -aaq -adS -aed -aaq -aaq -aaq -abo -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abl -abl -abl -abl -abl -abl -abl -abl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(47,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaq -aaC -aaS -abg -aaq -abo -aaa -aaa -aaa -aaq -aay -aay -aay -aaq -ady -aay -aay -aay -aeB -afi -aaq -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abl -abl -abl -abl -abl -abl -abl -abl -abl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(48,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aas -aaq -aaq -aaq -abo -aaa -aaa -aaa -aaa -acr -aay -aay -aay -aaq -adz -aay -aay -aay -aeC -aaq -aaq -aaq -agK -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abl -abl -abl -abl -abl -abl -abl -abl -abl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(49,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acs -aay -aaS -aay -aaq -adA -aay -aay -aay -aay -aay -afH -afG -agd -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abl -abl -abl -abl -abl -abl -abl -abl -abl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(50,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aas -aaq -aaq -aaq -aaq -adB -acp -aay -aay -aay -aay -afI -afG -age -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abl -abl -abl -abl -abl -abl -abl -abl -abl -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(51,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acY -aaq -adC -adL -aay -aee -aeD -aay -afJ -afG -agf -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -apm -apm -apo -apm -apm -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abl -abl -abl -abl -abl -abl -abl -abl -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(52,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aas -aaq -aaq -aaq -aaq -abW -aaq -aaq -aaq -abo -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -apm -aqF -apL -aqF -apm -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abl -abl -abl -abl -abl -abl -abl -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(53,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -apm -apL -apL -apL -apm -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abl -abl -abl -abl -abl -abl -abL -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(54,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -apm -apL -apL -apL -apm -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -acg -acg -acg -acg -acg -acg -abl -abl -abl -abl -abl -abL -abL -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(55,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -apm -apL -apL -apL -apm -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -acg -abl -abl -abl -abl -abL -abL -abL -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(56,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -apm -apL -apL -apL -apm -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -agc -agc -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -agc -agc -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abl -abl -abl -abL -abL -abL -abL -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(57,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -apm -apL -apL -apL -apm -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -agc -agc -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -agc -agc -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -abL -acg -abL -abL -acg -acg -acg -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(58,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -apm -apL -apL -apL -apm -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -agc -agc -agc -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -agc -agc -agc -agc -acg -acg -acg -abL -abL -abL -acg -acg -acg -acg -acg -acg -abL -abL -abL -abL -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(59,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -apm -apL -apL -aup -apm -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -agc -acg -agc -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -agc -agc -agc -agc -acg -acg -agI -abL -abL -abL -abL -acg -acg -acg -acg -abL -abL -abL -abL -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abl -abl -abl -abL -abL -abL -abL -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -cul -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(60,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -apm -aqF -apL -aqF -apm -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -agc -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -agc -agc -agc -agc -acg -acg -acg -abL -abL -abL -abL -acg -acg -abL -abL -abL -abL -abL -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abl -abl -abl -abl -abL -abL -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(61,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acf -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -apm -apm -apo -apm -apm -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -agc -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -agc -agc -agc -agc -acg -acg -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -acg -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -ads -ads -ads -ads -ads -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(62,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -apm -apL -apm -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -agc -agc -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -agc -agc -agc -agc -acg -acg -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -acg -acg -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -ads -ads -ads -ads -ads -ads -abL -abL -aaa -aQH -aQH -aQI -aQH -aQH -aQI -aQH -aQH -aQH -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(63,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -amy -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -apm -apm -apo -apm -apm -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -agc -agc -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -agc -agc -agc -agc -acg -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -acg -acg -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -ads -ads -ads -ads -ads -ads -ads -abL -abL -aaa -aQI -bEP -bGc -bHh -aSg -bJu -bKy -bLQ -bNi -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(64,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -alR -amz -alR -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -apm -apm -aqF -apL -aqF -apm -apm -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -agc -agc -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -agc -agc -agc -agc -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -acg -acg -acg -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -ads -ads -ads -buN -bmg -bmg -bmg -bmg -ads -abL -aaa -aQI -bEQ -bGd -aQH -bIt -aSg -aSg -bLQ -bNi -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(65,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -alR -amA -alR -aaa -aaa -aaa -apm -apK -aqi -aqi -aqi -arC -aaa -apm -aqF -apL -apL -apL -aqF -apm -aaa -apK -aqi -aqi -aqi -arC -apm -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -agc -agc -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -agc -agc -agc -abL -abL -abL -abL -abL -abL -acg -abL -abL -abL -acg -acg -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -ads -ads -ads -ads -bmg -bvT -bxa -bxV -bmg -ads -abL -aaa -aQI -bER -bGe -bHi -bIu -bJv -aSg -bLQ -bNi -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(66,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -alR -amB -alR -aaa -aaa -aaa -apm -apm -aqj -aqj -aqj -apm -apm -apm -apL -apL -apL -apL -apL -apm -apm -apm -aqj -aqj -aqj -apm -apm -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -agc -agc -agc -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -agc -agc -abL -abL -abL -abL -abL -abL -acg -acg -acg -acg -acg -acg -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -ads -ads -ads -ads -ads -bmg -bvU -bxb -bxW -bmg -ads -abL -aaa -aQH -aQH -bGf -aQH -aQH -aQH -bKz -aQH -aQH -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(67,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -alS -amC -alS -aaa -aaa -aaa -aaa -apm -aqk -aqE -aqE -aqk -apm -aqF -apL -apL -apL -apL -apL -aqF -apm -aqk -aqE -aqE -aqk -apm -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -agc -agc -agc -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -agc -agc -abL -abL -abL -abL -abL -agc -agc -agc -agc -agc -acg -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -ads -ads -ads -ads -ads -ads -ads -bmg -bvV -bxb -bxX -bmg -abL -abL -aaa -aaa -bES -bGg -bES -aaa -bES -bGg -bES -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(68,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -akt -akt -amD -akt -akt -aaT -aaT -aaT -aaT -apm -aqk -aqE -aqE -apm -apL -apL -apL -apL -apL -apL -avt -apm -aqE -aqE -aqk -apm -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -agc -agc -agc -agc -ads -ads -ads -ads -ads -aKF -aKF -aKF -aKF -aKF -ads -ads -agc -agc -abL -abL -abL -abL -abL -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -ads -ads -ads -ads -ads -ads -ads -ads -bmg -buO -bxc -buO -bmg -abL -abL -abL -aaa -bET -bGh -bET -aaa -bET -bGh -bET -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(69,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaT -aaT -aaT -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -akt -alT -ajg -and -anF -aaT -aoJ -aaT -aaT -aaT -apm -apm -arD -apm -apm -apm -ass -atM -ass -apm -apm -apm -arD -apm -apm -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -agc -agc -agc -agc -ads -ads -ads -ads -ads -aKF -aLC -aLD -aLE -aKF -ads -ads -agc -abL -abL -abL -abL -abL -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -ads -ads -ads -ads -ads -ads -ads -ads -ads -bmg -bvW -bvW -bvW -bmg -bmg -bmg -bmg -bmg -bET -bGi -bET -bmg -bET -bGi -bET -bmg -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(70,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaT -aaT -aaT -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -akt -alU -amD -akP -akt -aaT -aaT -aaT -aaT -aaT -apm -apm -apL -apL -apL -apL -apL -apL -apL -apL -apL -apL -apL -apm -apm -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -agc -agc -agc -agc -agc -ads -ads -ads -ads -ads -aKF -aLD -aLD -aLD -aKF -ads -ads -agc -abL -abL -abL -abL -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -ads -ads -ads -ads -bmg -bmg -bmg -bmg -bmg -bmg -bmg -bvX -btQ -btQ -bzq -btQ -bBx -bCB -btQ -bEU -btQ -bEU -bIv -bEU -btQ -bLR -bmg -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(71,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -adT -adT -adT -adT -adT -adU -adT -adT -adT -adT -adT -adT -ajV -adj -adj -akt -aku -aku -akO -akt -aaT -aaT -aaT -aaT -apm -apm -aqF -arE -apL -apL -apL -apL -apL -apL -apL -apL -apL -apL -apm -apm -apm -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -agc -agc -agc -agc -agc -ads -ads -ads -ads -ads -aKF -aLE -aLD -aLC -aKF -ads -ads -agc -abL -abL -abL -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -ads -ads -ads -ads -ads -bmg -boY -bqk -bro -bsK -btN -buO -bvY -bvW -bvW -bvW -bvW -bvW -bvZ -bvW -bvW -bvW -bvW -bvW -bvW -bvW -bvW -bmg -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(72,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -adT -aef -aeE -afj -afK -agg -agL -ahm -ahU -ain -aiR -adT -ajW -adj -adj -akt -alV -amE -aku -akt -adj -adj -aaT -apm -apm -aqF -apL -apL -apL -apL -apm -apm -apm -apm -apm -apm -apL -apL -apm -apm -apm -apm -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -agc -agc -agc -agc -agc -ads -ads -ads -ads -ads -aKF -aLD -aLD -aLD -aKF -ads -ads -abL -abL -abL -abL -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -ads -ads -ads -ads -ads -bmg -bmg -boZ -bql -brp -bsL -btO -buO -bvZ -bxd -buO -buO -buO -buO -bCC -bDK -bEV -bGj -bHj -bIw -bJw -bKA -bLS -bmg -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(73,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaT -aaT -adT -aeg -aeF -afk -afL -agh -agM -ahn -ahV -aio -aiS -adU -ajW -adj -aaT -akt -alp -amF -aku -akt -aog -akt -apm -apm -apm -apm -apm -apm -aqF -apL -apm -atk -apL -apL -apL -apo -apL -apL -apo -apL -aqF -apm -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -agc -agc -agc -agc -agc -ads -ads -ads -ads -ads -aKF -aLC -aLD -aLE -aKF -ads -ads -abL -abL -abL -abL -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -ads -ads -ads -ads -ads -ads -bmg -bnF -bnF -bnF -brq -bsL -btP -buO -bvZ -bxe -bxY -bzr -bAo -bmg -bCD -bmg -bmg -bmg -bmg -bmg -bmg -bmg -bmg -bmg -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(74,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acf -aaa -aaa -aaa -aaa -aaa -aaT -aaT -adU -aef -aeG -afl -afM -agi -agN -afj -afj -afj -afj -adT -ajW -adj -aaT -akt -alp -amG -aku -anG -aoh -anG -apn -apL -apL -aqG -aqG -aqF -apm -apL -apm -atl -apL -auq -auS -apm -apL -apL -apm -apL -ayd -apm -apm -aaa -aaa -aaa -aaa -acg -acg -acg -acg -agc -agc -agc -agc -agc -ads -ads -ads -ads -ads -aKF -aLD -aLD -aLD -aKF -ads -abL -abL -abL -abL -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -ads -aOU -aOU -aOU -aOU -aOU -ads -ads -bmg -bnG -bpa -bqm -brq -bsM -btQ -buP -bwa -bxf -bxZ -bzs -bzs -bBy -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(75,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaT -aaT -adT -aeh -aeH -afm -afN -agj -agO -aho -ahV -aip -aiS -adU -ajW -adj -aaT -akt -alp -amH -ane -akP -aog -akt -apm -apL -apL -apL -apL -arF -apm -apL -apo -apL -apL -apL -auT -apm -apL -apL -apm -apL -apL -aqF -apm -aaa -aaa -aaa -aaa -acg -acg -acg -acg -agc -agc -agc -agc -agc -ads -ads -ads -ads -ads -aKF -aLE -aLD -aLC -aKF -ads -abL -abL -abL -abL -agc -agc -agc -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -aOU -aUF -aVm -aVZ -aOU -ads -ads -bmg -bnF -bnF -bnF -brq -bsL -btR -buO -bvZ -bxg -bya -bzt -bAp -bmg -abL -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(76,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -adT -aef -aeE -afj -afO -agk -agP -ahm -ahW -aiq -aiR -adT -ajX -aks -aaT -akt -alp -aku -amG -aku -aoi -aog -apm -apM -apL -apL -apL -apL -apm -apL -apm -apm -apm -apm -apm -apm -apL -arE -ass -axA -apL -apL -apm -aaa -aaa -aaa -aaa -acg -acg -acg -acg -agc -agc -agc -agc -agc -ads -ads -ads -ads -ads -aKF -aLD -aLD -aLD -aKF -ads -abL -abL -abL -agc -agc -agc -agc -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -aOU -aUG -aUG -aVZ -aOU -ads -ads -bmg -bmg -bpb -bqn -brr -bsL -btS -buO -bwb -bxg -byb -buO -buO -bmg -abL -abL -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(77,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -adT -adT -aeI -afj -afP -agl -agQ -ahp -ahX -ahX -aiT -ajB -ajY -akt -akt -akt -alW -aku -amG -aku -aoj -aog -apm -apN -apL -apL -apL -apL -apo -apL -apL -apL -apL -apL -apL -apL -apL -apL -ass -apL -apL -ayL -apm -aaa -aaa -aaa -aaa -acg -acg -acg -acg -agc -agc -agc -agc -agc -ads -ads -ads -ads -ads -aKF -aLC -aLD -aLE -aKF -ads -abL -abL -abL -agc -agc -agc -aOU -aOU -aOU -aOU -aXq -aOU -aOU -aOU -aOU -aOU -bds -aOU -aUH -bgE -aWa -aOU -ads -ads -ads -bmg -bpc -bqk -brs -bsN -btT -buO -bvZ -bxh -byc -bzr -bAo -bmg -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(78,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -adV -adT -aeJ -afn -afQ -agm -agR -ahq -afj -air -aiU -ajC -ajZ -akt -akM -aku -alp -aku -amG -aku -amd -aog -apm -apL -apL -apL -apL -apL -apm -aqF -apL -apL -apL -apL -apL -apL -apL -awq -ass -apL -apL -apL -apm -aaa -aaa -aaa -aaa -acg -acg -acg -acg -agc -agc -agc -agc -agc -ads -ads -ads -ads -ads -aKF -aLD -aLD -aLD -aKF -ads -abL -abL -abL -agc -agc -aTE -aUC -aVj -aOV -aOU -aOV -aOV -aYY -aOV -aOV -aQm -aOV -aOU -aVZ -bgF -aVZ -aOU -ads -ads -ads -bmg -bmg -bmg -bmg -bmg -bmg -bmg -bwc -bxf -byd -bzs -bzs -bBy -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(79,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -adj -adU -aeK -afo -afR -agn -agS -ahr -afj -ais -aiV -ajD -aka -akt -aku -aku -alp -aku -amG -aku -aok -aog -apm -apL -apL -apL -apL -aqF -apm -apm -apm -ass -atM -ass -apm -apm -apm -apm -apm -apL -apL -apL -apm -aaa -aaa -aaa -aaa -acg -acg -acg -acg -agc -agc -agc -agc -agc -ads -ads -ads -ads -ads -aKF -aLD -aLD -aLD -aKF -ads -abL -abL -abL -agc -aOU -aTF -aUD -aVk -aOV -aOU -aOV -aOV -aOV -aOV -aOV -aOU -aOV -aOU -aOU -bgG -aOU -aOU -ads -ads -ads -ads -ads -ads -ads -bsO -btU -bmg -bvZ -bxg -bye -bzt -bAp -bmg -ads -ads -ads -ads -ads -ads -ads -bKB -bKB -bKB -bKB -bKB -bKB -bKB -bKB -bKB -ads -ads -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(80,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -adj -adT -aeL -afp -afS -ago -agT -ahs -ahY -ait -aiW -ajE -akb -akt -akN -aku -alp -aku -amG -akP -aog -akt -apm -apL -apL -apL -aqF -apm -aqF -apL -apL -apL -apL -apL -apL -atm -atm -atm -apm -apL -apL -aqF -apm -aaa -aaa -aaa -aaa -acg -acg -acg -agc -agc -agc -agc -agc -agc -ads -ads -ads -ads -ads -aKF -aKF -aMR -aKF -aKF -abL -abL -abL -agc -agc -aOU -aTG -aTG -aTG -aOV -aQm -aXr -aYh -aYh -aZX -baO -bcd -aSl -aSl -aSl -bgH -bhF -biO -bjR -bjR -bjR -bjR -bjR -bjR -bjR -bjR -btV -buQ -bwd -bxi -byb -buO -buO -bmg -bCE -bCE -bCE -bCE -bCE -bCE -bCE -bCE -bCE -bCE -bCE -bCE -bCE -bCE -bCE -bCE -bTX -ads -ads -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(81,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -adj -adU -aeM -afq -afT -agp -agU -aht -afj -aiu -aiX -ajF -akc -akt -akN -aku -alp -aku -amG -anG -aoh -anG -apo -apL -aql -apL -apm -aqF -apL -apL -apL -apL -apL -apL -apL -apL -apL -apL -aqF -aqF -arG -apm -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -agc -agc -agc -agc -agc -agc -ads -ads -ads -ads -ads -aKF -aLD -aLD -aLD -aKF -abL -abL -abL -ads -ads -aOU -aOU -aOU -aOU -aOU -aOU -aXs -aOU -aOU -aOU -aOU -aOU -aOU -aOU -aOU -aOU -aOU -aOU -aOU -aOU -aOU -aOU -aOU -aOU -aOU -aOU -aRF -bmg -bwe -bxg -byb -bzu -bzu -bmg -bCF -bDL -bDL -bDL -bDL -bDL -bDL -bDL -bDL -bDL -bDL -bDL -bDL -bDL -bDL -bTj -bTX -ads -ads -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(82,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aac -aac -aac -aac -abp -abB -abN -abB -abB -abN -abB -acH -aac -adj -adj -adj -adj -adT -aeN -afr -afU -agq -agV -ahu -afj -aiv -aiY -ajG -akd -akt -akO -aku -alp -aku -anf -akP -aog -akt -apm -apm -apm -aqH -apm -arG -arU -apL -apL -apL -apL -apL -apL -apL -apL -awr -arG -apm -apm -apm -aaa -aaa -acf -aaa -aaa -acg -acg -acg -agc -agc -agc -agc -agc -agc -ads -ads -ads -ads -ads -ads -abL -aMS -abL -abL -abL -abL -abL -ads -ads -aTb -aOV -aOV -aOV -aOV -aOV -aRF -aOU -aYZ -aZY -baP -bce -bdt -aZd -aYZ -aZY -baP -bce -bdt -aZd -aYZ -aZY -baP -bce -bdt -aZd -btW -bmg -bvZ -bxg -byf -bxb -bAq -bmg -bCG -bDM -bEW -bEW -bEW -bIx -bEW -bEW -bEW -bEW -bEW -bEW -bEW -bEW -bSr -bDL -bTX -ads -ads -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(83,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aac -aaD -aaU -abh -abq -abs -abO -abs -ack -act -abX -acI -aac -adj -adj -adj -acW -adT -adT -adT -afV -agr -afj -afj -afj -afj -adU -afj -adT -akt -akP -aku -alp -aku -amG -anH -anH -akt -aaT -aaT -apm -aqI -apm -arG -arU -apL -apL -atm -atN -atm -apL -apL -apL -apL -aqF -apm -apm -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -agc -agc -agc -agc -agc -agc -ads -ads -ads -ads -ads -ads -abL -aMS -abL -abL -abL -abL -ads -ads -ads -aTb -aOV -aUE -aVl -aVY -aWD -aRF -aOU -aZa -aZZ -aZZ -aZZ -bdu -beB -bfF -aZZ -aZZ -aZZ -bdu -beB -bmh -aZf -aZf -aZf -brt -aZd -aRF -bmg -bwf -bxj -byg -bzv -bAr -bmg -bCG -bDN -bEX -bEX -bEX -bIy -bEX -bEX -bEX -bEX -bEX -bEX -bEX -bEX -bSs -bDL -bTX -ads -ads -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acf -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(84,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aac -aaE -aaV -aaj -abr -abr -aaj -abr -abr -aaj -abr -acJ -aac -aaT -aaT -aaT -acW -adf -aeO -afs -afW -ags -agW -ahv -afj -aiw -aiZ -ajH -adT -aku -aku -aku -alp -aku -amG -anI -anI -aog -adj -aaT -apm -aqJ -apm -aqF -arV -apL -apL -atn -atO -atm -apL -apL -apL -aqF -apm -apm -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -agc -agc -agc -agc -agc -agc -agc -ads -ads -ads -ads -ads -abL -abL -aMS -abL -abL -abL -ads -ads -ads -ads -aTb -aOU -aOU -aOU -aOU -aOU -aXt -aYi -aZb -baa -baQ -baQ -bdv -beC -bfG -bgI -bhG -baQ -bdv -beC -bmi -bnH -baQ -baQ -bru -aZd -aRF -bmg -bvZ -bxg -byb -buO -buO -bmg -bCG -bDN -bEX -bGk -bGk -bIz -bGk -bGk -bGk -bGk -bGk -bGk -bGk -bEX -bSs -bDL -bTX -ads -ads -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(85,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aab -aab -aab -aac -aaF -aaj -aaj -abs -abC -abr -abX -abs -abr -acA -acK -aac -aaT -aaT -aaT -acW -aei -aeP -aft -afX -agt -agX -ahw -ahZ -aix -aja -ajI -ake -akv -akv -akv -alX -akv -ang -anJ -aol -aog -adj -aaT -aaT -aaT -apm -apm -apm -ass -ass -ass -ass -ass -ass -ass -apm -apm -apm -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -aLF -agH -aNZ -ads -ads -ads -ads -ads -ads -aTb -aOU -aUF -aVm -aVZ -aOU -aXu -aOU -aZc -aZf -aZf -bcf -bdw -aZd -aZc -aZf -aZf -bcf -bdw -aZd -bmj -bnI -aZf -bcf -bdw -aZd -aRF -bmg -bwb -bxg -byh -bzw -bzw -bmg -bCG -bDN -bEX -bGk -bHk -bIA -bJx -bKC -bLT -bNj -bOx -bPI -bGk -bEX -bSs -bDL -bTX -ads -ads -abL -abL -aaa -aaa -aaa -aaa -acf -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(86,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aac -aac -aac -aac -aac -aaG -aaW -aaW -abt -abD -abD -abD -acl -abD -acB -acL -aac -aac -aac -aac -aac -aej -aeQ -afu -afY -agu -agY -ahx -aia -aiy -ajb -ajJ -akf -aku -aku -aku -alp -aku -amG -anK -anK -aog -aaT -adj -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaa -aaa -aaa -acg -acg -agc -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ahk -aMT -ahk -ads -ads -ads -aOU -aOU -aOU -aTb -aOU -aUG -aUG -aWa -aOU -aXv -aOU -aZd -aZd -baR -aZd -bdx -aZd -aZd -aZd -bhH -aZd -bdx -aZd -bmk -bnJ -bpd -aZd -bdx -aZd -aRF -bmg -bvZ -bxg -byi -bvW -bAs -bmg -bCG -bDN -bEX -bGk -bHl -bHl -bHl -bHl -bHl -bHl -bHl -bPJ -bGk -bEX -bSs -bDL -bTX -ads -ads -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(87,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aac -aad -aai -aal -aat -aaH -aaj -aaj -aaj -aaj -abP -aaj -abP -abP -aaj -acM -aat -aal -aai -adM -aac -aek -aeR -acW -acW -acW -acW -acW -acW -acW -acW -acW -acW -acW -acW -aln -alp -aku -amG -anH -anH -akt -aaT -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -aab -aab -aab -acg -acg -agc -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ahk -aik -ahk -ads -ads -ads -aOU -aRD -aOU -aOV -aOU -aUH -aVn -aWb -aWE -aXw -aOU -aZe -bab -baS -baS -baS -beD -bfH -bgJ -baS -baS -bjS -baS -bml -bnK -baS -baS -baS -bsP -btX -bmg -bwg -bxi -byj -bvW -bAs -bmg -bCG -bDN -bEX -bGk -bHm -bIB -bJy -bKD -bIB -bIB -bIB -bPK -bGk -bEX -bSs -bDL -bTX -ads -ads -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(88,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aac -aae -aaj -aaj -aau -aaI -aaj -aaj -aaj -abE -aaj -abY -aaj -aaj -aaj -acN -acZ -aaj -aaj -adN -aag -ael -aeS -afv -aeo -agv -agZ -ahy -aeo -aiz -adq -ajK -akg -akg -acW -aku -alp -aku -amG -akP -aom -aom -app -app -app -aqK -aqK -aqK -aqK -app -app -aqK -aqK -aqK -aqK -app -app -aqK -aqK -aqK -aqK -app -app -app -app -app -akr -akr -akr -ahk -ahk -aEe -akF -akF -akF -akF -akF -akF -akF -akF -akF -akF -ahk -aMT -ahk -aOU -aOU -aOU -aOU -aOU -aOU -aOV -aOU -aOU -aOU -aOU -aOU -aXv -aOU -aZf -aZf -aZf -bcg -bdy -beE -aZf -aZf -aZf -aZf -bjT -aZf -bmm -bnI -aZf -aZf -aZf -aZd -aRF -bmg -bwh -bxg -byk -bzx -bAt -bmg -bCG -bDN -bEX -bGk -bHn -bIB -bIB -bKE -bIB -bNk -bIB -bPL -bGk -bEX -bSs -bDL -bTX -ads -ads -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(89,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aac -aaf -aak -aam -aav -aaJ -aaX -aak -aak -abF -aak -abZ -aak -aak -aaX -acO -aav -adk -aak -adO -aag -aem -aeT -afw -aeo -agw -aha -ahz -aeo -aiz -adq -adq -adq -adq -acW -aku -alp -amI -ang -anL -aom -aoK -apq -apq -aqm -apq -apq -apq -arW -apq -asM -apq -apq -apq -apq -apq -apq -apq -apq -apq -apq -apr -apr -azK -apr -app -aBa -aBf -aCm -aiL -ahk -arq -aik -aik -aik -ajo -ajp -ajm -ajm -ajm -aik -aik -aik -aik -aik -aOV -aOV -aQm -aOV -aRE -aSl -aSl -aSl -aSl -aSl -aSl -aSl -aXx -aOU -aYj -aYj -aYj -aYj -bdz -aYj -aYj -aYj -bhI -biP -bjU -blc -bmn -bnL -blc -blc -blc -blc -aRH -bmg -bvZ -bxg -byl -bzy -bAu -bmg -bCG -bDN -bEX -bGk -bHo -bIB -bIB -bKF -bLU -bNl -bIB -bPL -bGk -bEX -bSs -bDL -bTX -ads -ads -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(90,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aac -aag -aag -aag -aag -aaK -aaY -abi -abi -abG -abQ -aaY -abi -abi -aaY -acP -aag -aag -aag -aag -aag -aen -aeU -afx -aeo -agx -ahb -ahA -aeo -aeo -ajc -aeo -akg -akg -acW -aku -alq -amE -amG -anL -aon -aoL -apr -apr -apr -apr -apr -apr -arX -apr -apr -apr -apr -apr -apr -apr -apr -apr -apr -apr -apr -apr -apr -apr -apr -app -aBb -aBf -aBf -aBg -ahk -aik -aik -aEi -aEi -aEi -aEi -aEi -aEi -aIZ -aIZ -aIZ -aIZ -aMU -aIZ -aIZ -aIZ -aIZ -aQN -aRF -aOV -aTc -aTc -aTc -aTc -aTc -aTc -aXy -aYj -aZg -bac -aYj -bch -bdA -beF -bfI -bgK -bhJ -biQ -bjV -blc -bmo -bnM -bpe -bqo -brv -blc -aRH -bmg -bvY -bxg -bym -bvW -bAv -bmg -bCG -bDN -bEX -bGk -bHp -bIC -bJz -bKG -bLV -bIB -bIB -bPM -bGk -bEX -bSs -bDL -bTX -ads -ads -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -cha -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -amy -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(91,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aac -aad -aai -aan -aat -aaL -aaZ -aag -abu -abH -aag -aca -abu -aag -aaZ -acQ -aat -aal -aai -adM -aag -aeo -aeV -aeo -aeo -agy -ahc -ahB -aib -aiA -adq -aeo -aeo -aeo -acW -aku -alp -aku -amG -anL -aom -aoL -aps -apO -aqn -aps -aps -aps -arY -aps -aps -aps -aps -aps -aps -aps -avU -apO -aps -aps -aps -apr -apr -apr -apr -app -aBc -aBJ -aCn -aBd -ahk -aik -aik -aEi -aGg -aGN -aHv -aGg -aGg -aIZ -aJJ -aKG -aJJ -aJK -aOa -aKG -aJJ -aIZ -aQO -aRG -aSm -aTc -aTH -aUI -aVo -aTH -aTH -aXz -aYj -aZh -bad -aYj -bci -bdB -bdA -bdA -bdA -bhK -biQ -bjW -bld -bmp -bnN -bpf -bpf -brw -bsQ -aRH -bmg -bvZ -bxg -byn -bzz -bAw -bmg -bCH -bDO -bEX -bGk -bGk -bIz -bJA -bKH -bLW -bNm -bOy -bGk -bGk -bEX -bSs -bDL -bTX -ads -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -cgi -chb -cgi -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -coR -cpi -coR -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(92,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aac -aae -aaj -aaj -aaw -aaj -aaZ -aag -aaj -abI -abR -acb -aaj -aag -aaZ -acR -ada -aaj -aaj -adN -aag -adQ -aeW -adQ -aeo -agz -ahd -ahC -aic -aiB -adq -ajL -akh -akw -akQ -alo -alY -amJ -anh -amJ -amJ -aoM -aoM -aoM -aqo -aoM -aoM -aoM -arZ -aoM -aoM -aoM -aoM -aoM -aoM -aoM -aoM -aoM -aoM -aoM -aoM -aoM -azb -azL -azL -app -aBd -aBK -aCo -aik -ahk -aik -aik -aEi -aGh -aGO -aHw -aGO -aGO -aIZ -aJK -aJK -aJK -aJK -aJK -aJK -aJK -aIZ -aQP -aRH -aSn -aTc -aTI -aUJ -aVp -aWc -aUJ -aXA -aYj -aZi -bad -aYj -bcj -bdA -bdA -bfJ -bgL -bhL -biR -bjX -ble -bmq -bnO -bpf -bqp -brx -blc -aRH -bmg -bwi -bxf -byo -bzA -buO -bmg -bCI -bDP -bDP -bDP -bHq -bID -bJB -bKI -bLX -bNn -bOz -bPN -bDP -bEX -bSs -bDL -bTX -ads -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -cgi -chc -cgi -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -coR -cpj -coR -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(93,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aac -aah -aak -aao -aav -aaM -aba -aag -abv -aaI -aaj -aaZ -acm -aag -acC -acS -aav -adl -aak -adO -aag -aep -aeX -afy -aeo -agA -ahc -ahD -aib -aiC -adq -ajM -aki -akx -akR -alp -alZ -amK -ani -anM -aoo -aoN -apt -apt -aqp -aqL -ark -arH -asa -apt -asN -ato -ato -ato -ato -ato -aoN -apt -apt -apt -aye -aoM -apr -apr -apr -app -aik -aBf -aik -ahk -ahk -ahk -ail -aEi -aGi -aGP -aHx -aHx -aIA -aJa -aJL -aKH -aLG -aJJ -aJK -aOW -aJK -aIZ -aQQ -aRH -aSo -aTc -aTJ -aUK -aUK -aUK -aUK -aXB -aYj -aZj -bad -baT -bck -bdC -beG -bfK -bgM -aYj -biQ -bjY -blf -bmr -bnP -bpg -bqq -bry -blc -aRH -bmg -bvW -bxg -byp -bvZ -bAx -bvW -bCJ -bDQ -bDQ -bGl -bHr -bHr -bJC -bKJ -bLY -bHr -bOA -bHr -bDP -bEX -bSs -bDL -bTX -ads -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -cgi -chd -cgi -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -coR -cpk -coR -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acf -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(94,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aac -aac -aac -aac -aac -aaN -abb -aag -aag -abJ -aag -acc -aag -aag -aaN -acT -aag -aag -aag -aag -aag -adQ -aeY -adQ -aeo -agB -ahe -ahE -aeo -aiD -ajd -ajN -akj -aky -akS -alq -ama -amL -anj -anN -aop -aoO -anj -anj -aqq -anj -anj -anj -anj -anj -anj -anj -anj -anj -anj -anj -avV -anj -anj -axB -ayf -aoM -azc -apr -aAe -app -aik -aBf -aBf -ahk -aik -aik -aik -aFB -aGj -aGQ -aHy -aGj -aHY -aJb -aJK -aJK -aJK -aJK -aJK -aJK -aJK -aIZ -aQR -aRI -aOU -aTc -aTK -aQT -aQT -aQT -aWF -aXC -aYk -aZk -aZk -baU -bcl -aZk -aZk -bfL -bgN -bgN -biS -bjZ -blg -bms -bnQ -blg -blg -blg -blg -aRH -bmg -bwj -bxk -byq -bzB -bAy -bBz -bCK -bDR -bEY -bGm -bHs -bIE -bJD -bKK -bLZ -bHr -bHr -bPO -bDP -bEX -bSt -bTk -bCE -bCE -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -cgj -che -cgj -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -coS -cpl -coS -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(95,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aab -aab -aab -aac -aaO -abc -abj -abw -abK -abS -acd -acn -acu -acD -acU -adb -adm -adD -adD -adW -adD -aeZ -adD -afZ -aeZ -ahf -aeZ -aid -aiE -aje -ajO -akk -akk -akT -alr -amb -aiI -aiI -anO -aoq -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -asS -auW -ayg -aoM -azd -apr -aAe -app -aik -aBL -aCp -akr -aik -ajm -ajm -aEi -aGk -aGR -aHz -aHW -aIB -aJc -aJM -aKI -aJM -aMV -aJM -aKI -aPF -aQn -aQS -aRJ -aSp -aTd -aTL -aQT -aVq -aVq -aWG -aXD -aYl -aZl -bae -baV -bcm -bdD -beH -bfM -bgO -bhM -biT -bka -blh -bmt -bnR -bph -bqr -brz -blk -aRH -bmg -bwk -bxl -buQ -buQ -buQ -bBA -bCL -bDS -bDS -bDS -bHt -bIF -bJE -bKL -bMa -bNo -bHr -bPP -bDP -bCE -bCE -bTl -bTk -bCE -abL -aaT -aaT -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaT -aaT -bTn -bTn -chf -bTn -bTn -aaT -aaT -aaT -aaT -aaT -aaT -aaT -bTn -bTn -cpm -bTn -bTn -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(96,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aac -aaP -abd -abk -abx -abx -abT -ace -aco -acv -acE -acV -adc -adn -adE -adP -adX -adP -afa -afz -aga -agC -ahg -ahF -aie -aga -ahg -ajP -akl -akz -akU -als -amc -aiI -ank -anP -aor -aoP -amN -apP -aji -aji -amN -apP -aji -aji -amN -apP -aji -aji -aiI -avu -avW -aiI -axc -auW -ayg -aoM -aze -apr -aAe -app -aik -aik -aCq -akr -aik -aEf -aEf -aEi -aGl -aGR -aHA -aHX -aGj -aJb -aJK -aJK -aJK -aJK -aJK -aJK -aPG -aIZ -aQT -aRK -aQT -aTc -aTM -aQT -aVr -aVs -aQT -aXE -aYm -aZm -baf -baW -bcn -bcn -beI -bfN -bgP -bhN -biU -bkb -bli -bmu -bnS -bpi -bqs -brA -blk -btY -buR -bwl -bxm -bxm -bxm -bxm -bBB -bCM -bDT -bEZ -bDP -bHu -bHr -bJC -bKM -bMb -bNp -bOB -bPQ -bDP -bRu -bCE -bCE -bTY -bCE -bTn -aaT -aaT -bXO -bYI -bZk -bZk -bZk -bZk -ccp -bXO -aaT -aaT -cft -cgk -chg -chV -bTn -aaT -aaT -aaT -aaT -aaT -aaT -aaT -bTn -cgk -chg -cpI -cft -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(97,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aac -aac -aac -aac -aac -aac -aac -aac -aac -aac -aac -aac -aag -aag -adF -adq -adY -adq -adq -afA -adq -adq -adq -ahG -acW -acW -acW -acW -acW -acW -akV -alt -amd -aiI -anl -anQ -aos -aoQ -amN -apQ -aqr -aji -amN -apQ -asb -aji -amN -apQ -aqr -aji -aiI -avv -avX -aws -axd -auW -ayg -aoM -azc -apr -aAe -app -aik -aBf -aCr -ahk -aik -aEg -aEK -aEi -aGm -aGR -aGj -aHY -aGj -aIZ -aJN -aKJ -aLH -aJJ -aJK -aOW -aPG -aIZ -aQT -aRK -aSq -aTc -aTN -aUL -aVs -aQT -aWH -aXF -aYn -aZn -bag -baX -bco -bdE -beJ -bfO -bgQ -bhO -biV -bkc -blj -bmv -bnT -bpj -bqt -brB -blk -btZ -aRH -bwm -bwm -bwm -bwm -bwm -bBC -bwm -bwm -bFa -bGn -bHv -bIG -bJF -bKN -bMc -bNq -bOC -bNq -bDP -bJO -bJO -bTm -bTZ -bUD -bTn -aaT -aaT -bXO -bYJ -bYJ -bYJ -bYJ -bYJ -bYJ -bXO -aaT -aaT -bTn -bTn -chf -chW -bTn -aaT -aaT -aaT -aaT -aaT -aaT -aaT -bTn -chW -cpm -bTn -bTn -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(98,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -acW -add -ado -adG -adG -adZ -aeq -afb -adG -adG -adG -adG -adG -acW -aiF -ajf -ajQ -akm -akA -akP -alt -ame -aiI -amg -anQ -aor -aoR -amN -apQ -aji -aji -amN -apQ -aji -aji -amN -apQ -aji -akp -aiI -avv -avX -aws -axd -auW -ayg -aoM -azc -apr -aAe -app -aik -aBf -ahk -ahk -ail -ahk -aEL -aEi -aGn -aGR -aHB -aHZ -aIC -aJd -aJO -aJK -aJK -aJK -aOb -aJK -aPG -aIZ -aQU -aRK -aSr -aTc -aTO -aUM -aQT -aWd -aWI -aXE -aYo -aZo -bah -baY -bcp -baY -beK -bfN -bgP -bhP -biW -bkb -bli -bmu -bnS -bpk -bqs -brC -blk -bua -buS -bwm -bxn -byr -bzC -bxn -bBD -bCN -bDU -bFb -bDY -bHw -bIH -bJG -bKO -bMd -bNr -bOD -bPR -bQI -bRv -bJO -bTm -bTZ -bUE -bVB -bVB -bVB -bXO -bYK -bYK -bYK -bYK -bYK -bYK -bXO -bVB -bVB -bVB -bUF -bUF -bUF -bTn -aaT -aaT -aaT -ckU -aaT -aaT -aaT -bTn -bUF -bUF -bUF -bTn -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(99,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -acW -ade -adp -adH -adQ -aea -aer -afc -afB -agb -agD -adQ -ahH -acW -aiG -ajg -ajR -akn -akB -akW -alu -aku -aiI -amg -anQ -aot -aoQ -amN -apR -aqs -aqM -amN -arI -asc -ast -amN -atp -atP -aur -aiI -avw -avY -aiI -axe -axC -ayh -axh -azf -apr -aAe -app -aBe -aBf -aCs -aiL -aik -aDb -aEM -aEi -aGo -aGR -aGj -aHY -aID -aIZ -aJP -aKK -aJK -aMW -aOc -aOX -aPH -aIZ -aQT -aRL -aSs -aTc -aTP -aUN -aVt -aWe -aWJ -aXG -aYp -aZp -bai -baZ -bcq -bdF -beL -bfP -bgR -bhQ -bhQ -bkd -bli -bmw -bnU -bpl -bqu -brD -blk -bub -buS -bwn -bxn -bys -bzD -bAz -bBE -bCO -bDV -bFc -bDY -bHx -bII -bJH -bKP -bMe -bNs -bOE -bOE -bQJ -bRw -bSu -bTm -bTZ -bUF -bVC -bWi -bVC -bXP -bYK -bZl -bZl -bZl -bZl -bYK -cdc -bVC -bWi -bVC -bUF -bUF -bUF -bTn -aaT -aaT -ckU -clO -ckU -aaT -aaT -bTn -cgl -bUF -bUF -cqm -cqm -cqm -cqm -cqm -cqm -cqm -cqm -cqm -cqm -bVB -bVB -bVB -bVB -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -czr -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(100,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -acW -adf -adq -adq -adq -aeb -aes -afd -afd -afd -agE -adQ -ahI -acW -aiH -ajh -ajS -ako -akC -akt -aiI -amf -aiI -amg -anR -aou -aoS -apu -apS -aqt -aqN -arl -apS -aqt -asu -arl -apS -aqt -aus -aiI -avx -avZ -aiI -axe -auW -ayg -aoM -azc -apr -aAe -app -aik -aBf -aCt -aDb -aDc -aDc -aEN -aEi -aGp -aGR -aGj -aHY -aGj -aIZ -aJQ -aIZ -aLI -aIZ -aIZ -aIZ -aIZ -aQo -aQV -aRM -aRM -aRM -aRM -aRM -aRM -aWf -aWK -aXH -aYq -aYq -aYq -bba -bcr -bdG -beM -bfQ -bfQ -bhR -biX -bke -blk -bmx -bnV -bpm -bqv -bqv -bpm -bpm -aRH -bwm -bxo -byt -byt -byt -bBF -bCP -bDW -bFc -bGo -bHy -bII -bJH -bKQ -bMf -bNt -bOF -bOF -bQK -bRx -bJO -bTm -bTZ -bUF -bVB -bVB -bVB -bXO -bYL -bYK -bYK -bYK -bYK -ccq -bXO -bVB -bVB -bVB -cgl -bUF -bUH -bTn -aaT -aaT -ckV -ckY -cmU -aaT -aaT -bTn -coT -bUF -bUF -cqm -cqQ -crt -crt -crt -crt -crt -crt -crt -cwe -bVB -cnE -cnE -bVB -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(101,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -acW -adg -adq -adq -adq -adQ -aes -afd -afd -afd -agE -ahh -aeo -acW -aiI -aiI -aiI -aiI -aiI -aiI -alv -amg -amg -amg -anQ -amg -amg -apv -amg -amg -apU -arm -amg -amg -apU -asO -amg -amg -apU -amg -amg -awa -aws -axe -auW -ayg -aoM -azc -apr -aAe -app -ail -ahk -aCu -aDc -aDb -aDb -aEO -aEi -aGq -aGQ -aHx -aIa -aHx -aJe -aJR -aKL -aLJ -aMX -aOd -akG -akI -akG -aQW -aRM -aSt -aTe -aTQ -aUO -aVu -aWf -aWL -aXI -aYr -aZq -aWf -bbb -bcs -aXM -beN -bfR -aXM -aXM -beN -bkf -bll -bmy -bnW -bpn -bqw -brE -bsR -bpm -aRH -bwm -bxp -byu -byu -byu -bBG -bCQ -bDW -bFd -bDY -bHy -bII -bJH -bKR -bMg -bNu -bNu -bPS -bKX -bMm -bJO -bTn -bUa -bUF -bVB -adj -aaT -bXQ -bYM -bZl -bZl -bZl -bZl -bYK -bXQ -aaT -adj -bVB -bUF -bUF -bUF -bTn -aaT -aaT -ckd -clP -ckd -aaT -aaT -bTn -bUF -bUF -bUF -cqm -cqR -cru -cru -cru -cru -cru -cru -cru -cwf -bTn -bUF -bUF -bTn -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(102,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -acW -adh -adr -adI -adI -adI -aet -afe -afC -afC -agF -adQ -aeo -aif -aiI -aji -aji -aji -aiI -akX -alw -amh -amM -amM -anS -aov -amM -apw -apT -amM -aqO -amM -arJ -amM -aqO -amM -arJ -amM -aml -amg -amg -awa -awt -axf -auW -ayg -aoM -azc -apr -aAf -app -aBf -aBf -aik -aDc -aDc -aDc -aEP -aEi -aGr -aGR -aHC -aHY -aGj -aEi -aJS -aKM -aLK -aMY -aOd -akG -akI -akI -aAw -aRM -aSu -aTf -aTR -aTR -aVv -aWg -aWM -aXJ -aYs -aZr -baj -bbc -bct -bdH -beO -bfS -bfS -bfS -beO -bkg -bfS -bmz -bnX -bpo -bqx -brF -bsS -bpm -aRH -bwm -bxq -byv -byv -bxq -bBH -bCR -bDV -bFe -bDY -bHz -bIJ -bJI -bKS -bMh -bNv -bIH -bPT -bQL -bRy -bJO -bTm -bTZ -bUG -bVB -adj -aaT -bXQ -bYN -bYK -bYK -caw -bYK -bYK -bXQ -aaT -adj -bVB -bUF -bUF -bUF -bTn -aaT -ckd -ckd -clQ -ckd -ckd -aaT -bTn -bUF -bUF -bUF -cqm -cqR -cru -cru -cru -cru -cru -cru -cru -cwf -cqm -cgl -bUF -bTn -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(103,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -acW -acW -acW -acW -acW -acW -acW -acW -acW -acW -acW -ahi -aeo -aig -aiI -ajj -aji -aji -akD -akY -alx -ami -amN -anm -anT -amg -amg -apx -apU -amg -amg -arn -apU -amg -amg -asP -apU -amg -amg -auU -avy -awb -aws -axg -auW -ayg -aoM -azc -apr -aAe -app -aBg -aBM -aCv -aik -aAY -aEh -aEQ -aEi -aEi -aGS -aEi -aIb -aEi -aEi -aJT -aKN -aKN -aKN -aKN -aKN -aKN -aQp -aQX -aRM -aSv -aTg -aTS -aUP -aVw -aWh -aWN -aXK -aYt -aZs -aWh -bbd -bcu -bdI -beP -bfT -bgS -bhS -biY -bkh -blm -bmA -bnY -bpm -bqy -brG -bsT -bpm -aRH -bwm -bxq -byw -bzE -bxq -bBI -bCS -bDX -bFf -bDY -bHA -bII -bII -bKT -bMi -bNw -bIH -bPU -bKZ -bMe -bSu -bTm -bTZ -bUF -bVB -adj -aaT -bXQ -bYO -bZl -bZl -bZl -bZl -bYK -bXQ -aaT -adj -bVB -bUF -bUF -bUF -bVB -aaT -cke -ckW -ckY -cmV -cke -aaT -bVB -bUF -bUF -bUF -cqm -cqR -cru -cru -cru -ctA -cru -cru -cru -cwf -cqm -coT -bUF -bTn -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(104,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -ads -ads -ads -ads -ads -ads -ads -ads -acW -adQ -aeo -aeo -aiI -aji -aji -akp -aji -akZ -aly -ami -amN -ann -anU -aow -aoT -apu -apV -aqu -aqP -arl -arK -aqu -aqP -arl -atq -aqu -aqP -aiI -aiI -aiI -aiI -aoM -auW -ayi -aoN -azg -azM -aAg -app -aBh -ahk -ahk -aik -ahk -ahk -aEL -aEi -aGs -aGT -aHD -aIc -aIE -aHD -aJU -aKN -aLL -aMZ -aOe -aNc -aKN -akG -aAw -aRM -aSw -aTg -aTT -aUQ -aVx -aWf -aWO -aXL -aYu -aZt -aWf -bbe -bcv -bdJ -beQ -bfU -bfW -bfV -biZ -bfV -bfV -bmB -bnZ -bpp -bqz -brH -bsU -bpm -aRH -bwm -bxr -bxr -bwm -bAA -bBJ -bCT -bDY -bFg -bDY -bHB -bII -bII -bKU -bMj -bII -bOG -bPV -bQM -bRz -bJO -bTm -bTZ -bUF -bVB -adj -aaT -bXQ -bYP -bYK -bYK -bYK -bYK -bYK -bXQ -aaT -adj -bVB -bUE -bUF -bUF -bVB -aaT -ckd -ckX -ckY -cmW -ckd -aaT -bVB -bUF -bUF -bUF -cqm -cqR -cru -cru -csM -ctB -cum -cru -cru -cwf -cqm -bUF -bUF -bVB -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(105,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abL -ads -ads -ads -ads -ads -ads -ads -acW -ahj -ahJ -aih -aiJ -aji -aji -aji -aji -ala -alz -amj -amN -ano -amg -amg -aoU -amN -apW -aqv -aqQ -amN -arL -asd -asv -amN -atr -atQ -aut -aiI -avz -awc -awu -aoM -auW -ayg -aoM -azc -apr -aAe -app -aik -aBN -ahk -aik -ail -aik -aER -aEi -aGt -aGU -aHE -aId -aHE -aJf -aJV -aKO -aLM -aNa -aOf -aNc -aNd -akI -aAw -aRM -aSx -aTg -aTg -aTg -aVy -aWf -aWP -aWP -aWP -aWP -bak -bbf -bcv -bdJ -beR -bfV -bgT -bhT -bja -bki -bfV -bmC -boa -bpq -bqA -brI -bsV -bpm -buT -bwo -bxs -byx -bzF -bAB -bBK -bCU -bDZ -bFh -bDY -bHC -bII -bII -bKT -bMk -bII -bOH -bPV -bKX -bMm -bJO -bTn -bUa -bUF -bVB -bVB -bVB -bXO -bYL -bZl -bZl -bZl -bZl -ccq -bXO -bVB -bVB -bVB -bUF -bUF -bUF -bVB -aaT -ckd -ckY -ckY -ckY -ckd -aaT -bVB -bUF -bUF -bUF -cqm -cqR -cru -cru -cru -ctC -cru -cru -cru -cwf -cqm -bUF -bUF -bVB -aaa -cui -cui -cui -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(106,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abL -abL -ads -ads -ads -ads -ads -ads -acW -acW -acW -acW -aiI -ajk -aji -aji -akE -alb -alA -ami -amN -anp -amg -aox -aoV -amN -aji -aji -apQ -amN -aji -aji -apQ -amN -aji -aji -apQ -aiI -atR -atR -atR -aoM -auW -ayg -aoM -azd -apr -aAe -app -aik -aik -ahk -ahk -ahk -aik -aES -aEi -aGu -aGV -aHF -aIe -aIF -aJg -aJW -aKP -aLN -aLN -aOg -aOY -aKN -akI -aAw -aRM -aSy -aTh -aTU -aUR -aVz -aWi -aWQ -aXM -aXM -aXM -aXM -bbg -bcv -bdJ -beS -bfW -bgU -bhU -bjb -bkj -bln -bmD -bob -bpm -bpq -bpq -bpq -bpm -buU -boh -bxt -byy -bzG -bAC -bBL -bCV -bEa -bEa -bGp -bHD -bII -bJJ -bKV -bMj -bII -bIH -bPT -bQL -bRA -bJO -bTm -bTZ -bUF -bVC -bWi -bVC -bXP -bYK -bYK -bYK -bYK -bYK -bYK -bXP -bVC -bWi -bVC -bUF -bUF -bUF -bVB -aaT -ckf -ckY -clR -ckY -cnD -aaT -bVB -bUE -bUF -bUF -cqm -cqR -cru -cru -cru -cru -cru -cru -cru -cwf -cqm -bUF -bUE -bVB -aaa -cui -cui -cui -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(107,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abL -abL -abL -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -aiI -ajj -aji -aji -akD -alc -alB -amk -amN -anq -amg -amg -aoW -amN -aji -aqr -apQ -amN -aji -asb -apQ -amN -aji -aqr -apQ -aiI -atR -atR -atR -aoM -auW -ayg -aoM -azh -aoL -aAh -app -aBi -aBO -ahk -aDd -aik -aik -aET -aEi -aGv -aGW -aHG -aIf -aHG -aGv -aJX -aKQ -aLO -aNb -aOh -aOZ -aNd -akI -aAw -aRM -aSz -aSz -aSz -aSz -aSz -aWj -aWR -aXN -aXN -aZu -aXN -aXN -bcw -bdK -beT -bfV -bgV -bhV -bhX -bkk -bfW -bmE -boc -bpr -bqB -brJ -bsW -buc -buV -boh -bxt -byz -bzH -bAD -bBM -bCW -bEb -bFi -bDY -bHE -bIK -bJK -bKW -bMl -bNx -bIH -bPW -bKZ -bMe -bSu -bTm -bTZ -bUF -bVB -bVB -bVB -bXO -bYK -bYK -bZQ -bYK -bYK -bYK -bXO -bVB -bVB -bVB -bUF -bUF -bUF -bVB -aaT -ckd -ckY -ckY -ckY -ckd -aaT -bVB -bUF -bUF -bUF -cqm -cqR -cru -cru -cru -cru -cru -cru -cru -cwf -cqm -bUF -bUF -cxB -aaa -aab -cui -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(108,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abL -abL -abL -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -aiI -aji -aji -aji -aiI -akX -alC -aml -amN -anr -amg -amg -aoX -amN -aji -aji -aqR -amN -aji -aji -aqR -amN -aji -aji -aqR -aiI -atR -ats -atR -aoM -aqo -ayj -amJ -aom -aon -aom -aom -ahk -ahk -ahk -aDe -aik -aEi -aEU -aEi -aGw -aGX -aHH -aIf -aHH -aJh -aJY -aKN -aLP -aNc -aNc -aPa -aKN -akG -aAw -aRM -aSA -aSA -aSA -aSA -aSA -aWj -aWS -aXO -aWS -aZv -bal -bal -aZv -bdL -aZv -aZv -bgW -bhW -bhX -bkl -bfW -bmF -bod -bps -bqC -brK -boe -boe -buW -boh -bxt -byA -bzI -bAE -bBN -bCX -bEc -bEc -bEc -bHF -bIL -bJL -bKX -bMm -bJO -bOI -bPV -bQM -bRB -bJO -bTm -bTZ -bUF -bVB -adj -aaT -bXO -bYQ -bZm -bYQ -bYQ -bZm -bXO -bXO -aaT -adj -bVB -bUF -bUF -bUG -bVB -aaT -ckd -ckX -ckY -cmW -ckd -aaT -bVB -bUF -bUF -bUF -cqm -cqS -crv -crv -crv -ctD -crv -crv -crv -cwg -cqm -bUF -bUF -bVB -aaa -aab -cui -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(109,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acf -aaa -aaa -aaa -abL -abL -abL -abL -abL -ads -ads -ads -ads -ads -ads -ads -ads -ads -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -aiI -atR -aoM -aoM -aoM -axD -ayh -axh -azi -apr -aAi -app -aBj -aBP -aCw -aik -aik -aEi -aEV -aFC -aGx -aGY -aHG -aIf -aHG -aGx -aJZ -aKN -aLQ -aNd -aNd -aKN -aKN -akG -aAw -aRM -aSB -aTi -aTi -aTi -aVA -aRN -aWT -aTj -aYv -aZv -bam -bbh -bcx -bdM -beU -aZv -bgX -bhX -bhX -bkm -blo -bmF -boe -boe -bqD -brL -bsX -bud -buX -boh -bxt -byA -bzJ -bAF -bBO -bCY -bEd -bFj -bEc -bHG -bIH -bJL -bKY -bMn -bJL -bOH -bPV -bKX -bMm -bJO -bTn -bUa -bUF -bVB -adj -aaT -bXO -bXO -bZn -bZn -cax -bZn -bXO -bXO -aaT -adj -bVB -bUF -bUF -bUF -bVB -aaT -cke -ckW -ckY -cmV -cke -aaT -bVB -bUF -bUF -bUG -cqm -cqm -cqm -cqm -csN -ctE -csj -csj -csj -csj -cqm -cgm -bUF -bVB -aaa -aab -cui -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(110,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abL -abL -abL -abL -abL -abL -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -abL -abL -abL -abL -asQ -abL -atR -auu -atR -atR -atT -awv -atT -auW -ayk -ayM -azj -azN -apr -aAA -aik -aik -aik -aik -aik -aEi -aEW -aEi -aGu -aGZ -aHH -aIf -aHH -aJi -aKa -aEi -aLR -akG -akG -akG -akG -akG -aAy -aRM -aSz -aRM -aTV -aRM -aSz -aRN -aWU -aSD -aYw -aZv -ban -bbi -bcy -bdN -beV -aZv -bgY -bhX -bjc -bkm -bfW -bmF -boe -boe -boe -brM -bps -bue -buY -boh -bxt -byA -bzJ -bAG -bBP -bCZ -bAF -bFk -bEc -bHH -bIM -bJM -bKZ -bMo -bNy -bIH -bPT -bQL -bRC -bJO -bTm -bTZ -bUF -bVB -adj -aaT -aaT -bXO -bXO -bZR -cay -bXO -bXO -aaT -aaT -adj -bVB -bUF -bUF -bUF -bVB -aaT -ckd -cke -clS -cke -ckd -aaT -bVB -bUF -bUF -bUF -bTn -aaT -adj -cqm -csO -ctF -cun -cuS -cuS -cwh -cwD -cwT -cxg -bVB -aaa -aab -cui -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(111,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abL -abL -abL -abL -abL -abL -abL -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -abL -abL -abL -abL -abL -atS -aoM -aoM -aoM -aoM -aoM -aoM -axE -avC -aoN -azk -azO -aAj -app -ajs -aBQ -aik -aik -aik -aEi -aEX -aFD -aGv -aGW -aHG -aIf -aHG -aGv -aKb -aEi -aLR -akI -akI -akI -akG -akG -aAw -aRN -aSC -aTj -aTj -aTj -aTj -aWk -aWV -aWx -aYx -aZv -bao -bbj -bcz -bdO -beW -aZv -bgZ -bhY -bhW -bkm -blp -bmG -bof -boe -boe -brN -boe -bsY -buZ -boh -bxt -byB -bzI -bAH -bBQ -bDa -bEe -bAF -bEc -bHI -bIH -bJN -bKZ -bMp -bNz -bIM -bPX -bKZ -bMe -bSu -bTm -bTZ -bUF -bVB -adj -aaT -aaT -aaT -bXO -bXQ -bXQ -bXO -aaT -aaT -aaT -adj -bVB -bUF -bUF -chX -bTn -aaT -ckg -ckZ -clT -bVB -ckg -aaT -bTn -bUF -bUF -bUF -bVB -aaT -adj -csj -csP -ctG -ctG -ctG -cvz -cwi -cwE -cwU -caA -bTn -aaa -aab -cui -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(112,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abL -abL -abL -abL -abL -abL -abL -abL -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -abL -abL -abL -abL -abL -atR -aoM -auV -avA -avA -aww -axh -axF -ayl -amJ -aom -azP -aom -aom -ahk -ahk -ahk -ahk -ail -aEi -aEU -aEi -aGw -aGX -aHH -aIf -aHH -aJh -aJY -aKR -aDP -akI -akI -akI -akI -akG -aAw -aRN -aSD -aSD -aSD -aSD -aSD -aSD -aSD -aSD -aSD -aZv -bap -bbk -bcA -bdO -beX -aZv -bha -bhZ -bjd -bkn -blq -bmH -bog -bpt -bqE -brO -bsY -buf -buf -boh -bxt -byB -bzJ -bAI -bBR -bDb -bEf -bFl -bEc -bHJ -bIH -bJL -bLa -bMq -bJL -bOJ -bPV -bQM -bRD -bJO -bTm -bTZ -bUG -bVB -adj -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -aaT -adj -bVB -bUF -bUF -bUH -bTn -bTn -bVB -bVB -bWi -bVB -bVB -bTn -bTn -coT -bUF -cpJ -bTn -aaT -adj -cqm -csQ -ctH -cuo -cuT -cvA -cwj -cqm -cwV -caA -bTn -aaa -aab -cui -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(113,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -abL -abL -abL -abL -abL -abL -abL -atR -aoM -auW -avB -apt -awx -aoN -axG -aym -aoM -aoL -azQ -aAk -app -aBk -aBR -aik -ajm -aik -aik -aEY -aEi -aGx -aGU -aHI -aIf -aIG -aJj -aKc -aKR -aDP -akG -akG -aHU -akI -akG -aAw -aRN -aSE -aSD -aSD -aSD -aVB -aSD -aSD -aSD -aYy -aZv -bal -bbl -bcB -bdP -aZv -aZv -bfW -bia -bfW -bfW -bfU -bmI -boh -boh -bqF -brP -bsZ -bqF -bva -boh -bxu -byC -bzI -bAJ -bBS -bDc -bzI -bzI -bEc -bHK -bIN -bJO -bLb -bMr -bNA -bOK -bPY -bQN -bRE -bJO -bTm -bTZ -bUH -bTn -bVB -bVB -bVB -bVB -bVB -bVB -bVB -bVB -bVB -bVB -bVB -bVB -bVB -cgm -bUF -bUF -bTn -bUF -bUF -bVB -clT -bVB -cnE -bUF -bTn -cgm -bUF -bUF -bTn -bTn -bTn -cqm -cqm -cqm -cqm -cqm -cqm -cqm -cqm -ccs -caA -bTn -aaa -aab -cui -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(114,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -abL -abL -abL -abL -abL -abL -abL -abL -abL -atR -aoM -auW -avC -awd -asS -axi -asS -asS -aoM -apr -azR -apr -app -aik -aik -aik -ajm -aik -aik -aEZ -aEi -aGu -aHa -aHJ -aIg -aHJ -aJk -aKd -aKS -aLS -aNe -aNe -aPb -aPb -aPb -aQY -aRO -aSF -aSF -aSF -aSF -aVC -aVL -aSF -aSF -aYz -aZw -baq -bbm -bcC -bdQ -bcC -bfX -bcC -bib -bcC -bko -bcC -bmJ -boi -bfX -bcC -bib -bcC -bcC -bvb -bwp -bwp -byD -bzK -bAK -bBT -bDd -bEg -bEg -bGq -bHL -bEg -bGq -bLc -bDd -bEg -bOL -bEg -bQO -bRF -bSv -bTo -bUb -bUI -bVD -bUI -bUI -bUI -bUI -bUI -bZS -bUI -cbm -bSv -bUI -bUI -bUI -bUI -cgn -bUI -bUI -ciK -bUI -bUI -bUI -bUI -bUI -bUI -bUI -cox -cgn -bUI -bUI -ciK -bUI -bUI -bUI -bUI -bUI -bUI -bUI -bUI -bUI -cox -cwW -caA -bVB -aaa -aab -cui -aab -aaa -aaa -aaa -aaa -aaa -acf -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(115,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abL -abL -abL -abL -acg -acg -acg -acg -abL -abL -abL -abL -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -abL -abL -abL -abL -abL -abL -abL -abL -abL -ats -atR -aoM -auW -avC -awd -awy -aoM -asS -asS -aoM -apr -azR -apr -app -aik -aik -aik -aik -aik -aik -aFa -aEi -aGy -aHb -aHK -aIf -aHG -aJl -aKb -aKR -aLT -aNf -aOi -aPc -aOi -aNf -axl -aRP -aSG -aSG -aSG -aSG -aSG -aWl -aWW -aSG -aSG -aZx -bar -bbn -bcD -bcD -bcD -bfY -bcD -bic -bcD -bkp -bcD -bmK -bcD -bcD -bcD -brQ -bcD -bcD -bvc -bcD -bcD -byE -bzL -bAL -bBU -bzL -bzL -bFm -bGr -bHM -bzL -bJP -bLd -bzL -bzL -bOM -bzL -bQP -bRG -bSw -bTp -bUc -bUJ -bUJ -bWj -bUJ -bUJ -bUJ -bUJ -bZT -caz -cbn -ccr -cdd -bRH -bRH -bRH -cgo -bRH -bRH -ciL -bRH -bRH -bRH -bRH -bRH -bRH -bRH -bRH -cgo -bRH -bRH -ciL -bRH -bRH -bRH -bRH -bRH -bRH -bRH -bRH -bRH -bRH -cgo -cxh -bVB -aaa -aab -cui -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(116,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abL -abL -abL -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -abL -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -abL -abL -abL -abL -abL -abL -abL -abL -abL -asR -aoM -atT -aoM -auW -avC -awe -awz -aoM -asS -asS -aoM -azl -azR -aAl -app -ajo -aBS -aCx -aik -aik -aik -aEN -aEi -aGz -aHc -aEi -aIh -aEi -aJm -aKe -aKT -aLU -aNg -aNg -aPd -aPd -aPd -aQZ -aRQ -aSH -aSH -aSH -aUS -aSH -aVN -aWX -aSH -aSH -aZy -aSH -bbo -bcE -bcE -bcE -bfZ -bcE -bfZ -bcE -bcE -bcE -bmL -bcE -bcE -bcE -bfZ -bcE -bcE -bvd -bwq -bwq -bwq -bwq -bAM -bBV -bAM -bAM -bFn -bGs -bHN -bIO -bAM -bLe -bAM -bNB -bLe -bAM -bQQ -bRH -bSx -bTq -bUd -bUF -bUF -bWk -bUF -bUF -bUF -bUF -bZU -caA -cbo -ccs -cde -bUF -bUF -bUF -cgp -bUF -bUF -bZU -cjC -bUF -bUF -bUF -bUF -bUF -bUF -bUF -cgp -bUF -bUF -bZU -bUF -bUF -bUF -bUF -bUF -bUF -bUF -bUF -bUF -bUF -cgp -bUF -bVB -aaa -aab -cui -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acf -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(117,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abL -abL -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -abL -ads -ads -ads -ads -ads -ads -ads -ads -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -aoM -atU -aoM -auW -avC -awe -awz -aoM -axH -asS -aoM -azm -azS -arX -app -ahk -ahk -ahk -ahk -ahk -ahk -aFb -aEi -aEi -aEi -aEi -aIi -aEi -aGS -aJT -aKU -aLV -akI -akI -akG -akG -akG -aAw -aRN -aSI -aSI -aSI -aRN -aSf -aWm -aWY -aXP -aYA -aZz -aYA -bbp -bbq -bbq -bbq -bbq -bbq -bbq -bbq -bbq -blr -bmM -boj -bbq -bbq -bbq -bbr -bbq -bbp -bbq -bxv -byF -byF -byF -bBW -byF -bEh -bFo -bGt -bHO -bIP -bFy -bFy -bMs -bNC -bON -bMs -bMs -bRI -bSy -bTr -bTn -bRI -bVE -bVE -bVE -bXR -bXR -bXR -bZV -caB -cbp -cct -cdf -cdg -cdg -cdg -cdg -cdg -cdg -cdg -cjD -ckh -cla -cla -cmX -cmX -bYV -bYV -bYV -bYV -bYV -bYV -cqT -bUF -bUF -csR -csR -csR -bUF -bUF -bYV -bVB -bVB -bVB -bVB -aab -aab -cui -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(118,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abL -abL -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -abL -abL -ads -abL -abL -ads -ads -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -aoM -aoM -aoM -atT -aoM -auW -avD -awf -awA -axj -awf -awf -axj -azn -azT -aAm -aAB -aBl -aBT -aBl -aBl -aDE -aBl -aFc -aFE -aGA -aHd -aHd -aIj -aIH -aJn -aKf -aKV -aLW -aNh -aNh -aNh -aNh -aNh -aNh -aKV -amT -amT -amT -aUT -aVD -aWn -aWZ -aXQ -aSD -aZA -aSD -bbq -bcF -bcG -bcG -bcF -bcF -bcF -bcF -bbq -bls -bmN -boj -bcF -bcG -bcG -bcG -bcF -bcF -bcG -bbp -byG -bzM -bAN -bBX -bDe -bEh -bFp -bGu -bHP -bIQ -bJQ -bFy -bMt -bND -bOO -bPZ -bMs -bRI -bSz -bTs -bUe -bUK -bVF -bWl -bXd -bXS -bYR -bZo -bZW -caC -cbq -ccu -cdg -cdR -cdR -cdR -cdR -chh -chY -ciM -cjE -cki -cki -cki -cki -cki -cki -adj -adj -adj -adj -bYV -bUF -crw -csk -csS -csS -csS -bUF -cvB -bYV -cgV -cgV -cgV -cgV -cui -cui -cui -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(119,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abL -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -aoM -asS -att -asS -aoM -auX -avA -avA -awB -axh -axI -ayn -axh -azo -azU -aAn -aAC -aBm -aBm -aBm -aBm -aBm -aBm -aBm -aFF -aGB -aHe -aHe -aIk -aII -aJo -aKg -aKW -aLX -aNi -aNi -aNi -aNi -aNi -aNi -aRR -aNi -aNi -aNi -aNi -aNi -aNi -aNi -aXR -aYB -aZB -aSD -bbq -bcF -bdR -bcG -bga -bcG -bcF -bcG -bbq -blr -bmO -boj -bcF -bqG -bcF -bta -bcG -bqG -bcF -bbq -byH -bzN -bAO -bBY -bDf -bEi -bFq -bGv -bHQ -bIR -bJR -bLf -bMu -bNE -bOP -bQa -bQR -bRI -bSA -bTt -bUf -bRI -bVE -bWm -bWm -bWm -bWm -bWm -bZX -caD -cbr -ccv -cdh -cdS -ceN -cfu -cfu -chi -chZ -ciN -cjE -ckj -clb -clU -cmY -cnF -cki -adj -aaT -aaT -adj -cqn -cqn -cqn -csl -csl -csl -csl -csm -cvC -csl -adj -adj -adj -adj -aab -aab -aab -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(120,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -ads -ads -abL -abL -abL -abL -abL -abL -agc -agc -agc -agc -agc -ads -aoM -asT -asT -ahk -ahk -ail -ahk -ahk -ahk -ahk -ahk -ahk -ahk -ahk -azV -azV -azV -azV -azV -azV -azV -azV -azV -azV -azV -azV -azV -azV -aIl -aIJ -aoD -aKh -aKX -aLY -aLY -aKm -aPe -aKm -aKk -aRa -aKk -aKm -aKk -aKk -aKm -ajT -akG -akG -akq -aSD -aZA -aSD -bbr -bcF -bcF -bcF -bcF -bcG -bcF -bcG -bbq -blt -bmP -boj -bcF -bqH -bcF -btb -bcF -bcG -bcG -bhc -byI -byH -bAP -bBZ -bDg -bEh -bFr -bGw -bHR -bIS -bJS -bFy -bMv -bNF -bOQ -bQb -bQS -bRI -bSB -bTu -bUg -bRI -bVE -bWm -bWm -bWm -bWm -bWm -bZX -caC -cbs -ccw -cdi -cdT -cdT -cdT -cgq -chj -chZ -ciO -cjE -ckk -clc -clV -cmZ -cnG -cki -adj -aaT -aaT -adj -cqn -cqU -crx -csm -csT -ctI -cup -cuU -cvD -csl -adj -aaT -aaT -aaT -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(121,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -abL -abL -abL -abL -abL -ads -abL -ads -ads -ads -ads -abL -abL -abL -abL -aeu -abL -agc -agc -agc -agc -agc -ads -aoM -asS -asS -ahk -auv -aik -aik -aik -aiL -aik -aik -aik -aik -aik -azW -aAo -aAD -aAo -aAo -aCy -azV -aDF -aAO -aFd -aAO -aGC -aAO -aHf -aIm -aIJ -aoD -aKi -aKY -aLZ -aNj -aOj -aPf -aOj -aOj -aOj -aOj -aSJ -aOm -aTW -aKm -aQp -akG -akG -akq -aYC -aZA -aSD -bbq -bcG -bcG -beY -bcF -bhb -bcF -bcF -bbq -blt -bmP -bij -bcG -bgb -bcF -bgb -bcF -bgb -bcF -bbp -byJ -bzO -bAQ -bCa -bDh -bEh -bFs -bGx -bHS -bIT -bJT -bFy -bMw -bNG -bOR -bQc -bMs -bRI -bSC -bTv -bUh -bUL -bVG -bWn -bXe -bXT -bYS -bZp -bVE -caC -cbq -ccx -cdg -cdR -ceO -cdR -cdR -chk -chZ -ciP -cjE -ckl -cld -clW -cna -cnH -cki -adj -aaT -aaT -adj -cqn -cqV -cry -csn -csU -ctJ -cuq -ctJ -cuq -csl -adj -aaT -aaT -aaT -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(122,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -ads -ads -ads -abL -ads -ads -ads -ads -ads -ads -ads -ads -ads -abL -abL -ads -ads -ads -ads -agc -agc -agc -agc -agc -ads -aoM -ahk -atu -ahk -ahk -ahk -avE -avE -awC -aoa -aik -ajm -ahk -ahk -azV -aAo -aAE -aBn -aBU -aCz -aDf -aDG -aEj -aFe -aFG -aGD -aEj -aHL -aIn -aIK -aJp -aKj -aKZ -aMa -aNk -aOk -aPg -aPI -aQq -aRb -aOj -aSK -aTk -aSK -aKk -asg -akG -aWo -aHU -aSD -aZA -aSD -bbq -bcG -bcG -bdR -bcF -bgb -bcF -bgb -bbq -blt -bmQ -bij -bpu -bqI -bqI -bqI -bpu -bqI -bwr -bwr -bwr -bwr -bwr -bCb -bwr -bwr -bFt -bGy -bHT -bIU -bJU -bLg -bMx -bNH -bMx -bMx -bMx -bRJ -bSD -bTw -bUi -bUM -bVE -bVE -bVE -bXR -bXR -bXR -bVE -caC -cbq -ccx -cdg -cdg -cdg -cdg -cdg -cdg -cdg -cdg -cjE -ckm -cle -clX -cnb -ckm -cki -cdk -cdk -cdk -cdk -cqn -cqW -crz -cso -csV -ctK -cur -ctK -cvE -csl -adj -adj -adj -adj -aab -aab -aab -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(123,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -agc -aqw -akF -akF -akF -akF -asw -aik -aik -aik -auw -ahk -ajp -aik -awD -aob -aik -aik -aik -azp -azV -aAo -aAF -aBo -aBV -aAo -azV -aDH -aEk -aFd -aAM -aGC -aAO -aHf -aIm -aIJ -akI -aKk -aLa -aMb -aNl -aOj -aPh -aPJ -aOj -aOj -aOj -aOm -aOm -aOm -aKk -aJq -akG -aVE -akG -aSD -aZA -aSD -bbq -bcF -bcG -bcG -bgb -bgb -bid -bje -bje -blu -bmN -bij -bpv -bqJ -brR -btc -bug -bve -bwr -bxw -byK -bzP -bAR -bCc -bDi -bEj -bFu -bGz -bHU -bIU -bJV -bLg -bMy -bNI -bOS -bMy -bMx -bRK -bSD -bTn -bTn -bTn -bTn -adj -adj -adj -adj -adj -bYV -caC -cbq -ccx -cdj -cdU -ceP -ceP -ceP -ceP -ceP -ciQ -cjF -cjJ -clf -clY -cnc -cnI -cod -coy -coy -cpn -cpK -cqo -cqX -crA -csm -csW -ctL -cus -ctL -cus -csl -cqn -cqn -cqn -cqn -cqn -cqn -cqn -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(124,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -agc -aqx -aik -aro -aik -ase -aik -aik -aik -aik -aux -ahk -ajp -aik -ajs -axk -aik -aik -ayN -azq -azV -aAp -aAG -aBp -aBV -aAo -aDg -aBX -aEl -aBX -aAM -aAO -aAO -aHf -aIm -aIJ -akI -aKk -aLa -aMc -aNm -aOj -aPi -aPJ -aOj -aRc -aRS -aOj -aOj -aTX -aUU -akG -akI -akG -akG -aSD -aZA -aSD -bbq -bcF -bcG -bcG -bcF -bhc -bie -bjf -bkq -blv -bmR -bok -bpw -bqK -brS -btd -buh -bvf -bws -bxx -byL -bzQ -bAS -bCd -bDj -bwr -bFv -bGA -bHV -bIU -bJW -bLh -bMy -bNJ -bOT -bMy -bMx -bRL -bSD -bTn -adj -adj -adj -adj -adj -adj -adj -adj -bYV -caD -cbt -ccx -cdk -cdV -ceQ -ceQ -cgr -ceQ -ceQ -ciR -cjG -ckn -clg -clZ -cnd -ckn -coe -ceQ -ceQ -ceQ -cpL -cqp -cqY -crB -csm -csX -ctM -cup -csU -cvD -csp -cwF -cwX -cdU -cxi -cxP -cxR -cqn -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(125,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -aqy -aik -arp -arM -arM -arM -asU -aik -aik -auy -ahk -aik -aik -aik -aik -aik -aik -aik -azr -azV -aAq -aAH -aBq -aBW -aAo -aDg -aBX -aEl -aBX -aFH -azV -aHf -azV -aIo -aIJ -aJq -aKk -aLa -aMd -aNn -aOl -aPj -aPK -aLZ -aRd -aRT -aOj -aTl -aTY -aKk -aJq -akG -aXa -akG -aSD -aZA -aSD -bbq -bcF -bcG -bcF -bgb -bgb -bif -bjg -bje -blt -bmP -bij -bpx -bqL -brT -brT -bui -bpy -bwt -bxy -byM -bzR -bzR -bCe -bDk -bEk -bFw -bGB -bHW -bIV -bJX -bLi -bMz -bNK -bOU -bMy -bMx -bRM -bSD -bTn -adj -bUN -bUN -bUN -bUN -bUN -bUN -adj -bYV -caC -cbq -ccx -cdk -cdk -ceR -ceR -ceR -ceR -ceR -ciS -ciS -cko -clh -cma -cne -cnJ -cof -coz -coz -coz -coz -coz -cqZ -crC -csp -csp -csp -csp -cuV -csm -csp -cdU -cdU -cxi -cxj -cdk -cxS -cqn -cyi -cyl -cyl -cyl -cyl -cyl -cyl -cyl -cyl -cyl -cyl -cyl -cyl -cyl -cyl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(126,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -ahR -aik -aik -aik -aik -aik -aik -atv -aik -auz -ahk -auv -aik -aik -aik -aik -aik -aik -aik -azV -aAo -aAI -aBr -aBX -aCA -azV -aDI -aEl -aBX -aAN -aGE -aHg -aHM -aIp -aIJ -aJr -aKk -aLa -aMc -aNm -aOm -aPk -aPL -aOj -aRe -aOj -aOj -aTl -aTY -aKk -aVE -akG -akI -akG -aSD -aZA -aSD -bbq -bcF -bcG -bcF -bcF -bgb -big -bjh -bkr -blt -bmP -bol -bpy -bpy -bpy -bpy -bpy -bpy -bwr -bxz -byN -bzS -bAT -bCf -bDl -bwr -bFx -bGC -bHX -bIW -bJY -bLg -bMy -bMy -bOV -bMy -bMx -bRN -bSD -bTn -adj -bUN -bVH -bWo -bXf -bXU -bUN -adj -bYV -caC -cbu -ccy -cdl -cdW -cdW -cdW -cdW -cdW -cdW -ciT -ciS -ckp -cli -cmb -cnf -cnK -ciX -adj -adj -adj -adj -adj -cdt -crC -cdk -csY -ctN -cut -cuW -cvF -cwk -cwG -cwY -cxj -cxC -cdk -cxT -cqn -cye -cye -cye -cye -cye -cye -cye -cye -cye -cye -cye -cye -cye -cye -cye -cyl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(127,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -agG -ahk -ahk -ahk -ahk -ahk -ahk -ahk -akF -ahk -akF -akF -amO -ahk -akF -akF -aoY -apy -ahk -aqz -aqS -aik -aqS -asf -asx -asV -aik -aik -aik -ahk -ajm -ajn -ajm -ajm -aik -ayo -aik -aik -azV -aAo -aAJ -aAo -aBY -aCB -aDh -aDJ -aEm -aFf -aFf -aGF -aHh -aHh -aHh -aIL -aJs -aKl -aLb -aMe -aNo -aOn -aPl -aPM -aOj -aOj -aRU -aOj -aOj -aTZ -aUU -aQp -aWo -akG -akG -aSD -aZA -aSD -bbq -bcF -bcF -bcF -bgb -bgb -bih -bji -bje -blw -bmS -bij -bpz -bpy -brU -bte -bpB -bvg -bwr -bwr -bwr -bwr -bwr -bwr -bwr -bwr -bFy -bFy -bHY -bFy -bJZ -bLg -bMx -bNL -bMx -bMx -bMx -bOX -bSE -bTx -bNO -bUO -bVI -bWp -bXg -bXV -bYT -bZq -bYV -caC -cbv -ccx -cdk -aaT -aaT -aaT -aaT -aaT -aaT -ciU -ciS -ckq -clj -cmc -cng -cnL -ciX -adj -aaT -aaT -aaT -adj -cqn -crD -cdk -csZ -css -ctP -css -css -css -css -cwZ -cdU -cxC -cdk -cxU -cye -cxZ -cyo -cyx -cyH -cyH -cyH -cyH -cyH -cyH -cyW -cyX -cza -cyk -cye -cye -cyl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(128,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -agH -ahl -ahK -ahl -aiK -aiL -aik -aik -aik -ail -aik -aik -amP -ahk -aik -aik -aik -aik -ahk -ahk -ahk -ahk -ahk -ahk -ahk -ahk -ahk -atV -ahk -ahk -aik -awg -aik -ajm -aik -ayo -aik -azs -azV -aAr -aAJ -aBs -aBZ -aCC -azV -aDK -aEl -aBX -aFI -aGG -aHi -aHN -aIq -aIJ -akI -aKm -aKm -aMf -aKh -aKm -aPe -aPN -aQr -aRf -aRT -aOj -aTm -aTY -aKk -akG -akG -aHU -akq -aSD -aZA -aSD -bbq -bcF -bcF -bcF -bcF -bhc -bii -bjj -bks -blx -bmT -bom -bpA -bqM -brV -btf -bpB -bvh -bwu -bpC -bpC -bpC -bpC -bpC -bpC -bpC -bpC -bpC -bHZ -bIX -bpC -bLj -bon -bNM -bNM -bNM -bQT -bNM -bSF -bNQ -adj -bUN -bVJ -bWq -bXg -bXW -bYU -bZr -bZY -caE -cbw -ccx -cdm -cdX -ceS -cfv -ceS -ceS -cia -ciV -cjH -ckr -clk -cmd -clg -cnM -ciX -adj -aaT -aaT -aaT -adj -cqn -crE -csq -cta -css -ctP -css -css -css -css -cwZ -cdU -cxD -cdk -cxV -cyf -cyj -cyk -cyy -cyk -cyk -cyk -cyk -cyk -cyk -cyk -cyy -cyk -cyk -cyk -cye -cyl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(129,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -agH -ahk -ahk -ahk -ahk -ajl -aik -ajm -aik -ahk -alD -aik -amQ -ahk -aik -ahk -ail -ahk -ahk -aik -aik -aik -aik -aik -aik -amv -ahk -aik -aik -ahk -aqS -awh -awE -ajm -aik -ayo -aik -azt -azV -azV -aAK -azV -azV -aCD -azV -aDL -aEn -aBX -aFJ -azV -aHf -aHO -aIr -aIM -akI -aKm -aLc -aMg -aNp -aOo -aPe -aPO -aQs -aRg -aRT -aOj -aTl -aTY -aKk -aJr -akG -akq -akq -aYD -aZz -aYA -bbp -bbp -bbp -bbp -bbp -bbp -bid -bid -bje -blt -bmU -bij -bpB -bpB -bpB -bpB -bpB -bvi -bwv -bww -byO -bxB -bxB -bxB -bxB -bxB -bxB -bxB -bIa -bIY -bIY -bLk -bMA -bNN -bOW -bQd -bQU -bRO -bSG -bNN -bNP -bUP -bVK -bWr -bXh -bXX -bYT -bZq -bYV -caC -cbx -ccz -cdn -cdY -ceT -cfw -cgs -chl -cib -ciU -ciS -ciS -ciS -cme -cnh -ciS -ciX -adj -aaT -aaT -aaT -adj -cqn -crF -csr -csr -ctO -cuu -cuX -cvG -cwl -cwH -cwZ -cdU -cdk -cdk -cxW -cxW -cxW -cxW -cyz -cxW -cxW -cxW -cxW -cxW -cxW -cxW -cyz -cxW -cxW -cxW -cye -cyl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(130,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -agc -agc -agc -ahk -aii -aik -aik -aik -ajm -aik -ahk -ahk -ahk -ahk -ahk -aik -ahk -aik -aik -aik -aik -aik -arq -ajm -aik -aik -ahk -ahk -atW -atW -ahk -ahk -ahk -ahk -ahk -aik -ayo -aik -azu -azV -aAs -aAL -aBt -aCa -aCE -azV -aAO -aEl -aBX -aFK -aGH -aHj -aHf -aIs -aIJ -akI -aKm -aLd -aMh -aNq -aOp -aPm -aPP -aQs -aRh -aRT -aOj -aOj -aTX -aKm -aVF -aNh -aNh -aXS -aSD -aZA -aSD -bbs -bcH -bcH -bcH -bcH -bcH -bcH -bcH -bbs -blt -bmV -bon -bpC -bpC -bpC -bpC -bon -bvj -bww -bxA -bxB -bxB -bxB -bxB -bxB -bxB -bxB -bxB -bxB -bIZ -bIY -bLl -bMB -adj -bOX -bQe -bQV -bRP -bSH -bNQ -adj -bUN -bVL -bWs -bXi -bXY -bUN -adj -bYV -caC -cbv -ccx -cdo -cdZ -cdZ -cfx -cdZ -chm -cib -ciW -cdW -cks -ciX -cmf -cni -ciX -adj -adj -adj -adj -adj -adj -cqn -crG -css -css -ctP -cuv -css -css -cwm -css -cwZ -cxk -cxE -cdt -cxX -cxW -cyi -cyi -cyz -cyi -cyi -cyk -cxW -cyk -cyi -cyi -cyz -cyi -cyi -cxW -cye -cyl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(131,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -agc -agc -agc -ahk -aij -aik -ajm -ajm -ajm -aik -ail -aik -aik -aik -aik -aik -ahk -ajp -apz -ajs -aqA -ajm -ajm -ajm -aik -aik -aik -aik -aik -aik -aik -aik -aik -aik -ail -aik -ayo -aik -azv -azV -aAt -aAM -aBu -aCb -aCF -aDi -aDM -aEo -aFg -aFL -aCb -aCb -aHP -aIt -aIN -aJq -aKm -aLe -aMi -aNr -aOj -aPn -aPQ -aQs -aRg -aRT -aOj -aOj -aOj -aRa -amT -amT -amT -amT -aSD -aZA -aSD -bbt -bbt -bbt -bbt -bbt -bbt -bij -bij -bij -bij -bmW -bij -bij -bqN -brW -brW -bqN -brW -brW -bxB -bxB -bxB -bAU -bxB -bDm -bxB -bAU -bxB -bxB -bxB -bKa -bLl -bMB -adj -bOX -bNQ -bNQ -bNQ -bOX -bOX -adj -bUN -bUN -bUN -bUN -bUN -bUN -adj -bYV -caC -cby -ccA -cdp -cea -ceU -cfy -cgt -cdZ -cic -aaT -aaT -ciU -ceR -cmf -cni -ceR -adj -aaT -aaT -aaT -aaT -adj -cqn -crH -css -ctb -ctP -css -css -css -css -css -cwZ -cxl -cxE -cdt -cxW -cxW -cyi -cyp -cyA -cyI -cyM -cyM -cyI -cyM -cyM -cyI -cyA -czb -cyi -cxW -cye -cyl -cyl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(132,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -agc -agc -agc -ahk -aik -aik -ajm -ajT -ajT -ajT -ajT -ajT -ajT -ajT -ajT -ajT -ajT -ajT -ajT -ajT -ajT -ajT -ajT -ajT -ajT -ajT -ajT -ajT -ajT -ajT -ajT -ajT -ajT -ajT -ajT -axJ -ahk -ahk -ahk -azV -aAu -aAN -aBv -aCc -aCG -azV -aAO -aAO -aAO -aAO -aAO -aAO -aHf -aIm -aIO -akG -aKm -aLf -aMj -aNs -aOq -aPe -aPR -aQt -aRi -aRT -aOj -aOj -aUa -aKm -aVG -aHN -aHN -aXT -aSD -aZA -aSD -bbu -bcI -bdS -beZ -bgc -bhd -bik -bjk -bkt -bly -bmX -boo -bpD -bqN -bqN -bqN -bqN -bqN -bqN -bxB -bxB -byQ -byQ -byQ -bzW -byQ -byQ -byQ -bxB -bxB -bxB -bLl -bMB -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -bYV -caC -cbv -ccu -cdo -cdZ -cdZ -cdZ -cgu -chn -cid -aaT -aaT -ciU -ceR -cmf -cni -ceR -adj -aaT -aaT -aaT -aaT -adj -cqn -crI -ceY -ctc -ctQ -cuw -cuY -cvH -cwn -cwI -cxa -cxm -cxE -cdt -cxW -cxW -cyk -cyq -cyB -cyi -cyi -cyk -cyk -cyB -cyi -cyi -cyB -cyq -cyk -cxW -cye -cye -cyl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(133,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -agc -agc -agc -ahL -aik -aik -ajm -ajT -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -amT -akG -akG -akG -azV -aAv -aAO -aBw -aAO -aCH -azV -aDN -aEp -aFh -aFM -aGI -aHk -aHf -aIu -aIP -aJt -aKm -aKm -aMf -aKh -aKm -aPe -aPS -aQu -aRj -aPV -aPV -aPV -aUb -aKo -aRp -aRp -aRp -aKo -aSD -aZC -bas -bbu -bcJ -bdT -bfa -bgd -bhe -bil -bjl -bku -blz -bmY -bop -bpE -bqO -brX -btg -buj -btg -bwx -bxC -byP -bzT -bAV -bAV -bDn -bAV -bFz -bGD -byP -bxC -bxC -bLm -bMC -bNO -bOY -bOY -bOY -bOY -bSI -bOY -bOY -bOY -bOY -bWt -adj -adj -adj -adj -bYV -caC -cbv -ccB -cdo -ceb -ceV -cfz -cgv -cho -cie -aaT -aaT -ciW -cll -cmg -cnj -cll -cog -cdW -cdW -cdW -cdW -cks -cqn -crJ -cdt -ctd -ctR -cux -cdk -cdk -cdk -cwJ -cdk -cdk -cxF -cdt -cxX -cxW -cyi -cyq -cyi -cyl -cyl -cyl -cyi -cyl -cyl -cyl -cyi -cyr -cyi -cxW -cyk -cye -cyl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(134,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -agc -agc -ahM -aik -aik -ajm -ajT -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -akH -akq -akq -akq -akq -akq -akG -amT -akG -akG -akG -azV -azV -aAP -azV -aAP -azV -azV -aDO -azV -azV -azV -azV -azV -azV -aIl -aIQ -aJu -aJu -aLg -aMk -aNt -aOr -aPo -aPT -aPV -aRk -aRV -aPV -aTn -aPq -aUV -aUX -aWp -aUX -aXU -aYE -aZD -bat -bbv -bcK -bdU -bfb -bge -bhf -bim -bjm -bkv -blA -bmZ -boq -bpF -bqN -brY -bth -buk -bvk -bwy -bxD -byQ -bzU -bAW -bAW -bDo -bAW -bzU -byQ -bIb -bxB -bxB -bLl -bMB -adj -bOZ -bQf -bQf -bQf -bSJ -bTy -bUj -bUQ -bVM -bWu -bOY -bOY -bNO -bNO -bZZ -caF -cbz -ccC -cdq -cdq -cdq -cfA -cdq -cdq -cif -ciX -ciX -ciX -ciX -cmh -cnk -ciX -coh -ceR -ceR -ceR -ceR -cqq -cra -crK -cst -cte -ctS -cuy -cdk -cvI -cwo -cwK -cwK -cwK -cxG -cdt -cxW -cxW -cyi -cyr -cyi -cyl -cyl -cyl -cyi -cyl -cyl -cyl -cyi -cyq -cyi -cxW -cyk -cye -cyl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(135,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -agc -agc -ahN -aik -aik -ajn -ajT -akq -akq -akq -akq -akq -akq -akq -akq -akq -akH -akq -akq -akG -akG -akG -akG -akI -akI -akG -akG -akG -akG -akI -akI -akI -akI -akI -axK -akG -asg -akG -ava -akG -akI -akI -akI -akI -akG -aDP -akI -akI -akI -ava -akG -akG -aIm -aIO -akG -aKn -aKo -aMl -aNu -aOs -aPp -aPU -aPU -aRl -aRW -aPU -aPU -aUc -aPU -aVH -aWq -aUf -aKo -aSD -aZE -bau -bbt -bcL -bdV -bfc -bgc -bhg -bim -bjn -bkw -blA -bna -bor -bpG -bqN -brZ -bti -bti -bvk -btl -bxB -byR -bzU -bAX -bxB -bxB -bEl -bFA -byQ -byQ -bxB -bxB -bLl -bMB -adj -bPa -bQf -bQW -bQX -bQY -bQf -bUk -bUR -bVN -bWv -bXj -bPa -bYV -bYV -bYV -caD -cbA -ccv -cdr -cec -ceW -cfB -cfB -cfB -cig -ceP -ciQ -ceP -clm -cmi -cnl -clm -coi -ceP -ceP -ceP -cjF -cqr -cqn -crL -csu -ctf -ctT -cuz -cdk -cvJ -cwp -cwL -cvI -cxn -cxH -cdt -cxW -cxW -cyk -cyq -cyB -cyl -cyl -cyk -cyk -cyk -cyl -cyl -cyk -cyq -cyl -cxW -cyk -cye -cyl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(136,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -agc -agc -ahO -ahk -ail -ahk -ajT -akq -akq -akq -akq -akq -akq -akq -akq -akq -akG -akG -akI -akI -akG -akI -akG -akI -akG -akG -akG -akG -akG -akG -akG -akG -awF -axl -axl -axl -axl -axl -axl -axl -axl -axl -axl -axl -axl -aDQ -aEq -axl -axl -axl -aEq -axl -aIv -aIO -akI -alh -aKo -aMm -aNv -aOt -aPq -aPV -aQv -aRm -aRV -aPV -aPV -aPq -aPV -aPV -aPV -aXb -aXV -aSD -aZF -bav -bbw -bcJ -bdW -bfd -bgc -bhh -bim -bjo -bkx -blB -bnb -bos -bpH -bqP -bsa -btj -bul -bvl -bwz -bxE -byS -bzV -bAY -bxB -bDp -bzW -bFB -bGE -bzW -bxB -bxB -bLn -bMB -adj -bPa -bQg -bQX -bQf -bSK -bQf -bUl -bUR -bVN -bWw -bQf -bXZ -bYW -bZs -bZs -caC -cbB -ccz -cds -ced -ceX -cfC -cfC -cfC -cfC -cfC -cfC -cfC -cln -cmj -cnm -cnN -coj -coA -coA -coA -cpM -cqs -crb -crM -csv -ctg -ctU -cuA -cuZ -cvK -cwq -cwM -cxb -cxo -cxI -cxQ -cxY -cxY -cxY -cys -cyk -cyi -cyi -cyk -cyS -cyk -cyi -cyi -cyk -cyr -cxW -cxW -cyk -cye -cyl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(137,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -agc -agc -ahP -aik -aik -ajm -ajT -akq -akq -akq -akq -akq -akq -akG -akG -akG -akI -akI -akI -akG -akI -akG -akG -asg -akG -asW -akI -akI -akI -akI -akI -akG -awG -anY -akI -akI -akG -aoF -akG -aAw -akG -akI -akI -akI -arr -akI -aDP -akG -akG -akG -aDP -akG -aIw -aIO -akI -aKo -aKo -aMn -aNw -aOu -aPr -aPW -aPW -aRn -aRX -aPW -aTo -aUd -aUW -aPV -aPV -aPV -aKo -aYC -aZG -baw -bbt -bcM -bdV -bfe -bgc -bhi -bim -bjp -bky -blA -bnc -bot -bpI -bqN -bsb -bti -bti -bvk -bwA -bxB -byQ -bzW -bAZ -bxB -bxB -bEm -bzW -byQ -byQ -bxB -bxB -bLo -bMB -adj -bPa -bQf -bQY -bQX -bQW -bQf -bUk -bUR -bVN -bWx -bXk -bPa -bYV -bYV -bYV -caC -cbC -ccx -cdt -cdV -ceY -cfD -cfD -cfD -cfD -cfD -cfD -cfD -clo -cmk -cnn -clo -cok -cfD -cfD -cfD -cpN -cqt -cqn -crN -csw -cth -ctP -cuB -cdk -cvI -cvI -cvI -cvI -cxp -cxJ -cdt -cxW -cxW -cyl -cyq -cyk -cyl -cyl -cyk -cyk -cyk -cyl -cyl -cyB -cyq -cyl -cxW -cyk -cye -cyl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(138,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -agc -agc -ahQ -aik -aik -ajm -ajT -akq -akq -akq -akq -akq -akq -akI -akG -akI -akI -akG -akG -akI -akG -akG -akG -akG -asy -asy -asy -asy -asy -asy -asy -asy -awG -axm -axm -ayp -ayp -axm -axm -aAx -aAQ -aAQ -aAR -aAR -aAR -aAR -aEr -aAR -aAQ -aAR -aEr -aHQ -aIw -aIO -aJr -aKp -aLh -aMo -aNx -aKo -aPs -aPX -aQw -aRo -aRY -aSL -aPX -aUe -aUX -aPV -aPV -aPV -aKo -aYF -aZH -bax -bbx -bcN -bdX -bff -bgf -bhj -bim -bjq -bkz -blA -bnd -bou -bpJ -bqN -brY -btk -bum -bvk -bwB -bxD -byQ -bzW -bAW -bAW -bDq -bAW -bzW -byQ -bIb -bxB -bxB -bLo -bMB -adj -bPb -bQf -bQf -bQf -bSL -bTz -bUm -bUS -bVO -bWy -bPc -bPc -bNP -bNP -caa -caG -cbD -ccD -cdk -cdk -cdt -ceR -ceR -ceR -ceR -ciX -ciX -ciX -ciX -cml -cni -ciX -coh -ceR -ceR -ceR -ceR -ciX -cqn -crO -csx -cte -ctV -cuC -cdk -cvI -cwr -cvI -cvI -cvI -cxK -cdt -cxW -cxW -cyi -cyr -cyi -cyl -cyl -cyl -cyi -cyl -cyl -cyl -cyi -cyq -cyi -cxW -cyk -cye -cyl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(139,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -agc -agc -ahR -aik -aik -ajm -ajT -akq -akq -akq -akq -akq -ajT -akG -anV -anV -anV -anV -anV -anV -anV -anV -akG -ans -asy -asX -atw -atw -auA -auY -avF -asy -awG -axm -axL -ayq -ayO -azw -axm -aAw -aAQ -aBx -aBz -aBz -aBz -aBz -aEs -aFi -aFN -aFi -aHl -aAQ -aIx -aIR -aJv -aKq -aKq -aMp -aNy -aOv -aPt -aPY -aKo -aRp -aKo -aKo -aTp -aUf -aUf -aPV -aPV -aPV -aKo -aSD -aZI -bay -bbu -bcJ -bdY -bfg -bgg -bhk -bin -bjr -bkA -blC -bne -bov -bpK -bqN -bsc -btl -bun -bvm -bwC -bxF -byT -bzX -bzX -bzX -bDr -bzX -bzX -bGF -byT -bxF -bxF -bLp -bMA -bNP -bPc -bPc -bPc -bPc -bSM -bPc -bPc -bPc -bPc -bWz -adj -adj -adj -adj -bYV -caC -cbC -ccu -bYV -adj -adj -adj -adj -adj -adj -adj -adj -adj -ciX -cmm -cni -ciX -ciU -adj -adj -adj -adj -adj -cqn -crP -cdt -ctd -ctR -cux -cdk -cdk -cdk -cwJ -cdk -cdk -cxF -cdt -cxX -cxW -cyi -cyq -cyi -cyl -cyl -cyl -cyi -cyl -cyl -cyl -cyi -cyr -cyi -cxW -cyk -cye -cyl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(140,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -agc -agc -ahR -aik -aik -ajm -ajT -akq -akq -akq -akq -akG -akI -ans -anV -aoy -aoZ -aoZ -apX -aqB -aqT -anV -akG -akG -asz -asY -atw -atX -asy -auZ -avG -asy -awG -axn -axM -ayr -ayP -azx -axm -aAw -aAR -aBy -aCd -aCI -aDj -aCd -aEt -aBy -aFO -aBy -aBz -aAR -aIm -aIO -akG -akG -aLi -aMq -aNz -aOw -aPu -aPZ -aQx -aPZ -aPZ -aSM -aPV -aPV -aPV -aPV -aWr -aXc -aKo -aSD -aZA -aSD -bbu -bcO -bdZ -bfh -bgh -bhl -bio -bjs -bkB -blD -bnf -bow -bpL -bqN -bsd -bqN -bqN -bqN -bqN -bxB -bxB -byQ -byQ -byQ -bzW -byQ -byQ -byQ -bxB -bxB -bxB -bww -bMB -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -bOX -bOX -bOX -caH -cbC -ccx -cab -cab -cdu -cfE -cgw -chp -cdu -aaT -aaT -adj -ceR -cmn -cni -ceR -ciU -aaT -cnO -cnO -cnO -cnO -cqn -crQ -csy -cti -ctW -cuD -cva -cvL -cws -cwN -cxc -cxq -cxE -cdt -cxW -cxW -cyk -cyq -cyB -cyi -cyi -cyB -cyk -cyk -cyi -cyi -cyB -cyq -cyk -cxW -cye -cye -cyl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(141,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -agc -agc -ahR -aik -aik -ajm -ajT -akq -akq -akq -akq -akG -akI -akG -anW -aoz -aoZ -apA -anV -aqC -aqU -anV -akG -akI -asz -asZ -atw -atY -asy -asy -asy -asy -awG -axm -axN -ays -ayQ -azy -axm -aAw -aAR -aBy -aCe -aCJ -aDk -aDR -aEu -aCM -aFP -aCN -aCd -aAQ -aIm -aIS -alE -alE -aLj -aMr -aNA -aOx -aPv -aQa -aQa -aQa -aQa -aSN -aTq -aTq -aTq -aTq -aWs -aXd -aXW -aYG -aZB -aSD -bbt -bbt -bbt -bbt -bbt -bbt -bij -bij -bij -bij -bng -bij -bij -bqN -bse -brW -bqN -brW -brW -bxB -bxB -bxB -bAU -bxB -bDm -bxB -bAU -bxB -bxB -bxB -bKb -bww -bMB -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -bOX -bPd -bZt -caC -cbC -ccx -bZs -cee -cdu -cfF -cgx -chq -cdu -aaT -aaT -adj -ceR -cmo -cni -ceR -ciU -aaT -coU -cpo -cpO -cqu -cqn -crR -css -ctj -ctP -css -css -css -css -css -cwZ -cxr -cxE -cdt -cxW -cxW -cyi -cyt -cyA -cyI -cyM -cyM -cyI -cyM -cyM -cyI -cyA -czc -cyi -cxW -cye -cyl -cyl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(142,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -agc -agc -ahR -aik -aik -ajo -ajT -akq -akq -akH -akI -akI -akI -akG -anW -aoA -aoZ -apB -anV -anV -anV -anV -akG -alh -asy -ata -atw -atZ -auB -atw -avH -asy -awG -axm -axO -ayt -axm -azy -axm -aAy -aAR -aBy -aBy -aBy -aDl -aBy -aEv -aBy -aBy -aGJ -aHm -aAQ -aIm -aIO -akG -akG -aLi -aMs -aNB -aOy -aPw -aPZ -aPZ -aPZ -aPZ -aSM -aTr -aPV -aPV -aPV -aWr -aUX -aKo -aSD -aZA -aSD -bbs -bcH -bcH -bcH -bcH -bcH -bcH -bcH -bbs -blt -bnh -bon -bpC -bpC -bsf -bpC -bon -bvn -bww -bxA -bxB -bxB -bxB -bxB -bxB -bxB -bxB -bxB -bxB -bIY -bIY -bww -bMB -adj -bOX -bOX -bQZ -bQZ -bQZ -bQZ -bQZ -bQZ -bQZ -bQZ -bQZ -bQZ -bQZ -bPd -cab -caC -cbC -ccx -bZs -cee -cdu -cfG -cel -cfe -cdu -aaT -aaT -adj -ceR -cmp -cno -ceR -ciU -aaT -coU -cpp -cpP -cqv -crc -crS -csz -ctk -ctX -cuv -cvb -cvM -cwt -css -cwZ -cxs -cxE -cdt -cxX -cxW -cyi -cyi -cyz -cyi -cyi -cyk -cxW -cyk -cyi -cyi -cyz -cyi -cyi -cxW -cye -cyl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(143,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -agc -agc -ahR -aik -aik -ajp -ajT -akq -akq -akG -akI -akG -akI -alh -anV -aoB -aoZ -apC -apY -aoZ -aqV -anV -akI -ash -asy -atb -atx -aua -asy -asy -asy -asy -awG -axm -axP -ayu -axm -azz -axm -aAw -aAR -aBz -aBy -aCK -aDm -aDS -aEw -aFj -aFQ -aBy -aCe -aAR -aIm -aIO -akG -akI -aLi -aMt -aNC -aOz -aPw -aQb -aQy -aRq -aRZ -aLi -aLi -aRp -aRp -aRp -aRp -aRp -aKo -aYD -aZz -aYA -bby -bby -bby -bby -bby -bby -bid -bid -bje -blt -bni -bij -bpM -bpM -bsg -bpM -bpM -bvo -bww -bww -byU -bxB -bxB -bxB -bxB -bxB -bxB -bxB -bIa -bIY -bIY -bww -bMB -bNQ -bOX -bPd -bRa -bRQ -bRQ -bTA -bTA -bUT -bVP -bTA -bRQ -bRQ -bRa -bPd -cab -caD -cbE -ccx -cdu -cdu -cdu -cdu -cgy -cdu -cdu -cdu -aaT -adj -ceR -cmo -cni -ceR -ciU -aaT -coU -cpq -cpQ -cqw -crd -crT -csr -csr -ctY -csr -cvc -css -css -css -cwZ -cdU -cdk -cdk -cxW -cxW -cxW -cxW -cyz -cxW -cxW -cxW -cxW -cxW -cxW -cxW -cyz -cxW -cxW -cxW -cye -cyl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(144,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -agc -agc -ahR -ahk -ahk -ahk -ajT -akq -akG -akG -akI -akI -akI -ant -anV -aoC -apa -apD -anV -anV -anV -anV -akG -alf -akG -amo -amT -anx -akG -ava -akI -akI -awG -axm -axQ -ayv -axm -azA -axm -aAw -aAQ -aBA -aCf -aBy -aDn -aDT -aEx -aFk -aBy -aBy -aHn -aAQ -aIm -aIO -akG -akG -aLi -aMu -aNC -aOA -aPx -aQc -aPZ -aPZ -aPZ -aPZ -aLi -aUg -aUY -aVI -aUY -aXe -akq -aSD -aZA -aSD -bbz -bcP -bcP -bcP -bcP -bhm -bii -bjt -bkC -blE -bnj -bij -bpN -bqQ -bsh -btm -bpM -bvp -bpC -bpC -bpC -bpC -bwu -bpC -bpC -bpC -bpC -bpC -bpC -bpC -bKc -bpC -bon -bNR -bPd -bPd -bRa -bRR -bSN -bTB -bTA -bUU -bTA -bWA -bXl -bYa -bRa -bPd -cab -caC -cbC -ccx -cdu -cef -ceZ -cfH -cfM -chr -cih -cdu -aaT -adj -ceR -cmo -cni -ceR -ciU -aaT -coU -cpr -cpR -cqx -cqn -crU -ceY -ceY -ctZ -cuE -cvd -cvN -cwu -cwO -cxd -cdU -cxL -cdk -cxZ -cyf -cym -cyk -cyC -cyk -cyk -cyk -cyk -cyk -cyk -cyk -cyC -cyk -cyk -cyk -cye -cyl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(145,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -agc -agc -ahR -ahk -aiL -ajq -ajT -akq -akH -akG -akI -akG -akG -anu -akI -aoD -amT -anx -akG -akG -akI -akG -akG -alf -akG -amo -amT -anx -akI -akI -akI -akG -awH -axm -axm -ayt -axm -azB -axm -aAw -aAQ -aAQ -aAR -aCL -aDo -aAQ -aEr -aFl -aFR -aFR -aAQ -aAQ -aIm -aIO -akI -akG -aLi -aMv -aND -aOB -aPy -aQd -aQz -aRr -aPZ -aPZ -aPY -akG -akG -akG -akG -akG -aJr -aYH -aZA -aSD -bbz -bcP -bcQ -bcQ -bgi -bgi -bip -bju -bje -blw -bnk -bij -bpO -bqR -bsi -btn -buo -buo -buo -buo -buo -bzY -bBa -bCg -bCg -bCg -bCg -bCg -bIc -bIc -bIc -bIc -bIc -bNS -bPd -bPd -bRa -bRS -bSO -bTC -bUn -bUV -bRQ -bWB -bXm -bYb -bRa -bPd -cab -caI -cbC -ccx -cdu -ceg -cen -cfI -cen -cen -cii -cdu -aaT -adj -ceR -cmo -cni -ceR -ciU -aaT -cnO -cnO -cpR -cnO -cqn -cqn -csA -csA -cqn -cqn -cqn -cqn -cqn -cwP -cxe -cxt -cdU -cdk -cxU -cqn -cxV -cyu -cyD -cyH -cyH -cyH -cyH -cyH -cyH -cyW -cyY -czd -cyk -cye -cye -cyl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(146,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -agc -agc -ahR -ail -aik -ajr -ajT -ajT -ajT -ald -akI -amm -amR -anv -amR -aoE -apb -apE -amR -amR -amR -amR -amR -anv -amR -aoE -aty -apE -amR -avb -avI -awi -awI -amR -amR -ayw -amR -azC -amR -amR -amR -aBB -aCg -aBy -aDl -aAQ -aEy -aFm -aFS -aFS -aHo -aHR -aIm -aIO -akG -akI -aLi -aMw -aNE -aOC -aLi -aQe -aPZ -aRs -aPZ -aSO -aLi -aUh -aUZ -aUY -aWt -akG -akG -aSD -aZA -aSD -bbz -bcP -bcP -bea -bcP -bgi -big -bjh -bkr -blt -bnl -box -bpP -bqS -bsj -bto -bup -bvq -bwD -bxG -byV -bzY -bBb -bCh -bDs -bEn -bFC -bGG -bIc -bJa -bKd -bLq -bIc -bNS -bPd -bPd -bRa -bRT -bSP -bSP -bUo -bUW -bRQ -bRQ -bRQ -bYc -bRa -bPd -cab -caC -cbC -ccx -cdu -ceh -cen -cfJ -cgz -chs -cij -cdu -aaT -adj -ceR -cmo -cni -ceR -ciU -aaT -aaT -coU -cpR -cqy -cqn -crV -csB -csB -cua -cuF -cve -cvO -cqn -cqn -cqn -cxu -cdU -cdk -cxT -cqn -cye -cye -cye -cye -cye -cye -cye -cye -cye -cye -cye -cye -cye -cye -cye -cyl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(147,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -agc -agc -agc -ahR -ahk -aik -ajs -ajT -akq -akG -ale -alE -amn -amS -anw -anX -anX -anX -apF -apZ -anX -anX -anX -anX -asi -anX -anX -atz -aub -anX -avc -anX -awj -awJ -anX -apZ -ayx -ayR -azD -anX -anX -aAS -aBC -aCh -aCM -aDp -aDU -aEz -aFn -aFT -aFS -aFS -aCL -amT -aIT -aJw -aKr -aLk -aMx -aNF -aOD -aPz -aQf -aQA -aPZ -aSa -aLi -aLi -aQp -akG -akG -akG -akG -aXX -aSD -aZA -aSD -bbz -bcP -bcP -bcQ -bgi -bgi -biq -bjv -bje -blt -bnm -bij -bpQ -bqT -bsk -btp -buo -bvr -bwE -bxG -byW -bzY -bBc -bCi -bDt -bEo -bFD -bGH -bIc -bJb -bKe -bLr -bIc -bNS -bPd -bPd -bRa -bRU -bSQ -bTD -bUp -bUX -bRQ -bWC -bXn -bYd -bRa -bPd -cab -caD -cbF -ccE -cdv -cei -cfa -cfK -cgA -cen -cik -cdu -aaT -adj -ceR -cmq -cni -ceR -ciU -aaT -aaT -coU -cpR -cqy -cqn -crW -csB -csB -csB -cuG -cuG -cvO -cqn -aab -cqn -cxv -cxM -cdk -cxU -cqn -cyi -cyl -cyl -cyl -cyl -cyl -cyl -cyl -cyl -cyl -cyl -cyl -cyl -cyl -cyl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(148,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -agc -agc -agc -ahR -ahk -ahk -ahk -ajT -akq -akG -alf -akG -amo -amT -anx -anY -aoF -akG -akG -aqa -akI -akI -akI -akG -akI -akI -akG -amo -aqa -akG -avd -akI -awk -awK -awk -axR -ayy -awk -awk -awk -awk -aAT -aBD -aBy -aCN -aDq -aAR -aEA -aFm -aFU -aFS -aHp -aAQ -aIm -aIO -akI -aKs -aLi -aMy -aNG -aOC -aLi -aQg -aNC -aPZ -aSb -aSP -aTs -akG -akG -akG -akG -aXf -aXY -aSD -aZA -aSD -bbz -bcP -bea -bcQ -bcP -bhm -bie -bjw -bkD -blF -bnn -bom -bpR -bqU -bsl -btq -buq -bvs -bwF -bxG -byX -bzY -bBd -bCj -bDu -bEp -bFD -bGI -bIc -bJc -bKf -bLs -bIc -bNS -bPd -bPd -bRa -bRV -bSR -bTA -bTA -bUY -bTA -bTA -bXo -bYe -bRa -bPd -cab -caC -cbC -ccx -cdu -cej -cen -cfI -cgB -cen -cen -cdu -aaT -adj -ciX -cmr -cnp -ciX -ciU -aaT -aaT -coU -cpR -cqy -cqn -crX -csB -csB -csB -csB -csB -cvO -cqn -aab -cqn -cxw -cxN -cxP -cya -cqn -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(149,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -agc -agc -agc -ahR -aik -aik -aik -ajT -akq -akI -alg -alF -amp -amU -any -alF -alF -alF -alF -aqa -akI -akG -akI -akI -akG -all -all -atA -auc -auC -ave -all -awk -awL -axo -axS -ayy -ayS -azE -axr -awk -aAU -aBD -aBy -aCN -aDq -aAR -aEB -aFm -aFV -aFS -aHq -aAR -aIm -aIO -akG -akI -aLi -aMz -aNH -aOC -aLi -aQh -aQB -aRt -aSc -aSP -akG -akG -aVa -aUY -aWu -akG -akG -aSD -aZA -aSD -bbz -bcP -bcQ -bcP -bgi -bgi -bid -bje -bkE -blu -bno -bij -bpS -bqV -bsm -btr -buo -bvt -bwG -bxH -byY -bzY -bBe -bCk -bDv -bEq -bFD -bGJ -bIc -bJd -bKg -bLt -bIc -bNS -bPd -bPd -bRa -bRQ -bRQ -bTA -bUq -bUZ -bVQ -bTA -bRQ -bRQ -bRa -bPd -cab -caC -cbG -ccA -cdw -cek -cfb -cfL -cgC -cht -cen -cdu -ceR -ceR -ciX -cms -cni -ciX -ciU -aaT -aaT -coU -cpR -cqy -cqn -crY -csB -ctl -ctl -csB -csB -cvO -cqn -aab -cqn -cxx -cqn -cqn -cqn -cqn -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(150,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -agc -agc -agc -ahk -ahk -ahk -ail -ajT -akq -akq -akG -alF -amq -amV -anz -amV -amV -apc -alF -aqa -akq -akq -akG -akI -akG -asA -atc -atB -aud -alN -avf -avJ -awk -awM -axp -axS -ayy -awk -awk -axr -awk -aAT -aBD -aBy -aBy -aDr -aAR -aEC -aFo -aFW -aFS -aHr -aHS -aIy -aIU -akI -akG -aLi -aMA -aNI -aOE -aLi -aQi -aNC -aPZ -aSd -aSP -aTt -akG -akG -akG -akG -akG -aHU -aSD -aZA -aSD -bbz -bcQ -bcQ -bcQ -bcQ -bgi -bcP -bgi -bkF -blt -bnp -bij -bpM -bpM -bpM -bts -buo -buo -buo -buo -buo -bzY -bBf -bCl -bCl -bEr -bFE -bGK -bIc -bJe -bKh -bLu -bIc -bNS -bPe -bQh -bRb -bRW -bSS -bSS -bUr -bVa -bVR -bWD -bWD -bYf -bVf -bPd -cab -caC -cbC -ccx -cdu -cel -cfc -cfI -cen -chu -cen -cdu -cjI -ceP -ceP -cmt -cnk -ciX -ciU -aaT -aaT -coU -cpR -cnO -cqn -cqn -csC -ctl -cub -cuH -csB -cvP -cqn -aab -cqn -cxy -cqn -aab -aab -aab -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(151,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -agc -agc -agc -ahk -aim -aik -aik -ajT -akq -akq -akG -alF -amr -amW -amV -amV -aoG -amV -alF -aqa -akH -akq -akG -akI -akG -asA -atd -atC -aud -auD -avg -avJ -awk -awN -axq -axT -ayz -ayT -axr -axr -awk -aAT -aBE -aCg -aBy -aBy -aAQ -aED -aFm -aFS -aFS -aHs -aAQ -aIm -aIO -akG -akI -aLi -aMB -aNJ -aOE -aPA -aPZ -aNC -aRu -aSe -aSP -aTu -akG -aUY -aVJ -aUY -akG -akq -aYC -aZA -aSD -bbz -bcQ -bcQ -bcP -bcQ -bcQ -bcP -bcP -bkF -blt -bnm -bij -bcP -bgi -bcP -btt -bcP -bgi -bcP -bgi -byZ -bzZ -bBg -bCm -bDw -bEs -bFF -bGL -bId -bJf -bKi -bLv -bIc -bNT -bPf -bQi -bRb -bRX -bST -bTE -bUs -bVb -bVS -bWE -bXp -bYg -bVf -bPd -cab -caC -cbH -ccF -cdx -cem -cfd -cfM -cen -chv -cen -ciY -cjJ -ckt -ckt -cmu -cni -ciX -ciU -aaT -aaT -coU -cpR -cnO -adj -cqn -cqn -cqn -cqn -cqn -cqn -cqn -cqn -aab -cqn -cxz -cqn -aab -aab -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(152,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -agc -agc -agc -ahk -aim -aik -aik -ajT -akq -akq -akG -alG -ams -amV -anA -alF -alF -alF -alF -aqa -akG -akG -akG -akI -akG -asA -ate -atC -aue -auE -avf -avK -awk -awK -awl -awk -ayy -awk -awk -axU -awk -aAT -aBE -aCi -aCO -aDs -aDV -aEE -aFp -aFX -aAR -aAR -aAQ -aIm -aIO -aHU -akI -aLi -aMC -aNK -aOF -aLi -aQj -aQC -aLi -aLi -aLi -ajT -aUi -akG -akG -akG -akq -akq -aSD -aZA -aSD -bbA -bcP -bcQ -bfi -bcP -bcQ -bcQ -bcP -bkF -blt -bnm -boj -bcP -bqW -bcQ -btu -bcP -bcP -bcP -bcP -byZ -bAa -bBh -bCn -bDx -bEt -bFG -bGM -bIc -bIc -bIc -bIc -bIc -bNS -bPd -bPd -bRb -bRY -bSU -bTF -bUt -bVc -bVT -bWF -bXq -bYh -bVf -bPd -cab -caC -cbC -ccx -cdu -cen -cfe -cfN -cen -cfe -cen -cdu -cjK -cku -cfD -cmv -cni -ciX -ciU -aaT -aaT -coU -cpR -coU -adj -adj -aab -aab -aab -aab -aab -aab -aab -aab -cui -cxA -cvZ -cvZ -cyb -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acf -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(153,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -agc -agc -agc -ahk -aik -aik -ajt -ajT -akq -akq -akG -alG -amt -amV -anB -alF -aoH -apd -alF -aqa -akI -akI -arr -aoF -akG -asA -atf -atC -auf -auF -avh -all -awk -awO -axr -axr -ayy -ayU -azF -axr -awk -aAT -aBF -amR -amR -aDt -amR -amR -aFq -aFY -amR -amR -aHT -aIz -aIV -amR -amR -aLl -aMD -aFq -avb -amR -amR -aQD -aFY -amR -amR -amR -aUj -aNh -aNh -aNh -aNh -aXZ -aSD -aZA -aSD -bbz -bcP -bcQ -bcP -bcP -bcP -bcQ -bcP -bkF -blr -bnq -boj -bcP -bqX -bcP -btv -bcQ -bvu -bcQ -bcQ -byZ -bAb -bBg -bCo -bDy -bEu -bFH -bGN -bIe -bJg -bKj -bLw -byZ -bNS -bPd -bPd -bRb -bRZ -bSV -bTG -bUu -bVd -bVU -bWG -bXr -bYi -bVf -bPd -cab -caC -cbC -ccu -cdu -cdu -cdu -cdu -cdu -cdu -cdu -cdu -ceR -ceR -ciX -cmw -cni -cnO -col -cnO -cnO -cnO -cpR -cnO -cnO -cnO -cnO -aaa -aaa -aaa -aab -aaa -aaa -aaa -aab -aaa -aaa -aab -cvj -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(154,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -agc -agc -agc -ahk -aik -aik -ajs -ajT -akq -akH -akG -alF -amu -amV -amV -anZ -aoI -ape -alF -aqa -all -all -all -all -all -all -all -atC -aug -auG -avf -alN -awl -awP -axs -axU -ayy -awk -awk -axr -awk -aAV -aBG -aCj -aBG -aDu -aDW -aBG -aFr -aFZ -aBG -aHt -aHt -aHt -aIW -aJx -aKt -aLm -aME -aNL -aOG -aPB -aPB -aQE -aRv -aPB -aSQ -aTv -aBD -aVb -aVD -aWv -aXg -aYa -aSD -aZA -aSD -bbz -bcP -bcP -bcP -bcQ -bcQ -bcQ -bcP -bkF -bls -bno -boj -bcP -bcP -bcP -btw -bcP -bcP -bcQ -bcP -byZ -bAc -bBi -bCp -bDz -bEv -bFI -bGO -bIf -bJh -bJg -bLx -byZ -bNU -bby -bby -bRb -bRb -bSW -bTH -bUv -bVe -bVV -bWH -bXs -bYj -bVf -bPd -cab -caC -cbC -ccG -cdy -ceo -ceo -ceo -ceo -ceo -ceo -ciZ -cjL -cjL -clp -cmx -cnq -clp -com -cjL -cjL -cjL -cpS -cqz -cre -crZ -cnO -aaa -aaa -aaa -aab -aaa -aaa -aaa -aab -aaa -aaa -aab -cvj -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(155,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -agc -agc -agc -ahS -aik -aik -aju -ajT -akq -akq -alh -alF -alF -alF -alF -alF -alF -alF -alF -aqa -all -aqW -ars -all -asj -aqW -all -atD -auh -auH -avi -avL -awk -awQ -axt -axt -ayy -ayU -azG -axr -awk -aqc -ahk -aCk -aCk -aDv -aCk -aCk -aFs -aCk -aCk -abl -akI -akI -akG -aIw -aKu -aLn -aMF -aBD -aOH -akI -akG -akG -ajT -ajT -aSR -aTw -aUk -ajT -aVK -aWw -aXh -aRN -aYI -aZz -aYA -bbB -bbz -bbz -bbz -bbz -bbz -bbz -bbz -bkG -blG -bnr -boj -bbz -bbz -bbz -btx -bbz -bby -bbz -bbz -byZ -bAd -bBj -bAd -byZ -bEw -bFJ -bGP -byZ -bAd -bAd -bAd -byZ -bNV -bPg -bQj -bRc -bRb -bRb -bRb -bRb -bVf -bVf -bWI -bXt -bVf -bVf -bZt -cac -caJ -cbI -ccH -bZK -bZK -bZK -bZK -bZK -bZK -bZK -cja -bZK -bZK -clq -cmy -cnr -clq -clq -clq -clq -cps -cpT -cqA -crf -csa -cnO -aaa -aaa -aaa -aab -aaa -aaa -aaa -aab -aaa -aaa -aab -cvj -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(156,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -agc -agc -agc -ahR -aik -aik -ajm -ajT -akq -akq -akG -akG -akG -akG -akG -akG -akG -apf -apG -aqb -all -aqX -art -all -ask -asB -all -atE -aui -auI -avf -avM -avQ -awR -avQ -avQ -ayA -avQ -avQ -avQ -avQ -aqd -aBH -aCk -aCP -aDw -aDX -aEF -aFt -aGa -aCk -abl -abl -akI -akG -aJy -aKv -aLo -aHN -aNM -aOH -akI -akI -akG -akI -aSf -aSS -aTx -aUl -aVc -aVL -aVC -aXi -aYb -aSF -aZJ -aSF -bbC -bcR -beb -bcR -bcR -bcR -bcR -bcR -bcR -blH -bns -bcR -bcR -beb -bcR -bty -bcR -bvv -bcR -bxI -bza -bAe -bBk -bAe -bAe -bEx -bFK -bGQ -bIg -bIg -bIg -bIg -bMD -bNW -bPh -bPh -bRd -bSa -bSa -bSa -bSa -bSa -bSa -bWJ -bXu -bSa -bYX -bZu -bZu -caK -cbJ -ccI -cdz -cep -cff -cfO -cgD -cgD -cil -cjb -cjM -ckv -clr -cmz -cns -cnP -con -coB -coV -cpt -cpU -cqB -crg -csa -cnO -aaa -aaa -aaa -aab -aaa -aaa -aaa -aab -aaa -aaa -aab -cvj -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(157,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -agc -agc -agc -ahR -aik -aik -ajm -ajT -akq -akq -akq -akq -akH -akq -akq -akq -akq -akq -ajT -aqc -all -aqY -aru -all -aru -asC -all -atF -auj -auJ -avj -avN -avQ -awS -axu -axV -ayB -ayV -azH -azX -avQ -aqd -apg -aCk -aCQ -aDw -aDy -aDy -aFt -aGb -aCk -abl -abl -akG -aIX -aJz -aKw -aLp -aMG -aNN -aOI -aIX -akI -akI -akG -aSf -aSS -aSD -aUm -aSD -aVM -aWx -aSS -aYc -aYJ -aZK -baz -bbD -bcS -bec -bfj -bfj -bfj -bfj -bfj -bfj -blI -bnt -boy -bfj -bqY -bfj -btz -bur -bvw -bfj -bxJ -bzb -bfj -bBl -bCq -bCq -bEy -bFL -bGR -bCq -bCq -bCq -bCq -bCq -bNX -bCq -bCq -bCq -bCq -bCq -bCq -bCq -bCq -bCq -bEy -bGR -bCq -bYY -bZv -bZv -caL -cbK -ccJ -bZG -bZG -cae -bZG -cae -cae -cim -cjc -cbe -ckw -cls -cmA -cnt -ckn -ckn -coC -coW -cps -cpV -cqC -cpO -csa -cnO -aaa -aaa -aaa -aab -aaa -aaa -aaa -aab -aaa -aaa -aab -cvj -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acf -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(158,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -agc -agc -agc -ahR -aik -aik -ajm -ajT -akq -akq -akq -akq -akq -akq -akq -akq -akq -akq -ajT -aqd -all -aqZ -arv -all -asl -aqZ -atg -atC -alN -auK -avk -avO -avQ -awT -axv -awW -ayC -awW -awW -awW -avQ -aqd -apg -aCk -aCR -aDx -aDY -aDy -aFu -aGc -aCk -abl -aHU -akG -aIY -aJA -aKx -aLq -aMH -aNO -aOJ -aPC -akG -akI -akG -aSf -aST -aTy -aUn -aSH -aVN -aSH -aUn -aSH -aYK -aZL -baA -bbE -bcT -bed -bfk -bgj -bfk -bfk -bfk -bfk -bfk -bnu -bcT -bpT -bqZ -bfk -btA -bus -bvx -bwH -bxK -bzc -bAf -bBm -bAf -bwH -bEz -bFM -bGS -bIh -bxL -bxL -bxL -bME -bNY -bxL -bxL -bxL -bxL -bxL -bTI -bAf -bVg -bVW -bWK -bXv -bAf -bYZ -bZw -cad -caM -cbL -ccK -cdA -ceq -cfg -cfP -cgE -chw -cin -cjd -cjN -ckx -clq -cmB -cnu -ckn -ckn -coC -coX -cps -cpW -cqD -cpO -csb -cnO -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -cvj -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(159,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -agc -agc -agc -ahR -aik -aik -ajm -ahk -ahk -ahk -ahk -ahk -ahk -ahk -ahk -ahk -ahk -ahk -ahk -aqc -all -ara -arw -arN -asm -asD -arN -atG -arN -auL -avk -alN -awm -awU -axw -axW -ayD -ayW -awW -azY -avQ -aqd -aik -aCk -aCS -aDy -aDZ -aDy -aDy -aGd -aCk -abl -abl -abl -aIY -aJB -aKy -aLr -aKA -aNP -aOJ -aPC -akG -akI -alh -aRN -aSD -aTz -aUo -aVd -aVO -aVd -aVd -aVd -aYL -aTz -baB -bbF -bcU -bee -bfl -bgk -bfl -bbF -bfl -bfl -bfl -bbF -boz -bpU -bra -bsn -bby -but -bby -bwI -bxL -bzd -bvy -bBn -bwJ -bDA -bEA -bFN -bGT -bDG -bDG -bDG -bDG -bMF -bMF -bPi -bQk -bRe -bMF -bMF -bMF -bUw -bUw -bVX -bWL -bXw -bYk -bUw -bZx -cae -caN -cbM -caR -ccf -cer -cfh -cfh -cgF -chx -cgF -cje -cjO -cfl -clq -cmC -ckn -cnQ -cnQ -coC -coX -cps -cpX -cqD -cpO -csb -aaa -aaa -aaa -aaa -aab -aaa -aaa -aaa -aab -aaa -aaa -aab -cvj -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(160,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -agc -agc -agc -ahT -ahk -aiM -aik -aik -ail -akJ -ali -ali -ali -ali -ali -ali -ali -ali -apH -aqe -aqD -arb -arx -arO -arx -asE -ath -atH -auk -arx -avl -avP -awn -awV -axx -axX -ayE -ayX -awW -azZ -avQ -aqd -aik -aCk -aCT -aDz -aEa -aEG -aFv -aGe -aCk -abl -abl -abl -aIY -aJC -aKz -aLs -aMI -aNP -aOK -aIY -akI -akI -aHU -aRN -aSD -aTA -aUp -aUp -aVP -aUp -aUp -aUp -aYM -aTz -baC -bbF -bcV -bee -bfm -bgl -bfm -bir -bjx -bkH -blJ -bfl -boA -bpV -brb -bso -bbF -buu -bvy -bwJ -bxM -bwJ -bvy -bBo -bCr -bDB -bEB -bFO -bGU -byZ -bJi -bKk -bLy -bMG -bNZ -bPj -bQl -bRf -bSb -bSX -bTJ -bUx -bVh -bVY -bWM -bXx -bYl -bUw -bZx -cae -caO -cbN -ccL -ccf -cer -cfh -cfQ -cfQ -cgI -cio -cjf -cjP -cky -clq -cmD -ckn -cnR -cnR -coD -coY -cpu -cpY -cqE -crh -csb -aaa -aaa -aaa -aaa -aab -aaa -aaa -aaa -aab -aaa -aaa -aab -cvj -aab -aaa -aaa -aaa -aaa -acf -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(161,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -agc -agc -agc -ads -ahk -aiN -ajv -aiN -ahk -aik -alj -alH -alH -alH -anC -aoa -aik -aik -ahk -aqf -all -aqZ -ary -all -asn -aqZ -all -aqZ -aul -atA -avm -aqZ -avQ -awW -awW -axY -ayF -ayY -awW -aAa -avQ -aqd -aik -aCk -aCU -aCk -aCk -aCk -aFw -aCk -aCk -abl -abl -abl -aIY -aJD -aKA -aLt -aMJ -aNP -aOL -aIY -akI -abl -abl -aRN -aSD -aTB -aUq -aVe -aVQ -aVe -aVe -aVe -aYN -aTB -baC -bbF -bcW -bef -bfm -bgm -bhn -bfm -bfm -bkI -blK -bfl -boB -bpW -brc -bsp -bbF -buu -bvy -bwK -bxN -bze -bAg -bBp -bCs -bDC -bEC -bFP -bGV -bIi -bJj -bKl -bLz -bMH -bOa -bPk -bQm -bRg -bRg -bRg -bTK -bUy -bVi -bVZ -bWN -bXy -bYm -bZa -bZx -cae -caP -cbO -ccM -ccf -cer -cfh -cfR -cgG -cgI -cip -cgI -ciq -chz -clq -cmE -ckn -ckn -ckn -coE -coZ -cpv -cpX -cqD -cri -csb -aaa -aaa -aaa -aaa -aab -aaa -aaa -aaa -aab -aaa -aaa -aab -cvj -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(162,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -agc -agc -agc -ads -ahk -aiO -aik -ajU -ahk -aik -alk -alI -amv -ajs -anD -aob -aik -apg -ahk -alN -all -arc -aru -all -aru -arc -all -arc -asB -atA -avn -arc -avQ -awX -awW -awW -ayG -awW -awW -awW -avQ -aAW -aBI -aBI -aCV -aCV -aEb -atj -aFx -ahk -abl -abl -abl -abl -aIY -aJE -aKA -aLu -aMK -aNP -aOM -aIY -abl -abl -abl -aRN -aSU -aTC -aUr -aUr -aVR -aWy -aXj -aYd -aYO -aTB -baC -bbF -bcW -beg -bfm -bgm -bfm -bfm -bfm -bfm -blL -bbF -boC -bfm -brc -bsq -bbF -buu -bvy -bwL -bxO -bzf -bAh -bBq -bCt -bDD -bED -bFQ -bGW -bIj -bDw -bJg -bDw -bMI -bOb -bPl -bQn -bRh -bSc -bSY -bTL -bUy -bVj -bWa -bWO -bXz -bYm -bZa -bZx -caf -caO -cbP -ccN -ccf -cer -cfh -cfS -cgH -chy -ciq -cgI -ciq -chz -clt -cmF -cnv -cnv -coo -coF -cpa -cfh -cfh -cqF -cjO -cfl -cfh -cfh -cfh -aaa -aab -aaa -aaa -aaa -aab -aaa -aaa -aab -cvj -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(163,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -agc -agc -agc -ads -ahk -ahk -ajv -ahk -ahk -aik -alk -alJ -aik -amX -aik -aik -aik -aph -ahk -alN -all -aqX -arz -all -aso -asB -all -aqX -aum -auM -avo -asB -avQ -awY -awW -awW -ayH -awW -awW -awW -avQ -aAX -amX -aCl -aCW -aDA -aDA -aEH -aFy -ahk -abl -abl -abl -abl -aIY -aJD -aKA -aLs -aKA -aNP -aOM -aIY -abl -abl -abl -aRN -aRN -aTB -aUs -aUr -aVS -aUr -aUr -aYe -aYP -aTB -baD -bbF -bcX -beh -bfn -bgn -bho -bis -bhn -bfm -blM -bnv -boD -bpX -brc -bsr -bbF -buu -bvy -bwM -bxN -bzg -bAi -bBr -bCu -bDE -bEE -bFR -bGX -bIk -bJk -bKm -bDw -bMI -bOc -bPm -bQn -bRh -bSc -bSZ -bTM -bUy -bVk -bWb -bWN -bXA -bYn -bZa -bZx -bZG -caP -cbQ -ccM -ccf -ces -cfh -cfT -cgI -chz -cir -cgI -ciq -ckz -clq -cmG -cmG -cnS -clq -coG -cpb -cfh -cpZ -cqG -crj -csc -csD -ctm -cfh -aaa -aab -aaa -aaa -aaa -aab -aaa -aaa -aab -cvj -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(164,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -agc -agc -agc -ads -aaT -aiP -ajw -aiP -akr -aik -alk -alK -aik -aik -anE -aob -aik -ajs -ahk -alN -all -ard -arA -all -asp -asF -all -ard -aun -all -avp -ard -avQ -awZ -axy -axZ -ayI -ayZ -azI -aAb -avQ -aAY -aik -aCl -aCX -abL -abL -aEI -aFy -ahk -abl -abl -abl -abl -aIY -aJD -aKA -aLv -aML -aNQ -aOM -aIY -aQk -aQk -abl -abl -abl -aTB -aUt -aUr -aVT -aWz -aXk -aUr -aYQ -aTB -aZO -bbF -bcY -bei -bfo -bgm -bhp -bit -bfm -bfm -blN -bbF -boE -bfm -brc -bss -bbF -buu -bvy -bwN -bxP -bzh -bzh -bBs -bCv -bDB -bEF -bFG -bGY -bIl -bIn -bKn -bIn -bIl -bIl -bPn -bQo -bRi -bSd -bMG -bMG -bUy -bUy -bUy -bWP -bXB -bYo -bUw -bZy -bZG -caO -cbR -ccN -ccf -cer -cfh -cfU -cgJ -chA -cis -cjg -ciq -chz -cfh -cfh -cnw -cfh -cfh -cfh -cfh -cfh -cqa -cfV -crk -csd -csE -ctn -cfh -aaa -aab -aaa -aaa -aaa -aab -aaa -aaa -aab -cvj -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -cql -cql -cql -cql -cql -cql -cql -cql -cql -cql -cql -cql -cql -cql -cql -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(165,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -agc -agc -agc -aaT -aaT -aiQ -ajx -aiQ -akr -aik -all -all -all -all -all -all -all -all -all -aqg -all -all -all -all -all -all -all -all -all -all -avq -avQ -avQ -axa -axa -aya -axa -aya -axa -axa -avQ -avQ -aik -aCl -aCX -abL -abL -aEI -aFy -ahk -abl -abl -abl -abl -aIY -aJF -aKA -aLw -aMM -aNR -aOJ -aPD -aQk -aQk -aRw -abl -abl -aTB -aUu -aUr -aVU -aWA -aXl -aYf -aTB -aTB -baE -bbF -bcW -bej -bfp -bgo -bbF -bbF -bfm -bfm -bfm -bfl -boF -bfm -brd -bst -bbF -buu -bvy -bwO -bxQ -bxQ -bAj -bBt -bCw -bDB -bEG -bFS -bGZ -bIm -bJl -bKo -bLA -bMJ -bIl -bPo -bQp -bRj -bQq -bTa -bTN -bUz -bVl -bUy -bWQ -bXC -bYp -bUw -bZx -bZG -caP -cbS -ccM -ccf -cer -cfh -cfh -cfZ -chB -cit -cfZ -cjO -ckA -cfh -cfV -cfV -cfV -cfh -coH -cpc -cpw -cpw -cqH -crl -cse -cgI -cgI -cfh -aaa -aab -aaa -aaa -aaa -aab -aaa -aaa -aab -cvj -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(166,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -agc -agc -agc -aaT -aaT -aiQ -ajy -aiQ -akr -aik -all -alL -all -amY -all -aoc -all -api -all -alN -all -are -all -arP -all -asG -all -atI -all -auN -avq -avR -avR -avR -avR -avR -avR -avR -avR -avR -avR -avQ -aiM -aCl -aCX -abL -abL -aEI -aFy -ahk -abl -abl -abl -abl -aIY -aJG -aKB -aLx -aJD -aNS -aON -aIY -aQl -aQk -aRw -abl -abl -aTB -aUv -aVf -aVV -aWB -aXm -aUr -aYR -aZM -aZP -bbF -bcZ -bek -bfq -bgp -bhq -biu -bfm -bfm -bfm -bfl -boG -bpY -bre -bsu -bbF -buu -bvy -bwP -bxR -bzi -bAk -bBu -bCx -bDB -bEH -bFT -bGY -bIn -bJm -bKp -bLB -bMK -bIl -bPp -bQq -bRk -bQq -bQq -bTO -bQq -bVm -bUy -bWR -bXC -bYq -bUw -bZz -bZG -caQ -cbS -ccN -ccf -cer -cfh -cfV -cfV -chC -ciu -cfV -cjQ -ckB -clu -cfV -cgI -cfV -cop -coI -cpd -cfV -cfV -cfV -cgP -cgI -cgI -cgI -cfh -adj -cgU -cgU -cgU -cgU -cgU -aab -aab -aab -cvj -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -coP -aaa -czf -czh -czn -aaa -czf -czh -czn -aaa -czf -czh -czn -aaa -coP -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(167,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -agc -agc -agc -aaT -aaT -aiQ -ajz -aiQ -akr -aik -all -alM -all -amZ -all -aod -all -apj -all -alN -all -arf -all -arQ -all -asH -all -atJ -all -auO -avq -avR -avR -avR -avR -avR -avR -avR -avR -avR -avR -avQ -aik -aCl -aCX -abL -aEc -aEI -aFz -ahk -abl -abl -abl -abl -aIY -aIY -aIY -aLy -aIY -aNT -aIY -aIY -aQk -aQk -aRw -abl -abl -aTB -aUw -aVg -aVg -aVg -aVg -aVg -aVg -aZN -aGK -bbG -bda -bel -bda -bgq -bda -biv -bbF -bkJ -bbF -bbF -boH -bpZ -boS -bsv -bbF -buu -bvy -bwQ -bvy -bvy -bvy -bvy -bvy -bvy -bEI -bFG -bGY -bIn -bJn -bKq -bLC -bML -bIl -bPq -bQr -bRl -bSe -bTb -bTP -bQq -bVn -bUy -bWS -bXD -bYr -bUw -bZA -cag -caR -cbM -caR -cdB -cet -cfi -cfW -cgK -chD -civ -cjh -cjR -ckC -clv -clv -cnx -cnT -cnT -coJ -cpe -cpx -cqb -cgI -cgI -ciB -csF -cto -cuc -cuI -cvf -cvQ -cwv -cwv -cgU -aaa -aaa -aab -cvj -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -cyZ -aab -czf -czi -czn -aaa -czf -czi -czn -aaa -czf -czi -czn -aab -coP -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(168,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -agc -agc -agc -aaT -aaT -aaT -ajA -aaT -akr -aik -all -alN -amw -alN -alN -alN -amw -alN -apI -alN -amw -alN -alN -alN -amw -alN -alN -alN -amw -alN -avq -avR -avR -avR -avR -avR -avR -avR -avR -avR -avR -avQ -aik -aCl -aCX -abL -abL -aEI -aFy -ahk -abl -abl -abl -abl -aIY -aJH -aKC -aLz -aMN -aNU -aOO -aIY -abl -abl -abl -abl -abl -abl -abl -aeu -aeu -aeu -aeu -aGK -aYS -aZO -baF -bbH -bdb -bem -bfr -bgr -bhr -biw -bjy -bkK -blO -bfl -boI -bqa -brf -bsw -bbF -buv -bvz -bvz -bvz -bzj -buL -buL -bxS -bDF -bEF -bFG -bGY -bIl -bIn -bKr -bIn -bIn -bIl -bPr -bPi -bRm -bPi -bMG -bMG -bMG -bMG -bUy -bUy -bXE -bYs -bUw -bZx -cah -caS -cbT -ccO -cdC -ceu -cfj -cfX -cgL -chE -ciw -cji -cgf -ckD -cgI -cmH -cny -cnU -coq -cnU -cny -cpy -cqc -cpx -cpx -csf -cjn -ctp -cfZ -adj -ciG -cvR -cww -cwQ -cgU -aaa -aaa -aab -cvj -aab -aaa -aab -aaa -aaa -aaa -aab -aaa -aaa -aaa -aaa -aab -aaa -czf -czi -czn -aab -czf -czi -czn -aab -czf -czi -czn -aaa -coP -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(169,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -abL -abL -acg -abL -agc -agc -agc -ads -aaT -aaT -aaT -aaT -ahk -ail -all -alO -all -ana -all -aoe -all -apk -all -alN -all -arg -all -arR -all -asI -all -atK -all -auP -avq -avR -avR -avR -avR -avR -avR -avR -avR -avR -avR -avQ -aik -aCl -aCX -abL -abL -aEI -aFy -ahk -abl -abl -abl -abl -aIY -aJI -aKD -aLA -aMO -aNV -aOP -aIY -abl -abl -abl -abl -abl -abl -abl -aeu -aVW -aeu -aeu -aGK -aYT -aZO -baF -bbI -bdc -ben -bfs -bgs -bhs -bix -bjz -bkL -blP -bbF -boF -bfm -bfm -bsx -btB -btB -btB -btB -btB -bzk -bAl -bBv -bCy -bDG -bEF -bFU -bHa -bIo -bJo -bKs -bJo -bMM -bOd -bPs -bJo -bRn -bSf -bJo -bJo -bUA -bVo -bWc -bMM -bXF -bYt -bZb -bZB -cai -caT -cbU -cbe -cdD -cev -cfk -cfY -cgM -chF -cix -cji -cgI -ckE -cgI -cmI -cny -cny -cor -cny -cny -cpz -cji -cqf -crm -crm -csG -ctq -cud -cuJ -cvf -cvS -cwv -cwv -cgU -aab -aab -aab -cvj -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -czf -czi -czn -aaa -czf -czi -czn -aaa -czf -czi -czn -aab -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(170,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -abL -abL -acg -abL -agc -agc -agc -ads -aaT -aaT -aaT -aaT -ahk -akK -all -alP -all -anb -all -aof -all -apl -all -alN -all -arh -all -arS -all -asJ -all -atL -all -auQ -avq -avR -avR -avR -avR -avR -avR -avR -avR -avR -avR -avQ -aik -aCl -aCX -abL -abL -aEI -aFy -ahk -abl -abl -abl -abl -aIY -aJI -aKD -aLB -aMP -aIY -aOQ -aIY -abl -abl -abl -abl -abl -abl -aeu -aeu -aeu -aeu -aeu -aGK -aYU -aZO -baF -bbJ -bdd -beo -bft -bgt -bht -biy -bjA -bkM -blQ -bnw -boJ -bqb -brg -bsy -btC -buw -bvA -bwR -btB -bzk -baJ -aEI -bCy -bDG -bEJ -bFV -bHb -bIp -bHb -bHb -bHb -bMN -bOe -bPt -bHb -bIp -bSg -bHb -bHb -bPt -bVp -bHb -bMN -bXG -bYu -bZc -bZC -caj -caU -cbV -cbV -cdE -cew -cfl -cfZ -cgN -chG -cfZ -cjj -cfZ -ckE -clw -cmJ -cny -cnV -cnV -cnV -cny -cpA -cqd -cqI -crn -cpB -csH -ctr -cue -cuK -cgU -cgU -cgU -cgU -cgU -aaa -aaa -aab -cvj -aab -aaa -cyg -cyg -cyg -cyg -cyQ -aaa -aaa -aaa -aaa -aab -aaa -czf -czi -czn -aaa -czf -czi -czn -aaa -czf -czi -czn -aaa -aab -coP -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(171,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -abL -abL -acg -abL -agc -agc -agc -ads -ads -ads -ads -ads -ads -akK -all -all -all -all -all -all -all -all -all -aqh -all -all -all -all -all -all -all -all -all -all -avq -avQ -avQ -avQ -avQ -aya -axa -axa -avQ -avQ -avQ -avQ -aik -aCl -aCY -aDB -aDB -aEJ -aFy -ahk -aGK -aGK -aGK -aGK -aGK -aGK -aKE -aGK -aGK -aGK -aOR -aGK -aGK -aGK -aGK -aGK -aGK -aGK -aGK -aGK -aGK -aGK -aGK -aGK -aQF -aZO -baF -bbK -bde -bep -bft -bgu -bfl -biz -bjB -bkN -blR -bbF -boK -bgm -bfm -bsx -btD -bux -bvB -bwS -btB -bzl -baJ -aEI -bCy -bDH -bEK -bEK -bEK -bEK -bEK -bDH -bKw -bMO -bOf -bPu -bPu -bKw -bPH -bPH -bPH -bKw -bVq -bWd -bWT -bWd -bYv -bVz -bZx -cak -bZG -cbW -bZG -cdF -cex -cfm -cga -cgO -chH -ciy -cjk -cjS -ckF -clx -cmK -cnz -cmM -cos -coK -cpf -cpB -cqe -cqJ -cgI -csg -csI -cts -cuf -cuI -cvf -cvT -cwx -cwx -cgU -aaa -aaa -aab -cvj -cyg -cyg -cyg -cyE -cyJ -cyN -cyQ -cyQ -cyQ -aaa -aaa -aab -aaa -aaa -czj -aaa -aaa -aaa -czj -aaa -aaa -aaa -czp -aaa -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(172,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -abl -abl -acg -acg -acg -acg -abL -abL -abL -abL -agc -agc -agc -ads -ads -ads -ads -ads -ads -akK -ajm -ajm -amx -anc -ajn -ajm -ajm -ajm -apJ -aik -ahk -ari -aik -aik -aik -aik -aik -aik -aik -aik -avr -avS -awo -axb -axz -ayb -ayJ -aza -axz -aAc -aAz -aAZ -avS -aAZ -aCZ -aCZ -aCZ -aCZ -aFA -aGf -aGL -aGL -aGL -aGL -aGL -aGL -aGL -aGL -aGL -aGL -aGL -aGL -aGL -aGL -aGL -aGL -aSV -aGL -aGL -aGL -aGL -aGL -aGL -aGL -aGL -aZP -baF -bbL -bdf -beq -bfu -bgv -bhu -bhu -bjC -bkO -bhv -bhu -boL -bqc -bfm -bsz -btB -buy -bvC -bwT -btB -bzk -baJ -aEI -bCy -bDH -bEL -bFW -bHc -bIq -bJp -bDH -bLD -bMP -bOg -bPv -bQs -bKw -bSh -bSh -bSh -bKw -bVr -bWe -bWU -bXH -bXH -bVz -bZx -cak -caV -caV -caV -cdG -cev -cfn -cgb -cgP -chI -ciz -chJ -cjT -ckG -cly -cmL -cnA -cgI -cgI -cgI -cgI -cpC -cqf -cqK -cgI -cgI -csJ -ctt -cfZ -adj -ciG -cvU -cwy -cwR -cgU -aaa -aaa -aab -cyc -cyh -cyn -cyv -cyF -cyK -cyO -cyR -cyT -cyU -cyV -cyV -cyV -cze -czg -czg -czg -czg -czg -czg -czg -czo -cyV -czq -cyV -cyV -cyV -czs -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(173,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -abl -acg -acg -acg -acg -abL -abL -abL -acg -agc -agc -agc -ads -ads -ads -ads -ads -ads -akK -aik -aik -aik -aik -aik -aik -aik -aik -aik -aik -ahk -aik -aik -ahk -asq -asK -ati -ahk -auo -auR -avs -avT -awp -aik -avQ -ayc -ayK -ayK -azJ -aik -aik -ahk -aik -azJ -aik -aDC -aEd -ahk -aik -ahk -aGM -aHu -aHV -aHV -aHV -aHV -aHV -aHV -aHV -aHV -aHV -aHV -aHV -aQF -aQF -aQF -aQF -aQF -aQF -aQF -aHV -aHV -aHV -aHV -aHV -aQF -baF -bbL -bdg -bep -bfv -bgw -bhu -biA -bjD -bkP -blS -bhu -boM -bgm -bfm -bsA -btB -buz -bvD -bvD -btB -bzk -baJ -aEI -bCz -bDH -bEL -bFX -bHd -bIr -bJq -bKt -bLE -bMQ -bOh -bNa -bQt -bKw -bSi -bSi -bSi -bKw -bVs -bWf -bWV -bXI -bYw -bYv -bZx -cak -caW -cbX -ccP -cdF -cey -cfo -cgc -cgI -chJ -ciA -cjl -cjU -ckH -clz -cmM -cly -cmK -cmK -coL -cpg -cpD -cqg -cqL -crm -cgR -csG -ctu -cud -cuJ -cvf -cvV -cwx -cwx -cgU -aaa -aaa -aab -cvj -cyg -cyg -cyw -cyG -cyL -cyP -cyQ -cyQ -cyQ -aaa -aaa -aab -aaa -aaa -czk -aaa -aaa -aaa -czk -aaa -aaa -aaa -czp -aaa -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(174,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -abl -acg -acg -acg -abL -abL -abL -abL -acg -agc -agc -agc -ads -ads -ads -ads -ads -ads -akK -aik -aik -aik -aik -aik -aik -aik -aik -aik -aik -ail -aik -aik -ahk -ahk -ahk -ahk -ahk -ahk -ahk -ahk -ahk -ahk -ail -avQ -avQ -avQ -avQ -avQ -aiM -aik -ahk -aik -ahk -aik -aik -aik -azJ -aik -ahk -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -aGK -aQG -aQG -aQG -aQG -aQG -aQG -aQG -aGK -ads -ads -ads -ads -aZQ -baF -bbL -bdg -bep -bdd -bgx -bhv -biB -bjE -bkQ -blT -bhv -boN -bgm -bfm -bsB -btE -buA -bvE -bwU -btF -bzm -baJ -aEI -bCy -bDH -bEM -bFY -bHe -bIs -bJr -bKu -bLF -bMR -bOi -bNa -bQu -bPH -bSj -bSj -bSj -bPH -bVt -bWg -bWW -bXJ -bYx -bYv -bZx -cak -caX -cbY -ccQ -cdF -cex -cfh -cgd -cgQ -chK -ciB -cjm -cjV -chK -cgI -cgI -cgI -cnW -cnW -cnW -cph -cpE -ckI -cqM -crm -csh -csK -cgI -cfZ -adj -cgU -cgU -cgU -cgU -cgU -aaa -aaa -aab -cvj -aab -aaa -cyg -cyg -cyg -cyg -cyQ -aaa -aaa -aaa -aaa -aab -aaa -czf -czl -czn -aaa -czf -czl -czn -aaa -czf -czl -czn -aaa -aab -coP -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(175,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -abl -acg -acg -acg -abL -acg -abL -abL -acg -agc -agc -agc -ads -ads -ads -ads -ads -ads -akL -alm -alQ -ahk -ahk -ahk -ahk -ahk -ahk -ahk -ahk -ahk -arj -arB -arT -asr -asL -atj -atj -atj -atj -atj -atj -atj -atj -atj -atj -atj -atj -atj -aik -aik -azJ -aik -ahk -aDa -aDD -ahk -ahk -ahk -ahk -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -aaT -aQH -aQH -aQI -aQH -aQI -aQH -aQH -aaT -aaT -aaT -ads -ads -aZQ -baF -bbM -bdh -beo -bdd -bgy -bhv -biC -bjF -bkR -blT -bhv -boO -bgn -bis -bsC -btF -buB -bvF -bwV -btF -bzk -baJ -aEI -bCy -bDH -bEN -bFZ -bHf -bHf -bHf -bKv -bLG -bMS -bOj -bPw -bQv -bKw -bSk -bTc -bTQ -bKw -bVu -bVz -bWX -bVz -bYy -bVz -bZx -cak -caW -cbZ -ccR -cdF -cex -cfh -cge -cgI -chL -ciC -cjn -cjW -ckI -clA -clA -clA -cnX -clA -clA -clA -cnX -cjl -cgf -crm -crm -csG -ctv -cug -cuL -cvg -cvW -cwz -cwB -cgU -aab -aab -aab -cvj -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -czf -czl -czn -aaa -czf -czl -czn -aaa -czf -czl -czn -aab -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(176,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abl -abl -abl -abl -abl -acg -acg -acg -abL -abL -abL -abL -abL -abL -agc -agc -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ahk -ahk -ahk -ahk -ahk -ahk -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -aaT -aaT -aQH -aRx -aSg -aSg -aSh -aUx -aQH -aaT -aaT -aaT -aaT -ads -aZQ -baF -bbN -bdi -ber -bdd -bgy -bhv -biD -bjG -bkS -blU -bhv -boP -bqd -bho -bsD -btG -buC -bvG -bwW -btF -bzn -baJ -aEI -bCy -bDH -bEO -bGa -bEO -bEO -bEO -bDH -bLH -bMP -bOi -bPx -bQw -bKw -bSl -bTd -bSl -bKw -bVv -bVz -bWY -bVz -bYz -bVz -bZy -cak -caX -cca -ccQ -cdH -cew -cfh -cgf -cgR -chM -ciD -cjo -cjX -ckJ -clB -cmN -clB -ckJ -clB -coM -clB -ckJ -clB -cqN -clB -clB -csL -ctw -cfZ -adj -ciG -cvX -cwA -cwS -cgU -aaa -aaa -aab -cvj -aab -aaa -aab -aaa -aaa -aaa -aab -aaa -aaa -aaa -aaa -aab -aaa -czf -czl -czn -aab -czf -czl -czn -aab -czf -czl -czn -aaa -coP -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(177,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abL -abl -abl -abl -abl -acg -acg -acg -abL -abL -abL -acg -abL -abL -agc -agc -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -aaT -aaT -aQI -aRy -aSh -aSg -aSh -aUy -aVh -aaT -aaT -aaT -aaT -ads -aZQ -baF -bbO -bdj -bes -bdd -bgz -bhv -biE -bjH -bkS -blU -bhv -boQ -bfm -bfm -bsE -btF -buD -bvH -bwX -btF -bxT -baJ -aEI -bCy -bDH -bDH -bDH -bDH -bDH -bDH -bDH -bLI -bMP -bOk -bPy -bQx -bKw -bSm -bTe -bTR -bKw -bVw -bVz -bWX -bVz -bYA -bVz -bZD -cak -caW -ccb -ccR -cdF -cez -cfh -cgg -cgS -chN -ciE -cjp -cjW -ckK -clC -cmO -cnB -cnY -cot -coN -cgI -cpF -cqh -cqO -cro -crm -crm -ctx -cuh -cuL -cvh -cvY -cwB -cwB -cgU -aaa -aaa -aab -cvj -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -aab -czf -czl -czn -aaa -czf -czl -czn -aaa -czf -czl -czn -aab -coP -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(178,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abL -abL -abL -abl -abl -acg -acg -acg -acg -abL -abL -abL -abL -agc -agc -agc -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -aaT -aaT -aaT -aQH -aRz -aSg -aSg -aSh -aUz -aQH -aaT -aaT -aaT -ads -ads -aZQ -baF -bbP -bdk -bet -bfw -bgA -bhw -biF -bjI -bkT -blV -bhw -boR -bqe -bqe -bsF -btH -buE -bvI -bwY -btF -bxT -baJ -aEI -bCy -buL -buL -bxS -bxS -bxS -bxS -bKw -bLJ -bMT -bOl -bPz -bQy -bKw -bSl -bTf -bSl -bKw -bVw -bVy -bWY -bXK -bVy -bVz -bZx -cak -caX -ccc -ccQ -cdF -cex -cfh -cfh -cgT -chO -ciF -cjq -cjY -chO -ciF -cjq -ciF -chO -ciF -cjq -ciF -chO -ciF -cjq -crp -cfh -cfh -cty -cfh -adj -cgU -cgU -cgU -cgU -cgU -aab -aab -aab -cvj -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -cyZ -aaa -czf -czm -czn -aaa -czf -czm -czn -aaa -czf -czm -czn -aaa -coP -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(179,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abL -abL -abL -abl -acg -acg -acg -abL -abL -abL -abL -acg -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -aaT -aaT -aQH -aQH -aQI -aSW -aQI -aQH -aQH -aaT -aaT -aaT -ads -ads -aZQ -baF -bbQ -baF -beu -bfx -baF -bhu -bhu -bjC -bhu -bhv -bhu -boS -bqf -bbF -bbF -btF -btE -btE -btF -btF -bxT -baK -bBw -bCA -bzp -bzp -bsJ -bsJ -bsJ -bxS -bKw -bLK -bMU -bOm -bPA -bQu -bRo -bSn -bTg -bTS -bKw -bVx -bVy -bWZ -bVy -bVy -bZd -bZx -cak -caY -ccd -ccR -cdF -ceA -bZK -adj -adj -chP -adj -cjr -adj -chP -adj -cjr -adj -chP -adj -cjr -adj -chP -adj -cjr -adj -adj -cfh -ctz -cfh -adj -aaa -aaa -aab -aaa -aab -aaa -aaa -aab -cvj -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(180,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -acg -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -acg -acg -acg -ads -ads -ads -ads -aaT -aaT -aaT -aaT -aSi -aSX -aQJ -aaT -aaT -aaT -aaT -ads -aOS -aOS -aZR -baF -bbR -bdl -bev -bfy -bgB -bhx -biG -bjJ -bkU -bkU -bkU -bkU -bkU -brh -bsG -btI -bkU -bvJ -bwZ -bxS -bxS -bAm -bAm -bxT -bzp -bzp -bsJ -bHg -bsJ -bxS -bKw -bLL -bMV -bOn -bOj -bQz -bRp -bSo -bTh -bTT -bKw -bVy -bVy -bXa -bVy -bVy -bZd -bZA -cal -caV -caV -caV -cdI -ceB -bZK -adj -cgU -chQ -ciG -chQ -cgU -chQ -ciG -chQ -cgU -chQ -ciG -chQ -cgU -chQ -ciG -chQ -cgU -adj -cfh -cty -cfh -adj -aaa -aaa -aab -aaa -aab -aaa -aaa -aab -cvj -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -cql -cql -cql -cql -cql -cql -cql -cql -cql -cql -cql -cql -cql -cql -cql -aaa -aaa -aaa -aaa -aaa -acf -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(181,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -acg -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -acg -acg -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -ads -ads -ads -ads -ads -aOS -aQJ -aQJ -aQJ -aSY -aQJ -aUA -aQJ -aOS -aOS -aOS -aOS -aYV -aZS -baF -bbS -bdc -bew -bfz -bgB -bhy -biH -bjK -bkV -bjN -bjN -bjN -bjN -bjN -bjN -bjN -buF -bvK -bgB -bxS -bxS -bAn -bAn -bxT -bzp -bzp -bsJ -bsJ -bsJ -bxS -bKw -bLK -bMW -bOo -bPB -bQA -bRo -bSp -bTi -bSp -bKw -bVy -bVy -bXb -bVy -bVy -bVz -bZx -cak -caZ -bZG -bZG -cdF -cae -bZK -adj -cgU -chR -ciH -cjs -cgU -ckL -clD -cmP -cgU -cnZ -cou -coO -cgU -cpG -cqi -cqP -cgU -adj -adj -cgV -adj -adj -aaa -aaa -aab -aab -aab -aaa -aaa -aab -cvj -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(182,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abL -abL -abL -abL -abL -acg -acg -acg -acg -aeu -aeu -abL -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -agc -agc -agc -agc -agc -agc -agc -acg -acg -acg -acg -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -aMQ -aNW -aOS -aOS -aOS -aQK -aRA -aSj -aSZ -aSj -aUB -aVi -aVX -aVX -aXn -aYg -aYW -aZT -baG -bbT -bdm -bex -bfA -bgC -bhz -biI -bjL -bkW -blW -bnx -bnx -blW -bnx -bnx -bnx -buG -bvL -bgB -bxS -bzo -bzo -bzo -bzo -bDI -bDI -bzo -bzo -bzo -bxS -bKw -bKw -bKw -bOp -bOf -bKw -bKw -bKw -bKw -bKw -bKw -bVz -bVz -bVz -bVz -bVz -bVz -bZE -cam -cba -cce -ccS -cdJ -ceC -bZK -adj -cgU -chS -chT -chT -cgU -ckM -clE -ckM -cgU -coa -cov -coa -cgU -cpH -cqj -cpH -cgU -adj -adj -cgV -aab -aab -aaa -aaa -aab -aab -aab -aaa -aaa -aab -cvj -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(183,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abL -abL -abl -abl -acg -acg -acg -acg -acg -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -acg -acg -acg -acg -abL -abL -acg -acg -agc -agc -acg -abL -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -acg -acg -acg -acg -acg -abL -abL -abL -abL -abL -abL -aNX -aOT -aPE -aOT -aQL -aRB -aRB -aRB -aRB -aRB -aRB -aRB -aRB -aXo -aOS -aYX -aZU -baF -bbU -bdj -bey -bfB -bgD -bhA -biJ -bjM -bkX -blX -blX -blX -blX -blX -blX -blX -buH -bvK -bgB -bxT -bzp -ads -ads -ads -ads -ads -ads -ads -bzp -bJs -bxS -bKw -bMX -bOq -bPC -bKw -bRq -bRq -bxS -bTU -bUB -bVA -bWh -bXc -bXL -bYB -bsJ -bZF -cak -bZG -ccf -bZG -bZG -ceD -bZK -adj -cgU -chT -ciI -chT -cgU -ckM -clF -ckM -cgU -cob -cow -coa -cgU -cpH -cqk -cpH -cgU -adj -adj -cgV -aab -aab -aaa -aaa -aab -aaa -aab -aaa -aaa -aab -cvj -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(184,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abL -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -acg -acg -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -abL -abL -aNY -aOS -aOS -aOS -aQM -aRC -aSk -aTa -aTD -aTa -aSk -aTa -aWC -aXp -aOS -aOS -aZR -baF -bbV -bdn -bez -bfC -bgB -bhB -biK -bjN -bjN -bjN -bny -boT -bjN -bjN -bsH -bjN -buI -bvK -bgB -bxT -bzp -ads -ads -ads -ads -ads -ads -ads -bzp -bJs -bxS -bLM -bMX -bOq -bPD -bLM -bxS -bxS -bxS -bxS -bxS -bxS -bxS -bxS -bxS -bxS -bZe -bZG -cak -bZG -ccf -bZG -bZG -ceD -bZK -adj -cgU -cgU -cgU -cgU -cgU -cgU -cgU -cgU -cgU -cgU -cgU -cgU -cgU -cgU -cgU -cgU -cgU -adj -adj -cgV -aab -aab -aab -aab -aab -aab -aab -aaa -aaa -aab -cyd -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(185,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abL -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -ads -ads -ads -ads -ads -aOS -aOS -aOS -aOS -aOS -aOS -aOS -aOS -aOS -aOS -aOS -aOS -ads -aZQ -baF -bbW -baF -baF -baF -bgB -bhC -biL -bjN -bjN -blY -bjN -bjN -blY -bjN -bjN -bjN -buI -bvM -bgB -bxT -bzp -ads -ads -ads -ads -ads -ads -ads -bzp -bJt -buL -bKw -bMY -bOq -bPD -bKw -bRr -bSq -buL -bTV -bUC -buL -buL -buL -buL -bYC -bsJ -bZH -cak -bZG -ccf -bZG -cdK -ceE -bZK -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -adj -cgV -aab -aaa -aab -aaa -aab -aaa -aab -aaa -aaa -aab -cui -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(186,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -aZQ -baH -bbX -bdo -baH -aQF -bgB -bhD -biL -bjN -bjN -blZ -bjN -bjN -bjN -bri -bjN -bjN -buI -bvN -bgB -bxT -bzp -ads -ads -ads -ads -ads -ads -ads -bzp -bzp -bzp -bKw -bKw -bOr -bOf -bKw -bKw -bzp -bzp -bzp -bzp -bzp -bzp -bzp -bzp -bzp -bsJ -bZI -cak -bZG -ccg -bZG -cae -bZK -bZK -adj -aaT -aaT -aaT -aaT -adj -aaT -aaT -aaT -aaT -aaT -adj -adj -aaT -aaT -aaT -aaT -adj -aaT -adj -cgV -aab -aaa -aab -aaa -aab -aaa -aab -aab -aab -aab -cui -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(187,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -agI -agI -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -aZV -baI -bbY -bdp -beA -bfD -bgB -bhy -biM -bjN -bjN -bma -bnz -boU -bqg -bma -bjN -bjN -buJ -bvO -bgB -bxT -bzp -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -bKw -bMZ -bOs -bPE -bQB -bKw -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -bZI -cak -cbb -ccf -bZG -cae -bZK -bZK -bZK -aaT -aaT -aaT -aaT -adj -aaT -aaT -aaT -aaT -aaT -cgV -cgV -cgV -cgV -cgV -cgV -cgV -cgV -cgV -cgV -cui -cuM -cvi -cvZ -cvZ -cvZ -cxf -cui -cui -cui -cui -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(188,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -agI -agI -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -aZV -baJ -abL -abL -aEI -bfE -bgB -bhE -biN -bjO -bkY -bmb -bkY -boV -bqh -brj -bsI -btJ -buK -bvP -bgB -bxT -bzp -ads -ads -ads -ads -ads -ads -ads -ads -ads -bKx -bKw -bNa -bOs -bPF -bQC -bKw -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -bZI -cak -bZG -ccf -bZG -cae -ceF -ccW -ceF -cgV -cgV -cgV -cgV -cgV -cgV -cgV -cgV -cgV -cgV -cgV -coP -coP -coP -coP -coP -coP -coP -coQ -coP -coP -coP -cvj -coP -coP -coP -coP -aab -aab -aab -aab -aab -aaa -aaa -aaa -aaa -aaa -aaa -acf -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(189,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -aZV -baK -bbZ -aDB -aEJ -bfD -bgB -bgB -bgB -bgB -bgB -bmc -bnA -bgB -bnA -brk -bgB -bgB -bgB -bgB -bgB -bxT -bzp -ads -ads -ads -ads -ads -ads -ads -ads -ads -bKx -bKw -bNb -bOt -bPF -bQD -bKw -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -bZJ -can -cbc -cch -cbc -cdL -bZK -bZK -bZK -bZK -bZK -bZK -bZK -bZK -bZK -bZK -bZK -bZK -adj -adj -coP -aaa -aaa -aaa -aaa -aab -aaa -aaa -aab -aab -aab -cvj -aab -aab -aab -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(190,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -aZW -baL -bca -baL -baL -baH -baH -baH -baH -bjP -aGK -bmd -bnB -bgB -bnB -brl -bsJ -btK -buL -buL -buL -bxU -bzp -ads -ads -ads -ads -ads -ads -ads -ads -ads -bKx -bKw -bNc -bOu -bOf -bQE -bKw -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -bZI -cao -cbd -cci -ccT -cdM -ccT -cfp -cbd -cgW -chU -ciJ -cjt -bZI -ckN -ckN -cmQ -bZK -adj -adj -coP -aaa -aaa -aaa -aaa -aab -aab -aab -aab -aab -cuj -cvk -cuj -aab -aab -aab -aab -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(191,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -agc -agc -agc -agc -agc -agc -abl -abl -abl -abl -abl -abl -aGK -abl -abl -abl -abl -abl -abl -abl -bgB -bmd -bnC -bgB -bqi -brl -bgB -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -bKx -bKw -bNd -bOv -bPG -aaT -bKw -ads -ads -ads -ads -ads -ads -ads -ads -ads -bTX -bZK -cap -bZG -bZG -bZG -cae -ceG -ceG -bZG -bZG -bZG -bZG -cju -bZI -ckN -ckN -cmQ -bZK -adj -adj -coQ -aaa -acf -aaa -aaa -aab -aaa -aaa -aab -aab -cuj -cvl -cuj -aab -aab -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(192,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -agc -agc -agc -agc -agc -agc -abl -abl -abl -abl -abl -abl -aGK -abl -abl -abl -abl -abl -abL -abL -bkZ -bme -bnB -bgB -bnB -brm -bkZ -abL -abL -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -bKx -bKw -bNe -bOw -bPH -aaT -bKw -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -bZI -caq -bZG -ccj -bZG -cae -bZG -bZG -bZG -ceG -ceG -bZG -cju -bZI -ckN -clG -cmQ -bZK -adj -adj -coP -aaa -aaa -aaa -aaa -aab -aaa -aaa -aab -cuj -cuj -cvm -cuj -cuj -aab -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(193,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -aAd -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -agc -agc -agc -agc -agc -agc -abl -abl -abl -abl -abl -abl -aGK -abl -abl -abL -abL -aaa -aaa -aaa -bkZ -bmc -bnD -bgB -bnD -brk -bkZ -btL -btL -btL -abL -abL -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -bKx -bKw -bKw -bKw -bKw -aaT -bKw -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -bZI -car -bZG -cck -ccU -cdN -ceH -ceH -cbV -cbV -cbV -cbV -cjv -cjZ -ckO -clH -cmR -bZK -adj -adj -coP -aaa -aaa -aaa -aaa -aab -aaa -aaa -aab -cuj -cuN -cvn -cwa -cuj -aab -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(194,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -agc -agc -agc -agc -agc -agc -abl -abl -abl -abl -abl -abl -aGK -abl -abl -abL -aaa -aaa -aaa -bjQ -bjQ -bmf -bnE -bjQ -bqj -brn -bjQ -bjQ -bjQ -aaa -aaa -abL -abL -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -buN -aaT -buN -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -bZI -caq -bZG -ccl -bZG -bZG -bZG -bZG -bZG -cgX -ceG -bZG -cju -bZI -ckN -clI -cmQ -bZK -adj -adj -coP -aaa -aaa -aaa -aaa -aab -aaa -aaa -aab -cuj -cuO -cvo -cwb -cuj -aab -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(195,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -agc -abl -aGK -abl -abL -abL -aaa -aaa -aaa -bjQ -bla -bla -bla -boW -bla -bla -bla -btM -bjQ -bvQ -aaa -abL -abL -abL -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -buN -aaT -buN -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -bZI -cas -cbe -cbe -cbe -cbe -ceI -ceI -cbe -cgY -cbe -cbe -cjw -cka -ckP -clJ -cmS -bZK -adj -adj -coP -aaa -aaa -acf -aaa -aab -aaa -aaa -aab -cuj -cuP -cvp -cwc -cuj -aab -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(196,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -agc -agc -agc -agc -agc -agc -agc -agc -agc -abl -abl -abl -aGK -bdq -abL -abL -aaa -aaa -aaa -bjQ -bla -bla -bla -bla -bla -bla -bla -bla -buM -bvR -aaa -aaa -abL -abL -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -buN -aaT -buN -ads -ads -ads -ads -ads -ads -ads -ads -ads -abL -bZI -cat -cbf -cbf -cbf -cdO -cbf -cbf -cgh -cgZ -cgZ -cbf -cjx -bZI -ckN -ckN -cmQ -bZK -adj -adj -coP -aaa -aaa -aaa -aaa -aab -aab -aab -aab -cuk -cuk -cvq -cuk -cuk -aab -aab -aab -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(197,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -agc -agc -agc -agc -agc -agc -agc -agc -agc -abl -abL -baM -bcb -bdq -abL -abL -aaa -aaa -aaa -bjQ -blb -bla -bla -bla -bla -bla -bla -bla -buM -bvR -aaa -aaa -abL -abL -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -buN -aaT -buN -ads -ads -ads -ads -ads -ads -ads -ads -ads -abL -bZK -bZI -bZI -bZI -ccV -bZK -ccV -bZI -bZI -bZI -bZI -bZI -ccV -bZK -ccV -bZI -bZI -bZI -adj -adj -coP -aaa -aaa -aaa -aaa -aab -aaa -aaa -aab -aaa -cuk -cvl -cuk -aaa -aab -aaa -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(198,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -agc -agc -agc -agc -agc -agc -agc -agc -agc -abl -abL -baN -bcc -bdr -abL -aaa -aaa -aaa -aaa -bjQ -bla -bla -bla -bla -bla -bla -bla -bla -buM -bvR -aaa -aaa -abL -abL -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -buN -aaT -buN -ads -ads -ads -ads -ads -ads -ads -ads -abL -abL -adj -adj -adj -bZI -ccW -bZI -ccW -bZI -adj -adj -adj -bZI -ccW -bZI -ccW -bZI -adj -adj -adj -adj -coP -aaa -aaa -aab -aab -aab -aaa -aaa -aab -aaa -cuk -cvr -cuk -aaa -aab -aaa -aaa -aab -aab -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(199,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -agc -agc -agc -agc -agc -agc -agc -agc -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -acf -aaa -aaa -bjQ -bla -bla -bla -boX -bla -bla -bla -btM -bjQ -bvS -aaa -aaa -abL -abL -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -ads -buN -aaT -buN -ads -ads -ads -ads -abL -abL -abL -abL -abL -aaa -aaT -aaT -aaT -bZI -ccV -bZI -ccV -bZI -aaT -aaT -aaT -bZI -ccV -bZI -ccV -bZI -aaT -aaT -aaT -adj -coP -aaa -aaa -aab -aaa -aab -aaa -aaa -aab -aaa -aaa -cvs -aaa -aaa -aab -aaa -aaa -aab -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(200,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -agc -agc -agc -agc -agc -agc -agc -agc -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bjQ -bjQ -bjQ -bjQ -bjQ -bjQ -bjQ -bjQ -bjQ -bjQ -aaa -aaa -aaa -abL -abL -abL -abL -abL -abL -abL -abL -ads -ads -ads -ads -ads -buN -buN -aaT -buN -buN -abL -abL -abL -abL -abL -abL -aaa -aaa -aaa -aaa -bXM -bXM -bXM -ccX -bXM -ceJ -bXM -bXN -bXN -bXN -bXM -cjy -bXM -ccX -bXM -bXM -bXM -aaa -aab -coP -aaa -aaa -aab -aab -aab -aab -aab -aab -aab -aab -cvs -aab -aab -aab -aab -aab -aab -aab -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(201,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -agI -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -agc -agc -agc -agc -agc -agc -agc -agc -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abL -abL -abL -abL -abL -abL -abL -abL -abL -aaa -aaa -aaa -aab -aab -aaa -aab -aab -abL -abL -abL -aaa -aaa -aaa -aaa -bXM -bXM -bXM -bXM -cbg -ccm -cbh -bXM -ceK -cda -cda -cda -cda -cda -cjz -bXM -ckQ -clK -cmT -bXM -bXM -aaa -coP -aaa -aaa -cql -aaa -crq -crq -crq -crq -crq -aaa -cvt -aaa -crq -crq -crq -crq -crq -aaa -cql -aaa -aaa -aaa -aaa -aaa -aaa -acf -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(202,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -agc -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aab -aaa -aab -aab -aaa -aaa -aaa -aaa -aaa -aaa -bXM -bYD -bZf -bZL -bXM -cbg -cbh -ccY -bXM -ceL -bZh -bZh -bZh -bZh -bZh -cjA -bXM -ckR -ckQ -cmT -cnC -coc -aaa -aab -aaa -aaa -cql -aab -crr -csi -csi -csi -csi -cuQ -cvt -cwd -cwC -cwC -cwC -cwC -cxO -aab -cql -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(203,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -agc -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aab -aaa -aab -aab -aaa -aaa -aaa -aaa -aaa -aaa -bXN -bYE -bZg -bZM -bXM -cbh -cbh -ccY -bXM -bZh -cfq -cfq -cfq -cfq -cfq -bZh -ckb -ckQ -ckQ -cmT -cnC -coc -aaa -aaa -aaa -aaa -cql -aaa -crs -crs -crs -crs -crs -aaa -cvu -aaa -crs -crs -crs -crs -crs -aaa -cql -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(204,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aab -aaa -aab -aab -aaa -aaa -aaa -aaa -aaa -aaa -bXN -bYF -bZh -bZN -bXM -bXN -ccn -bXN -cdP -bZh -cfr -cfr -cfr -cfr -cfr -bZh -bXM -ckS -clL -cmT -cnC -coc -aaa -aaa -aaa -aaa -cql -aaa -aaa -aaa -aab -aaa -aaa -aaa -cvv -aaa -aaa -aaa -aab -aaa -aaa -aaa -cql -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(205,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aab -aaa -aab -aab -aaa -aaa -aaa -aaa -aaa -aaa -bXN -bYG -bZh -bZO -bXM -cbi -bZh -ccZ -cdQ -bZh -bZh -bZh -bZh -bZh -bZh -cjB -cav -bXM -bXM -bXM -cnC -coc -aaa -aaa -aaa -aaa -cql -aaa -crq -crq -crq -crq -crq -aaa -cvv -aaa -crq -crq -crq -crq -crq -aaa -cql -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(206,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aab -aaa -aab -aab -aaa -aaa -aaa -aaa -aaa -aaa -bXN -bYF -bZh -bZh -cau -bZh -bZh -cda -cdb -bZh -cfq -cfq -cfq -cfq -cfq -bZh -bXN -cbk -clM -cbk -cnC -coc -aaa -aaa -aaa -aaa -cql -aab -crr -csi -csi -csi -csi -cuQ -cvv -cwd -cwC -cwC -cwC -cwC -cxO -aab -cql -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(207,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aab -aaa -aab -aab -aaa -aaa -aaa -aaa -aaa -aaa -bXN -bYH -bZi -bZi -cav -cbj -bZh -cdb -cdb -bZh -cfr -cfr -cfr -cfr -cfr -bZh -ckc -cbj -cbj -cbj -cnC -coc -aaa -aaa -aaa -aaa -cql -aaa -crs -crs -crs -crs -crs -aaa -cvv -aaa -crs -crs -crs -crs -crs -aaa -cql -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(208,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aab -aaa -aab -aab -aaa -aaa -aaa -aaa -aaa -aaa -bXM -bYD -bZj -bZP -bXM -cbk -bZh -bZh -bZh -bZh -bZh -bZh -bZh -bZh -bZh -bZh -bXN -cbj -cbj -cbj -cnC -coc -aaa -aaa -aaa -aaa -cql -aaa -aaa -aaa -aab -aaa -aaa -aaa -cvv -aaa -aaa -aaa -aab -aaa -aaa -aaa -cql -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(209,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aab -aaa -aab -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bXM -bXM -bXM -bXM -cbl -cco -cbj -cbj -ceM -cfs -cfs -cfs -cfs -cfs -ceM -bXN -ckT -clN -ckT -bXM -bXM -aaa -aaa -aaa -aaa -cql -aaa -crq -crq -crq -crq -crq -aaa -cvv -aaa -crq -crq -crq -crq -crq -aaa -cql -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(210,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bDJ -bDJ -aaT -bDJ -bDJ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bXM -bXN -bXM -bXN -bXM -bXM -bXM -bXN -bXN -bXN -bXM -bXM -bXM -bXN -bXM -bXN -bXM -aaa -aaa -aaa -aaa -aaa -cql -aab -crr -csi -csi -csi -csi -cuQ -cvv -cwd -cwC -cwC -cwC -cwC -cxO -aab -cql -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(211,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -agI -agI -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bDJ -bDJ -bDJ -aaT -bDJ -bDJ -bDJ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -cql -aaa -crs -crs -crs -crs -crs -aaa -cvv -aaa -crs -crs -crs -crs -crs -aaa -cql -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(212,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -agI -agI -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bDJ -bDJ -bGb -bLO -aaT -bRs -bGb -bDJ -bDJ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -cql -aaa -aaa -aaa -aab -aaa -aaa -aaa -cvv -aaa -aaa -aaa -aaa -aaa -aaa -aaa -cql -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(213,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bDJ -bDJ -bGb -bGb -bLO -aaT -bRs -bGb -bGb -bDJ -bDJ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -cql -aaa -crq -crq -crq -crq -crq -aaa -cvv -aaa -crq -crq -crq -crq -crq -aaa -cql -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(214,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bDJ -bDJ -bGb -bGb -bGb -bLO -aaT -bRs -bGb -bGb -bGb -bDJ -bDJ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -cql -aab -crr -csi -csi -csi -csi -cuQ -cvv -cwd -cwC -cwC -cwC -cwC -cxO -aab -cql -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(215,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bDJ -bDJ -bGb -bGb -bGb -bGb -bLO -aaT -bRs -bGb -bGb -bGb -bGb -bDJ -bDJ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -cql -aaa -crs -crs -crs -crs -crs -aaa -cvv -aaa -crs -crs -crs -crs -crs -aaa -cql -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(216,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -agI -agI -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bDJ -bDJ -bGb -bGb -bGb -bGb -bGb -bLO -aaT -bRs -bGb -bGb -bGb -bGb -bGb -bDJ -bDJ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acf -aaa -aaa -cql -aaa -aaa -aaa -aab -aaa -aaa -aaa -cvv -aaa -aaa -aaa -aab -aaa -aaa -aaa -cql -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(217,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -agI -agI -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bDJ -bDJ -bGb -bGb -bGb -bGb -bGb -bGb -bLO -bNg -bRs -bGb -bGb -bGb -bGb -bGb -bGb -bDJ -bDJ -aaa -aaa -acf -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -cql -aaa -crq -crq -crq -crq -crq -aaa -cvv -aaa -crq -crq -crq -crq -crq -aaa -cql -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(218,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bDJ -bDJ -bGb -bGb -bGb -bGb -bGb -bGb -bGb -bLO -bNg -bRs -bGb -bGb -bGb -bGb -bGb -bGb -bGb -bDJ -bDJ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -cql -aab -crr -csi -csi -csi -csi -cuQ -cvv -cwd -cwC -cwC -cwC -cwC -cxO -aab -cql -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(219,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bDJ -bDJ -bGb -bGb -bGb -bGb -bGb -bLN -bNf -bNf -bLO -bQF -bRs -bNf -bNf -bTW -bGb -bGb -bGb -bGb -bGb -bDJ -bDJ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acf -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -cql -aaa -crs -crs -crs -crs -crs -aaa -cvv -aaa -crs -crs -crs -crs -crs -aaa -cql -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(220,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bDJ -bDJ -bGb -bGb -bGb -bGb -bGb -bLO -bNg -bNg -bLO -bQG -bRs -bNg -bNg -bRs -bGb -bGb -bGb -bGb -bGb -bDJ -bDJ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -cql -aaa -aaa -aaa -aab -aaa -aaa -aaa -cvv -aaa -aaa -aaa -aab -aaa -aaa -aaa -cql -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(221,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bDJ -bDJ -bGb -bGb -bGb -bGb -bGb -bLP -bNh -bNh -bLO -bQH -bRs -bNh -bNh -bRt -bGb -bGb -bGb -bGb -bGb -bDJ -bDJ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -cql -aaa -crq -crq -crq -crq -crq -aaa -cvv -aaa -crq -crq -crq -crq -crq -aaa -cql -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acf -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(222,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -agI -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bDJ -bDJ -bGb -bGb -bGb -bGb -bGb -bGb -bGb -bLO -bNg -bRs -bGb -bGb -bGb -bGb -bGb -bGb -bGb -bDJ -bDJ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -cql -aab -crr -csi -csi -csi -csi -cuR -cvw -cuR -cwC -cwC -cwC -cwC -cxO -aab -cql -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(223,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bDJ -bDJ -bGb -bGb -bGb -bGb -bGb -bGb -bLO -bNg -bRs -bGb -bGb -bGb -bGb -bGb -bGb -bDJ -bDJ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -cql -aaa -crs -crs -crs -crs -crs -aaa -cvv -aaa -crs -crs -crs -crs -crs -aaa -cql -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(224,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -agI -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bDJ -bDJ -bGb -bGb -bGb -bGb -bGb -bLP -bNh -bRt -bGb -bGb -bGb -bGb -bGb -bDJ -bDJ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -cql -aaa -aaa -aaa -aaa -aaa -aab -aaa -cvx -aaa -aab -aaa -aaa -aaa -aaa -aaa -cql -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(225,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bDJ -bDJ -bGb -bGb -bGb -bGb -bGb -bGb -bGb -bGb -bGb -bGb -bGb -bDJ -bDJ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -cql -cql -cql -cql -cql -cql -cql -aab -cvv -aab -cql -cql -cql -cql -cql -cql -cql -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(226,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bDJ -bDJ -bGb -bGb -bGb -bGb -bGb -bGb -bGb -bGb -bGb -bDJ -bDJ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aab -aaa -cvy -aaa -aab -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(227,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bDJ -bDJ -bGb -bGb -bGb -bGb -bGb -bGb -bGb -bDJ -bDJ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -cql -aaa -aab -aaa -cql -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(228,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bDJ -bDJ -bGb -bGb -bGb -bGb -bGb -bDJ -bDJ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -cql -cql -cql -cql -cql -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(229,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bDJ -bDJ -bGb -bGb -bGb -bDJ -bDJ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(230,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bDJ -bDJ -bDJ -bDJ -bDJ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(231,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bDJ -bDJ -bDJ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(232,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abL -abL -abL -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(233,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abl -abl -abl -abl -abl -abL -abL -abL -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(234,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abl -abl -abl -abl -abL -abL -abL -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(235,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -acg -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abL -abL -abL -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(236,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abL -abL -abL -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(237,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abL -abL -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(238,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abl -abL -abL -abL -abL -abL -abL -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(239,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -abl -abl -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -abl -abl -abl -abl -abl -abl -abL -abL -abL -abL -abL -abL -abL -abL -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(240,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(241,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(242,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(243,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(244,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(245,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(246,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -ach -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(247,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(248,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(249,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(250,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(251,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(252,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(253,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(254,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} -(255,1,1) = {" -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -"} diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 94d523a70b..70fa1445e6 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -176,7 +176,7 @@ /turf/open/floor/plasteel/neutral, /area/shuttle/abandoned) "aay" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall/mineral/titanium/nodiagonal, /area/shuttle/abandoned) "aaz" = ( @@ -616,7 +616,8 @@ /obj/docking_port/mobile/pod{ id = "pod1"; name = "escape pod 1"; - port_direction = 2 + port_direction = 2; + timid = 0 }, /obj/effect/turf_decal/stripes/end, /turf/open/floor/plasteel/white, @@ -632,7 +633,8 @@ /obj/docking_port/mobile/pod{ id = "pod2"; name = "escape pod 2"; - port_direction = 2 + port_direction = 2; + timid = 0 }, /obj/effect/turf_decal/stripes/end, /turf/open/floor/plasteel/white, @@ -903,7 +905,7 @@ dir = 8 }, /obj/structure/closet/emcloset/anchored, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = -32 }, /obj/effect/turf_decal/bot, @@ -975,7 +977,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "aca" = ( -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ pixel_x = -32 }, /obj/effect/turf_decal/stripes/line{ @@ -1048,12 +1050,8 @@ /turf/open/floor/plasteel/neutral, /area/shuttle/abandoned) "aci" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/plasteel/neutral, -/area/shuttle/abandoned) +/turf/open/space/basic, +/area/space) "acj" = ( /obj/effect/decal/cleanable/dirt{ desc = "A thin layer of dust coating the floor."; @@ -1123,7 +1121,7 @@ }, /area/construction/mining/aux_base) "acs" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/maintenance/solars/starboard/fore) "act" = ( @@ -1256,23 +1254,17 @@ /turf/open/floor/plating/airless, /area/shuttle/arrival) "acF" = ( -/obj/docking_port/mobile/arrivals{ - dir = 2; - dwidth = 4; - height = 17; - name = "delta arrivals shuttle"; - width = 9 - }, /obj/docking_port/stationary{ dir = 2; dwidth = 4; height = 17; id = "arrivals_stationary"; name = "delta arrivals"; - width = 9 + width = 9; + roundstart_template = /datum/map_template/shuttle/arrival/delta }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/arrival) +/turf/open/space/basic, +/area/space) "acG" = ( /obj/structure/table/reinforced, /obj/item/storage/belt/utility, @@ -1699,7 +1691,7 @@ /area/hallway/secondary/entry) "ads" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/open/floor/plating, /area/hallway/secondary/entry) "adt" = ( @@ -1710,8 +1702,8 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "adu" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/shuttle/arrival) +/turf/open/space/basic, +/area/space) "adv" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/arrival) @@ -1823,7 +1815,7 @@ }, /area/shuttle/abandoned) "adH" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "adI" = ( @@ -2244,8 +2236,8 @@ /turf/open/floor/plating/airless, /area/shuttle/transport) "aeu" = ( -/turf/open/floor/pod/light, -/area/shuttle/transport) +/turf/open/space/basic, +/area/space) "aev" = ( /obj/structure/shuttle/engine/heater{ dir = 1 @@ -2394,7 +2386,7 @@ /turf/open/floor/plasteel/whiteblue/side, /area/shuttle/abandoned) "aeL" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "aeM" = ( @@ -2407,7 +2399,7 @@ }, /area/shuttle/abandoned) "aeN" = ( -/obj/structure/sign/engineering, +/obj/structure/sign/departments/engineering, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "aeO" = ( @@ -3089,7 +3081,6 @@ /obj/structure/cable/white{ icon_state = "2-8" }, -/obj/effect/landmark/lightsout, /obj/machinery/holopad, /obj/structure/cable/white{ icon_state = "1-2" @@ -3134,7 +3125,8 @@ dir = 2; dwidth = 4; height = 9; - width = 9 + width = 9; + timid = 0 }, /obj/machinery/bluespace_beacon, /obj/docking_port/mobile/auxillary_base, @@ -3180,7 +3172,7 @@ /turf/open/floor/plasteel/whitepurple/corner, /area/shuttle/abandoned) "agx" = ( -/obj/structure/sign/science, +/obj/structure/sign/departments/science, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "agy" = ( @@ -3360,27 +3352,6 @@ /turf/open/floor/plating, /area/shuttle/abandoned) "agS" = ( -/obj/machinery/door/airlock/titanium{ - cyclelinkeddir = 8; - name = "External Airlock" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/docking_port/mobile{ - dheight = 0; - dir = 8; - dwidth = 11; - height = 15; - id = "whiteship"; - launch_status = 0; - name = "White-Ship"; - port_direction = 8; - preferred_direction = 8; - roundstart_move = "whiteship_away"; - width = 32 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 11; @@ -3389,8 +3360,8 @@ name = "SS13: Auxiliary Dock, Station-Fore"; width = 32 }, -/turf/open/floor/plasteel/neutral, -/area/shuttle/abandoned) +/turf/open/space/basic, +/area/space) "agT" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/stripes/line{ @@ -3992,17 +3963,6 @@ }, /area/shuttle/abandoned) "aid" = ( -/obj/docking_port/mobile{ - dir = 1; - dwidth = 2; - height = 13; - id = "ferry"; - name = "ferry shuttle"; - port_direction = 1; - preferred_direction = 4; - roundstart_move = "ferry_away"; - width = 5 - }, /obj/docking_port/stationary{ dir = 1; dwidth = 2; @@ -4012,9 +3972,8 @@ turf_type = /turf/open/space; width = 5 }, -/obj/machinery/door/airlock/titanium, -/turf/open/floor/pod/dark, -/area/shuttle/transport) +/turf/open/space/basic, +/area/space) "aie" = ( /obj/structure/frame/computer{ dir = 1 @@ -4458,7 +4417,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "ajh" = ( -/obj/structure/sign/pods, +/obj/structure/sign/warning/pods, /turf/closed/wall, /area/hallway/secondary/entry) "aji" = ( @@ -4737,7 +4696,7 @@ /turf/open/floor/plasteel, /area/maintenance/starboard/fore) "ajP" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall, /area/maintenance/starboard/fore) "ajQ" = ( @@ -4866,13 +4825,6 @@ }, /turf/open/floor/plasteel/neutral, /area/hallway/secondary/entry) -"akh" = ( -/obj/effect/landmark/lightsout, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/neutral, -/area/hallway/secondary/entry) "aki" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 @@ -7050,7 +7002,7 @@ /obj/structure/disposalpipe/segment{ dir = 10 }, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -7329,7 +7281,7 @@ "aqi" = ( /obj/structure/table/wood, /obj/item/device/flashlight/lamp, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /turf/open/floor/wood, @@ -7885,7 +7837,7 @@ /turf/open/floor/circuit/green, /area/engine/atmospherics_engine) "arl" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 }, @@ -7934,7 +7886,7 @@ /turf/open/floor/plasteel, /area/engine/atmospherics_engine) "arp" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -9867,7 +9819,7 @@ /turf/open/floor/plasteel, /area/engine/atmospherics_engine) "ava" = ( -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /obj/machinery/atmospherics/pipe/simple/cyan/visible{ @@ -9892,7 +9844,7 @@ }, /area/engine/atmospherics_engine) "avd" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /obj/effect/turf_decal/stripes/line{ @@ -10604,7 +10556,7 @@ /area/janitor) "awG" = ( /obj/structure/reagent_dispensers/watertank, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /obj/item/reagent_containers/glass/bucket, @@ -11016,7 +10968,7 @@ /area/engine/atmospherics_engine) "axG" = ( /obj/item/twohanded/required/kirbyplants/random, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /obj/structure/cable{ @@ -11078,7 +11030,7 @@ /area/maintenance/port/fore) "axQ" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /turf/open/floor/plating, @@ -11556,7 +11508,7 @@ /area/engine/atmospherics_engine) "ayP" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/machinery/camera{ @@ -11579,7 +11531,7 @@ }, /area/engine/atmospherics_engine) "ayR" = ( -/obj/structure/sign/radiation, +/obj/structure/sign/warning/radiation, /turf/closed/wall/r_wall, /area/engine/atmospherics_engine) "ayS" = ( @@ -11644,7 +11596,7 @@ pixel_y = -3 }, /obj/item/lipstick/random, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -11993,7 +11945,7 @@ /turf/open/space, /area/space/nearstation) "azO" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -12412,7 +12364,7 @@ icon_state = "0-8" }, /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/open/floor/plating, /area/quartermaster/storage) "aAK" = ( @@ -12433,9 +12385,8 @@ /turf/open/floor/plasteel, /area/shuttle/supply) "aAM" = ( -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/shuttle/supply) +/turf/open/space/basic, +/area/space) "aAN" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, @@ -12596,7 +12547,7 @@ /turf/open/floor/plasteel/caution, /area/engine/atmospherics_engine) "aBf" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/engine/atmospherics_engine) "aBg" = ( @@ -13118,7 +13069,7 @@ /turf/open/floor/plasteel, /area/engine/atmospherics_engine) "aCl" = ( -/obj/structure/sign/radiation, +/obj/structure/sign/warning/radiation, /turf/closed/wall/r_wall, /area/engine/supermatter) "aCm" = ( @@ -13605,13 +13556,16 @@ /turf/open/floor/plasteel, /area/quartermaster/storage) "aDi" = ( -/obj/machinery/door/airlock/shuttle{ - name = "Supply Shuttle Airlock"; - req_access_txt = "31" +/obj/docking_port/stationary{ + dir = 4; + dwidth = 4; + height = 7; + id = "supply_home"; + name = "Cargo Bay"; + width = 12 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/shuttle/supply) +/turf/open/space/basic, +/area/space) "aDj" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -13710,7 +13664,7 @@ pixel_x = -12; pixel_y = 2 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /obj/effect/turf_decal/bot, @@ -13729,7 +13683,7 @@ dir = 4; pixel_x = 11 }, -/obj/structure/sign/botany{ +/obj/structure/sign/departments/botany{ pixel_x = 32 }, /obj/effect/turf_decal/bot, @@ -14064,7 +14018,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_x = 32; pixel_y = 32 }, @@ -14552,22 +14506,6 @@ }, /turf/open/floor/plasteel, /area/quartermaster/storage) -"aFl" = ( -/obj/docking_port/mobile/supply{ - dwidth = 5; - roundstart_move = "supply_away"; - width = 12 - }, -/obj/docking_port/stationary{ - dir = 8; - dwidth = 5; - height = 7; - id = "supply_home"; - name = "Cargo Bay"; - width = 12 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) "aFm" = ( /turf/closed/wall/r_wall, /area/security/prison) @@ -14604,7 +14542,7 @@ /obj/structure/extinguisher_cabinet{ pixel_x = -26 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /obj/effect/turf_decal/bot, @@ -15321,7 +15259,7 @@ dir = 8 }, /obj/item/seeds/carrot, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /turf/open/floor/plasteel/red/corner{ @@ -15381,7 +15319,7 @@ pixel_x = 3; pixel_y = 3 }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/effect/decal/cleanable/cobweb/cobweb2, @@ -15432,7 +15370,7 @@ /area/maintenance/solars/port/fore) "aGP" = ( /obj/machinery/disposal/bin, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ pixel_y = 32 }, /obj/structure/disposalpipe/trunk{ @@ -15449,7 +15387,7 @@ /area/maintenance/disposal/incinerator) "aGR" = ( /obj/machinery/atmospherics/components/unary/tank/toxins, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/effect/decal/cleanable/dirt, @@ -15498,7 +15436,7 @@ /obj/machinery/power/smes{ charge = 1e+006 }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/structure/cable/white{ @@ -15620,7 +15558,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /obj/machinery/light, @@ -15657,7 +15595,7 @@ /turf/open/floor/plasteel, /area/engine/atmospherics_engine) "aHk" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, /area/engine/atmospherics_engine) "aHl" = ( @@ -16342,7 +16280,7 @@ /turf/open/floor/plasteel, /area/engine/atmospherics_engine) "aIA" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, /area/engine/atmospherics_engine) @@ -16366,7 +16304,7 @@ /turf/open/floor/plasteel, /area/engine/atmospherics_engine) "aIC" = ( -/obj/structure/sign/radiation, +/obj/structure/sign/warning/radiation, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, /area/engine/atmospherics_engine) @@ -16508,10 +16446,6 @@ icon_state = "wood-broken6" }, /area/hallway/secondary/service) -"aIR" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/turf/open/floor/wood, -/area/hallway/secondary/service) "aIS" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 @@ -16615,7 +16549,6 @@ }, /area/hallway/primary/fore) "aJe" = ( -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 }, @@ -16848,7 +16781,7 @@ /turf/open/floor/plating, /area/maintenance/solars/port/fore) "aJH" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, /area/maintenance/solars/port/fore) @@ -17300,7 +17233,6 @@ }, /area/quartermaster/sorting) "aKG" = ( -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -17579,7 +17511,7 @@ /turf/open/floor/plasteel, /area/maintenance/disposal/incinerator) "aLn" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = -32 }, /obj/machinery/light/small{ @@ -17701,7 +17633,7 @@ /turf/open/floor/circuit/green, /area/engine/atmospherics_engine) "aLx" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /obj/machinery/power/smes{ @@ -17775,13 +17707,6 @@ }, /turf/open/floor/wood, /area/hallway/secondary/service) -"aLG" = ( -/obj/item/twohanded/required/kirbyplants/random, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/hallway/secondary/service) "aLH" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 @@ -17978,7 +17903,7 @@ /obj/structure/table, /obj/item/storage/crayons, /obj/item/storage/crayons, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/effect/decal/cleanable/cobweb, @@ -18084,7 +18009,7 @@ icon_state = "4-8" }, /obj/item/toy/figure/syndie, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /turf/open/floor/plasteel/red/corner{ @@ -18128,7 +18053,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = -32 }, /turf/open/floor/plasteel/vault{ @@ -18155,7 +18080,7 @@ }, /area/security/execution/education) "aMt" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) "aMu" = ( @@ -18280,7 +18205,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "aMI" = ( -/obj/structure/sign/radiation, +/obj/structure/sign/warning/radiation, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, /area/engine/atmos) @@ -18303,12 +18228,12 @@ /turf/open/floor/plasteel, /area/engine/atmos) "aMK" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, /area/engine/atmos) "aML" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/engine/atmos) "aMM" = ( @@ -18389,7 +18314,7 @@ /turf/closed/wall, /area/crew_quarters/theatre) "aMY" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -18755,7 +18680,7 @@ dir = 8; luminosity = 2 }, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = -32 }, /obj/structure/cable{ @@ -19488,7 +19413,7 @@ /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "aPy" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 4 }, @@ -20373,7 +20298,7 @@ id = "justicechamber"; name = "Justice Chamber Blast door" }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -20819,10 +20744,6 @@ /obj/machinery/holopad, /turf/open/floor/carpet, /area/crew_quarters/bar/atrium) -"aSb" = ( -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/redyellow, -/area/crew_quarters/bar/atrium) "aSc" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -21385,7 +21306,6 @@ /obj/machinery/atmospherics/pipe/simple/yellow/visible{ dir = 4 }, -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/neutral, /area/engine/atmos) @@ -22484,7 +22404,7 @@ pixel_y = -3 }, /obj/item/lipstick/random, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /turf/open/floor/plasteel/cafeteria, @@ -23148,7 +23068,7 @@ }, /area/security/execution/education) "aWs" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/effect/decal/cleanable/dirt, @@ -23286,7 +23206,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "aWJ" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall, /area/engine/atmos) "aWK" = ( @@ -23778,7 +23698,7 @@ icon_state = "0-2" }, /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, /area/security/prison) @@ -24044,7 +23964,7 @@ dir = 10 }, /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/machinery/light/small{ @@ -24196,7 +24116,6 @@ /obj/structure/cable/white{ icon_state = "2-8" }, -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, @@ -25479,18 +25398,6 @@ dir = 1 }, /area/security/prison) -"bbj" = ( -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/effect/landmark/lightsout, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/security/prison) "bbk" = ( /obj/structure/cable/white, /obj/machinery/power/apc/highcap/five_k{ @@ -25529,7 +25436,7 @@ /area/security/prison) "bbn" = ( /obj/item/twohanded/required/kirbyplants/random, -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ dir = 8; pixel_y = -32 }, @@ -25550,7 +25457,7 @@ /area/security/prison) "bbp" = ( /obj/machinery/light/small, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = -32 }, /obj/effect/decal/cleanable/dirt, @@ -25615,7 +25522,8 @@ id = "pod3"; name = "escape pod 3"; port_direction = 2; - preferred_direction = 4 + preferred_direction = 4; + timid = 0 }, /obj/effect/turf_decal/stripes/end{ dir = 8 @@ -25676,7 +25584,7 @@ /area/space/nearstation) "bbA" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/machinery/light/small{ @@ -26921,7 +26829,7 @@ icon_state = "0-8" }, /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/open/floor/plating, /area/quartermaster/miningoffice) "bel" = ( @@ -26977,7 +26885,7 @@ icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -27108,7 +27016,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "beE" = ( -/obj/structure/sign/atmosplaque, +/obj/structure/sign/plaques/atmos, /turf/closed/wall, /area/engine/atmos) "beF" = ( @@ -27145,7 +27053,7 @@ }, /area/engine/atmos) "beJ" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/machinery/light/small{ @@ -27497,7 +27405,7 @@ /area/quartermaster/miningoffice) "bfG" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ name = "MINING POD" }, /turf/open/floor/plating, @@ -27546,7 +27454,7 @@ /obj/structure/cable/white{ icon_state = "2-4" }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/machinery/light/small{ @@ -27795,7 +27703,7 @@ /turf/open/floor/plasteel, /area/maintenance/port/fore) "bgk" = ( -/obj/structure/sign/botany, +/obj/structure/sign/departments/botany, /turf/closed/wall, /area/hydroponics) "bgl" = ( @@ -28011,7 +27919,6 @@ /area/quartermaster/miningoffice) "bgJ" = ( /obj/machinery/holopad, -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, @@ -28115,18 +28022,17 @@ /turf/open/floor/plasteel, /area/quartermaster/miningoffice) "bgU" = ( -/obj/machinery/door/airlock/shuttle{ - name = "Mining Shuttle Airlock"; - req_access_txt = "0" +/obj/docking_port/stationary{ + dir = 4; + dwidth = 3; + height = 5; + id = "mining_home"; + name = "mining shuttle bay"; + width = 7; + roundstart_template = /datum/map_template/shuttle/mining/delta }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/shuttle/mining) +/turf/open/space/basic, +/area/space) "bgV" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ @@ -28135,44 +28041,14 @@ /turf/open/floor/plasteel, /area/shuttle/mining) "bgW" = ( -/turf/open/floor/plasteel/neutral, -/area/shuttle/mining) +/turf/open/space/basic, +/area/space) "bgX" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, /turf/open/floor/plasteel, /area/shuttle/mining) -"bgY" = ( -/obj/docking_port/mobile{ - dir = 8; - dwidth = 3; - height = 5; - id = "mining"; - name = "mining shuttle"; - port_direction = 4; - width = 7 - }, -/obj/docking_port/stationary{ - dir = 8; - dwidth = 3; - height = 5; - id = "mining_home"; - name = "mining shuttle bay"; - width = 7 - }, -/obj/machinery/door/airlock/shuttle{ - name = "Mining Shuttle Airlock"; - req_access_txt = "0" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/shuttle/mining) "bgZ" = ( /turf/closed/wall/r_wall, /area/security/brig) @@ -28234,7 +28110,7 @@ "bhf" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/machinery/light/small{ @@ -30702,7 +30578,7 @@ "bmg" = ( /obj/structure/cable/white, /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/open/floor/plating, /area/security/brig) "bmh" = ( @@ -31821,7 +31697,7 @@ /area/engine/atmos) "boy" = ( /obj/machinery/hydroponics/constructable, -/obj/structure/sign/botany{ +/obj/structure/sign/departments/botany{ pixel_x = -32 }, /obj/effect/turf_decal/delivery, @@ -32181,7 +32057,6 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel/neutral, /area/security/brig) "bpl" = ( @@ -33027,7 +32902,6 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "bqP" = ( -/obj/effect/landmark/lightsout, /obj/structure/cable/white{ icon_state = "4-8" }, @@ -33169,7 +33043,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = -32 }, /obj/effect/turf_decal/stripes/line{ @@ -33779,7 +33653,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall/r_wall, /area/engine/atmos) "bsp" = ( @@ -34188,7 +34062,7 @@ icon_state = "4-8" }, /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/open/floor/plating, /area/security/execution/transfer) "btc" = ( @@ -35260,7 +35134,7 @@ /obj/structure/extinguisher_cabinet{ pixel_x = -26 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /turf/open/floor/plasteel/arrival, @@ -35450,7 +35324,7 @@ }, /area/hallway/primary/port) "bvv" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/storage/tech) "bvw" = ( @@ -35735,7 +35609,7 @@ /turf/open/floor/plasteel, /area/security/main) "bwh" = ( -/obj/structure/sign/goldenplaque{ +/obj/structure/sign/plaques/golden{ pixel_y = -32 }, /turf/open/floor/plasteel/red/corner, @@ -35812,7 +35686,7 @@ /obj/structure/cable/white{ icon_state = "0-8" }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/machinery/camera/motion{ @@ -35828,7 +35702,7 @@ icon_state = "2-8" }, /obj/item/twohanded/required/kirbyplants/random, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line, @@ -35917,7 +35791,7 @@ /turf/closed/wall/r_wall, /area/engine/atmos) "bwz" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, /area/engine/atmos) @@ -36923,10 +36797,10 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -37284,7 +37158,7 @@ }, /obj/item/crowbar/red, /obj/item/wrench, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/effect/turf_decal/bot, @@ -37370,7 +37244,7 @@ /turf/open/floor/plasteel/redyellow, /area/engine/break_room) "bzq" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, /area/engine/break_room) @@ -37393,7 +37267,7 @@ /turf/open/floor/plasteel, /area/engine/break_room) "bzs" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, /area/engine/break_room) @@ -37843,12 +37717,8 @@ /turf/open/floor/plasteel, /area/shuttle/labor) "bAa" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/end{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/shuttle/labor) +/turf/open/space/basic, +/area/space) "bAb" = ( /obj/effect/turf_decal/stripes/line{ dir = 2 @@ -37856,35 +37726,17 @@ /turf/open/floor/plasteel, /area/shuttle/labor) "bAc" = ( -/obj/machinery/door/airlock/shuttle{ - id_tag = "prisonshuttle"; - name = "Labor Shuttle Airlock" - }, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 2; - height = 5; - id = "laborcamp"; - name = "labor camp shuttle"; - port_direction = 4; - width = 9 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 2; height = 5; id = "laborcamp_home"; name = "fore bay 1"; - width = 9 + width = 9; + roundstart_template = /datum/map_template/shuttle/labour/delta }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/shuttle/labor) +/turf/open/space/basic, +/area/space) "bAd" = ( /obj/machinery/door/airlock/external{ cyclelinkeddir = 4; @@ -37899,11 +37751,6 @@ }, /turf/open/floor/plasteel, /area/security/execution/transfer) -"bAe" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/security/execution/transfer) "bAf" = ( /obj/machinery/door/airlock/external{ cyclelinkeddir = 8; @@ -38200,7 +38047,7 @@ icon_state = "0-2" }, /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -39138,7 +38985,7 @@ /turf/open/floor/plasteel, /area/engine/gravity_generator) "bCF" = ( -/obj/structure/sign/radiation, +/obj/structure/sign/warning/radiation, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -39664,7 +39511,6 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -40187,7 +40033,7 @@ pixel_x = 4; req_access_txt = "16" }, -/obj/effect/landmark/tripai, +/obj/effect/landmark/start/ai/secondary, /turf/open/floor/circuit/green, /area/ai_monitored/turret_protected/ai) "bEg" = ( @@ -40301,14 +40147,14 @@ pixel_x = -3; req_access_txt = "16" }, -/obj/effect/landmark/tripai, +/obj/effect/landmark/start/ai/secondary, /turf/open/floor/circuit/green, /area/ai_monitored/turret_protected/ai) "bEn" = ( /obj/machinery/light{ dir = 8 }, -/obj/structure/sign/radiation{ +/obj/structure/sign/warning/radiation{ pixel_x = -32 }, /turf/open/floor/plasteel/vault{ @@ -41087,7 +40933,7 @@ }, /obj/effect/spawner/structure/window/reinforced, /obj/structure/disposalpipe/segment, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = -32 }, /turf/open/floor/plating, @@ -41303,7 +41149,7 @@ /turf/open/floor/plasteel, /area/engine/gravity_generator) "bGc" = ( -/obj/structure/sign/radiation, +/obj/structure/sign/warning/radiation, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -42129,7 +41975,7 @@ "bHO" = ( /obj/structure/cable/white, /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -42337,13 +42183,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/engine/break_room) -"bIj" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/neutral, -/area/engine/break_room) "bIk" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/white{ @@ -42521,10 +42360,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/storage/primary) -"bIy" = ( -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/neutral, -/area/storage/primary) "bIz" = ( /obj/structure/table/reinforced, /obj/item/stack/packageWrap, @@ -43363,7 +43198,7 @@ }, /area/engine/break_room) "bKh" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -44323,7 +44158,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/security/checkpoint/engineering) "bMf" = ( @@ -44836,10 +44671,7 @@ }, /area/hallway/primary/starboard) "bNi" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_x = 32 }, /obj/machinery/light{ @@ -45835,10 +45667,6 @@ dir = 5 }, /area/security/detectives_office) -"bPn" = ( -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/neutral, -/area/hallway/primary/starboard) "bPo" = ( /obj/structure/closet/secure_closet/brig{ id = "brig2"; @@ -46023,7 +45851,7 @@ /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/aisat_interior) "bPH" = ( -/obj/structure/sign/kiddieplaque, +/obj/structure/sign/plaques/kiddie, /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/aisat_interior) "bPI" = ( @@ -46059,7 +45887,7 @@ /area/space/nearstation) "bPL" = ( /obj/machinery/light/small, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = -32 }, /turf/open/floor/plasteel/vault{ @@ -46174,7 +46002,7 @@ }, /area/crew_quarters/heads/chief) "bPW" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/crew_quarters/heads/chief) "bPX" = ( @@ -46182,7 +46010,7 @@ /turf/closed/wall/r_wall, /area/crew_quarters/heads/chief) "bPY" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/engine/break_room) @@ -46205,7 +46033,7 @@ /turf/open/floor/plasteel, /area/engine/break_room) "bQa" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall, /area/engine/break_room) @@ -46569,7 +46397,7 @@ /turf/open/floor/wood, /area/crew_quarters/heads/captain) "bQW" = ( -/obj/structure/sign/goldenplaque/captain{ +/obj/structure/sign/plaques/golden/captain{ pixel_x = 32 }, /turf/open/floor/wood, @@ -46916,7 +46744,7 @@ /obj/structure/cable/yellow{ icon_state = "0-2" }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -47015,7 +46843,7 @@ /turf/open/space, /area/space/nearstation) "bRP" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall, /area/space/nearstation) "bRQ" = ( @@ -47951,7 +47779,7 @@ icon_state = "control_standby"; name = "Antechamber Turret Control"; pixel_x = -32; - req_access_txt = "65" + req_access = list(65) }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -48930,10 +48758,7 @@ /turf/open/floor/plasteel/neutral, /area/hallway/primary/starboard) "bVj" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -49959,7 +49784,6 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/landmark/lightsout, /obj/structure/cable/white{ icon_state = "1-4" }, @@ -50415,7 +50239,7 @@ }, /area/aisat) "bXU" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -50606,7 +50430,7 @@ icon_state = "curved0"; dir = 4 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = -32 }, /turf/open/floor/plasteel/vault{ @@ -51733,7 +51557,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "caw" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/engine/engineering) @@ -51756,7 +51580,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cay" = ( -/obj/structure/sign/radiation, +/obj/structure/sign/warning/radiation, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall, /area/engine/engineering) @@ -52012,8 +51836,6 @@ /area/crew_quarters/heads/captain/private) "cbf" = ( /obj/structure/closet/secure_closet/captains, -/obj/item/clothing/suit/armor/vest/capcarapace, -/obj/item/clothing/head/caphat, /obj/effect/turf_decal/stripes/line{ dir = 6 }, @@ -52426,7 +52248,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cbV" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall, /area/engine/engineering) "cbW" = ( @@ -52723,11 +52545,6 @@ }, /turf/open/floor/plasteel/neutral, /area/hallway/primary/central) -"ccy" = ( -/obj/effect/landmark/lightsout, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/blue/corner, -/area/hallway/primary/central) "ccz" = ( /obj/machinery/status_display, /turf/closed/wall/r_wall, @@ -52889,7 +52706,6 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/item/card/id/captains_spare, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -53696,7 +53512,7 @@ }, /area/tcommsat/server) "cex" = ( -/obj/machinery/message_server, +/obj/machinery/telecomms/message_server, /obj/structure/cable/white{ icon_state = "4-8" }, @@ -54096,7 +53912,6 @@ /obj/structure/cable/white{ icon_state = "2-4" }, -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -54286,7 +54101,7 @@ pixel_x = -3; pixel_y = -3 }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = 32 }, /turf/open/floor/plasteel/vault{ @@ -54306,7 +54121,7 @@ /turf/open/floor/plating/airless, /area/engine/engineering) "cfC" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall/r_wall, /area/engine/engineering) "cfD" = ( @@ -54454,7 +54269,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cfQ" = ( -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = 32 }, /obj/item/device/radio/intercom{ @@ -54504,7 +54319,7 @@ dir = 8 }, /obj/item/twohanded/required/kirbyplants/random, -/obj/structure/sign/kiddieplaque/library{ +/obj/structure/sign/plaques/kiddie/library{ pixel_x = -32 }, /turf/open/floor/wood, @@ -54529,7 +54344,7 @@ /turf/open/floor/wood, /area/library) "cfZ" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall, /area/library) "cga" = ( @@ -54542,7 +54357,7 @@ }, /area/library) "cgb" = ( -/obj/structure/sign/kiddieplaque/library{ +/obj/structure/sign/plaques/kiddie/library{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -54551,7 +54366,7 @@ }, /area/hallway/primary/central) "cgc" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/crew_quarters/heads/hop) "cgd" = ( @@ -55382,7 +55197,7 @@ /obj/machinery/computer/atmos_alert{ dir = 1 }, -/obj/structure/sign/nosmoking_1{ +/obj/structure/sign/warning/nosmoking/circle{ pixel_x = 28; pixel_y = -28 }, @@ -56401,12 +56216,6 @@ dir = 5 }, /area/security/courtroom) -"cjW" = ( -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/security/courtroom) "cjX" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -56828,13 +56637,6 @@ }, /turf/open/floor/plasteel/grimy, /area/library) -"ckS" = ( -/obj/effect/landmark/lightsout, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/grimy, -/area/library) "ckT" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 @@ -56887,7 +56689,7 @@ }, /area/tcommsat/server) "cla" = ( -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /turf/open/floor/plasteel/vault/telecomms{ @@ -56929,7 +56731,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /turf/open/floor/plasteel/neutral/corner{ @@ -57189,7 +56991,7 @@ /turf/open/floor/plating, /area/security/range) "clG" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/machinery/light{ @@ -58112,7 +57914,7 @@ /area/ai_monitored/turret_protected/ai_upload) "cnv" = ( /obj/machinery/porta_turret/ai, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /turf/open/floor/plasteel/vault{ @@ -58190,7 +57992,7 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "cnC" = ( -/obj/structure/sign/radiation, +/obj/structure/sign/warning/radiation, /turf/closed/wall/r_wall, /area/engine/engineering) "cnD" = ( @@ -58803,7 +58605,7 @@ /turf/open/floor/plating, /area/security/range) "coS" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = -32 }, /obj/machinery/light, @@ -58932,7 +58734,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cph" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/engine/engineering) "cpi" = ( @@ -58960,7 +58762,7 @@ /obj/machinery/shieldgen, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/effect/turf_decal/bot, @@ -59614,7 +59416,7 @@ /turf/open/floor/plasteel, /area/maintenance/port) "cqK" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/maintenance/port) "cqL" = ( @@ -59715,7 +59517,7 @@ /turf/open/floor/plating, /area/hallway/secondary/command) "cra" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, /area/hallway/secondary/command) @@ -59965,7 +59767,7 @@ /turf/open/floor/plasteel, /area/maintenance/starboard) "crD" = ( -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = -32; pixel_y = 32 }, @@ -60169,7 +59971,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_x = 32 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ @@ -60365,7 +60167,7 @@ }, /area/hallway/secondary/command) "cst" = ( -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -60468,7 +60270,7 @@ }, /area/hallway/secondary/command) "csC" = ( -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -61235,7 +61037,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = -32; pixel_y = -32 }, @@ -61321,7 +61123,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = 32; pixel_y = -32 }, @@ -61904,7 +61706,6 @@ icon_state = "1-2" }, /obj/machinery/holopad, -/obj/effect/landmark/lightsout, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/hallway/secondary/command) @@ -62682,10 +62483,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/neutral, /area/hallway/primary/central) -"cxe" = ( -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/neutral, -/area/hallway/primary/central) "cxf" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/stripes/line{ @@ -62889,17 +62686,6 @@ }, /turf/open/floor/plating/airless, /area/space/nearstation) -"cxC" = ( -/obj/machinery/power/rad_collector/anchored, -/obj/machinery/power/rad_collector/anchored, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/engineering) "cxD" = ( /obj/structure/rack, /obj/item/crowbar, @@ -62953,7 +62739,7 @@ "cxI" = ( /obj/item/twohanded/required/kirbyplants/random, /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/effect/turf_decal/bot, @@ -63556,16 +63342,6 @@ }, /turf/open/floor/plasteel/neutral, /area/crew_quarters/locker) -"cyT" = ( -/obj/effect/landmark/lightsout, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/neutral, -/area/crew_quarters/locker) "cyU" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 @@ -63853,7 +63629,7 @@ dir = 8 }, /obj/machinery/disposal/bin, -/obj/structure/sign/kiddieplaque/library{ +/obj/structure/sign/plaques/kiddie/library{ pixel_x = -32 }, /obj/structure/disposalpipe/trunk{ @@ -64518,7 +64294,7 @@ }, /obj/item/clothing/mask/breath, /obj/item/clothing/mask/breath, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/effect/decal/cleanable/dirt, @@ -65317,7 +65093,7 @@ /area/engine/storage) "cCB" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /obj/structure/tank_dispenser, @@ -66031,7 +65807,6 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cEb" = ( -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -67328,13 +67103,6 @@ }, /turf/open/floor/plasteel, /area/gateway) -"cGG" = ( -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/neutral, -/area/hallway/primary/central) "cGH" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/mirror{ @@ -67660,7 +67428,7 @@ "cHq" = ( /obj/item/twohanded/required/kirbyplants/random, /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /obj/effect/turf_decal/bot, @@ -67881,7 +67649,7 @@ /turf/open/floor/plating, /area/bridge/showroom/corporate) "cHN" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/bridge/showroom/corporate) "cHO" = ( @@ -68233,16 +68001,6 @@ }, /turf/closed/wall, /area/maintenance/port) -"cIz" = ( -/obj/effect/landmark/lightsout, -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/neutral, -/area/hallway/primary/central) "cIA" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/plasteel/neutral/corner{ @@ -69736,7 +69494,6 @@ /turf/open/floor/plasteel/neutral, /area/crew_quarters/dorms) "cLd" = ( -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel/neutral, /area/crew_quarters/dorms) "cLe" = ( @@ -69755,9 +69512,6 @@ }, /turf/open/floor/plasteel/neutral, /area/crew_quarters/dorms) -"cLh" = ( -/turf/open/floor/plasteel/neutral, -/area/crew_quarters/dorms) "cLi" = ( /obj/item/twohanded/required/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -69798,7 +69552,7 @@ }, /area/crew_quarters/fitness/recreation) "cLn" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall, /area/crew_quarters/fitness/recreation) "cLo" = ( @@ -70465,7 +70219,6 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, /obj/structure/disposalpipe/junction/flip{ dir = 1 @@ -70530,7 +70283,7 @@ /turf/closed/wall, /area/maintenance/department/electrical) "cMP" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall, /area/maintenance/department/electrical) "cMQ" = ( @@ -70552,7 +70305,7 @@ /turf/closed/wall, /area/maintenance/department/electrical) "cMS" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall, /area/maintenance/department/electrical) "cMT" = ( @@ -70728,7 +70481,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "cNo" = ( -/obj/structure/sign/science, +/obj/structure/sign/departments/science, /turf/closed/wall, /area/hallway/primary/central) "cNp" = ( @@ -70864,7 +70617,7 @@ /turf/open/floor/plasteel, /area/medical/medbay/central) "cND" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall, /area/medical/medbay/central) "cNE" = ( @@ -71542,7 +71295,7 @@ }, /area/science/research) "cPi" = ( -/obj/structure/sign/science, +/obj/structure/sign/departments/science, /turf/closed/wall, /area/science/research) "cPj" = ( @@ -72996,13 +72749,6 @@ }, /turf/open/floor/plasteel/whitepurple/corner, /area/science/research) -"cSt" = ( -/obj/effect/landmark/lightsout, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/whitepurple/corner, -/area/science/research) "cSu" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -73541,7 +73287,7 @@ /turf/open/floor/circuit/green, /area/science/xenobiology) "cTA" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/science/xenobiology) "cTB" = ( @@ -73590,7 +73336,7 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "cTG" = ( -/obj/structure/sign/xenobio, +/obj/structure/sign/departments/xenobio, /turf/closed/wall, /area/science/xenobiology) "cTH" = ( @@ -73630,7 +73376,7 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "cTK" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall, /area/science/xenobiology) "cTL" = ( @@ -73687,7 +73433,7 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "cTP" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall, /area/science/xenobiology) "cTQ" = ( @@ -73928,7 +73674,6 @@ }, /area/hallway/primary/aft) "cUp" = ( -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -74013,13 +73758,6 @@ }, /turf/open/floor/plasteel/cmo, /area/medical/medbay/central) -"cUy" = ( -/obj/effect/landmark/lightsout, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/cmo, -/area/medical/medbay/central) "cUz" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -75109,7 +74847,7 @@ /obj/machinery/atmospherics/components/binary/valve{ dir = 1 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /obj/effect/turf_decal/stripes/line{ @@ -75187,7 +74925,7 @@ /turf/open/floor/plasteel, /area/maintenance/department/electrical) "cWT" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /obj/effect/turf_decal/delivery, @@ -75326,7 +75064,6 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/effect/landmark/lightsout, /obj/effect/turf_decal/stripes/line{ dir = 2 }, @@ -75645,7 +75382,7 @@ /area/medical/medbay/central) "cXM" = ( /obj/structure/bed/roller, -/obj/structure/sign/chemistry{ +/obj/structure/sign/departments/chemistry{ pixel_y = -32 }, /obj/machinery/light, @@ -75724,7 +75461,7 @@ }, /area/medical/medbay/central) "cXX" = ( -/obj/structure/sign/bluecross_2{ +/obj/structure/sign/departments/medbay/alt{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -76301,7 +76038,7 @@ /turf/open/floor/plasteel, /area/science/research) "cZi" = ( -/obj/structure/sign/science, +/obj/structure/sign/departments/science, /turf/closed/wall/r_wall, /area/science/research) "cZj" = ( @@ -76322,11 +76059,11 @@ /turf/open/floor/plasteel, /area/science/research) "cZk" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/science/research) "cZl" = ( -/obj/structure/sign/science, +/obj/structure/sign/departments/science, /turf/closed/wall, /area/science/lab) "cZm" = ( @@ -76868,7 +76605,7 @@ }, /area/maintenance/port) "dao" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/maintenance/department/electrical) @@ -77130,7 +76867,7 @@ /turf/open/floor/plasteel, /area/science/research) "daP" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall/r_wall, /area/science/lab) "daQ" = ( @@ -78317,7 +78054,7 @@ /obj/item/stack/medical/gauze, /obj/item/stack/medical/bruise_pack, /obj/item/stack/medical/ointment, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/machinery/light/small{ @@ -78923,7 +78660,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "deN" = ( -/obj/structure/sign/examroom{ +/obj/structure/sign/departments/examroom{ pixel_x = -32 }, /obj/item/twohanded/required/kirbyplants/random, @@ -78952,7 +78689,7 @@ /turf/open/floor/plating, /area/medical/abandoned) "deT" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall, /area/medical/abandoned) "deU" = ( @@ -79046,7 +78783,7 @@ /turf/open/floor/plating, /area/maintenance/port) "dfc" = ( -/obj/structure/sign/xenobio, +/obj/structure/sign/departments/xenobio, /turf/closed/wall/r_wall, /area/science/xenobiology) "dfd" = ( @@ -79186,7 +78923,7 @@ /turf/open/floor/plasteel, /area/science/research) "dfp" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall, /area/science/research) "dfq" = ( @@ -79253,7 +78990,7 @@ /turf/open/floor/plasteel/whitepurple/corner, /area/science/lab) "dfv" = ( -/obj/structure/sign/chemistry, +/obj/structure/sign/departments/chemistry, /turf/closed/wall, /area/medical/chemistry) "dfw" = ( @@ -79391,7 +79128,7 @@ /turf/open/floor/plasteel, /area/medical/medbay/central) "dfH" = ( -/obj/structure/sign/examroom, +/obj/structure/sign/departments/examroom, /turf/closed/wall, /area/medical/medbay/central) "dfI" = ( @@ -80678,7 +80415,6 @@ icon_state = "4-8" }, /obj/item/device/radio/beacon, -/obj/effect/landmark/lightsout, /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/whiteblue, /area/medical/medbay/central) @@ -81122,7 +80858,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line, @@ -81406,7 +81142,7 @@ /obj/structure/extinguisher_cabinet{ pixel_y = -32 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32; pixel_y = -32 }, @@ -81601,7 +81337,7 @@ /turf/open/floor/plasteel/neutral, /area/medical/medbay/central) "dkA" = ( -/obj/structure/sign/bluecross_2{ +/obj/structure/sign/departments/medbay/alt{ pixel_x = 32; pixel_y = -32 }, @@ -81913,13 +81649,6 @@ "dlj" = ( /turf/open/floor/plasteel, /area/science/circuit) -"dlk" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/science/research/abandoned) "dll" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 @@ -82042,7 +81771,7 @@ /turf/open/floor/plating, /area/science/research) "dlz" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall, /area/science/research) "dlA" = ( @@ -82099,7 +81828,7 @@ /turf/open/floor/plating, /area/crew_quarters/heads/hor) "dlG" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/crew_quarters/heads/hor) "dlH" = ( @@ -82246,7 +81975,7 @@ /turf/open/floor/plating, /area/medical/genetics/cloning) "dlX" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall, /area/medical/genetics/cloning) "dlY" = ( @@ -82400,7 +82129,7 @@ /obj/item/stack/sheet/metal/fifty, /obj/item/stock_parts/cell/super, /obj/item/stock_parts/cell/super, -/obj/structure/sign/science{ +/obj/structure/sign/departments/science{ pixel_x = -32 }, /turf/open/floor/plasteel/white/side{ @@ -82442,7 +82171,6 @@ /area/science/circuit) "dmw" = ( /obj/structure/disposalpipe/segment, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel/white/side{ dir = 10 }, @@ -82460,13 +82188,6 @@ }, /turf/open/floor/plasteel, /area/science/research/abandoned) -"dmz" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/electrical, -/obj/item/device/multitool, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/science/research/abandoned) "dmA" = ( /obj/effect/landmark/blobstart, /obj/effect/turf_decal/bot, @@ -82785,7 +82506,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /obj/effect/turf_decal/bot, @@ -82853,7 +82574,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /turf/open/floor/plasteel/whitepurple/corner{ @@ -83001,7 +82722,7 @@ /turf/open/floor/plasteel/vault, /area/medical/surgery) "dnF" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall, /area/medical/surgery) "dnG" = ( @@ -83502,7 +83223,6 @@ /area/science/research) "doF" = ( /obj/machinery/holopad, -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -84124,16 +83844,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/wood, /area/crew_quarters/abandoned_gambling_den) -"dpW" = ( -/obj/structure/table/reinforced, -/obj/item/folder/white, -/obj/item/stock_parts/cell/high, -/obj/item/stack/sheet/glass, -/obj/item/stack/sheet/glass, -/obj/item/stack/sheet/glass, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/science/research/abandoned) "dpX" = ( /obj/structure/chair/office/light{ dir = 8 @@ -84371,7 +84081,7 @@ /turf/open/floor/plasteel, /area/science/explab) "dqs" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -85029,7 +84739,7 @@ }, /area/science/explab) "drK" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/science/explab) "drL" = ( @@ -85055,7 +84765,7 @@ /turf/closed/wall/r_wall, /area/science/mixing) "drQ" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, /area/science/mixing) "drR" = ( @@ -85086,7 +84796,7 @@ /turf/open/floor/plasteel, /area/science/mixing) "drT" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall/r_wall, /area/science/mixing) "drU" = ( @@ -85421,7 +85131,7 @@ /turf/open/floor/plasteel/whiteblue/corner, /area/medical/medbay/central) "dsI" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -85579,25 +85289,6 @@ /obj/item/book/manual/wiki/engineering_hacking, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) -"dtb" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/science/research/abandoned) -"dtc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_access_txt = "12" - }, -/obj/structure/barricade/wooden, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/science/research/abandoned) "dtd" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall, @@ -85880,7 +85571,7 @@ /turf/open/floor/plasteel/whiteblue/corner, /area/medical/medbay/central) "dtJ" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall/r_wall, /area/crew_quarters/heads/cmo) "dtK" = ( @@ -86292,7 +85983,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -87276,12 +86967,6 @@ dir = 8 }, /area/hallway/primary/aft) -"dwE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/neutral, -/area/hallway/primary/aft) "dwF" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -87628,7 +87313,6 @@ /obj/structure/cable/white{ icon_state = "2-8" }, -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, @@ -87872,7 +87556,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -88017,7 +87701,7 @@ /turf/open/floor/plating, /area/science/robotics/lab) "dye" = ( -/obj/structure/sign/science, +/obj/structure/sign/departments/science, /turf/closed/wall, /area/science/robotics/lab) "dyf" = ( @@ -88728,7 +88412,7 @@ /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 8 }, -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_x = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -88871,7 +88555,7 @@ /turf/open/floor/plasteel, /area/science/robotics/lab) "dzL" = ( -/obj/structure/sign/science{ +/obj/structure/sign/departments/science{ pixel_x = -32; pixel_y = 32 }, @@ -88882,7 +88566,7 @@ }, /area/hallway/primary/aft) "dzM" = ( -/obj/structure/sign/science{ +/obj/structure/sign/departments/science{ pixel_x = 32; pixel_y = 32 }, @@ -89490,7 +89174,7 @@ dir = 1 }, /obj/machinery/light, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /obj/effect/turf_decal/stripes/end{ @@ -89555,7 +89239,7 @@ id = "geneticslab"; name = "Genetics Lab Shutters" }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /turf/open/floor/plating, @@ -90297,7 +89981,7 @@ /turf/open/floor/plasteel, /area/medical/morgue) "dCA" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall, /area/medical/morgue) "dCB" = ( @@ -90532,7 +90216,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "dDb" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/maintenance/solars/starboard/aft) "dDc" = ( @@ -90706,7 +90390,7 @@ /turf/open/floor/plasteel, /area/science/mixing) "dDs" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, /area/science/misc_lab/range) "dDt" = ( @@ -91310,7 +90994,7 @@ }, /area/science/server) "dEE" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -91378,14 +91062,13 @@ /obj/machinery/computer/rdconsole/robotics{ dir = 8 }, -/obj/structure/sign/bluecross_2{ +/obj/structure/sign/departments/medbay/alt{ pixel_x = 32 }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/science/robotics/lab) "dEP" = ( -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 }, @@ -93351,7 +93034,7 @@ /obj/item/device/mmi, /obj/item/device/mmi, /obj/item/device/mmi, -/obj/structure/sign/bluecross_2{ +/obj/structure/sign/departments/medbay/alt{ pixel_y = -32 }, /obj/effect/turf_decal/bot, @@ -93382,7 +93065,7 @@ pixel_y = 16 }, /obj/item/circular_saw, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /obj/structure/mirror{ @@ -93918,7 +93601,7 @@ /turf/open/floor/plasteel, /area/science/mixing) "dJY" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -94186,11 +93869,11 @@ /turf/open/floor/plating/airless, /area/science/test_area) "dKA" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall, /area/science/mixing) "dKB" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall, /area/science/mixing) "dKC" = ( @@ -95322,7 +95005,6 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -96463,7 +96145,7 @@ /turf/open/floor/plasteel, /area/medical/medbay/central) "dPp" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, /area/medical/medbay/central) @@ -96834,7 +96516,7 @@ icon_state = "0-2" }, /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/open/floor/plating, /area/medical/virology) "dQi" = ( @@ -97751,7 +97433,7 @@ /area/shuttle/escape) "dRZ" = ( /obj/structure/closet/l3closet/virology, -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_y = -32 }, /obj/effect/turf_decal/bot, @@ -97768,7 +97450,7 @@ /area/medical/virology) "dSb" = ( /obj/structure/closet/emcloset, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = -32 }, /obj/effect/turf_decal/bot, @@ -98667,7 +98349,7 @@ /turf/open/floor/plasteel/vault, /area/medical/virology) "dTY" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall, /area/medical/virology) "dTZ" = ( @@ -98777,7 +98459,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/structure/sign/kiddieplaque/badger{ +/obj/structure/sign/plaques/kiddie/badger{ pixel_y = 32 }, /turf/open/floor/plasteel/vault{ @@ -98918,8 +98600,8 @@ }, /area/shuttle/escape) "dUD" = ( -/turf/open/floor/plasteel/neutral, -/area/shuttle/escape) +/turf/open/space/basic, +/area/space) "dUE" = ( /obj/machinery/light{ dir = 4 @@ -99353,13 +99035,6 @@ dir = 8 }, /area/medical/virology) -"dVB" = ( -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/green, -/area/medical/virology) "dVC" = ( /obj/item/device/radio/intercom{ name = "Station Intercom"; @@ -100121,7 +99796,7 @@ /turf/open/floor/plasteel/whitegreen/corner, /area/medical/virology) "dXl" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall, /area/medical/virology) "dXm" = ( @@ -100255,7 +99930,7 @@ /obj/structure/table, /obj/item/stack/packageWrap, /obj/item/hand_labeler, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /turf/open/floor/plasteel/vault{ @@ -100765,7 +100440,7 @@ /turf/open/floor/plasteel/white, /area/shuttle/escape) "dYL" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall/mineral/titanium, /area/shuttle/escape) "dYM" = ( @@ -100800,7 +100475,7 @@ /area/medical/virology) "dYQ" = ( /obj/structure/table/glass, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ pixel_y = -32 }, /obj/item/paper_bin, @@ -101085,7 +100760,7 @@ /area/hallway/secondary/exit/departure_lounge) "dZr" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/open/floor/plating, /area/hallway/secondary/exit/departure_lounge) "dZs" = ( @@ -101413,18 +101088,6 @@ /turf/open/floor/plasteel/neutral, /area/hallway/secondary/exit/departure_lounge) "eab" = ( -/obj/machinery/door/airlock/shuttle{ - name = "Emergency Shuttle Airlock" - }, -/obj/docking_port/mobile/emergency{ - dheight = 0; - dwidth = 11; - height = 18; - name = "Delta emergency shuttle"; - width = 30; - preferred_direction = 2; - port_direction = 4 - }, /obj/docking_port/stationary{ dheight = 0; dir = 4; @@ -101435,14 +101098,8 @@ turf_type = /turf/open/space; width = 30 }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/shuttle/escape) +/turf/open/space/basic, +/area/space) "eac" = ( /obj/structure/flora/ausbushes/grassybush, /obj/structure/flora/ausbushes/lavendergrass, @@ -101703,10 +101360,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) -"eaF" = ( -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/neutral, -/area/hallway/secondary/exit/departure_lounge) "eaG" = ( /obj/structure/reagent_dispensers/fueltank, /obj/item/device/radio/intercom{ @@ -101762,7 +101415,7 @@ /turf/open/floor/plating, /area/medical/virology) "eaL" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall/r_wall, /area/medical/virology) "eaM" = ( @@ -101862,7 +101515,7 @@ }, /area/maintenance/port/aft) "eaW" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/maintenance/port/aft) "eaX" = ( @@ -102387,7 +102040,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /turf/open/floor/plasteel{ @@ -102510,7 +102163,7 @@ /turf/open/floor/plating, /area/maintenance/solars/port/aft) "ecn" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/maintenance/solars/port/aft) "eco" = ( @@ -103382,7 +103035,7 @@ /area/chapel/office) "edW" = ( /obj/item/twohanded/required/kirbyplants/random, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /turf/open/floor/plasteel/grimy, @@ -103517,7 +103170,7 @@ icon_state = "0-8" }, /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/open/floor/plating, /area/security/checkpoint/escape) "eek" = ( @@ -104947,10 +104600,6 @@ }, /turf/closed/wall, /area/quartermaster/office) -"ehu" = ( -/obj/machinery/rnd/protolathe/department/security, -/turf/open/floor/plasteel/neutral, -/area/security/main) "ehv" = ( /turf/open/floor/plasteel/caution, /area/engine/engineering) @@ -104961,13 +104610,6 @@ }, /turf/open/floor/plasteel/caution, /area/engine/engineering) -"ehx" = ( -/obj/structure/cable/white{ - icon_state = "4-8" - }, -/obj/machinery/rnd/protolathe/department/engineering, -/turf/open/floor/plasteel/neutral, -/area/engine/engineering) "ehy" = ( /obj/effect/turf_decal/stripes/line{ dir = 2 @@ -104978,76 +104620,6 @@ /obj/effect/turf_decal/caution/stand_clear, /turf/open/floor/plasteel, /area/hallway/secondary/entry) -"ehz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/caution/stand_clear, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"ehA" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/caution/stand_clear, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"ehB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/caution/stand_clear, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"ehC" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/caution/stand_clear, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"ehD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/caution/stand_clear, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"ehE" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/caution/stand_clear, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) -"ehF" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/caution/stand_clear, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) "ehG" = ( /obj/item/device/radio/intercom{ name = "Station Intercom"; @@ -105115,40 +104687,12 @@ /obj/effect/turf_decal/caution/stand_clear, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) -"ehN" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/caution/stand_clear, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit/departure_lounge) -"ehO" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/caution/stand_clear, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit/departure_lounge) "ehP" = ( /obj/machinery/computer/security/telescreen/entertainment{ pixel_y = -32 }, /turf/open/floor/plasteel/dark, /area/library) -"ehQ" = ( -/obj/structure/cable/white{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/grimy, -/area/chapel/main) "QNf" = ( /obj/machinery/autolathe, /obj/machinery/door/window/southleft{ @@ -105160,7 +104704,9 @@ id = "rndlab1"; name = "Research and Development Shutter" }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 4 + }, /area/science/lab) "QNg" = ( /obj/effect/turf_decal/loading_area, @@ -105180,12 +104726,6 @@ "QNi" = ( /turf/closed/wall, /area/science/circuit) -"QNj" = ( -/turf/closed/wall/r_wall, -/area/science/circuit) -"QNk" = ( -/turf/closed/wall/r_wall, -/area/science/circuit) "QNl" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, @@ -105194,9 +104734,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, /area/science/circuit) -"QNn" = ( -/turf/closed/wall, -/area/science/circuit) "QNo" = ( /obj/structure/table/reinforced, /obj/machinery/camera{ @@ -105228,13 +104765,6 @@ }, /turf/open/floor/plasteel, /area/science/circuit) -"QNr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall/r_wall, -/area/science/circuit) -"QNs" = ( -/turf/closed/wall, -/area/science/circuit) "QNt" = ( /obj/structure/chair/office/light{ dir = 8 @@ -105256,23 +104786,6 @@ dir = 9 }, /area/science/circuit) -"QNw" = ( -/turf/open/floor/plasteel/white/side{ - dir = 5 - }, -/area/science/circuit) -"QNx" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/white/side{ - dir = 9 - }, -/area/science/circuit) -"QNy" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/science/circuit) "QNz" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -105285,9 +104798,6 @@ }, /turf/open/floor/plasteel/whitepurple/side, /area/science/misc_lab) -"QNB" = ( -/turf/closed/wall, -/area/science/circuit) "QNC" = ( /obj/structure/table/reinforced, /obj/item/device/integrated_electronics/analyzer, @@ -105312,7 +104822,7 @@ name = "science camera"; network = list("SS13","RD") }, -/obj/structure/sign/science{ +/obj/structure/sign/departments/science{ pixel_x = 32 }, /turf/open/floor/plasteel, @@ -105342,9 +104852,6 @@ dir = 4 }, /area/science/misc_lab) -"QNH" = ( -/turf/closed/wall, -/area/science/circuit) "QNI" = ( /obj/structure/table/reinforced, /obj/item/device/integrated_electronics/analyzer, @@ -105363,17 +104870,10 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/science/circuit) -"QNL" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/science/circuit) "QNM" = ( /obj/structure/sign/nanotrasen, /turf/closed/wall/r_wall, /area/science/circuit) -"QNN" = ( -/turf/closed/wall, -/area/science/circuit) "QNO" = ( /turf/open/floor/plasteel/white/side{ dir = 6 @@ -105393,9 +104893,6 @@ dir = 6 }, /area/science/circuit) -"QNR" = ( -/turf/closed/wall, -/area/science/circuit) "QNS" = ( /obj/structure/table/reinforced, /obj/machinery/newscaster{ @@ -105439,15 +104936,9 @@ "QNX" = ( /turf/closed/wall/r_wall, /area/science/misc_lab) -"QNY" = ( -/turf/closed/wall, -/area/science/circuit) "QNZ" = ( /turf/closed/wall, /area/science/misc_lab) -"QOa" = ( -/turf/closed/wall/r_wall, -/area/science/misc_lab) "QOb" = ( /obj/machinery/power/apc{ areastring = "/area/science/research/abandoned"; @@ -130430,14 +129921,14 @@ cEo ddO cQt dgl -QNj +dhR djn dle dmr dog dle drz -QNj +dhR dul dvZ dxH @@ -130687,14 +130178,14 @@ cRP ddP deW cKk -QNj +dhR QNo QNt QNC QNI dpX QNS -QNj +dhR djs dlf dxI @@ -130944,14 +130435,14 @@ cMY cMY cCM dgm -QNj +dhR djp QNu dmt doh QNO drA -QNj +dhR dum dli dpZ @@ -131208,7 +130699,7 @@ QND QNJ QNP drB -QNj +dhR QOb QOc QOh @@ -131458,14 +130949,14 @@ dcb cMY deX dgn -QNj +dhR djr QNu dmv doj QNQ QNT -QNj +dhR dun QOd dxK @@ -131715,14 +131206,14 @@ cNd cMY deX dgo -QNj +dhR QNp -QNx +dok dmw -QNx +dok dqa drC -QNj +dhR duo dmu QOi @@ -131972,14 +131463,14 @@ cMY cMY deY cKl -QNj +dhR djt -QNy -QNy +dmx +dmx dol dqb drD -QNj +dhR dup QOe dxL @@ -132229,14 +131720,14 @@ dcc cMY cOD cKj -QNj +dhR dju dlj dlj QNK dqc QNU -QNj +dhR duq dlh dxM @@ -132486,14 +131977,14 @@ cRS cMY deZ dgo -QNj +dhR djv dlj dlj QNK dqb drE -QNj +dhR dur QOf dxN @@ -132743,14 +132234,14 @@ dcd cMY deX dgo -QNj +dhR QNq QNz QNE doo dqd drF -QNj +dhR dus dwa dom @@ -132953,7 +132444,7 @@ bBd bDb bEP bGw -bIj +bIf bKj bMc bOh @@ -133003,11 +132494,11 @@ dgp QNm QNm dll -QNj +dhR QNM dqe -QNj -QNj +dhR +dhR dut dwb dxO @@ -133384,28 +132875,28 @@ aaa aaa aaa aaa -aav -aav -aav -aav -aav -aav -aav -aav -aav -aav -aav -acR -acR -aav -aav -aav -aav -acR -acR -acR -aav -aav +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -133640,29 +133131,29 @@ aaa aaa aaa aaa -aap -aaw -aaF -aaT -aav -abw -abI -abU -acg -acw -aav -adk -adz -adS -ael -aeI -aav -afH -aga -agu -agP -ahd -aav +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -133897,33 +133388,33 @@ aaa aaa aaa aaa -aap -aaw -aaG -aaU -aav -abx -abI -aaL -ach -abo -aav -adl -adA -adT -aem -aeJ -aav -afI -aen -agv -aen -ahe -aav -aav -aav -acR -acR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -134155,33 +133646,33 @@ aab aaa aaa aaa -aav -aav -aaV -aaq -aaq -abJ -aaL -aci -acx -aav -adm -adB -adU -aen -aeK -aav -afJ -aen -agw -agQ -ahf -aav -ahI -ahZ -ait -acR -acR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -134412,33 +133903,33 @@ aaa aaa aaa aaa -aav -aaH -aaW -abk -aaq -aav -aav -acj -aav -aav -aav -aav -acR -aeo -aeL -aav -acR -agb -agx -aav -aav -aav -ahJ -aci -ahh -aiK -acR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -134669,33 +134160,33 @@ aaa aaa aaa aaa -aav -aaI -aaX -abl -aby -abK -abV -ack -acy -acR -adn -adC -adV -aep -aeM -afl -afK -agc -agy -aaW -aaW -ahy -aci -aci -aiu -aiL -acR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -134925,34 +134416,34 @@ aaa aaa aaa aaa -aaq -aaq -aaq -aaY -abc -aaW -abL -aaW -acl -aaW -acS -aaW -abc -adW -aeq -aaW -afm -afL -agd -agz -agR -abn -aav -ahK -aia -aci -aiM -acR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -135182,34 +134673,34 @@ aaa aaa aaa aaa -aar -aax -aaJ -aaZ -aaW -abz -aaW -abc -aaW -acz -acT -ado -abc -abc -aaW -aaW -afn -abc -afn -aaW -aaW -ahg -aav -ahL -aib -aiv -aiN -acR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -135439,34 +134930,34 @@ aaa aaa aaa aaa -aaq -aay -aaq -aba -abm -aaW -aaW -abW -aaW -aaW -acS -aaW -aaW -adX -abc -aaW -afo -afM -age -aaW -aaW -ahh -aav -aaY -aci -aci -aiO -acR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -135697,33 +135188,33 @@ aaa aaa aaa aaa -aav -aaK -aaY -abn -abA -abM -abX -acm -acA -acR -adp -adD -aaW -aer -aaW -afp -afN -agf -agA -aaW -ahi -ahy -aci -aci -aiw -aiP -acR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -135954,33 +135445,33 @@ aaa aaa aaa aaa -aav -aaL -aaW -abo -aaq -aav -aav -abY -aav -aav -aav -aav -adY -aav -aeN -acR -afO -aav -aav -adY -aav -aav -ahM -aci -aix -aiy -acR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -136211,33 +135702,33 @@ aaa aaa aaa aaa -aav -aav -abb -aaq -aaq -abN -abY -aci -acB -acB -aav -adE -aci -aav -aeO -afq -aci -agg -aav -aci -ahj -aav -ahN -aic -aiy -acR -acR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -136467,35 +135958,6 @@ aaa aaa aaa aaa -<<<<<<< HEAD -aap -aaw -aaM -abc -aav -aav -aav -aav -acn -acC -acU -aav -adF -aci -aes -aeP -afr -afP -agh -aes -aci -acU -aav -aav -aav -acR -acR -======= aaa aaa aaa @@ -136523,7 +135985,6 @@ aaa aaa aaa aaa ->>>>>>> 2db9ecb... Morgue and Crematorium Repositions (#35113) aaa aaa aaa @@ -136754,29 +136215,29 @@ aaa aaa aaa aaa -aap -aaz -aaN -abd -aav -abB -abO -abY -aci -acD -acD -aav -adG -aci -aav -aeQ -afs -afs -agi -aav -aci -ahk -aav +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -137012,28 +136473,28 @@ aaa aaa aaa aaa -aav -aav -aav -aav -aav -aav -aav -aav -aav -aav -aav -adH -adZ -aav -aav -acR -acR -aav -aav +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa agS -adH -aav +aaa +aaa aaa aaa aaa @@ -137110,7 +136571,7 @@ cei cfZ chQ cjt -ckS +ckR cms cnO cpu @@ -137866,7 +137327,7 @@ bBr bDo bEY bGI -bIy +bGI bGI bGK bOr @@ -139597,15 +139058,15 @@ aaa aaa aaa aaa -aeT -afQ -aeT -aeT -agU -aeT -aeT -ahQ -aeT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aad adq agk @@ -139851,18 +139312,18 @@ aaa aaa aaa aaa -adI -aet -aeT -aeT -afR -afR -aeu -aeu -ahl -afR -afR -afQ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaO aaO aaO @@ -139953,7 +139414,7 @@ bvM bvM bvM bvM -cIz +bFE cKu bsO cNm @@ -140107,20 +139568,6 @@ aaa aaa aaa aaa -<<<<<<< HEAD -adI -aed -aeu -aeU -afv -aeu -aeu -aeu -agV -aeu -aeu -aeu -======= aaa aaa aaa @@ -140133,7 +139580,6 @@ aaa aaa aaa aaa ->>>>>>> 2db9ecb... Morgue and Crematorium Repositions (#35113) aid aiA aeb @@ -140204,7 +139650,7 @@ bUA bWN bYV bYV -ccy +bYV cem bYV bYV @@ -140380,18 +139826,18 @@ aaa aaa aaa aaa -adI -aev -aeT -aeT -afS -afS -agD -aeu -aeu -afS -afS -afQ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaO aaO aaO @@ -140531,7 +139977,7 @@ dKD dUp dVd dVS -ehQ +dVd dVd dVd dVd @@ -140640,15 +140086,15 @@ aaa aaa aaa aaa -aeT -afQ -aeT -aeT -agU -aeT -aeT -ahQ -aeT +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aad ads agj @@ -142287,7 +141733,7 @@ bsO cNs cPb cQN -cSt +cSs cUi cQQ cXw @@ -142995,7 +142441,7 @@ aLL aNh aOK aQt -aSb +aLL aTI aVs aNh @@ -143461,19 +142907,19 @@ aaa aad aaa aaa -acZ -adu -adv -aef -adv -adw -adw -adw -adw -agG -aef -adv -adv +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -143717,20 +143163,20 @@ abj aaa aad aaa -acE -acZ -adv -adJ -aeg -aey -aeY -aeY -aeY -aeY -agH -aeg -ahm -adv +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -143877,7 +143323,7 @@ dXN dYH dZp dZZ -eaF +dUx ebm dYH ecH @@ -143974,23 +143420,23 @@ abj aaa aad aaa -acE -ada -adw -adK -aeh -aeh -aeh -aeh -aeh -aeh -aeh -aeh -ahn -adv -adv -adw -adv +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaO ajE @@ -144231,23 +143677,23 @@ abj aaa aad aaa -acE -ada -adw -adL -aeh -aeh -aeZ -aeZ -aeZ -aeZ -agI -aeh -aho -ahA -ahT -aie -adw +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaO ajw @@ -144489,24 +143935,6 @@ aad aad aaa acF -<<<<<<< HEAD -acZ -adu -adM -aeh -aez -afa -afy -afU -afy -agJ -agX -ahp -ahB -ahU -aif -adw -======= aaa aaa aaa @@ -144523,11 +143951,10 @@ aaa aaa aaa aaa ->>>>>>> 2db9ecb... Morgue and Crematorium Repositions (#35113) aaa aaO ajw -akh +akg akL aaO amq @@ -144638,7 +144065,7 @@ dqT cPk cXD cPk -dwE +cUp dlR cPk cPk @@ -144764,23 +144191,23 @@ abj aaa aad aaa -acE -ada -adw -adN -aeh -aeh -aeY -aeY -aeY -aeY -agK -aeh -ahq -ahC -ahV -aie -adw +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaO ajw @@ -145021,23 +144448,23 @@ abj aaa aad aaa -acE -ada -adw -adK -aeh -aeh -aeh -aeh -aeh -aeh -aeh -aeh -ahr -adv -adv -adw -adv +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaO ajw @@ -145278,20 +144705,20 @@ abj aaa aad aaa -acE -acZ -adv -adJ -aei -aeA -aeZ -aeZ -aeZ -aeZ -agL -aei -ahs -adv +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -145536,19 +144963,19 @@ aaa aad aaa aaa -acZ -adu -adv -aef -adv -adw -adw -adw -adw -agG -aef -adv -adv +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -146455,29 +145882,29 @@ aaa aaa aaa aaa -dQT -dSV -dSW -dSW -dSX -dSX -dSW -dSW -dYK -dZs +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa eab -dSW -dSX -dSX -dSX -dSW -dYK -dSW -eeV -dSW -dSW -dSW -dSW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -146711,30 +146138,30 @@ dNT aaa aaa aaa -dQS -dRY -dSW -dTK -dUC -dVm -dVm -dWX -dXP -dWj -dZt -dWj -dXP -dVm -dVm -dVm -dUC -dWj -dSW -eeW -efH -egt -egI -dSW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -146933,7 +146360,7 @@ cNB cPr cQW cSF -cUy +cUx cQT cXL cZt @@ -146968,32 +146395,6 @@ dNS aaa aaa aaa -<<<<<<< HEAD -dQS -dRY -dSX -dTL -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -edE -eel -eeW -eeW -eeW -egI -dSX -======= aaa aaa aaa @@ -147018,7 +146419,6 @@ aaa aaa aaa aaa ->>>>>>> 2db9ecb... Morgue and Crematorium Repositions (#35113) aaa aaa aaa @@ -147252,30 +146652,30 @@ dNS aaa aaa aaa -dQS -dRY -dSX -dTL -dUD -dVn -dVn -dVn -dVn -dVn -dUD -dVn -dVn -dVn -dVn -dVn -dUD -edE -dSW -eeX -eeW -eeW -egJ -dSW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -147509,35 +146909,35 @@ dNT aad aaa aaa -dQT -dQT -dSW -dTL -dUD -dVo -dWh -dWY -dXQ -dVo -dUD -eac -dXQ -ebn -dWi -eac -dUD -edE -dSX -eeX -eeW -egu -egI -dSW -dSW -dZs -dSX -dSW -dSW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aab aaa aaa @@ -147766,35 +147166,35 @@ dNS aaa aaa aaa -dQS -dRY -dSW -dTM -dUD -dVm -dVm -dVm -dVm -dVm -dUD -dVm -dVm -dVm -dVm -dVm -dUD -edE -dSW -eeY -eeW -egv -egK -dSW -egR -egW -ehb -ehi -dSW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -148023,35 +147423,35 @@ dNS aaa aaa aaa -dQS -dRY -dSX -dTL -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -edF -dSW -dSW -eel -dSX -dZs -dSW -egS -egX -ehc -ehj -dSX +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -148280,35 +147680,35 @@ dNT aad aaa aaa -dQT -dQT -dSW -dTM -dUD -dVn -dVn -dVn -dVn -dVn -dUD -dVn -dVn -dVn -dVn -dVn -dUD -edE -dSX -eeZ -efI -egw -egL -dUF -egT -egT -ehd -ehk -dSX +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -148537,35 +147937,35 @@ dNS aaa aaa aaa -dQS -dRY -dSX -dTL -dUD -dVo -dWi -dWY -dXQ -dVo -dUD -eac -dWh -ebn -ecd -eac -dUD -edE -eem -dTL -dUD -dUD -egM -eem -egT -egT -ehe -ehl -dSX +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -148794,35 +148194,35 @@ dNS aaa aaa aaa -dQS -dRY -dSX -dTL -dUD -dVm -dVm -dVm -dVm -dVm -dUD -dVm -dVm -dVm -dVm -dVm -dUD -edE -eem -dTL -dUD -dUD -egM -eem -egT -egT -ehf -ehm -dSX +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -149051,35 +148451,35 @@ dNT aad aaa aaa -dQT -dQT -dSW -dTL -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -dUD -edE -dSX -efa -efJ -egx -efM -dUF -egT -egY -ehd -ehn -dSX +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -149264,7 +148664,7 @@ bvM bvM bvM bvM -cGG +bvM bvM bFE cKE @@ -149308,35 +148708,35 @@ dNS aaa aaa aaa -dQS -dRY -dSX -dTK -dUE -dVn -dWj -dWj -dVn -dVn -dZu -dVn -dVn -dVn -dWj -dWj -dUE -dTK -dSW -dZs -dSW -dSW -egN -dSW -egS -egZ -ehg -eho -dSX +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -149565,35 +148965,35 @@ dNS aaa aaa aaa -dQS -dRY -dSW -dSW -dUF -dSX -dWk -dWk -dSX -dYL -dSW -dSW -dSW -dSW -ece -ece -dSW -dSW -dSW -efb -efK -egy -egO -dSW -egU -eha -ehh -ehp -dSW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -149822,35 +149222,35 @@ dNT aad aaa aaa -dQT -dQT -dSW -dTN -dUG -dVp -dWj -dWj -dXR -dYM -dSW -ead -eaG -ebo -dWj -dWj -edc -edG -dSW -efc -efL -dSV -dSW -dSW -dSW -dZs -dSX -dSW -dSW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -150079,30 +149479,30 @@ dNS aaa aaa aaa -dQS -dRY -dSX -dTO -dUH -dVq -dUD -dUD -dXS -dYN -dZv -dWj -eaH -ebp -ebp -ebp -edd -edH -dSW -efd -efM -egz -egP -dSW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -150336,30 +149736,30 @@ dNS aaa aaa aaa -dQS -dRY -dSX -dTP -dUI -dVr -dUD -dUD -dXS -dYN -dZv -dWj -eaI -ebq -ebq -ebq -ede -edH -dSW -efc -efN -dTL -egP -dSX +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -150593,30 +149993,30 @@ dNT aaa aaa aaa -dQS -dRY -dSW -dTQ -dUJ -dVs -dWl -dWZ -dXT -dYO -dYL -eae -eaJ -ebr -ecf -ecf -dTK -edI -dSW -dTK -efO -egA -egP -dSW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -150791,7 +150191,7 @@ ccX ceO cgC cim -cjW +cjV clk cmS cou @@ -150851,29 +150251,29 @@ aaa aaa aaa aaa -dQT -dSV -dSW -dSX -dSX -dSX -dSX -dSW -dSW -dZs -dSW -dSX -dSX -dSX -dSX -dSX -dSW -dSW -dSX -efP -efP -dSX -dSW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -151057,7 +150457,7 @@ crj csM cbk cvM -cxe +cxa bsE cAm cBL @@ -152278,17 +151678,17 @@ atE auM aoE aaa -ayF -ayF -ayF -aCe +aaa +aaa +aaa +aaa aDi -ayF -aDi -aGG -ayF -ayF -ayF +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aad @@ -152535,18 +151935,18 @@ atF auN aoE aaa -ayF -azH -aAL -aAL -aDj -aEj -aDj -aDj -aHY -ayF -ayF -aLZ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aad aQQ @@ -152792,20 +152192,6 @@ atG auO aoF aaa -<<<<<<< HEAD -ayF -azI -aAM -aCf -aAM -aAM -aAM -aAN -aHZ -aJw -aKT -aMa -======= aaa aaa aaa @@ -152818,7 +152204,6 @@ aaa aaa aaa aaa ->>>>>>> 2db9ecb... Morgue and Crematorium Repositions (#35113) aaa aad aQR @@ -152837,15 +152222,15 @@ bkf aaa aaa aaa -brc -brc -buu -brc -brc -buu -brc -brc -brc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa bHr bJj @@ -153064,18 +152449,18 @@ aoE aoF aoF aaa -ayF -azJ -aAN -aAN -aAN -aAM -aAN -aAM -aIa -aJw -aKU -aMa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aad aQU @@ -153085,24 +152470,24 @@ aVZ aXG aZi aad -bcH -bcH -bcI +aaa +aaa +aaa bgU -bcI -bcH -bcH aaa aaa -brd -bsX -buv -bvU -bxj -byA -bzZ -brc -bDU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa bHs bJk @@ -153321,18 +152706,18 @@ aad aad aaa aaa -ayF -azK -aAN -aAM -aAM -aAM -aAM -aAM -aIa -aJx -aKU -aMa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aad aQS @@ -153342,26 +152727,6 @@ aWa aXH aQS aad -<<<<<<< HEAD -bcH -bem -bfK -bgV -biv -bkg -bcH -aaa -aaa -brd -bsY -buw -bvV -bxk -byB -bAa -bBX -bDU -======= aaa aaa aaa @@ -153380,7 +152745,6 @@ aaa aaa aaa aaa ->>>>>>> 2db9ecb... Morgue and Crematorium Repositions (#35113) aaa bHs bJl @@ -153599,18 +152963,18 @@ aac aaa aaa aaa -ayF -azL -aAO -aCg -aAO -aEk -aCg -aAO -aIb -ayF -ayF -aMb +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aad aQV @@ -153620,31 +152984,24 @@ aQQ aXI aZj aad -<<<<<<< HEAD -bcI -ben -bfL -bgW -biw -bkh -bmb -======= aaa aaa aaa aaa ->>>>>>> 2db9ecb... Morgue and Crematorium Repositions (#35113) aaa aaa -brd -bsZ -bux -bvW -bxl -byC -bAb -brc -bDU +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa bHr bJm @@ -153863,17 +153220,17 @@ aaa aaa aaa aaa -ayF -ayF -ayF -ayF -ayF -ayF -aFl -ayF -ayF -ayF -ayF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aad @@ -153884,24 +153241,24 @@ aaa aad aad aad -bcH -beo -bfM -bgX -bix -bki -bcH aaa aaa -brc -brc -buy -brc -brc -brc +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa bAc -brc -brc +aaa +aaa aaa bHr bHr @@ -153982,7 +153339,7 @@ dSe dSZ dTS dUP -dVB +dTS dWv dXj dYc @@ -154141,13 +153498,13 @@ aad aad aaa aaa -bcH -bcH -bcI -bgY -bcI -bcH -bcH +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -154956,7 +154313,7 @@ csW cux cvX cxo -cyT +cyR cAt cBY cDz @@ -155192,7 +154549,7 @@ bHu bJq bHu bHu -bPn +bHu bHu bHu bVi @@ -158305,7 +157662,7 @@ cFB cDI cIj cJr -cLh +cLd cMC cNV cPV @@ -158766,7 +158123,7 @@ aUy aWg aXM aZu -bbj +bbd bcP bcM aad @@ -171261,4 +170618,3 @@ aaa aaa aaa "} - diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 41af8f6816..7bcb98e417 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -478,7 +478,8 @@ /obj/docking_port/mobile/pod{ id = "pod2"; name = "escape pod 2"; - port_direction = 2 + port_direction = 2; + timid = 0 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/pod_2) @@ -788,11 +789,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -937,7 +934,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/door/poddoor/preopen{ id = "executionfireblast"; - layer = 2.9; name = "blast door" }, /obj/machinery/door/firedoor, @@ -949,7 +945,6 @@ /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ id = "executionfireblast"; - layer = 2.9; name = "blast door" }, /obj/machinery/door/firedoor, @@ -984,7 +979,6 @@ /obj/machinery/door/firedoor, /obj/machinery/door/poddoor/preopen{ id = "executionfireblast"; - layer = 2.9; name = "blast door" }, /turf/open/floor/plasteel/darkred{ @@ -1548,7 +1542,8 @@ id = "pod3"; name = "escape pod 3"; port_direction = 2; - preferred_direction = 4 + preferred_direction = 4; + timid = 0 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/pod_3) @@ -2069,7 +2064,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'WARNING: Do Not Enter When Red Light Shows', detailing the penalties that any Nanotrasen employee or silicon will suffer if violating this rule."; name = "WARNING: Do Not Enter When Red Light Shows"; pixel_y = 32 @@ -2307,7 +2302,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ pixel_y = 30 }, /turf/open/floor/plasteel/red/corner{ @@ -2361,7 +2356,7 @@ /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-16" }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'WARNING: Criminally Insane Inmates', describing the possible hazards of those contained within."; name = "WARNING: Criminally Insane Inmates"; pixel_y = 32 @@ -2566,7 +2561,7 @@ /area/crew_quarters/fitness/recreation) "afz" = ( /obj/structure/closet/emcloset, -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ pixel_y = 30 }, /turf/open/floor/plasteel/vault, @@ -2720,15 +2715,6 @@ dir = 1 }, /area/security/prison) -"afQ" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2 - }, -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/security/prison) "afR" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 @@ -3099,11 +3085,7 @@ /turf/open/floor/plating, /area/maintenance/solars/port/fore) "agD" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /turf/open/floor/plating{ @@ -3152,7 +3134,7 @@ /turf/open/floor/plasteel/vault, /area/security/prison) "agJ" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall, /area/security/prison) "agK" = ( @@ -3181,7 +3163,7 @@ /turf/open/floor/plasteel, /area/security/prison) "agN" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'WARNING: Dangerous Inmates'."; name = "\improper WARNING: Dangerous Inmates" }, @@ -4223,7 +4205,6 @@ }, /obj/machinery/door/poddoor/preopen{ id = "Disposal Exit"; - layer = 3.1; name = "disposal exit vent" }, /turf/open/floor/plating, @@ -4271,11 +4252,7 @@ /turf/open/floor/plating, /area/maintenance/solars/port/fore) "aji" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall, /area/maintenance/solars/port/fore) "ajj" = ( @@ -4624,10 +4601,7 @@ }, /area/engine/gravity_generator) "akb" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; +/obj/structure/sign/warning/radiation/rad_area{ pixel_y = 32 }, /obj/effect/turf_decal/bot_white, @@ -4881,7 +4855,7 @@ /area/security/brig) "akz" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ pixel_x = 32 }, /turf/open/floor/plasteel/red/side{ @@ -5349,7 +5323,7 @@ dir = 2; id = "garbage" }, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = -32 }, /turf/open/floor/plating, @@ -7117,11 +7091,7 @@ pixel_x = 4 }, /obj/effect/decal/cleanable/cobweb, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /turf/open/floor/plating, @@ -7226,11 +7196,7 @@ /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) "app" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /obj/effect/decal/cleanable/cobweb/cobweb2, @@ -7270,7 +7236,7 @@ /turf/open/floor/plating, /area/maintenance/disposal) "apt" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ name = "\improper STAY CLEAR HEAVY MACHINERY" }, /turf/closed/wall, @@ -7331,7 +7297,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/sign/kiddieplaque/library{ +/obj/structure/sign/plaques/kiddie/library{ pixel_y = -32 }, /turf/open/floor/plasteel/neutral/corner{ @@ -7789,11 +7755,7 @@ /area/space/nearstation) "aqC" = ( /obj/machinery/space_heater, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /turf/open/floor/plating, @@ -7833,11 +7795,7 @@ /area/maintenance/port/fore) "aqH" = ( /obj/machinery/space_heater, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /turf/open/floor/plating{ @@ -9134,11 +9092,7 @@ /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) "atl" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall, /area/maintenance/solars/starboard/fore) "atm" = ( @@ -9368,10 +9322,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) -"atJ" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/labor) "atK" = ( /obj/machinery/computer/gulag_teleporter_computer{ dir = 1 @@ -9401,7 +9351,7 @@ }, /area/security/brig) "atO" = ( -/obj/structure/sign/pods, +/obj/structure/sign/warning/pods, /turf/closed/wall/r_wall, /area/security/warden) "atP" = ( @@ -9568,7 +9518,6 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 }, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel, /area/crew_quarters/dorms) "auj" = ( @@ -9656,11 +9605,8 @@ /area/maintenance/starboard) "auu" = ( /obj/structure/closet/radiation, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; +/obj/structure/sign/warning/radiation/rad_area{ dir = 1; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -9683,11 +9629,8 @@ c_tag = "Gravity Generator Foyer" }, /obj/structure/closet/radiation, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; +/obj/structure/sign/warning/radiation/rad_area{ dir = 1; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; pixel_y = 32 }, /obj/machinery/airalarm{ @@ -9734,11 +9677,7 @@ /area/maintenance/starboard/fore) "auB" = ( /obj/structure/closet/emcloset, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /turf/open/floor/plating, @@ -9755,11 +9694,7 @@ icon_state = "crateopen"; opened = 1 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/effect/decal/cleanable/cobweb, @@ -9859,40 +9794,12 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) -"auQ" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/labor) -"auR" = ( -/obj/machinery/computer/shuttle/labor{ - dir = 4 - }, -/obj/structure/reagent_dispensers/peppertank{ - pixel_x = -31 - }, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/labor) -"auS" = ( -/obj/structure/chair/office/dark{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/labor) -"auT" = ( -/obj/structure/table, -/obj/item/folder/red, -/obj/item/restraints/handcuffs, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/labor) "auU" = ( /obj/structure/disposalpipe/segment{ dir = 6 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /turf/open/floor/plasteel/red/corner{ @@ -10163,11 +10070,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; +/obj/structure/sign/warning/radiation/rad_area{ dir = 1; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -10256,11 +10160,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; +/obj/structure/sign/warning/radiation/rad_area{ dir = 1; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -10354,11 +10255,7 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "avK" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -10463,34 +10360,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) -"avU" = ( -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/labor) -"avV" = ( -/obj/machinery/button/flasher{ - id = "gulagshuttleflasher"; - name = "Flash Control"; - pixel_y = -26; - req_access_txt = "1" - }, -/obj/machinery/light, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/labor) -"avW" = ( -/obj/machinery/mineral/labor_claim_console{ - machinedir = 2; - pixel_x = 30; - pixel_y = 30 - }, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/labor) -"avX" = ( -/obj/machinery/door/airlock/titanium{ - name = "Labor Shuttle Airlock"; - req_access_txt = "2" - }, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/labor) "avY" = ( /obj/machinery/door/airlock/external{ name = "Labor Camp Shuttle Airlock"; @@ -10663,7 +10532,6 @@ /obj/structure/cable/yellow{ icon_state = "2-8" }, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel, /area/security/brig) "awn" = ( @@ -10891,13 +10759,6 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/fore) -"awN" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/mining) -"awO" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/mining) "awP" = ( /obj/item/clothing/gloves/color/rainbow, /obj/item/clothing/shoes/sneakers/rainbow, @@ -10954,20 +10815,6 @@ "awW" = ( /turf/closed/wall/r_wall, /area/security/nuke_storage) -"awX" = ( -/obj/machinery/door/airlock/titanium{ - name = "Labor Shuttle Airlock"; - req_access_txt = "2" - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/labor) -"awY" = ( -/obj/machinery/mineral/stacking_machine/laborstacker{ - input_dir = 2; - output_dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/labor) "awZ" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 @@ -11307,15 +11154,6 @@ dir = 1 }, /area/crew_quarters/dorms) -"axH" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) "axI" = ( /obj/machinery/door/airlock{ id_tag = "Cabin5"; @@ -11464,7 +11302,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "axV" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -11497,7 +11335,7 @@ dir = 8; name = "emergency shower" }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -11543,14 +11381,6 @@ /obj/item/stack/rods, /turf/open/floor/plating/airless, /area/space/nearstation) -"ayg" = ( -/obj/structure/table, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/mining) -"ayh" = ( -/obj/machinery/computer/shuttle/mining, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/mining) "ayi" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -11639,16 +11469,6 @@ dir = 8 }, /area/security/nuke_storage) -"ayt" = ( -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) -"ayu" = ( -/obj/machinery/mineral/labor_claim_console{ - machinedir = 1; - pixel_x = 30 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) "ayw" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/yellow{ @@ -11964,15 +11784,6 @@ /obj/item/stack/cable_coil, /turf/open/floor/plating/airless, /area/space/nearstation) -"azh" = ( -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/mining) -"azi" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/mining) "azj" = ( /obj/item/ore/iron, /obj/effect/turf_decal/stripes/line{ @@ -12170,22 +11981,6 @@ dir = 1 }, /area/security/nuke_storage) -"azA" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) -"azB" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/flasher{ - id = "gulagshuttleflasher"; - pixel_x = 25 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) "azC" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -12684,29 +12479,17 @@ }, /area/library) "aAA" = ( -/obj/machinery/door/airlock/titanium{ - name = "Mining Shuttle Airlock"; - req_access_txt = "0" - }, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 3; - height = 5; - id = "mining"; - name = "mining shuttle"; - port_direction = 4; - width = 7 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 3; height = 5; id = "mining_home"; name = "mining shuttle bay"; - width = 7 + width = 7; + roundstart_template = /datum/map_template/shuttle/mining/box }, -/turf/open/floor/plating, -/area/shuttle/mining) +/turf/open/space/basic, +/area/space) "aAB" = ( /obj/machinery/door/airlock/external{ name = "Mining Dock Airlock"; @@ -12892,34 +12675,18 @@ dir = 1 }, /area/security/nuke_storage) -"aAU" = ( -/obj/structure/closet/crate, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) "aAV" = ( -/obj/machinery/door/airlock/titanium{ - id_tag = "prisonshuttle"; - name = "Labor Shuttle Airlock" - }, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 2; - height = 5; - id = "laborcamp"; - name = "labor camp shuttle"; - port_direction = 4; - width = 9 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 2; height = 5; id = "laborcamp_home"; name = "fore bay 1"; - width = 9 + width = 9; + roundstart_template = /datum/map_template/shuttle/labour/box }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) +/turf/open/space/basic, +/area/space) "aAW" = ( /obj/machinery/door/airlock/external{ name = "Labor Camp Shuttle Airlock" @@ -13212,7 +12979,7 @@ /area/crew_quarters/dorms) "aBB" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ pixel_x = 30 }, /turf/open/floor/plasteel/neutral/corner{ @@ -13391,12 +13158,7 @@ /turf/open/floor/plasteel, /area/quartermaster/miningoffice) "aBU" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK" - }, +/obj/structure/sign/warning/vacuum/external, /turf/closed/wall, /area/quartermaster/miningoffice) "aBV" = ( @@ -13533,14 +13295,6 @@ dir = 1 }, /area/security/nuke_storage) -"aCi" = ( -/obj/structure/shuttle/engine/heater, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/floor/plating, -/area/shuttle/labor) "aCj" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security/glass{ @@ -13960,27 +13714,6 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/fore) -"aDe" = ( -/obj/structure/closet/crate, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/mining) -"aDf" = ( -/obj/structure/shuttle/engine/heater, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/shuttle/mining) -"aDg" = ( -/obj/structure/ore_box, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/mining) "aDh" = ( /obj/machinery/firealarm{ dir = 8; @@ -13991,8 +13724,8 @@ }, /obj/machinery/computer/shuttle/mining{ dir = 4; - req_access = "0"; - req_one_access = "0" + req_access = null; + req_one_access = null }, /turf/open/floor/plasteel/brown{ dir = 9 @@ -14062,7 +13795,7 @@ /turf/closed/wall/r_wall, /area/security/nuke_storage) "aDq" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 }, @@ -14083,13 +13816,9 @@ }, /area/security/nuke_storage) "aDs" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/security/nuke_storage) -"aDt" = ( -/obj/structure/shuttle/engine/propulsion, -/turf/open/floor/plating, -/area/shuttle/labor) "aDu" = ( /turf/closed/wall, /area/hallway/primary/fore) @@ -14119,10 +13848,7 @@ }, /area/hallway/primary/fore) "aDy" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /turf/open/floor/plasteel/red/corner{ @@ -14130,10 +13856,7 @@ }, /area/hallway/primary/fore) "aDz" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/machinery/camera{ @@ -14644,14 +14367,6 @@ }, /turf/open/floor/plasteel/floorgrime, /area/quartermaster/warehouse) -"aEu" = ( -/obj/structure/shuttle/engine/propulsion/burst, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/floor/plating/airless, -/area/shuttle/mining) "aEv" = ( /obj/machinery/computer/security/mining{ dir = 4; @@ -14775,11 +14490,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/fore) "aEJ" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/machinery/light/small{ @@ -16138,7 +15849,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 30 }, /obj/effect/turf_decal/stripes/line{ @@ -17186,12 +16897,7 @@ /area/engine/supermatter) "aJB" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK" - }, +/obj/structure/sign/warning/vacuum/external, /turf/open/floor/plating, /area/quartermaster/storage) "aJC" = ( @@ -17626,9 +17332,6 @@ /obj/machinery/portable_atmospherics/canister/toxins, /turf/open/floor/plating, /area/engine/engineering) -"aKy" = ( -/turf/open/floor/plating, -/area/engine/engineering) "aKz" = ( /obj/machinery/door/poddoor{ id = "Secure Storage"; @@ -17990,7 +17693,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/ai_upload) "aLs" = ( -/obj/structure/sign/kiddieplaque{ +/obj/structure/sign/plaques/kiddie{ pixel_y = 32 }, /obj/structure/table, @@ -18169,7 +17872,7 @@ dir = 2; network = list("SS13") }, -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ pixel_y = 30 }, /obj/effect/turf_decal/delivery, @@ -19276,7 +18979,6 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel/floorgrime, /area/crew_quarters/locker) "aOA" = ( @@ -20654,10 +20356,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_x = -31 }, /obj/structure/cable{ @@ -20787,7 +20486,8 @@ /obj/docking_port/mobile/pod{ id = "pod1"; name = "escape pod 1"; - port_direction = 2 + port_direction = 2; + timid = 0 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/pod_1) @@ -21948,7 +21648,7 @@ /turf/open/floor/plasteel/dark, /area/aisat) "aUb" = ( -/obj/structure/sign/pods, +/obj/structure/sign/warning/pods, /turf/closed/wall, /area/hallway/secondary/entry) "aUc" = ( @@ -22729,11 +22429,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/quartermaster/storage) -"aVI" = ( -/obj/effect/landmark/lightsout, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/quartermaster/storage) "aVJ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 @@ -23006,7 +22701,7 @@ /turf/open/floor/plasteel, /area/crew_quarters/locker) "aWo" = ( -/obj/structure/sign/pods, +/obj/structure/sign/warning/pods, /turf/closed/wall, /area/crew_quarters/locker) "aWp" = ( @@ -23215,11 +22910,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "aWV" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /obj/effect/turf_decal/stripes/line, @@ -23589,7 +23280,7 @@ dir = 2; network = list("SS13") }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'HIGH-POWER TURRETS AHEAD'."; name = "\improper HIGH-POWER TURRETS AHEAD"; pixel_y = 32 @@ -23646,7 +23337,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/corner{ @@ -23698,7 +23389,6 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/effect/landmark/lightsout, /obj/effect/turf_decal/plaque{ icon_state = "L7" }, @@ -24035,7 +23725,7 @@ }, /area/crew_quarters/heads/chief) "aYs" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/structure/closet/radiation, @@ -24107,10 +23797,7 @@ }, /area/ai_monitored/turret_protected/ai) "aYC" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; - name = "KEEP CLEAR: DOCKING AREA" - }, +/obj/structure/sign/warning/docking, /turf/closed/wall, /area/hallway/secondary/entry) "aYE" = ( @@ -24135,11 +23822,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /obj/effect/turf_decal/stripes/line, @@ -24646,7 +24329,6 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aZJ" = ( -/obj/effect/landmark/lightsout, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 @@ -24718,7 +24400,7 @@ /turf/open/floor/wood, /area/library) "aZQ" = ( -/obj/effect/landmark/tripai, +/obj/effect/landmark/start/ai/secondary, /obj/item/device/radio/intercom{ anyai = 1; freerange = 1; @@ -24820,7 +24502,7 @@ }, /area/ai_monitored/turret_protected/ai) "aZY" = ( -/obj/effect/landmark/tripai, +/obj/effect/landmark/start/ai/secondary, /obj/item/device/radio/intercom{ anyai = 1; freerange = 1; @@ -25947,7 +25629,6 @@ "bbZ" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel, /area/hallway/primary/port) "bca" = ( @@ -26319,19 +26000,6 @@ }, /turf/open/space, /area/space/nearstation) -"bcS" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/arrival) -"bcT" = ( -/obj/machinery/door/airlock/titanium{ - name = "Arrivals Shuttle Airlock" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"bcU" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/arrival) "bcV" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 @@ -27047,12 +26715,7 @@ /turf/closed/wall, /area/engine/break_room) "beq" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK" - }, +/obj/structure/sign/warning/vacuum/external, /turf/closed/wall/r_wall, /area/space/nearstation) "bes" = ( @@ -27141,67 +26804,6 @@ }, /turf/open/floor/plasteel/dark, /area/aisat) -"beB" = ( -/obj/structure/table, -/obj/item/storage/firstaid/regular{ - pixel_x = 3; - pixel_y = -3 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"beC" = ( -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"beD" = ( -/obj/machinery/computer/arcade, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"beE" = ( -/obj/structure/closet/wardrobe/green, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"beF" = ( -/obj/structure/closet/wardrobe/black, -/obj/structure/sign/map/left{ - desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; - icon_state = "map-left-MS"; - pixel_y = 32 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"beG" = ( -/obj/structure/closet/wardrobe/mixed, -/obj/structure/sign/map/right{ - desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; - icon_state = "map-right-MS"; - pixel_y = 32 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"beH" = ( -/obj/structure/closet/wardrobe/grey, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"beI" = ( -/obj/machinery/camera{ - c_tag = "Arrivals Shuttle"; - dir = 2; - network = list("SS13") - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"beJ" = ( -/obj/structure/shuttle/engine/propulsion/burst/right{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/arrival) "beK" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/yellow{ @@ -27386,11 +26988,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/hallway/primary/port) -"bfe" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "bff" = ( /turf/open/floor/plasteel/brown/corner{ dir = 4 @@ -27520,7 +27117,6 @@ }, /obj/machinery/door/poddoor/preopen{ id = "bridge blast"; - layer = 2.9; name = "bridge blast door" }, /obj/structure/cable/yellow{ @@ -27538,7 +27134,6 @@ }, /obj/machinery/door/poddoor/preopen{ id = "bridge blast"; - layer = 2.9; name = "bridge blast door" }, /obj/structure/cable/yellow{ @@ -27556,7 +27151,6 @@ }, /obj/machinery/door/poddoor/preopen{ id = "bridge blast"; - layer = 2.9; name = "bridge blast door" }, /turf/open/floor/plating, @@ -27568,7 +27162,6 @@ }, /obj/machinery/door/poddoor/preopen{ id = "bridge blast"; - layer = 2.9; name = "bridge blast door" }, /turf/open/floor/plating, @@ -27583,7 +27176,6 @@ }, /obj/machinery/door/poddoor/preopen{ id = "bridge blast"; - layer = 2.9; name = "bridge blast door" }, /turf/open/floor/plating, @@ -27595,7 +27187,6 @@ }, /obj/machinery/door/poddoor/preopen{ id = "bridge blast"; - layer = 2.9; name = "bridge blast door" }, /obj/structure/cable/yellow{ @@ -27957,25 +27548,6 @@ }, /turf/open/space, /area/space/nearstation) -"bgq" = ( -/obj/structure/chair, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"bgt" = ( -/obj/structure/shuttle/engine/heater{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/shuttle/arrival) -"bgu" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/arrival) "bgv" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/light{ @@ -28404,7 +27976,6 @@ /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ id = "bridge blast"; - layer = 2.9; name = "bridge blast door" }, /obj/structure/cable/yellow, @@ -28512,7 +28083,6 @@ }, /obj/machinery/door/poddoor/preopen{ id = "bridge blast"; - layer = 2.9; name = "bridge blast door" }, /obj/structure/cable/yellow, @@ -28742,7 +28312,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /turf/open/floor/plasteel/yellow/corner{ @@ -28827,7 +28397,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/structure/table/glass, @@ -28926,7 +28496,8 @@ id = "pod4"; name = "escape pod 4"; port_direction = 2; - preferred_direction = 4 + preferred_direction = 4; + timid = 0 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/pod_4) @@ -29063,7 +28634,7 @@ }, /area/hallway/secondary/entry) "biw" = ( -/obj/structure/sign/pods, +/obj/structure/sign/warning/pods, /turf/closed/wall, /area/security/checkpoint/customs) "bix" = ( @@ -29293,7 +28864,6 @@ }, /obj/machinery/door/poddoor/preopen{ id = "bridge blast"; - layer = 2.9; name = "bridge blast door" }, /turf/open/floor/plating, @@ -29384,7 +28954,6 @@ /obj/machinery/light_switch{ pixel_x = -28 }, -/obj/item/card/id/captains_spare, /turf/open/floor/wood, /area/crew_quarters/heads/captain/private) "bji" = ( @@ -29737,12 +29306,6 @@ "bjT" = ( /turf/closed/wall/r_wall, /area/ai_monitored/storage/satellite) -"bjU" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) "bjV" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 @@ -30556,7 +30119,7 @@ /turf/open/floor/plasteel, /area/engine/break_room) "bls" = ( -/obj/structure/sign/pods, +/obj/structure/sign/warning/pods, /turf/closed/wall/r_wall, /area/engine/break_room) "blt" = ( @@ -30723,49 +30286,6 @@ dir = 8 }, /area/ai_monitored/storage/satellite) -"blN" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"blO" = ( -/obj/item/device/radio/intercom{ - name = "Station Intercom (General)"; - pixel_y = -29 - }, -/obj/machinery/light, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"blP" = ( -/obj/structure/sign/map/left{ - desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; - icon_state = "map-left-MS"; - pixel_y = -32 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"blQ" = ( -/obj/structure/sign/map/right{ - desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; - icon_state = "map-right-MS"; - pixel_y = -32 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"blR" = ( -/obj/machinery/requests_console{ - department = "Arrival shuttle"; - name = "Arrivals Shuttle console"; - pixel_y = -30 - }, -/obj/machinery/light, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"blS" = ( -/obj/structure/shuttle/engine/propulsion/burst/left{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/arrival) "blT" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -32500,7 +32020,7 @@ /turf/closed/wall/r_wall, /area/space/nearstation) "bpv" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/structure/transit_tube/station/reverse/flipped{ @@ -33631,7 +33151,7 @@ /area/hallway/primary/starboard) "brz" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /turf/open/floor/plasteel/dark/corner{ @@ -34106,7 +33626,6 @@ /obj/structure/cable/yellow{ icon_state = "2-4" }, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel, /area/hallway/secondary/entry) "bsp" = ( @@ -34755,7 +34274,7 @@ /area/crew_quarters/heads/hop) "btD" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /turf/open/floor/plasteel, @@ -34883,11 +34402,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "btS" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -35488,7 +35003,7 @@ "bvj" = ( /obj/machinery/door/poddoor/preopen{ id = "atmos"; - name = "Atmos Blast Door" + name = "Atmospherics Blast Door" }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -35496,7 +35011,7 @@ "bvk" = ( /obj/machinery/door/poddoor/preopen{ id = "atmos"; - name = "Atmos Blast Door" + name = "Atmospherics Blast Door" }, /obj/structure/cable/yellow{ icon_state = "1-2" @@ -35510,7 +35025,7 @@ "bvl" = ( /obj/machinery/door/poddoor/preopen{ id = "atmos"; - name = "Atmos Blast Door" + name = "Atmospherics Blast Door" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -35675,11 +35190,7 @@ /area/hallway/secondary/entry) "bvC" = ( /obj/structure/chair, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -36295,7 +35806,7 @@ /turf/open/floor/plasteel/bar, /area/crew_quarters/bar) "bwQ" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; @@ -36486,11 +35997,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /obj/machinery/light/small{ @@ -36583,11 +36090,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /obj/effect/turf_decal/stripes/line, @@ -36897,7 +36400,6 @@ }, /obj/machinery/door/poddoor/preopen{ id = "hop"; - layer = 3.1; name = "privacy shutters" }, /turf/open/floor/plasteel, @@ -37283,7 +36785,7 @@ }, /area/engine/atmos) "byV" = ( -/obj/structure/sign/atmosplaque{ +/obj/structure/sign/plaques/atmos{ pixel_y = 32 }, /obj/item/phone{ @@ -37711,10 +37213,7 @@ name = "Station Intercom (General)"; pixel_y = 21 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/effect/turf_decal/bot, @@ -38051,7 +37550,7 @@ /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ id = "atmos"; - name = "Atmos Blast Door" + name = "Atmospherics Blast Door" }, /obj/structure/cable/yellow{ icon_state = "0-2" @@ -38547,7 +38046,6 @@ /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ id = "council blast"; - layer = 2.9; name = "Council Blast Doors" }, /obj/structure/cable/yellow{ @@ -38559,7 +38057,6 @@ /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ id = "council blast"; - layer = 2.9; name = "Council Blast Doors" }, /obj/structure/cable/yellow{ @@ -38574,7 +38071,6 @@ /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ id = "council blast"; - layer = 2.9; name = "Council Blast Doors" }, /obj/structure/cable/yellow{ @@ -38592,7 +38088,6 @@ /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ id = "council blast"; - layer = 2.9; name = "Council Blast Doors" }, /obj/structure/cable/yellow{ @@ -38607,7 +38102,6 @@ /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ id = "council blast"; - layer = 2.9; name = "Council Blast Doors" }, /obj/structure/cable/yellow{ @@ -38775,12 +38269,6 @@ /area/hallway/primary/starboard) "bCg" = ( /obj/structure/table/reinforced, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "pdoor0"; - id = "atmos"; - name = "Atmos Blast Door" - }, /obj/machinery/door/window/northleft{ dir = 4; icon_state = "left"; @@ -38793,7 +38281,7 @@ /obj/machinery/door/firedoor, /obj/machinery/door/poddoor/preopen{ id = "atmos"; - name = "Atmos Blast Door" + name = "Atmospherics Blast Door" }, /obj/effect/turf_decal/delivery, /obj/structure/cable/yellow{ @@ -38991,12 +38479,7 @@ /area/tcommsat/server) "bCG" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK" - }, +/obj/structure/sign/warning/vacuum/external, /turf/open/floor/plating, /area/hallway/secondary/entry) "bCH" = ( @@ -39162,18 +38645,6 @@ dir = 1 }, /area/hallway/secondary/command) -"bDc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/neutral/corner{ - dir = 1 - }, -/area/hallway/secondary/command) "bDd" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -39336,15 +38807,6 @@ dir = 4 }, /area/hallway/secondary/command) -"bDt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/neutral/corner{ - dir = 4 - }, -/area/hallway/secondary/command) "bDu" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -39463,10 +38925,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/plasteel/bar, /area/crew_quarters/bar) -"bDE" = ( -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/bar, -/area/crew_quarters/bar) "bDF" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/bar, @@ -39738,10 +39196,6 @@ }, /turf/open/floor/wood, /area/security/vacantoffice) -"bEr" = ( -/obj/effect/landmark/lightsout, -/turf/open/floor/wood, -/area/security/vacantoffice) "bEs" = ( /obj/item/paper_bin{ pixel_x = -2; @@ -40545,7 +39999,7 @@ }, /obj/machinery/door/poddoor/preopen{ id = "atmos"; - name = "Atmos Blast Door" + name = "Atmospherics Blast Door" }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -40887,7 +40341,7 @@ /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "bGA" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/ai_monitored/storage/eva) "bGB" = ( @@ -40923,7 +40377,7 @@ /area/teleporter) "bGE" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/teleporter) "bGF" = ( @@ -40990,7 +40444,7 @@ /turf/closed/wall/r_wall, /area/gateway) "bGN" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/gateway) "bGO" = ( @@ -42040,7 +41494,7 @@ /turf/closed/wall/r_wall, /area/space/nearstation) "bJg" = ( -/obj/machinery/message_server, +/obj/machinery/telecomms/message_server, /turf/open/floor/circuit/telecomms/mainframe, /area/tcommsat/server) "bJh" = ( @@ -42963,11 +42417,6 @@ /obj/structure/bookcase/random/adult, /turf/open/floor/wood, /area/library) -"bLj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/landmark/lightsout, -/turf/open/floor/carpet, -/area/library) "bLk" = ( /obj/structure/bookcase/random/reference, /turf/open/floor/wood, @@ -43330,7 +42779,7 @@ /turf/open/floor/wood, /area/crew_quarters/theatre) "bLT" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/bridge) "bLU" = ( @@ -43883,7 +43332,7 @@ /turf/open/floor/carpet, /area/bridge/showroom/corporate) "bNb" = ( -/obj/structure/sign/kiddieplaque/perfect_drone{ +/obj/structure/sign/plaques/kiddie/perfect_drone{ pixel_y = 32 }, /obj/structure/table/wood, @@ -43985,7 +43434,7 @@ /area/bridge/showroom/corporate) "bNj" = ( /obj/structure/showcase/perfect_employee, -/obj/structure/sign/kiddieplaque/perfect_man{ +/obj/structure/sign/plaques/kiddie/perfect_man{ pixel_y = 32 }, /obj/structure/window/reinforced, @@ -44312,10 +43761,6 @@ }, /turf/open/floor/plasteel, /area/engine/atmos) -"bNT" = ( -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel, -/area/engine/atmos) "bNU" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 0; @@ -44697,7 +44142,7 @@ /turf/open/floor/plasteel/vault, /area/gateway) "bON" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/structure/cable/yellow{ @@ -44775,11 +44220,7 @@ /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/kitchen) "bOY" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -45605,7 +45046,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bQT" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/engine/atmos) @@ -46156,7 +45597,6 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/effect/turf_decal/bot, /turf/open/floor/plasteel/cafeteria{ dir = 5 }, @@ -46683,9 +46123,6 @@ /obj/structure/disposalpipe/segment{ dir = 6 }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, @@ -46721,12 +46158,12 @@ /obj/structure/cable/yellow{ icon_state = "0-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/plating, /area/maintenance/starboard) "bTd" = ( @@ -46745,8 +46182,8 @@ /obj/structure/cable/yellow{ icon_state = "1-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, /turf/open/floor/plating, /area/maintenance/starboard) @@ -46831,11 +46268,7 @@ /turf/open/floor/plating, /area/maintenance/solars/port/aft) "bTp" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall, /area/maintenance/solars/port/aft) "bTq" = ( @@ -47210,7 +46643,7 @@ /area/hallway/primary/central) "bUc" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/botany{ +/obj/structure/sign/departments/botany{ pixel_x = 32; pixel_y = 32 }, @@ -47276,11 +46709,6 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/hydroponics) -"bUl" = ( -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/hydroponics) "bUm" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/chem_master/condimaster{ @@ -47368,27 +46796,30 @@ sortType = 20 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plating, /area/maintenance/starboard) "bUt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, /obj/structure/cable/yellow{ icon_state = "1-4" }, /obj/structure/disposalpipe/segment{ dir = 5 }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plating, /area/maintenance/starboard) "bUu" = ( @@ -47401,8 +46832,8 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, /turf/open/floor/plating, /area/maintenance/starboard) @@ -47410,10 +46841,10 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/disposalpipe/segment{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/open/floor/plating{ @@ -47904,17 +47335,22 @@ }, /area/hydroponics) "bVz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/turf/closed/wall, +/area/hallway/secondary/service) +"bVA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock{ + name = "Service Hall"; + req_access_txt = "null"; + req_one_access_txt = "25;26;35;28" + }, /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment, /turf/open/floor/plating, -/area/maintenance/starboard) -"bVA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/maintenance/starboard) +/area/hallway/secondary/service) "bVB" = ( /obj/structure/rack, /obj/item/extinguisher, @@ -48347,7 +47783,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/landmark/lightsout, /obj/effect/turf_decal/plaque{ icon_state = "L8" }, @@ -48605,15 +48040,18 @@ /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) "bWX" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/disposalpipe/segment, -/turf/open/floor/plating{ - icon_state = "platingdmg1" +/obj/structure/table, +/obj/item/storage/bag/plants, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 }, -/area/maintenance/starboard) +/obj/item/reagent_containers/glass/bucket, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/service) "bWY" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 @@ -48865,11 +48303,7 @@ /turf/open/floor/plating, /area/maintenance/solars/port/aft) "bXv" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /turf/open/floor/plating, @@ -49199,33 +48633,26 @@ /turf/open/floor/plasteel/hydrofloor, /area/hydroponics) "bYo" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, /obj/structure/disposalpipe/junction/flip{ dir = 2 }, -/turf/open/floor/plating, -/area/maintenance/starboard) +/obj/structure/table, +/obj/item/kitchen/rollingpin, +/turf/open/floor/plasteel, +/area/hallway/secondary/service) "bYp" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/plating, -/area/maintenance/starboard) +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/hallway/secondary/service) "bYq" = ( /obj/structure/rack, /obj/item/tank/internals/oxygen, @@ -49479,7 +48906,7 @@ /obj/item/screwdriver{ pixel_y = 6 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 30 }, /turf/open/floor/plasteel/whiteblue/side{ @@ -49601,7 +49028,7 @@ /turf/open/floor/plating, /area/medical/medbay/central) "bZb" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall, /area/medical/medbay/central) "bZc" = ( @@ -49699,7 +49126,7 @@ /turf/open/floor/plating, /area/science/research) "bZk" = ( -/obj/structure/sign/science, +/obj/structure/sign/departments/science, /turf/closed/wall, /area/science/research) "bZl" = ( @@ -49792,13 +49219,14 @@ /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/kitchen) "bZy" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock{ + name = "Service Hall"; + req_access_txt = "null"; + req_one_access_txt = "25;26;35;28" }, -/turf/open/floor/plating{ - icon_state = "platingdmg1" - }, -/area/maintenance/starboard) +/turf/open/floor/plating, +/area/hallway/secondary/service) "bZz" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -49806,9 +49234,7 @@ /turf/open/floor/plating, /area/maintenance/starboard) "bZA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plating{ icon_state = "platingdmg3" }, @@ -50512,9 +49938,6 @@ /turf/open/floor/plating, /area/maintenance/starboard) "caU" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, /obj/structure/disposalpipe/sorting/mail{ sortType = 21 }, @@ -50527,22 +49950,17 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"caV" = ( -/obj/structure/rack, -/obj/item/extinguisher, -/obj/item/clothing/mask/gas, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/structure/cable/yellow{ + icon_state = "2-4" }, /turf/open/floor/plating, /area/maintenance/starboard) "caW" = ( -/obj/structure/closet, -/obj/item/stack/cable_coil/random, -/obj/effect/turf_decal/stripes/line{ - dir = 1 +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 }, /turf/open/floor/plating, /area/maintenance/starboard) @@ -50567,7 +49985,7 @@ }, /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ pixel_y = 32 }, /turf/open/floor/plasteel/floorgrime, @@ -50961,7 +50379,6 @@ /turf/open/floor/plasteel/white, /area/medical/storage) "cbL" = ( -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 2 }, @@ -51553,11 +50970,7 @@ /turf/open/floor/plating, /area/engine/atmos) "ccX" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /obj/machinery/light/small{ @@ -52013,6 +51426,9 @@ /area/maintenance/starboard) "cdW" = ( /obj/item/device/flashlight, +/obj/machinery/light/small{ + dir = 4 + }, /turf/open/floor/plating, /area/maintenance/starboard) "cdX" = ( @@ -52030,7 +51446,7 @@ /turf/open/floor/plating, /area/maintenance/starboard) "cdZ" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -28 }, /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -52091,7 +51507,7 @@ /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "cef" = ( -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_x = 32 }, /obj/machinery/atmospherics/components/binary/pump{ @@ -52127,11 +51543,7 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "cel" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -52410,11 +51822,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, /area/hallway/primary/aft) -"ceM" = ( -/turf/open/floor/plasteel/whitepurple/side{ - dir = 2 - }, -/area/science/research) "ceN" = ( /obj/structure/table, /obj/machinery/cell_charger, @@ -52438,14 +51845,6 @@ dir = 2 }, /area/science/research) -"ceP" = ( -/obj/structure/table, -/obj/item/stock_parts/cell/potato, -/obj/machinery/light, -/turf/open/floor/plasteel/whitepurple/side{ - dir = 2 - }, -/area/science/research) "ceQ" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -52866,7 +52265,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 30 }, /turf/open/floor/plasteel/vault, @@ -53032,7 +52431,7 @@ /turf/closed/wall, /area/medical/chemistry) "cfW" = ( -/obj/structure/sign/chemistry, +/obj/structure/sign/departments/chemistry, /turf/closed/wall, /area/medical/chemistry) "cfX" = ( @@ -53653,16 +53052,6 @@ dir = 1 }, /area/science/lab) -"chl" = ( -/obj/structure/noticeboard{ - desc = "A board for pinning important notices upon."; - name = "notice board"; - pixel_y = 31 - }, -/turf/open/floor/plasteel/whitepurple/side{ - dir = 1 - }, -/area/science/lab) "chm" = ( /obj/machinery/button/door{ id = "research_shutters"; @@ -53749,14 +53138,14 @@ }, /area/science/research) "chw" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/bridge/showroom/corporate) "chx" = ( /turf/open/floor/engine, /area/science/explab) "chy" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/machinery/camera{ @@ -54108,7 +53497,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 28 }, /turf/open/floor/plasteel/whiteblue/corner{ @@ -54588,15 +53977,15 @@ /obj/structure/disposalpipe/segment{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, /obj/structure/cable/yellow{ icon_state = "2-4" }, /obj/machinery/light/small{ dir = 1 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/plating, /area/maintenance/starboard) "cjs" = ( @@ -55132,7 +54521,7 @@ /area/maintenance/starboard/aft) "ckx" = ( /obj/structure/table, -/obj/structure/sign/bluecross{ +/obj/structure/sign/departments/medbay{ pixel_y = 32 }, /obj/item/reagent_containers/glass/beaker/large, @@ -55208,7 +54597,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_x = -32 }, /obj/machinery/atmospherics/components/binary/pump{ @@ -55234,7 +54623,7 @@ /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "ckF" = ( -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_x = 32 }, /obj/machinery/light/small{ @@ -55317,7 +54706,7 @@ /area/aisat) "ckU" = ( /obj/structure/chair, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -28 }, /turf/open/floor/plasteel/dark, @@ -55377,7 +54766,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 28 }, /obj/effect/landmark/blobstart, @@ -55643,7 +55032,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 30 }, /turf/open/floor/plasteel, @@ -55790,11 +55179,7 @@ }, /area/science/research) "clS" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/science/explab) "clT" = ( @@ -56074,7 +55459,7 @@ /area/medical/chemistry) "cmD" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/chemistry{ +/obj/structure/sign/departments/chemistry{ pixel_x = -32 }, /turf/open/floor/plasteel/yellow/corner{ @@ -56086,7 +55471,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/structure/sign/science{ +/obj/structure/sign/departments/science{ pixel_x = 32 }, /turf/open/floor/plasteel/purple/corner{ @@ -56361,11 +55746,7 @@ /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "cnf" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /obj/machinery/atmospherics/components/unary/outlet_injector/on{ @@ -56861,7 +56242,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/machinery/camera{ @@ -57056,18 +56437,15 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "cow" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/starboard) +/obj/machinery/rnd/protolathe/department/service, +/turf/open/floor/plasteel, +/area/hallway/secondary/service) "cox" = ( /obj/structure/mineral_door/wood{ name = "The Gobbetting Barmaid" @@ -57520,19 +56898,6 @@ }, /turf/open/floor/plasteel/white, /area/science/research) -"cps" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel/white, -/area/science/research) "cpt" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -58477,7 +57842,7 @@ /turf/open/space, /area/space/nearstation) "cre" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) "crf" = ( @@ -58857,7 +58222,7 @@ /turf/closed/wall/r_wall, /area/science/storage) "crS" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall/r_wall, /area/science/storage) "crT" = ( @@ -58994,7 +58359,7 @@ /area/maintenance/port/aft) "csj" = ( /obj/structure/closet/secure_closet/medical2, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -28 }, /turf/open/floor/plasteel, @@ -59047,7 +58412,7 @@ dir = 1; pixel_y = -22 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -28 }, /obj/machinery/iv_drip, @@ -59535,7 +58900,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_y = 32 }, /turf/open/floor/plasteel/white, @@ -59575,7 +58940,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -60236,7 +59601,7 @@ dir = 4; pixel_x = 24 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/structure/table/glass, @@ -60465,13 +59830,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/science/storage) -"cuX" = ( -/obj/effect/landmark/xeno_spawn, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) "cuY" = ( /obj/structure/rack, /obj/item/extinguisher, @@ -60484,33 +59842,6 @@ "cuZ" = ( /turf/closed/wall/r_wall, /area/science/circuit) -"cva" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"cvb" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"cvc" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) "cvd" = ( /obj/structure/cable{ icon_state = "2-4" @@ -60573,11 +59904,7 @@ /area/solar/port/aft) "cvj" = ( /obj/structure/closet/emcloset, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /turf/open/floor/plating, @@ -60636,7 +59963,7 @@ "cvq" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/examroom{ +/obj/structure/sign/departments/examroom{ pixel_x = -32 }, /turf/open/floor/plasteel/white, @@ -60812,7 +60139,7 @@ /turf/open/floor/plating, /area/maintenance/aft) "cvJ" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -29 }, /turf/open/floor/engine{ @@ -60980,12 +60307,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/science/storage) -"cvZ" = ( -/obj/structure/closet/crate, -/obj/item/device/multitool, -/obj/item/clothing/gloves/color/fyellow, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) "cwa" = ( /obj/structure/reagent_dispensers/watertank/high, /turf/open/floor/plating, @@ -61284,7 +60605,7 @@ icon_state = "2-4" }, /obj/structure/disposalpipe/segment, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -28 }, /turf/open/floor/plasteel, @@ -61297,10 +60618,7 @@ /turf/open/floor/plating, /area/science/robotics/mechbay) "cwI" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE"; +/obj/structure/sign/warning/electricshock{ pixel_y = 31 }, /turf/open/floor/mech_bay_recharge_floor, @@ -61579,7 +60897,6 @@ /obj/structure/cable/yellow{ icon_state = "1-8" }, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel/white, /area/medical/medbay/aft) "cxk" = ( @@ -61700,7 +61017,7 @@ }, /area/medical/genetics) "cxy" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 28 }, /obj/machinery/disposal/bin, @@ -62131,7 +61448,7 @@ /turf/open/floor/plasteel/white, /area/science/research) "cyy" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall, /area/science/mixing) "cyz" = ( @@ -62216,7 +61533,7 @@ /area/science/mixing) "cyG" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/machinery/light{ @@ -62333,7 +61650,7 @@ /area/medical/medbay/aft) "cyU" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 28 }, /obj/structure/disposalpipe/segment, @@ -62612,15 +61929,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel/white, /area/science/mixing) -"czu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 5 - }, -/turf/open/floor/plasteel/white, -/area/science/mixing) "czv" = ( /obj/machinery/atmospherics/pipe/manifold/general/visible, /turf/open/floor/plasteel/white, @@ -62733,7 +62041,7 @@ /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "czI" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'BOMB RANGE"; name = "BOMB RANGE" }, @@ -63266,7 +62574,7 @@ /turf/open/floor/plasteel, /area/science/mixing) "cAH" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall/r_wall, /area/science/mixing) "cAI" = ( @@ -63702,7 +63010,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel, /area/science/misc_lab) "cBF" = ( @@ -63778,7 +63085,7 @@ /turf/open/floor/plasteel, /area/science/mixing) "cBM" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'BOMB RANGE"; name = "BOMB RANGE" }, @@ -64411,7 +63718,7 @@ /turf/open/floor/plasteel, /area/science/robotics/lab) "cDe" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/structure/rack, @@ -64493,7 +63800,7 @@ /turf/closed/wall/r_wall, /area/science/mixing) "cDl" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/science/mixing) "cDm" = ( @@ -64540,11 +63847,7 @@ /turf/open/floor/plating, /area/science/mixing) "cDr" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /obj/machinery/light/small, @@ -65098,11 +64401,7 @@ /turf/open/floor/engine/vacuum, /area/science/mixing) "cEs" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /turf/open/floor/engine/vacuum, @@ -65261,7 +64560,7 @@ dir = 8 }, /obj/structure/table/glass, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ pixel_x = -30 }, /turf/open/floor/plasteel/whitegreen/side{ @@ -65371,7 +64670,7 @@ pixel_x = 1; pixel_y = 4 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -30 }, /obj/structure/table/glass, @@ -65443,7 +64742,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/sign/science{ +/obj/structure/sign/departments/science{ name = "\improper ROBOTICS!"; pixel_x = 32 }, @@ -65593,10 +64892,6 @@ }, /turf/open/floor/plasteel, /area/science/mixing) -"cFt" = ( -/obj/effect/decal/cleanable/oil, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) "cFu" = ( /obj/structure/closet, /obj/item/device/assembly/prox_sensor{ @@ -65773,7 +65068,7 @@ /turf/open/floor/plating, /area/medical/virology) "cFL" = ( -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_y = 32 }, /obj/machinery/shower{ @@ -65800,7 +65095,7 @@ /turf/open/floor/plasteel/white, /area/medical/virology) "cFN" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/machinery/shower{ @@ -65984,7 +65279,6 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel/white, /area/science/research) "cGi" = ( @@ -66012,7 +65306,7 @@ /area/science/mixing) "cGk" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_y = -32 }, /obj/machinery/atmospherics/components/binary/pump{ @@ -66178,7 +65472,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 }, -/obj/effect/landmark/lightsout, /obj/machinery/holopad, /obj/structure/cable/yellow{ icon_state = "2-4" @@ -66556,7 +65849,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM" }, @@ -66603,15 +65896,6 @@ }, /turf/closed/wall/r_wall, /area/science/mixing) -"cHj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/plating{ - icon_state = "platingdmg2" - }, -/area/maintenance/starboard/aft) "cHk" = ( /obj/structure/cable, /obj/machinery/power/tracker, @@ -66766,7 +66050,7 @@ /turf/open/floor/plasteel/white, /area/medical/virology) "cHz" = ( -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_x = -32 }, /turf/open/floor/plasteel/whitegreen/side{ @@ -66792,7 +66076,7 @@ }, /area/medical/medbay/aft) "cHB" = ( -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_x = -32 }, /obj/item/storage/box/gloves{ @@ -66806,7 +66090,7 @@ }, /area/medical/medbay/aft) "cHC" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -30 }, /obj/item/storage/box/beakers{ @@ -66869,7 +66153,7 @@ /obj/item/reagent_containers/blood/empty, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/dropper, -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_x = 32 }, /turf/open/floor/plasteel/floorgrime, @@ -67100,7 +66384,7 @@ /area/science/server) "cId" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 32 @@ -67148,7 +66432,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_y = 32 }, /turf/open/floor/plating, @@ -67302,7 +66586,7 @@ /turf/open/floor/plasteel/vault, /area/medical/virology) "cIy" = ( -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_x = -32 }, /turf/open/space, @@ -67580,11 +66864,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "cJe" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /obj/structure/cable/yellow{ @@ -67853,19 +67133,6 @@ dir = 4 }, /area/science/robotics/lab) -"cJI" = ( -/obj/structure/table/optable, -/obj/item/surgical_drapes, -/obj/item/storage/firstaid/regular, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small/built{ - dir = 1 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "cJJ" = ( /obj/machinery/computer/operating{ dir = 1; @@ -68366,7 +67633,7 @@ /turf/open/floor/plating, /area/maintenance/aft) "cKI" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/science/research) "cKJ" = ( @@ -68440,11 +67707,7 @@ /turf/open/floor/plating, /area/maintenance/solars/starboard/aft) "cKR" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/maintenance/solars/starboard/aft) "cKS" = ( @@ -69721,11 +68984,7 @@ /obj/structure/cable{ icon_state = "0-8" }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /turf/open/floor/plating, @@ -69914,10 +69173,6 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) -"cNM" = ( -/obj/effect/landmark/lightsout, -/turf/open/floor/plasteel, -/area/hallway/secondary/exit/departure_lounge) "cNN" = ( /obj/structure/flora/ausbushes/fernybush, /obj/structure/flora/ausbushes/fullgrass, @@ -69981,7 +69236,7 @@ }, /area/hallway/secondary/exit/departure_lounge) "cNT" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = 32 }, /obj/effect/turf_decal/stripes/line, @@ -70484,7 +69739,7 @@ /obj/structure/chair{ dir = 8 }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -70708,7 +69963,7 @@ /turf/open/floor/carpet, /area/chapel/main) "cPE" = ( -/obj/structure/sign/kiddieplaque/badger{ +/obj/structure/sign/plaques/kiddie/badger{ pixel_y = 32 }, /obj/item/reagent_containers/food/snacks/grown/poppy{ @@ -71235,7 +70490,7 @@ }, /area/chapel/main) "cQJ" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = -32 }, /obj/effect/turf_decal/delivery, @@ -71272,7 +70527,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) "cQP" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = 32 }, /obj/effect/turf_decal/delivery, @@ -71343,11 +70598,11 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "cRa" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall, /area/science/xenobiology) "cRb" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall, /area/science/xenobiology) "cRc" = ( @@ -71431,11 +70686,7 @@ dir = 2; id = "chapelgun" }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/machinery/light/small{ @@ -71508,7 +70759,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) "cRu" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall/r_wall, /area/science/xenobiology) "cRv" = ( @@ -71537,7 +70788,7 @@ }, /area/science/xenobiology) "cRw" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/science/xenobiology) "cRx" = ( @@ -71897,9 +71148,6 @@ "cSn" = ( /turf/open/floor/engine, /area/science/xenobiology) -"cSo" = ( -/turf/open/floor/engine, -/area/science/xenobiology) "cSp" = ( /obj/machinery/light/small{ dir = 8 @@ -72080,11 +71328,7 @@ /turf/open/floor/plasteel/white, /area/science/xenobiology) "cSI" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall, /area/science/xenobiology) "cSJ" = ( @@ -72388,17 +71632,6 @@ }, /turf/open/floor/engine, /area/science/xenobiology) -"cTh" = ( -/obj/machinery/door/poddoor{ - id = "QMLoaddoor"; - name = "supply dock loading door" - }, -/obj/machinery/conveyor{ - dir = 8; - id = "QMLoad" - }, -/turf/open/floor/plating, -/area/shuttle/supply) "cTi" = ( /obj/structure/chair{ dir = 4 @@ -72613,7 +71846,6 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/effect/landmark/lightsout, /obj/machinery/holopad, /turf/open/floor/plasteel/white, /area/science/xenobiology) @@ -72640,9 +71872,6 @@ }, /turf/open/floor/plasteel/dark, /area/engine/atmos) -"cUS" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) "cUT" = ( /obj/machinery/light{ dir = 1 @@ -72659,56 +71888,7 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/wood, /area/library) -"cUV" = ( -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/supply) -"cUW" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad2" - }, -/obj/machinery/door/poddoor{ - id = "QMLoaddoor2"; - name = "supply dock loading door" - }, -/turf/open/floor/plating, -/area/shuttle/supply) -"cUX" = ( -/obj/machinery/door/airlock/titanium{ - name = "Supply Shuttle Airlock"; - req_access_txt = "31" - }, -/turf/open/floor/plating, -/area/shuttle/supply) -"cUY" = ( -/obj/machinery/button/door{ - dir = 2; - id = "QMLoaddoor2"; - name = "Loading Doors"; - pixel_x = 24; - pixel_y = 8 - }, -/obj/machinery/button/door{ - id = "QMLoaddoor"; - name = "Loading Doors"; - pixel_x = 24; - pixel_y = -8 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/supply) "cUZ" = ( -/obj/machinery/door/airlock/titanium{ - name = "Supply Shuttle Airlock"; - req_access_txt = "31" - }, -/obj/docking_port/mobile/supply{ - dwidth = 5; - roundstart_move = "supply_away"; - width = 12 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 5; @@ -72717,8 +71897,8 @@ name = "Cargo Bay"; width = 12 }, -/turf/open/floor/plating, -/area/shuttle/supply) +/turf/open/space/basic, +/area/space) "cVa" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -72747,9 +71927,6 @@ }, /turf/open/floor/wood, /area/library) -"cVc" = ( -/turf/closed/wall/mineral/titanium/interior, -/area/shuttle/supply) "cVd" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 @@ -72781,13 +71958,6 @@ }, /turf/open/floor/wood, /area/library) -"cVg" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/shuttle/engine/heater, -/turf/open/floor/plating/airless, -/area/shuttle/supply) "cVh" = ( /obj/structure/closet/emcloset, /turf/open/floor/plasteel/dark, @@ -72799,67 +71969,7 @@ }, /turf/open/floor/wood, /area/library) -"cVj" = ( -/obj/structure/shuttle/engine/propulsion, -/turf/open/floor/plating/airless, -/area/shuttle/supply) -"cVk" = ( -/obj/structure/shuttle/engine/propulsion/burst/left, -/turf/open/floor/plating/airless, -/area/shuttle/supply) -"cVl" = ( -/obj/structure/shuttle/engine/propulsion/burst/right, -/turf/open/floor/plating/airless, -/area/shuttle/supply) -"cVm" = ( -/obj/structure/shuttle/engine/propulsion/left{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/shuttle/transport) -"cVn" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/transport) -"cVp" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/transport) -"cVr" = ( -/obj/structure/shuttle/engine/heater{ - dir = 8 - }, -/obj/structure/window/reinforced, -/turf/open/floor/plating/airless, -/area/shuttle/transport) -"cVu" = ( -/obj/structure/chair, -/turf/open/floor/pod/dark, -/area/shuttle/transport) -"cVv" = ( -/turf/open/floor/pod/light, -/area/shuttle/transport) -"cVw" = ( -/obj/structure/shuttle/engine/heater{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/transport) "cVx" = ( -/obj/machinery/door/airlock/titanium, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 2; - height = 13; - id = "ferry"; - name = "ferry shuttle"; - port_direction = 1; - preferred_direction = 4; - roundstart_move = "ferry_away"; - width = 5 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 2; @@ -72869,8 +71979,8 @@ turf_type = /turf/open/space; width = 5 }, -/turf/open/floor/pod/light, -/area/shuttle/transport) +/turf/open/space/basic, +/area/space) "cVy" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /obj/effect/spawner/structure/window/reinforced, @@ -72886,12 +71996,6 @@ /obj/structure/lattice/catwalk, /turf/open/space, /area/engine/atmos) -"cVB" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/shuttle/transport) "cVC" = ( /mob/living/simple_animal/sloth/citrus, /turf/open/floor/plasteel, @@ -72907,29 +72011,12 @@ }, /turf/open/floor/plating, /area/shuttle/auxillary_base) -"cVF" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"cVG" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/abandoned) "cVH" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 }, /turf/open/floor/plating, /area/shuttle/auxillary_base) -"cVI" = ( -/obj/machinery/door/airlock/titanium{ - name = "recovery shuttle external airlock" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) "cVJ" = ( /obj/structure/window/reinforced, /obj/machinery/computer/atmos_control/tank{ @@ -72962,250 +72049,20 @@ }, /turf/open/floor/plating, /area/shuttle/auxillary_base) -"cVN" = ( -/obj/structure/shuttle/engine/propulsion/left{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/shuttle/abandoned) -"cVO" = ( -/obj/structure/toilet{ - pixel_y = 9 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/greenglow{ - desc = "Looks like something's sprung a leak" - }, -/obj/machinery/light/small/built{ - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "cVQ" = ( /obj/machinery/light{ dir = 4 }, /turf/open/floor/plating, /area/shuttle/auxillary_base) -"cVR" = ( -/obj/structure/mirror{ - pixel_x = 28 - }, -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cVS" = ( -/obj/structure/table, -/obj/item/storage/pill_bottle/dice{ - pixel_y = 3 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cVT" = ( -/obj/structure/closet/wardrobe/mixed, -/obj/item/clothing/under/rank/centcom_officer{ - desc = "A badge on the arm indicates that it's meant to be worn by CentCom recovery teams. This one seems dusty and clearly hasn't been cleaned in some time."; - name = "\improper dusty old CentCom jumpsuit" - }, -/obj/item/clothing/under/rank/centcom_commander{ - desc = "A badge on the arm indicates that it's meant to be worn by CentCom recovery teams. This one seems dusty and clearly hasn't been cleaned in some time."; - name = "\improper dusty old CentCom jumpsuit" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cVU" = ( -/obj/structure/table, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stock_parts/cell/high{ - charge = 100; - maxcharge = 15000; - pixel_y = 2 - }, -/obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cVV" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cVX" = ( -/obj/structure/tank_dispenser/oxygen{ - layer = 2.7; - pixel_x = -1; - pixel_y = 2 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cVY" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cVZ" = ( -/obj/structure/sign/vacuum{ - pixel_x = -32 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small/built{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cWa" = ( -/obj/structure/closet/crate/medical{ - name = "medical crate" - }, -/obj/item/storage/firstaid/o2{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/roller{ - pixel_y = 4 - }, -/obj/item/device/healthanalyzer, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/bot, -/obj/machinery/light/small/built{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/shuttle/abandoned) -"cWb" = ( -/obj/item/storage/box/lights/mixed, -/obj/item/cigbutt, -/obj/structure/closet/crate{ - icon_state = "crateopen"; - name = "spare equipment crate"; - opened = 1 - }, -/obj/item/tank/internals/oxygen/red, -/obj/item/tank/internals/air, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" - }, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/shuttle/abandoned) -"cWc" = ( -/obj/structure/closet/crate{ - name = "spare equipment crate" - }, -/obj/item/grenade/chem_grenade/metalfoam, -/obj/item/relic, -/obj/item/device/t_scanner, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 3; - name = "3maintenance loot spawner" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/shuttle/abandoned) -"cWd" = ( -/obj/structure/closet/crate{ - name = "emergency supplies crate" - }, -/obj/item/storage/toolbox/emergency, -/obj/item/storage/toolbox/emergency, -/obj/item/device/flashlight/flare{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/device/flashlight/flare{ - pixel_x = -6; - pixel_y = -2 - }, -/obj/item/crowbar, -/obj/item/wrench, -/obj/effect/spawner/lootdrop/maintenance, -/obj/item/extinguisher, -/obj/item/extinguisher, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/shuttle/abandoned) -"cWe" = ( -/obj/structure/shuttle/engine/heater{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/abandoned) -"cWf" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/shuttle/abandoned) "cWg" = ( /obj/docking_port/mobile/auxillary_base{ dheight = 4; dir = 2; dwidth = 4; height = 9; - width = 9 + width = 9; + timid = 0 }, /obj/machinery/bluespace_beacon, /obj/machinery/computer/auxillary_base, @@ -73217,279 +72074,10 @@ }, /turf/open/floor/plating, /area/shuttle/auxillary_base) -"cWi" = ( -/obj/machinery/door/airlock/titanium{ - name = "bathroom" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cWj" = ( -/obj/structure/bed, -/obj/item/bedsheet/centcom, -/obj/effect/decal/remains/human, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small/built{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cWk" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/blood/gibs/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/remains/human{ - desc = "They look like human remains, and have clearly been gnawed at." - }, -/obj/item/gun/energy/laser/retro, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cWl" = ( -/obj/structure/table, -/obj/item/storage/belt/utility, -/obj/item/storage/belt/utility, -/obj/item/device/radio/off, -/obj/item/device/radio/off, -/obj/item/device/radio/off, -/obj/item/device/radio/off, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small/built{ - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cWm" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/oil, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cWn" = ( -/obj/machinery/door/airlock/titanium{ - name = "E.V.A. equipment" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cWo" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cWp" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/blood/gibs/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/remains/human{ - desc = "They look like human remains, and have clearly been gnawed at." - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cWq" = ( -/obj/effect/decal/cleanable/oil, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/delivery{ - dir = 1 - }, -/turf/open/floor/plasteel{ - dir = 1 - }, -/area/shuttle/abandoned) -"cWr" = ( -/obj/machinery/door/airlock/titanium{ - name = "cargo bay" - }, -/obj/effect/turf_decal/delivery{ - dir = 1 - }, -/turf/open/floor/plasteel{ - dir = 1 - }, -/area/shuttle/abandoned) -"cWs" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/delivery{ - dir = 1 - }, -/turf/open/floor/plasteel{ - dir = 1 - }, -/area/shuttle/abandoned) -"cWt" = ( -/obj/effect/decal/cleanable/robot_debris/old, -/obj/effect/decal/cleanable/oil, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/delivery{ - dir = 1 - }, -/turf/open/floor/plasteel{ - dir = 1 - }, -/area/shuttle/abandoned) -"cWu" = ( -/obj/machinery/shower{ - dir = 4 - }, -/obj/machinery/door/window/westright{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/item/soap/nanotrasen, -/obj/effect/decal/remains/human{ - desc = "They look like human remains, and have clearly been gnawed at." - }, -/obj/effect/decal/cleanable/blood/gibs/old, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cWv" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/structure/mirror{ - pixel_x = 28 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small/built{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cWw" = ( -/obj/structure/bed, -/obj/item/bedsheet/centcom, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cWx" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/blood/gibs/limb, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cWy" = ( -/obj/structure/table, -/obj/item/stack/sheet/glass/fifty{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/stack/rods/fifty, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/item/wrench, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cWz" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/electrical{ - pixel_x = 1; - pixel_y = 6 - }, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = -1 - }, -/obj/item/clothing/head/welding{ - pixel_x = -3; - pixel_y = 5 - }, -/obj/item/clothing/glasses/welding, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "cWA" = ( /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/fore) -"cWB" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cWC" = ( -/obj/effect/decal/cleanable/oil, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/shuttle/abandoned) -"cWD" = ( -/obj/structure/closet/emcloset, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/bot, -/obj/machinery/light/small, -/turf/open/floor/plasteel, -/area/shuttle/abandoned) -"cWE" = ( -/obj/structure/closet/firecloset/full, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/shuttle/abandoned) "cWF" = ( /obj/machinery/portable_atmospherics/canister/air, /obj/effect/turf_decal/stripes/line{ @@ -73497,37 +72085,6 @@ }, /turf/open/floor/plating, /area/shuttle/auxillary_base) -"cWG" = ( -/obj/machinery/door/airlock/titanium{ - name = "bathroom" - }, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cWH" = ( -/obj/machinery/vending/boozeomat{ - icon_deny = "smartfridge"; - icon_state = "smartfridge"; - req_access_txt = "0"; - use_power = 0 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"cWI" = ( -/obj/machinery/door/airlock/titanium{ - name = "dormitory" - }, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) "cWJ" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, @@ -73536,20 +72093,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/construction/mining/aux_base) -"cWL" = ( -/obj/machinery/door/airlock/titanium{ - name = "recovery shuttle interior airlock" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) "cWM" = ( /obj/machinery/door/airlock/external{ cyclelinkeddir = 1; @@ -73560,151 +72103,6 @@ }, /turf/open/floor/plating, /area/construction/mining/aux_base) -"cWN" = ( -/obj/machinery/door/airlock/titanium{ - name = "cargo bay" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/turf_decal/delivery{ - dir = 1 - }, -/turf/open/floor/plasteel{ - dir = 1 - }, -/area/shuttle/abandoned) -"cWO" = ( -/obj/machinery/vending/cigarette{ - use_power = 0 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cWP" = ( -/obj/effect/decal/cleanable/blood/gibs/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/built{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cWQ" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/blood/gibs/limb, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cWR" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cWS" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cWT" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/item/folder/blue, -/obj/item/pen, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cWU" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/structure/table, -/obj/item/device/camera, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cWV" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -1; - pixel_y = 6 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cWW" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/item/storage/photo_album, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cWX" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/structure/sign/vacuum{ - pixel_x = -32 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small/built{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cWY" = ( -/obj/machinery/vending/coffee, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cWZ" = ( -/obj/structure/chair, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cXa" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cXb" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "cXc" = ( /obj/machinery/light/small{ dir = 8 @@ -73712,235 +72110,6 @@ /obj/structure/easel, /turf/open/floor/plating, /area/maintenance/starboard/fore) -"cXf" = ( -/obj/structure/table, -/obj/item/folder/blue, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/item/device/gps{ - gpstag = "NTREC1"; - pixel_x = -1; - pixel_y = 2 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cXg" = ( -/obj/machinery/door/airlock/titanium{ - name = "recovery shuttle interior airlock" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cXh" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/shaker, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cXi" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cXj" = ( -/obj/structure/table, -/obj/item/storage/fancy/donut_box, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cXk" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/condiment/peppermill{ - pixel_x = 3; - pixel_y = 4 - }, -/obj/item/reagent_containers/food/condiment/saltshaker{ - pixel_x = -3; - pixel_y = 4 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cXl" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cXm" = ( -/obj/machinery/door/airlock/titanium{ - name = "living quarters" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cXn" = ( -/obj/item/clothing/suit/bio_suit, -/obj/item/clothing/suit/bio_suit, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/item/clothing/gloves/color/latex, -/obj/item/clothing/gloves/color/latex, -/obj/item/clothing/head/bio_hood, -/obj/item/clothing/head/bio_hood, -/obj/item/clothing/mask/breath, -/obj/item/clothing/mask/breath, -/obj/structure/table, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cXo" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/item/roller{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/roller{ - pixel_x = 3; - pixel_y = 4 - }, -/obj/item/reagent_containers/spray/cleaner, -/obj/structure/table, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cXp" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/blood/gibs/limb, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cXq" = ( -/obj/effect/decal/cleanable/blood/gibs/old, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/remains/human{ - desc = "They look like human remains, and have clearly been gnawed at." - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cXr" = ( -/obj/item/storage/toolbox/emergency{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/storage/toolbox/emergency, -/obj/item/storage/toolbox/emergency{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/structure/table, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cXs" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/suit/armor/vest, -/obj/item/clothing/suit/armor/vest, -/obj/structure/table, -/obj/item/clothing/head/helmet/swat/nanotrasen, -/obj/item/clothing/head/helmet/swat/nanotrasen, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cXt" = ( -/obj/machinery/door/airlock/titanium{ - name = "bridge" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cXu" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/computer/shuttle/white_ship{ - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cXv" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/structure/chair/comfy/black{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cXw" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/structure/light_construct/small{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cXx" = ( -/obj/machinery/vending/cola/random, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cXy" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "cXz" = ( /obj/structure/cable/white{ icon_state = "4-8" @@ -73956,38 +72125,6 @@ "cXA" = ( /turf/closed/wall/r_wall, /area/security/checkpoint/engineering) -"cXC" = ( -/obj/item/phone{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/cigbutt/cigarbutt{ - pixel_x = 5; - pixel_y = -1 - }, -/obj/structure/table, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cXD" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/blood/gibs/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/item/clothing/head/centhat{ - desc = "There's a gouge through the top where something has clawed clean through it. Whoever was wearing it probably doesn't need a hat any more."; - name = "\improper damaged CentCom hat" - }, -/obj/effect/decal/remains/human{ - desc = "They look like human remains, and have clearly been gnawed at." - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) "cXE" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 @@ -73996,109 +72133,10 @@ dir = 1 }, /area/construction/mining/aux_base) -"cXF" = ( -/obj/machinery/vending/snack/random, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cXG" = ( -/obj/structure/sign/science{ - pixel_y = -32 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cXH" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/computer/camera_advanced/shuttle_docker/whiteship{ - dir = 1; - station_lock_override = 1; - view_range = 15; - x_offset = -3; - y_offset = -7 - }, -/obj/machinery/light/built{ - dir = 2 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "cXI" = ( /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/starboard) -"cXJ" = ( -/obj/structure/table, -/obj/item/device/radio/off{ - pixel_y = 6 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cXK" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cXL" = ( -/obj/machinery/door/airlock/titanium{ - name = "hydroponics" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cXM" = ( -/obj/structure/sign/botany, -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"cXN" = ( -/obj/machinery/door/airlock/titanium{ - name = "kitchen" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cXO" = ( -/obj/machinery/door/airlock/titanium{ - name = "laboratory" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cXP" = ( -/obj/structure/sign/bluecross_2, -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"cXQ" = ( -/obj/machinery/door/airlock/titanium{ - name = "medbay"; - welded = 0 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) "cXR" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 @@ -74107,89 +72145,6 @@ dir = 1 }, /area/construction/mining/aux_base) -"cXS" = ( -/obj/item/storage/bag/plants/portaseeder, -/obj/structure/table, -/obj/item/reagent_containers/spray/plantbgone{ - pixel_x = 13; - pixel_y = 5 - }, -/obj/item/reagent_containers/glass/bottle/nutrient/ez, -/obj/item/reagent_containers/glass/bottle/nutrient/ez, -/obj/item/reagent_containers/glass/bottle/nutrient/ez, -/obj/item/reagent_containers/glass/bottle/nutrient/rh{ - pixel_x = -2; - pixel_y = 3 - }, -/obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cXT" = ( -/obj/machinery/biogenerator{ - idle_power_usage = 0; - use_power = 0 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cXU" = ( -/obj/machinery/vending/hydroseeds{ - use_power = 0 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small/built{ - dir = 1 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cXV" = ( -/obj/machinery/processor, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small/built{ - dir = 1 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cXW" = ( -/obj/structure/table, -/obj/machinery/microwave{ - pixel_x = -3; - pixel_y = 6 - }, -/obj/item/storage/box/donkpockets, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cXX" = ( -/obj/structure/kitchenspike, -/obj/effect/decal/cleanable/blood/gibs/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cXY" = ( -/obj/effect/decal/cleanable/oil, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "cXZ" = ( /obj/structure/reagent_dispensers/watertank, /obj/structure/window/reinforced{ @@ -74198,32 +72153,6 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/starboard) -"cYa" = ( -/obj/machinery/sleeper{ - dir = 4; - use_power = 0 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cYb" = ( -/obj/structure/closet/crate/freezer, -/obj/item/reagent_containers/blood/empty{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/reagent_containers/blood/OMinus, -/obj/item/reagent_containers/blood/random, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/xenoblood, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "cYc" = ( /obj/structure/table/optable{ name = "Robotics Operating Table" @@ -74240,314 +72169,17 @@ dir = 1 }, /area/science/robotics/lab) -"cYd" = ( -/obj/structure/table, -/obj/item/wrench, -/obj/item/crowbar, -/obj/item/clothing/suit/apron, -/obj/item/shovel/spade, -/obj/item/cultivator, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/item/wirecutters, -/obj/item/device/plant_analyzer, -/obj/item/reagent_containers/glass/bucket, -/obj/machinery/light/small/built{ - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cYe" = ( -/obj/machinery/smartfridge{ - use_power = 0 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"cYf" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cYg" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cYh" = ( -/obj/structure/table, -/obj/item/kitchen/rollingpin, -/obj/item/kitchen/knife, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small/built{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cYi" = ( -/obj/effect/decal/cleanable/egg_smudge, -/obj/effect/decal/cleanable/flour, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) "cYj" = ( /obj/structure/closet/firecloset, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/starboard) -"cYl" = ( -/obj/structure/chair/office/light, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cYm" = ( -/obj/machinery/vending/wallmed{ - name = "Emergency NanoMed"; - pixel_x = -28; - req_access_txt = "0"; - use_power = 0 - }, -/obj/machinery/iv_drip, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small/built{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cYn" = ( -/obj/effect/decal/cleanable/xenoblood, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/remains/xeno{ - desc = "A pile of remains that look vaguely humanoid. The skull is abnormally elongated, and there are burns through some of the other bones." - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cYo" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/ash, -/obj/effect/decal/cleanable/xenoblood, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cYp" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, -/obj/effect/decal/cleanable/xenoblood, -/obj/effect/decal/cleanable/xenoblood/xgibs/limb, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"cYq" = ( -/obj/structure/shuttle/engine/propulsion/right{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/shuttle/abandoned) -"cYr" = ( -/obj/machinery/hydroponics/constructable, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cYs" = ( -/obj/machinery/hydroponics/constructable, -/obj/item/seeds/glowshroom, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cYt" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/item/storage/box/monkeycubes{ - pixel_y = 4 - }, -/obj/item/storage/fancy/egg_box{ - pixel_y = 5 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cYu" = ( -/obj/structure/table, -/obj/machinery/reagentgrinder{ - pixel_y = 6 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cYv" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/milk, -/obj/item/reagent_containers/food/condiment/milk, -/obj/item/reagent_containers/food/condiment/milk, -/obj/item/reagent_containers/food/condiment/soymilk, -/obj/item/reagent_containers/food/condiment/soymilk, -/obj/item/reagent_containers/food/condiment/sugar, -/obj/item/reagent_containers/food/condiment/sugar, -/obj/item/reagent_containers/food/condiment/sugar, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cYw" = ( -/obj/structure/table, -/obj/item/reagent_containers/glass/beaker{ - pixel_x = 5 - }, -/obj/item/reagent_containers/food/condiment/enzyme{ - layer = 5 - }, -/obj/item/reagent_containers/dropper, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cYx" = ( -/obj/structure/table, -/obj/item/reagent_containers/glass/beaker{ - pixel_x = 5; - pixel_y = 2 - }, -/obj/item/reagent_containers/glass/beaker, -/obj/item/reagent_containers/dropper, -/obj/item/reagent_containers/syringe, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cYy" = ( -/obj/structure/table, -/obj/item/hand_labeler, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cYz" = ( -/obj/structure/table, -/obj/item/folder/white{ - pixel_x = 4; - pixel_y = -3 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cYA" = ( -/obj/structure/table, -/obj/item/defibrillator, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cYB" = ( -/obj/structure/table, -/obj/item/clothing/gloves/color/latex, -/obj/item/clothing/mask/surgical, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/item/clothing/suit/apron/surgical, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cYC" = ( -/obj/structure/table, -/obj/item/reagent_containers/glass/bottle/epinephrine{ - pixel_x = 6 - }, -/obj/item/reagent_containers/glass/bottle/charcoal{ - pixel_x = -3 - }, -/obj/item/reagent_containers/syringe, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"cYD" = ( -/obj/structure/table, -/obj/item/storage/backpack/duffelbag/med/surgery{ - pixel_y = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "cYE" = ( /obj/structure/closet/toolcloset, /turf/open/floor/plasteel/yellow/side{ dir = 1 }, /area/construction/mining/aux_base) -"cYF" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/escape) "cYG" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/cable/yellow{ @@ -74555,26 +72187,7 @@ }, /turf/open/floor/plasteel/yellow/side, /area/construction/mining/aux_base) -"cYH" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"cYI" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/shuttle/escape) "cYJ" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock" - }, -/obj/docking_port/mobile/emergency{ - dir = 2; - dwidth = 5; - height = 14; - name = "Meta emergency shuttle"; - width = 25 - }, /obj/docking_port/stationary{ dheight = 0; dir = 2; @@ -74584,8 +72197,8 @@ name = "MetaStation emergency evac bay"; width = 29 }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) +/turf/open/space/basic, +/area/space) "cYK" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -74608,101 +72221,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/construction/mining/aux_base) -"cYM" = ( -/obj/structure/tank_dispenser/oxygen{ - layer = 2.7; - pixel_x = -1; - pixel_y = 2 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"cYN" = ( -/obj/item/clothing/suit/hazardvest{ - desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; - name = "emergency lifejacket" - }, -/obj/item/clothing/suit/hazardvest{ - desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; - name = "emergency lifejacket" - }, -/obj/item/clothing/suit/hazardvest{ - desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; - name = "emergency lifejacket" - }, -/obj/item/clothing/suit/hazardvest{ - desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; - name = "emergency lifejacket" - }, -/obj/item/clothing/suit/hazardvest{ - desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; - name = "emergency lifejacket" - }, -/obj/item/tank/internals/emergency_oxygen/double{ - pixel_x = 3 - }, -/obj/item/tank/internals/emergency_oxygen/double{ - pixel_x = 3 - }, -/obj/item/tank/internals/emergency_oxygen/double{ - pixel_x = 3 - }, -/obj/item/tank/internals/emergency_oxygen/double{ - pixel_x = 3 - }, -/obj/item/tank/internals/emergency_oxygen/double{ - pixel_x = 3 - }, -/obj/item/clothing/mask/breath{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/clothing/mask/breath{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/clothing/mask/breath{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/clothing/mask/breath{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/clothing/mask/breath{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/clothing/head/hardhat/orange{ - name = "protective hat"; - pixel_y = 9 - }, -/obj/item/clothing/head/hardhat/orange{ - name = "protective hat"; - pixel_y = 9 - }, -/obj/item/clothing/head/hardhat/orange{ - name = "protective hat"; - pixel_y = 9 - }, -/obj/item/clothing/head/hardhat/orange{ - name = "protective hat"; - pixel_y = 9 - }, -/obj/item/clothing/head/hardhat/orange{ - name = "protective hat"; - pixel_y = 9 - }, -/obj/structure/closet/crate{ - name = "lifejackets" - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"cYO" = ( -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) "cYP" = ( /obj/machinery/door/airlock/engineering{ cyclelinkeddir = 1; @@ -74720,104 +72238,18 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall, /area/construction/mining/aux_base) -"cYS" = ( -/obj/item/device/radio/intercom{ - dir = 4; - name = "Station Intercom (General)"; - pixel_y = 27 - }, -/obj/structure/chair, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) "cYT" = ( /obj/structure/cable/yellow{ icon_state = "1-2" }, /turf/open/floor/plasteel/white, /area/science/xenobiology) -"cYU" = ( -/obj/structure/table, -/obj/item/clipboard, -/obj/item/folder/yellow, -/obj/item/pen, -/obj/item/hand_labeler_refill, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/shuttle/escape) -"cYV" = ( -/turf/open/floor/plasteel/floorgrime, -/area/shuttle/escape) -"cYW" = ( -/obj/structure/closet/crate/medical{ - name = "medical crate" - }, -/obj/item/storage/firstaid/regular, -/obj/item/storage/firstaid/o2{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/firstaid/toxin{ - pixel_x = -4; - pixel_y = 3 - }, -/obj/item/device/healthanalyzer{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/lazarus_injector, -/obj/effect/turf_decal/bot, -/mob/living/simple_animal/bot/medbot{ - name = "\improper emergency medibot"; - pixel_x = -3; - pixel_y = 2 - }, -/turf/open/floor/plasteel, -/area/shuttle/escape) -"cYX" = ( -/obj/item/cigbutt, -/turf/open/floor/plasteel/floorgrime, -/area/shuttle/escape) -"cYY" = ( -/obj/structure/extinguisher_cabinet, -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/shuttle/escape) -"cYZ" = ( -/obj/machinery/vending/wallmed{ - name = "Emergency NanoMed"; - req_access_txt = "0"; - use_power = 0 - }, -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/shuttle/escape) "cZa" = ( /obj/structure/cable/yellow{ icon_state = "4-8" }, /turf/open/floor/plasteel/white, /area/science/xenobiology) -"cZb" = ( -/obj/structure/closet/crate{ - name = "emergency supplies crate" - }, -/obj/item/storage/toolbox/emergency, -/obj/item/storage/toolbox/emergency, -/obj/item/device/flashlight/flare{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/device/flashlight/flare{ - pixel_x = -6; - pixel_y = -2 - }, -/obj/item/crowbar, -/obj/item/wrench, -/obj/item/device/radio, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/shuttle/escape) "cZc" = ( /obj/item/device/radio/intercom{ freerange = 0; @@ -74835,9 +72267,6 @@ dir = 4 }, /area/chapel/main) -"cZe" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "cZf" = ( /obj/structure/chair, /obj/machinery/light{ @@ -74848,10 +72277,6 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) -"cZg" = ( -/obj/structure/sign/nosmoking_2, -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "cZh" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -74860,61 +72285,6 @@ dir = 4 }, /area/hallway/secondary/entry) -"cZi" = ( -/obj/structure/chair, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"cZj" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/shuttle/escape) -"cZk" = ( -/obj/item/device/radio/intercom{ - dir = 2; - name = "Station Intercom (General)"; - pixel_y = -31 - }, -/obj/structure/chair{ - dir = 1 - }, -/obj/machinery/light, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"cZl" = ( -/obj/structure/shuttle/engine/heater{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/escape) -"cZm" = ( -/obj/structure/chair/office/dark{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"cZn" = ( -/obj/machinery/status_display, -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"cZo" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"cZp" = ( -/obj/machinery/door/airlock/medical/glass{ - id_tag = null; - name = "Escape Shuttle Infirmary"; - req_access_txt = "0" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) "cZq" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -74927,204 +72297,9 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) -"cZr" = ( -/obj/structure/sign/bluecross_2, -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"cZs" = ( -/obj/structure/table, -/obj/item/storage/firstaid/toxin, -/obj/item/storage/firstaid/o2{ - pixel_x = 3; - pixel_y = 3 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"cZt" = ( -/obj/structure/table, -/obj/item/storage/firstaid/fire, -/obj/item/storage/firstaid/regular{ - pixel_x = 2; - pixel_y = 3 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) "cZv" = ( /turf/open/floor/circuit/killroom, /area/science/xenobiology) -"cZw" = ( -/obj/structure/table, -/obj/item/reagent_containers/glass/bottle/epinephrine{ - pixel_x = 6 - }, -/obj/item/reagent_containers/glass/bottle/charcoal{ - pixel_x = -3 - }, -/obj/item/reagent_containers/glass/bottle/epinephrine{ - pixel_x = -3; - pixel_y = 8 - }, -/obj/item/reagent_containers/glass/bottle/charcoal{ - pixel_x = 6; - pixel_y = 8 - }, -/obj/item/reagent_containers/syringe/epinephrine{ - pixel_x = 3; - pixel_y = -2 - }, -/obj/item/reagent_containers/syringe/epinephrine{ - pixel_x = 4; - pixel_y = 1 - }, -/obj/item/reagent_containers/syringe/epinephrine{ - pixel_x = -2; - pixel_y = 5 - }, -/obj/item/reagent_containers/syringe/epinephrine{ - pixel_x = 2; - pixel_y = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"cZx" = ( -/obj/structure/table, -/obj/item/defibrillator/loaded, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"cZy" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -2; - pixel_y = 8 - }, -/obj/item/device/radio/intercom{ - dir = 2; - name = "Station Intercom (General)"; - pixel_y = -31 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"cZz" = ( -/obj/structure/table/optable, -/obj/item/surgical_drapes, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"cZA" = ( -/obj/structure/table, -/obj/item/folder/blue, -/obj/structure/extinguisher_cabinet{ - dir = 4; - pixel_y = -27 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"cZB" = ( -/obj/machinery/space_heater, -/obj/structure/extinguisher_cabinet{ - dir = 4; - pixel_y = -27 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/shuttle/escape) -"cZC" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Cargo Bay Airlock" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/shuttle/escape) -"cZD" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/escape) -"cZE" = ( -/obj/structure/table, -/obj/item/storage/box/handcuffs{ - pixel_x = 2; - pixel_y = 2 - }, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/escape) -"cZF" = ( -/obj/structure/chair, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/escape) -"cZG" = ( -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/escape) -"cZH" = ( -/obj/structure/table, -/obj/machinery/recharger{ - active_power_usage = 0; - idle_power_usage = 0; - use_power = 0 - }, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/escape) -"cZI" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Brig"; - req_access_txt = "2" - }, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/escape) -"cZJ" = ( -/obj/structure/table, -/obj/item/restraints/handcuffs{ - pixel_y = 3 - }, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/escape) -"cZK" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"cZL" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/plasteel/floorgrime, -/area/shuttle/escape) -"cZM" = ( -/obj/machinery/shower, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"cZN" = ( -/obj/machinery/sleeper{ - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"cZO" = ( -/obj/structure/rack, -/obj/item/crowbar, -/obj/item/wrench, -/obj/item/weldingtool, -/obj/item/wirecutters, -/obj/item/stack/cable_coil, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/shuttle/escape) -"cZP" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/shuttle/escape) -"cZQ" = ( -/obj/machinery/door/airlock/command/glass{ - name = "Cockpit"; - req_access_txt = "19" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) "cZR" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable/yellow{ @@ -75138,160 +72313,6 @@ dir = 8 }, /area/security/main) -"cZS" = ( -/obj/structure/table, -/obj/item/restraints/handcuffs{ - pixel_y = 3 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"cZT" = ( -/obj/structure/table, -/obj/item/storage/firstaid/regular, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"cZU" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/effect/turf_decal/delivery, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/shuttle/escape) -"cZV" = ( -/obj/machinery/door/airlock/command{ - name = "Emergency Recovery Airlock"; - req_access = null; - req_access_txt = "19" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"cZW" = ( -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/shuttle/escape) -"cZX" = ( -/obj/machinery/recharge_station, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/shuttle/escape) -"cZY" = ( -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/escape) -"cZZ" = ( -/obj/structure/chair/office/dark{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"daa" = ( -/obj/machinery/computer/security, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"dab" = ( -/obj/structure/reagent_dispensers/peppertank, -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"dac" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/electrical{ - pixel_x = -3; - pixel_y = 1 - }, -/obj/item/storage/toolbox/mechanical{ - pixel_y = -1 - }, -/obj/item/storage/toolbox/emergency{ - pixel_x = 3; - pixel_y = -5 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/shuttle/escape) -"dad" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/turf/open/floor/plasteel/floorgrime, -/area/shuttle/escape) -"dae" = ( -/obj/machinery/door/airlock/external{ - name = "Emergency Recovery Airlock" - }, -/turf/open/floor/plasteel/floorgrime, -/area/shuttle/escape) -"daf" = ( -/obj/machinery/computer/crew, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"dag" = ( -/obj/structure/chair/office/dark, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"dah" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/shuttle/escape) -"dai" = ( -/obj/structure/table, -/obj/item/storage/fancy/donut_box, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"daj" = ( -/obj/structure/table, -/obj/item/phone{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/cigbutt/cigarbutt{ - pixel_x = 5; - pixel_y = -1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"dak" = ( -/obj/machinery/computer/communications{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"dal" = ( -/obj/machinery/computer/emergency_shuttle{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"dam" = ( -/obj/structure/table, -/obj/item/storage/toolbox/emergency{ - pixel_y = 3 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"dan" = ( -/obj/machinery/computer/station_alert{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"dao" = ( -/obj/structure/table, -/obj/machinery/recharger{ - active_power_usage = 0; - idle_power_usage = 0; - pixel_y = 4; - use_power = 0 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) "dap" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/chair{ @@ -75302,89 +72323,6 @@ dir = 4 }, /area/security/main) -"daq" = ( -/obj/structure/table, -/obj/item/folder/red{ - pixel_x = 3 - }, -/obj/item/folder/white{ - pixel_x = -4; - pixel_y = 2 - }, -/obj/item/device/radio/intercom{ - dir = 2; - name = "Station Intercom (General)"; - pixel_y = -31 - }, -/obj/item/book/manual/wiki/security_space_law{ - pixel_x = -4; - pixel_y = 4 - }, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/escape) -"dar" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plasteel/floorgrime, -/area/shuttle/escape) -"das" = ( -/obj/structure/table, -/obj/item/scalpel{ - pixel_y = 12 - }, -/obj/item/circular_saw, -/obj/item/retractor{ - pixel_x = 4 - }, -/obj/item/hemostat{ - pixel_x = -4 - }, -/obj/item/clothing/gloves/color/latex, -/obj/item/clothing/mask/surgical, -/obj/item/device/radio/intercom{ - dir = 2; - name = "Station Intercom (General)"; - pixel_x = -27 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"dat" = ( -/obj/machinery/vending/wallmed{ - name = "Emergency NanoMed"; - req_access_txt = "0"; - use_power = 0 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"dau" = ( -/obj/structure/sink, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"dav" = ( -/obj/structure/rack, -/obj/item/tank/internals/oxygen/red, -/obj/item/clothing/suit/fire/firefighter, -/obj/item/clothing/mask/gas, -/obj/item/clothing/head/hardhat/red, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/shuttle/escape) -"daw" = ( -/obj/item/device/radio/intercom{ - dir = 2; - name = "Station Intercom (General)"; - pixel_y = -31 - }, -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/effect/turf_decal/bot, -/obj/machinery/light/small, -/turf/open/floor/plasteel, -/area/shuttle/escape) -"dax" = ( -/obj/structure/extinguisher_cabinet, -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "daA" = ( /obj/machinery/door/window/southleft{ dir = 2; @@ -75405,11 +72343,7 @@ /turf/open/floor/engine, /area/science/xenobiology) "daC" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/science/xenobiology) "daD" = ( @@ -76327,7 +73261,7 @@ /area/science/xenobiology) "dcK" = ( /obj/machinery/disposal/bin, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ pixel_y = -32 }, /obj/structure/disposalpipe/trunk{ @@ -76805,34 +73739,6 @@ /obj/docking_port/stationary/public_mining_dock, /turf/open/floor/plating, /area/shuttle/auxillary_base) -"ddH" = ( -/obj/machinery/door/airlock/external, -/turf/open/floor/pod/dark, -/area/shuttle/transport) -"ddJ" = ( -/obj/machinery/door/airlock/titanium, -/turf/open/floor/pod/light, -/area/shuttle/transport) -"ddK" = ( -/obj/machinery/computer/shuttle/ferry/request{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/shuttle/transport) -"ddL" = ( -/obj/structure/shuttle/engine/heater{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 1 - }, -/turf/open/floor/plating/airless, -/area/shuttle/transport) -"ddM" = ( -/obj/machinery/door/airlock/external, -/turf/open/floor/pod/light, -/area/shuttle/transport) "ddO" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible, /turf/open/floor/plasteel/dark, @@ -77178,7 +74084,7 @@ /turf/open/floor/plating, /area/engine/engineering) "deM" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/engine/engineering) "deN" = ( @@ -77215,7 +74121,7 @@ /turf/open/floor/engine, /area/engine/engineering) "deV" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, /area/engine/supermatter) "deW" = ( @@ -77255,7 +74161,7 @@ /turf/closed/wall/r_wall, /area/engine/supermatter) "dfc" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/engine/supermatter) "dfd" = ( @@ -77287,7 +74193,7 @@ /turf/open/floor/plating, /area/engine/engineering) "dfh" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall/r_wall, /area/engine/engineering) "dfi" = ( @@ -78923,33 +75829,18 @@ }, /turf/open/floor/plating, /area/hallway/secondary/entry) -"djE" = ( -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) "djM" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 4 - }, -/obj/docking_port/mobile/arrivals, /obj/docking_port/stationary{ dir = 8; dwidth = 3; height = 15; id = "arrivals_stationary"; name = "arrivals"; - width = 7 + width = 7; + roundstart_template = /datum/map_template/shuttle/arrival/box }, -/turf/open/floor/plating/airless, -/area/shuttle/arrival) -"djR" = ( -/obj/machinery/door/airlock/titanium{ - name = "Arrivals Shuttle Airlock" - }, -/turf/open/floor/plating, -/area/shuttle/arrival) +/turf/open/space/basic, +/area/space) "djW" = ( /obj/structure/table/wood, /obj/item/clipboard, @@ -78967,192 +75858,6 @@ }, /turf/open/floor/plating, /area/chapel/main) -"dli" = ( -/obj/structure/chair, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"dlj" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"dlk" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small/built{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"dll" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/built{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"dlm" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/built{ - dir = 2 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"dln" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"dlo" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"dlp" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/light/small/built{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"dlq" = ( -/obj/structure/chair, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"dlr" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"dls" = ( -/obj/machinery/holopad, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"dlt" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"dlv" = ( -/obj/structure/table, -/obj/item/stack/medical/gauze, -/obj/item/stack/medical/bruise_pack, -/obj/item/stack/medical/ointment, -/obj/machinery/status_display{ - dir = 8; - pixel_x = 32 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"dlw" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/machinery/light, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"dlx" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/escape) -"dly" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/floorgrime, -/area/shuttle/escape) -"dlz" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/escape) -"dlA" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) -"dlB" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/mining) -"dlC" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/supply) -"dlD" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/supply) -"dlE" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/shuttle/transport) -"dlF" = ( -/obj/machinery/light/small, -/turf/open/floor/pod/light, -/area/shuttle/transport) -"dlG" = ( -/obj/machinery/light, -/turf/open/floor/pod/light, -/area/shuttle/transport) -"dlH" = ( -/obj/machinery/sleeper{ - dir = 8 - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) "dlI" = ( /turf/closed/wall/r_wall, /area/engine/supermatter) @@ -79257,9 +75962,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/port/fore) -"dnH" = ( -/turf/open/floor/plating, -/area/maintenance/port/fore) "dnM" = ( /obj/structure/chair{ dir = 8 @@ -79355,6 +76057,13 @@ "dqT" = ( /turf/closed/wall/r_wall, /area/maintenance/starboard/fore) +"dqU" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/vending/coffee, +/turf/open/floor/plasteel, +/area/science/mixing) "drQ" = ( /turf/open/floor/plating{ icon_state = "platingdmg2" @@ -79551,9 +76260,6 @@ "dwL" = ( /turf/closed/wall/r_wall, /area/maintenance/starboard/aft) -"dwN" = ( -/turf/open/floor/plating, -/area/maintenance/starboard/aft) "dwQ" = ( /obj/structure/chair/stool, /turf/open/floor/plating, @@ -79582,10 +76288,6 @@ icon_state = "platingdmg3" }, /area/maintenance/port/aft) -"dxO" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) "dxQ" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -79638,17 +76340,6 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/aft) -"dyQ" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating{ - icon_state = "platingdmg1" - }, -/area/maintenance/starboard/aft) "dzc" = ( /obj/machinery/space_heater, /turf/open/floor/plating, @@ -79670,14 +76361,6 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"dzR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) "dAd" = ( /obj/machinery/power/apc/highcap/five_k{ dir = 2; @@ -79841,7 +76524,7 @@ /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ id = "atmos"; - name = "Atmos Blast Door" + name = "Atmospherics Blast Door" }, /obj/structure/cable/yellow, /turf/open/floor/plating, @@ -80449,178 +77132,178 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/maintenance/starboard/fore) -"dDN" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" +"dGH" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"dLK" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/structure/chair/office/light{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"dDO" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/structure/chair/office/light, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"dDP" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/structure/table, -/obj/item/device/megaphone, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"EDa" = ( -/obj/docking_port/stationary{ - dheight = 1; - dir = 8; - dwidth = 12; - height = 17; - id = "syndicate_nw"; - name = "northwest of station"; - turf_type = /turf/open/space; - width = 23 - }, -/turf/open/space/basic, -/area/space/nearstation) -"EDb" = ( -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/space/nearstation) -"EDi" = ( -/obj/docking_port/mobile{ - callTime = 250; - dheight = 0; - dir = 2; - dwidth = 11; - height = 15; - id = "whiteship"; - launch_status = 0; - movement_force = list("KNOCKDOWN" = 0, "THROW" = 0); - name = "NT Recovery White-Ship"; - port_direction = 8; - preferred_direction = 4; - roundstart_move = "whiteship_away"; - width = 28 - }, -/obj/machinery/door/airlock/titanium{ - name = "recovery shuttle external airlock" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/docking_port/stationary{ - dir = 2; - dwidth = 11; - height = 15; - id = "whiteship_home"; - name = "SS13: Auxiliary Dock, Station-Port"; - width = 28 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/abandoned) -"EDj" = ( -/obj/structure/sign/restroom, -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"EDk" = ( -/obj/structure/sign/cargo, -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"EDl" = ( -/obj/machinery/porta_turret/centcom_shuttle/weak{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"EDm" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/machinery/turretid{ - icon_state = "control_kill"; - lethal = 1; - locked = 0; - pixel_x = -28; - req_access = null - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"EDo" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, /turf/open/floor/plating, -/area/engine/atmos) -"EDw" = ( -/obj/machinery/rnd/protolathe/department/service, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/hydroponics) -"EDx" = ( -/turf/closed/wall/mineral/plastitanium, -/area/hallway/secondary/entry) -"EDz" = ( -/turf/closed/wall/mineral/plastitanium, -/area/security/prison) -"EDB" = ( -/turf/closed/wall/mineral/plastitanium, -/area/crew_quarters/fitness/recreation) -"EDC" = ( -/turf/closed/wall/mineral/plastitanium, -/area/engine/break_room) -"EDD" = ( +/area/maintenance/starboard) +"eoK" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/structure/chair{ - dir = 4 +/turf/open/floor/plating, +/area/maintenance/starboard) +"eqq" = ( +/obj/item/screwdriver, +/obj/structure/table/reinforced, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 }, -/obj/effect/landmark/start/security_officer, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 +/obj/structure/cable/yellow{ + icon_state = "4-8" }, -/turf/open/floor/plasteel/red/side{ +/turf/open/floor/plasteel/white, +/area/science/circuit) +"eqG" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/science/circuit) +"evy" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/space) +"eEe" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, -/area/security/main) -"EDE" = ( +/turf/open/floor/plasteel/white, +/area/science/circuit) +"eFN" = ( +/obj/structure/bodycontainer/crematorium{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/office) +"eXy" = ( +/obj/machinery/airalarm{ + pixel_y = 32 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal/bin, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"eZe" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"fdr" = ( /obj/structure/closet/firecloset, /turf/open/floor/plating, /area/engine/engineering) -"EDF" = ( +"fDD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"gfh" = ( +/obj/machinery/libraryscanner, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"gix" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/research/glass{ + name = "Circuitry Lab"; + req_access_txt = "47" + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"gnZ" = ( +/obj/item/device/radio/intercom{ + pixel_y = -30 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"gEk" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"gGT" = ( +/obj/effect/landmark/start/scientist, +/obj/structure/chair/office/light{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"gHh" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/airlock/maintenance, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"gJs" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/atmos) +"gLC" = ( +/obj/structure/reagent_dispensers/water_cooler, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"gNe" = ( /obj/machinery/light/small{ dir = 8 }, /turf/open/floor/plating, /area/maintenance/aft) -"EDG" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" +"gRS" = ( +/obj/structure/table/reinforced, +/obj/item/device/integrated_circuit_printer/upgraded, +/obj/item/device/integrated_electronics/analyzer, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"hfJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/obj/effect/landmark/blobstart, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"EDH" = ( -/obj/machinery/droneDispenser, -/turf/open/floor/plating, -/area/maintenance/aft) -"Ljw" = ( -/obj/structure/sign/poster/official/random, -/turf/closed/wall, -/area/hydroponics) -"QsX" = ( +/obj/machinery/autolathe, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"ioI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/research/glass{ + name = "Circuitry Lab"; + req_access_txt = "47" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/science/circuit) +"izu" = ( /obj/machinery/autolathe{ name = "public autolathe" }, @@ -80634,33 +77317,60 @@ id = "research_shutters"; name = "research shutters" }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/whitepurple, /area/science/lab) -"QsY" = ( -/obj/structure/table, -/obj/item/device/paicard, -/turf/open/floor/plasteel/whitepurple/side{ - dir = 2 +"jwW" = ( +/turf/closed/wall/mineral/plastitanium, +/area/crew_quarters/fitness/recreation) +"jyv" = ( +/obj/item/stock_parts/cell/super, +/obj/item/stock_parts/cell/super, +/obj/item/stack/sheet/metal/fifty, +/obj/structure/table/reinforced, +/obj/machinery/computer/security/telescreen{ + desc = "Used for watching the RD's goons from the safety of your own office."; + name = "Research Monitor"; + network = list("RD"); + pixel_y = 32 }, -/area/science/research) -"QsZ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/turf/open/floor/plasteel/white, +/area/science/circuit) +"kfu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"krD" = ( +/turf/closed/wall, +/area/science/circuit) +"kys" = ( +/obj/structure/cable/yellow{ + icon_state = "0-8" }, -/turf/open/floor/plasteel/whitepurple/side{ - dir = 2 - }, -/area/science/research) -"Qta" = ( -/obj/structure/chair/office/light{ +/obj/machinery/power/apc{ + areastring = "/area/hallway/secondary/service"; dir = 1; - pixel_y = 3 + name = "Service Hall APC"; + pixel_y = 25 }, -/turf/open/floor/plasteel/whitepurple/side{ - dir = 1 +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 }, -/area/science/lab) -"Qtb" = ( +/turf/open/floor/plasteel, +/area/hallway/secondary/service) +"kOt" = ( +/obj/item/device/multitool, +/obj/item/screwdriver, +/obj/structure/table/reinforced, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/light_switch{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"kVo" = ( /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -80668,21 +77378,32 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"Qtc" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" +"lal" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/science/circuit) -"Qtd" = ( +"llb" = ( +/obj/structure/table/reinforced, +/obj/item/device/integrated_circuit_printer/upgraded, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"lsv" = ( +/obj/machinery/power/apc{ + areastring = "/area/science/circuit"; + dir = 1; + name = "Circuitry Lab APC"; + pixel_y = 30 + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/structure/table/reinforced, +/obj/item/device/multitool, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"lzk" = ( /obj/structure/cable/yellow{ icon_state = "2-8" }, @@ -80697,27 +77418,15 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) -"Qte" = ( -/obj/structure/target_stake, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"Qtf" = ( -/obj/structure/closet/crate, -/obj/item/target/alien, -/obj/item/target/alien, -/obj/item/target/clown, -/obj/item/target/clown, -/obj/item/target/syndicate, -/obj/item/target/syndicate, -/obj/item/gun/energy/laser/practice, -/obj/item/gun/energy/laser/practice, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"Qtg" = ( +"lMz" = ( /obj/structure/falsewall, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"Qth" = ( +"lMJ" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"mjJ" = ( /obj/structure/reagent_dispensers/beerkeg{ desc = "One of the more successful achievements of the Nanotrasen Corporate Warfare Division, their nuclear fission explosives are renowned for being cheap to produce and devastatingly effective. Signs explain that though this particular device has been decommissioned, every Nanotrasen station is equipped with an equivalent one, just in case. All Captains carefully guard the disk needed to detonate them - at least, the sign says they do. There seems to be a tap on the back."; icon = 'icons/obj/machines/nuke.dmi'; @@ -80728,86 +77437,99 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"Qti" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/space) -"Qtj" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space) -"Qtk" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space) -"Qtl" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/research/glass{ - name = "Circuitry Lab"; - req_access_txt = "47" - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"Qtm" = ( -/turf/closed/wall, -/area/science/circuit) -"Qtn" = ( -/turf/closed/wall, -/area/science/circuit) -"Qto" = ( -/turf/closed/wall, -/area/science/circuit) -"Qtp" = ( -/turf/closed/wall, -/area/science/circuit) -"Qtq" = ( -/turf/closed/wall, -/area/science/circuit) -"Qtr" = ( -/turf/closed/wall, -/area/science/circuit) -"Qts" = ( -/turf/closed/wall, -/area/science/circuit) -"Qtt" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/science/circuit) -"Qtu" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/science/circuit) -"Qtv" = ( -/obj/machinery/airalarm{ - pixel_y = 32 - }, -/obj/structure/disposalpipe/trunk{ +"mvj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/hallway/secondary/service) +"mzh" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, /turf/open/floor/plasteel/white, /area/science/circuit) -"Qtw" = ( -/obj/item/device/multitool, -/obj/item/screwdriver, +"ngl" = ( +/obj/machinery/bookbinder, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"nnK" = ( +/obj/item/stack/sheet/glass/fifty, +/obj/item/paper_bin, +/obj/item/pen, +/obj/structure/table/reinforced, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 32 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"noG" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/science/circuit) +"nyo" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/service) +"nAG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"obb" = ( +/obj/structure/target_stake, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"ocT" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/item/stock_parts/cell/super, +/obj/item/stock_parts/cell/super, +/obj/item/stack/sheet/metal/fifty, /obj/structure/table/reinforced, /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/machinery/light_switch{ +/obj/machinery/computer/security/telescreen{ + desc = "Used for watching the RD's goons from the safety of your own office."; + name = "Research Monitor"; + network = list("RD"); pixel_y = 32 }, /turf/open/floor/plasteel/white, /area/science/circuit) -"Qtx" = ( +"ohj" = ( +/obj/item/device/integrated_electronics/analyzer, +/obj/item/device/integrated_electronics/debugger, +/obj/item/device/integrated_electronics/wirer, +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"oub" = ( +/obj/structure/sign/poster/official/random, +/turf/closed/wall, +/area/hydroponics) +"oLW" = ( /obj/structure/table/reinforced, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -80823,296 +77545,88 @@ /obj/item/device/integrated_electronics/debugger, /turf/open/floor/plasteel/white, /area/science/circuit) -"Qty" = ( -/obj/machinery/light{ - dir = 1 +"oRL" = ( +/obj/docking_port/stationary{ + dir = 2; + dwidth = 11; + height = 15; + id = "whiteship_home"; + name = "SS13: Auxiliary Dock, Station-Port"; + width = 28 }, -/obj/item/stock_parts/cell/super, -/obj/item/stock_parts/cell/super, -/obj/item/stack/sheet/metal/fifty, +/turf/open/space/basic, +/area/space) +"oUA" = ( /obj/structure/table/reinforced, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the RD's goons from the safety of your own office."; - name = "Research Monitor"; - network = list("RD"); - pixel_y = 32 - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"Qtz" = ( -/obj/item/screwdriver, -/obj/structure/table/reinforced, -/obj/structure/sign/poster/official/random{ - pixel_y = 32 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"QtA" = ( -/obj/machinery/power/apc{ - areastring = "/area/science/circuit"; - dir = 1; - name = "Circuitry Lab APC"; - pixel_y = 30 - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/structure/table/reinforced, -/obj/item/device/multitool, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"QtB" = ( -/obj/item/stock_parts/cell/super, -/obj/item/stock_parts/cell/super, -/obj/item/stack/sheet/metal/fifty, -/obj/structure/table/reinforced, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the RD's goons from the safety of your own office."; - name = "Research Monitor"; - network = list("RD"); - pixel_y = 32 - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"QtC" = ( -/turf/closed/wall, -/area/science/circuit) -"QtD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/science/circuit) -"QtE" = ( -/turf/open/floor/plasteel, -/area/science/circuit) -"QtF" = ( -/obj/effect/turf_decal/stripes/line{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel, -/area/science/circuit) -"QtG" = ( +/obj/item/paper_bin, +/obj/item/pen, /turf/open/floor/plasteel/white, /area/science/circuit) -"QtH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"QtI" = ( -/obj/structure/table/reinforced, -/obj/item/device/integrated_circuit_printer/upgraded, -/obj/item/device/integrated_electronics/analyzer, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"QtJ" = ( -/obj/effect/landmark/start/scientist, -/obj/structure/chair/office/light{ - dir = 1 +"pvA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"QtK" = ( -/obj/item/device/integrated_electronics/wirer, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"QtL" = ( -/obj/structure/table/reinforced, -/obj/item/device/integrated_circuit_printer/upgraded, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"QtM" = ( -/obj/structure/chair/office/light{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"QtN" = ( -/obj/item/device/integrated_electronics/analyzer, -/obj/item/device/integrated_electronics/debugger, -/obj/item/device/integrated_electronics/wirer, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"QtO" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, -/area/science/circuit) -"QtP" = ( +/area/maintenance/starboard) +"pCV" = ( /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"qnJ" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /obj/machinery/door/airlock/maintenance, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"QtQ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/science/circuit) -"QtR" = ( -/obj/structure/table/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/item/paper_bin, -/obj/item/pen, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"QtS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"QtT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/rnd/protolathe/department/science, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"QtU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/autolathe, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"QtV" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"QtW" = ( -/obj/item/stack/sheet/glass/fifty, -/obj/item/paper_bin, -/obj/item/pen, -/obj/structure/table/reinforced, -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet{ - pixel_x = 32 - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"QtX" = ( -/turf/closed/wall, -/area/science/circuit) -"QtY" = ( -/obj/structure/chair/comfy, -/turf/open/floor/plasteel, -/area/science/misc_lab) -"QtZ" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/science/misc_lab) -"Qua" = ( -/obj/structure/reagent_dispensers/water_cooler, -/turf/open/floor/plasteel, -/area/science/misc_lab) -"Qub" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/science/circuit) -"Quc" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/science/circuit) -"Qud" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/science/circuit) -"Que" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/science/circuit) -"Quf" = ( -/obj/structure/table/glass, -/obj/machinery/camera/autoname{ - dir = 4; - network = list("SS13") - }, -/turf/open/floor/plasteel, -/area/science/misc_lab) -"Qug" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/science/misc_lab) -"Quh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/science/misc_lab) -"Qui" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/research/glass{ - name = "Circuitry Lab"; - req_access_txt = "47" - }, /obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/science/circuit) +"qqg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"qBh" = ( +/obj/structure/table, +/obj/item/device/paicard, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 2 + }, +/area/science/research) +"qBq" = ( +/turf/closed/wall/mineral/plastitanium, +/area/hallway/secondary/entry) +"qJZ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, /turf/open/floor/plasteel, /area/science/circuit) -"Quj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"Quk" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"Qul" = ( -/obj/machinery/light, -/obj/structure/sign/poster/official/random{ - pixel_y = -32 - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"Qum" = ( -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"Qun" = ( -/obj/item/device/radio/intercom{ - pixel_y = -30 - }, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"Quo" = ( +"qRM" = ( /obj/machinery/camera{ c_tag = "Research Division Circuitry Lab"; dir = 1; @@ -81120,95 +77634,99 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) -"Qup" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/white, +"rzX" = ( +/obj/structure/chair/office/light{ + dir = 1; + pixel_y = 3 + }, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 1 + }, +/area/science/lab) +"rQK" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/landmark/start/security_officer, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/red/side{ + dir = 8 + }, +/area/security/main) +"rSL" = ( +/obj/machinery/vending/snack/random, +/turf/open/floor/plasteel, +/area/science/mixing) +"sdi" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, /area/science/circuit) -"Quq" = ( +"siF" = ( +/obj/structure/grille, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"sJW" = ( +/turf/closed/wall/mineral/plastitanium, +/area/engine/break_room) +"tjH" = ( /obj/structure/table/reinforced, /obj/machinery/computer/libraryconsole/bookmanagement, /turf/open/floor/plasteel/white, /area/science/circuit) -"Qur" = ( -/obj/machinery/bookbinder, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"Qus" = ( -/obj/machinery/libraryscanner, -/turf/open/floor/plasteel/white, -/area/science/circuit) -"Qut" = ( -/turf/closed/wall, -/area/science/circuit) -"Quu" = ( +"tsx" = ( /obj/structure/cable/yellow{ - icon_state = "1-2" + icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/science/misc_lab) -"Quv" = ( -/turf/closed/wall, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"txj" = ( +/obj/structure/chair/office/light{ + dir = 1 + }, +/turf/open/floor/plasteel/white, /area/science/circuit) -"Quw" = ( +"tFJ" = ( +/obj/structure/bodycontainer/morgue{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/medical/morgue) +"tVY" = ( +/obj/structure/closet/crate, +/obj/item/target/alien, +/obj/item/target/alien, +/obj/item/target/clown, +/obj/item/target/clown, +/obj/item/target/syndicate, +/obj/item/target/syndicate, +/obj/item/gun/energy/laser/practice, +/obj/item/gun/energy/laser/practice, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"upN" = ( /obj/effect/turf_decal/stripes/line{ - dir = 2 + dir = 5 }, -/turf/closed/wall, +/turf/open/floor/plasteel, /area/science/circuit) -"Qux" = ( -/turf/closed/wall, -/area/science/circuit) -"Quy" = ( -/turf/closed/wall, -/area/science/circuit) -"Quz" = ( -/turf/closed/wall, -/area/science/circuit) -"QuA" = ( -/turf/closed/wall, -/area/science/circuit) -"QuB" = ( -/turf/closed/wall, -/area/science/circuit) -"QuC" = ( -/turf/closed/wall, -/area/science/circuit) -"QuD" = ( -/turf/closed/wall, -/area/science/circuit) -"QuE" = ( -/turf/closed/wall, -/area/science/circuit) -"QuF" = ( -/turf/closed/wall, -/area/science/circuit) -"QuG" = ( -/turf/closed/wall, -/area/science/circuit) -"QuH" = ( -/turf/closed/wall, -/area/science/circuit) -"QuI" = ( -/turf/closed/wall, -/area/science/circuit) -"QuJ" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"QuK" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"QuL" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"QuM" = ( +"urv" = ( +/turf/closed/wall/mineral/plastitanium, +/area/security/prison) +"uun" = ( /obj/machinery/vending/assist, /turf/open/floor/plasteel, /area/science/mixing) -"QuN" = ( +"uGW" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, @@ -81217,76 +77735,130 @@ }, /turf/open/floor/plasteel, /area/science/mixing) -"QuO" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"QuP" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"QuQ" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"QuR" = ( -/obj/machinery/vending/snack/random, -/turf/open/floor/plasteel, -/area/science/mixing) -"QuS" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/machinery/vending/coffee, -/turf/open/floor/plasteel, -/area/science/mixing) -"QuT" = ( -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"QuU" = ( +"uHc" = ( /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 }, /turf/open/floor/plating, -/area/maintenance/starboard/aft) -"QuV" = ( +/area/maintenance/starboard) +"uJU" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/starboard) +"uRM" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel/whitepurple/side{ + dir = 2 + }, +/area/science/research) +"uTS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/rnd/protolathe/department/science, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"uYk" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"vhG" = ( +/obj/structure/table/glass, +/obj/machinery/camera/autoname{ + dir = 4; + network = list("SS13") + }, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"vLD" = ( /obj/structure/lattice, /turf/open/space/basic, /area/space) -"QuW" = ( -/obj/effect/landmark/event_spawn, +"wFH" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/landmark/blobstart, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"wKo" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/closed/wall, +/area/science/circuit) +"wOE" = ( +/obj/machinery/droneDispenser, +/turf/open/floor/plating, +/area/maintenance/aft) +"wPk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/white, /area/science/circuit) -"QuX" = ( -<<<<<<< HEAD -/obj/effect/landmark/event_spawn, +"wRy" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"xkG" = ( +/obj/item/device/integrated_electronics/wirer, +/obj/structure/table/reinforced, /turf/open/floor/plasteel/white, /area/science/circuit) -======= -/obj/structure/bodycontainer/morgue{ +"xyp" = ( +/obj/docking_port/stationary{ + dheight = 1; + dir = 8; + dwidth = 12; + height = 17; + id = "syndicate_nw"; + name = "northwest of station"; + turf_type = /turf/open/space; + width = 23 + }, +/turf/open/space/basic, +/area/space/nearstation) +"xAp" = ( +/obj/structure/chair/comfy, +/turf/open/floor/plasteel, +/area/science/misc_lab) +"xVl" = ( +/turf/closed/wall, +/area/hallway/secondary/service) +"xVP" = ( +/obj/machinery/light, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/open/floor/plasteel/white, +/area/science/circuit) +"ygk" = ( +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/floor/plasteel/dark, -/area/medical/morgue) -"QuY" = ( -/obj/structure/bodycontainer/morgue{ +/obj/machinery/light{ dir = 8 }, -/turf/open/floor/plasteel/dark, -/area/medical/morgue) -"QuZ" = ( -/obj/structure/bodycontainer/crematorium{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/chapel/office) ->>>>>>> 2db9ecb... Morgue and Crematorium Repositions (#35113) +/turf/open/floor/plasteel, +/area/science/circuit) +"ykE" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/white, +/area/science/circuit) (1,1,1) = {" aaa @@ -87086,11 +83658,11 @@ aaa aaa aaa aaa -cVF -cVF -cVI -cVF -cVF +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -87339,19 +83911,19 @@ aaa aac aaa aaa -cVN -cWf -cWf -cWf -cVG -cWX -cVY -cXw -cVG -cWf -cWf -cWf -cYq +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -87595,21 +84167,21 @@ aaa aaa aaa aaa -cVF -cVF -cWe -cWe -cVF -cVF -cVF -cXg -cVF -cVF -cVF -cWe -cWe -cVF -cVF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -87852,21 +84424,21 @@ aaa aaa aaa aaa -cVF -cVF -cVF -cVF -cVF -cWO -cWY -cVY -cXx -cXF -cVF -cVF -cVF -cVF -cVF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -88109,21 +84681,21 @@ aaa aaa aaa aaa -cVF -cVO -cVF -cWu -EDj -cWo -cWo -cWo -cWo -cWo -cVF -cXS -cYd -cYr -cVF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -88366,21 +84938,21 @@ aaa aaa aaa aaa -cVG -cVR -cWi -cWv -cWG -cWQ -cXa -cXi -cXb -cWo -cXM -cXT -cVY -cYr -cVG +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -88623,21 +85195,21 @@ aaa aaa aaa aaa -cVF -cVF -cVF -cVF -cVF -cWP -cWZ -cXh -cXy -cWo -cXL -cVY -cWo -cYs -cVG +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -88880,21 +85452,21 @@ aaa aaa aaa aaa -cVG -cVT -cWk -cWx -cWI -cWR -cWZ -cXk -cXy -dlm -cVF -cXU -cYf -cYr -cVF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -89137,21 +85709,21 @@ aaa aaa aaa aaa -cVF -cVS -cWj -cWw -cWH -cWo -cWZ -cXj -cXy -cWo -cVF -cVF -cYe -cVF -cVF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -89394,21 +85966,21 @@ aaa aaa aaa aaa -cVF -cVF -cVF -cVF -cVF -cWo -cXb -cXl -cXa -cWo -cXN -cWo -cYg -cYu -cVF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -89651,21 +86223,21 @@ aaa aaa aaa aaa -cVF -cVU -cWl -cWy -cVF -cWS -cWo -cVY -cWo -cWo -cVF -cXV -cVY -cYt -cVG +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -89908,21 +86480,21 @@ aaf aaf aaf aaf -cVG -cVV -cWm -cWz -cVF -cVF -cVF -cXm -cVF -cVF -cVF -cXX -cYi -cYw -cVG +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -90156,7 +86728,7 @@ aaa aaf aaa aaa -cVm +aaa aaa aaa aaf @@ -90165,21 +86737,21 @@ aaa aaf aaa aaf -cVG -cVV -cVY -cWo -cWn -cVY -cWo -cWo -cWo -cWo -cVF -cXW -cYh -cYv -cVF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -90388,7 +86960,7 @@ aaa aaa aaa aaa -EDx +qBq aRA aRA aRA @@ -90412,9 +86984,9 @@ aVs aVs aVs aaa -cVm -cVw -cVm +aaa +aaa +aaa aaa aVs aVs @@ -90422,21 +86994,21 @@ aVs aVs aaa aaf -cVF -cVX -cWo -cWB -cVF -cWo -cXa -cXo -cXa -cWo -cVF -cVF -cVF -cVF -cVF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -90656,11 +87228,11 @@ aVs aaf aaf aaa -bcS -bcS -bcU -bcS -bcS +aaa +aaa +aaa +aaa +aaa aaa aaf aaf @@ -90669,9 +87241,9 @@ bvB aWT aVs aaa -cVr -cVv -ddL +aaa +aaa +aaa aaa aVs bKS @@ -90679,21 +87251,21 @@ aWT aVs aVs aVs -cVF -cVF -cWn -cVF -cVF -dll -cXb -cXn -cXb -cXG -cVF -cXY -dlo -cYx -cVF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -90913,11 +87485,11 @@ aYC aaa aaf aaa -bcS -bgq -beC -bjU -bcS +aaa +aaa +aaa +aaa +aaa aaa aaf aaa @@ -90926,9 +87498,9 @@ aVu aWU aRA aaa -cVn -dlF -cVn +aaa +aaa +aaa aaa aRA btS @@ -90936,21 +87508,21 @@ aWU bOd bPA bOd -cVI -cVZ -cWo -cVY -cWL -cWo -cWR -cXq -cWo -cWo -cXO -cWo -cYl -cYz -cVG +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -91170,11 +87742,11 @@ aVs aaf aaf aaa -bcS -dli -beC -dlj -bcS +aaa +aaa +aaa +aaa +aaa aaa aaf aaf @@ -91182,37 +87754,32 @@ aVs aVw aWU aVs -cVn -cVn -ddJ -cVn -cVn +aaa +aaa +aaa +aaa +aaa aVs aVw aWU bOd aZZ bOd -EDi -<<<<<<< HEAD -cVY -cWp -dlk -cWL -cVY -cWo -cXp -cVY -cWo -cVF -cXa -dlp -cYy -cVF -======= +oRL +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa ->>>>>>> 2db9ecb... Morgue and Crematorium Repositions (#35113) aaa aaa aaa @@ -91421,7 +87988,7 @@ aaa aaa aaf aaa -EDx +qBq aRA aRA aRA @@ -91431,45 +87998,45 @@ aWV aRA aaa aaa -bcS -bcS -bcS -bcT -bcS -bcS -bcS +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aRA bvC bxt aYC -cVp -cVu -cVv -cVB -cVp +aaa +aaa +aaa +aaa +aaa aYC bKT aWU aVs aVs aVs -cVF -cVF -cWr -cVF -cVF -cWo -cXa -cXs -cXa -dln -cVF -cVF -cVF -cVF -cVF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -91688,45 +88255,45 @@ aWU aVs aVs aVs -bcS -beB -beC -beC -beC -blN -bcS +aaa +aaa +aaa +aaa +aaa +aaa +aaa aVs aVs aVs bvD aWU aVs -cVn -cVu -cVv -cVB -cVn +aaa +aaa +aaa +aaa +aaa aVs aVw aWU aVs aaa aaf -cVF -cWa -cWq -cWC -EDk -cWo -cXa -cXr -cXb -cWo -cXP -cYa -cYm -cYA -cVF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -91945,45 +88512,45 @@ aWU djz aZZ djC -bcT -beC -djE -djE -djE -beC -djR +aaa +aaa +aaa +aaa +aaa +aaa +aaa djz bsk djC aVu bxu aRA -cVn -dlE -cVv -cVv -cVn +aaa +aaa +aaa +aaa +aaa aRA aVu aWU aVs aaf aaf -cVG -cWc -cWs -cWs -cWN -cWo -cWo -cVY -cWo -cWo -cXQ -cVY -cYo -cYC -cVG +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -92146,7 +88713,7 @@ aaa aaa aaa aaa -EDa +xyp aaa aaa aaa @@ -92202,45 +88769,45 @@ aWU aVs aVs aVs -bcS -beD -beC -beC -beC -blO -bcS +aaa +aaa +aaa +aaa +aaa +aaa +aaa aVs aVs aVs aVu bxv aVs -ddH -cVv -ddK -cVv -ddM +aaa +aaa +aaa +aaa +aaa aVs aVu bMu aRA aaa aaf -cVG -cWb -cWs -cWD -cVF -cVF -cVF -cXt -cVF -cVF -cVF -cYb -cYn -cYB -cVG +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -92459,45 +89026,45 @@ aWW aWT baa aVs -bcU -beE -djE -djE -djE -beC -bcU +aaa +aaa +aaa +aaa +aaa +aaa +aaa aVs bsl btO bvE bxw aVs -cVn -cVv -cVv -dlG -cVn +aaa +aaa +aaa +aaa +aaa aVs bKU bMv aVs aaa aaf -cVF -cWd -cWt -cWE -cVF -cWU -EDm -cWo -cXa -dDP -cVF -cJI -cYp -cYD -cVF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaf @@ -92716,53 +89283,45 @@ bvF aWU baa aVs -bcS -beF -beC -beC -beC -blP -bcS +aaa +aaa +aaa +aaa +aaa +aaa +aaa aVs bsm aVu bvF bxw aVs -<<<<<<< HEAD -cVn -cVu -cVv -cVB -cVn -======= aaa aaa aaa aaa aaa ->>>>>>> 2db9ecb... Morgue and Crematorium Repositions (#35113) aVs aVu bMw aRA aaa aaf -cVF -cVF -cVG -cVF -cVF -cWT -dDN -cWo -dDO -cXH -cVF -cVF -cVG -cVF -cVF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaf @@ -92981,24 +89540,24 @@ bvF aWU bab aVs -bcS -beG -djE -djE -djE -blQ -bcS +aaa +aaa +aaa +aaa +aaa +aaa +aaa aVs baa btP aWX bxx aRA -cVp -cVu -cVv -cVB -cVp +aaa +aaa +aaa +aaa +aaa aRA btS bxw @@ -93009,13 +89568,13 @@ aaa aaa aaa aaa -cVG -cWW -cWo -cXv -cXD -cXK -cVG +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -93238,24 +89797,24 @@ aWY aYE bac aVs -bcU -beH -beC -beC -beC -beC -bcU +aaa +aaa +aaa +aaa +aaa +aaa +aaa aVs bsn btQ bvG bxw aVs -cVn -cVp +aaa +aaa cVx -cVp -cVn +aaa +aaa aVs aVu bxw @@ -93266,13 +89825,13 @@ aaa aaa aaa aaa -cVG -cWV -cXf -cXu -cXC -cXJ -cVG +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -93495,13 +90054,13 @@ aWZ aVs aVs aVs -bcS -beI -djE -djE -djE -blR -bcS +aaa +aaa +aaa +aaa +aaa +aaa +aaa aVs aVs aVs @@ -93523,13 +90082,13 @@ aaa aaa aaa aaa -EDl -cVG -cVG -cVG -cVG -cVG -EDl +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -93752,15 +90311,6 @@ aWZ djz aZZ djC -<<<<<<< HEAD -bcT -beC -beC -beC -beC -beC -bcT -======= aaa aaa aaa @@ -93768,7 +90318,6 @@ aaa aaa aaa aaa ->>>>>>> 2db9ecb... Morgue and Crematorium Repositions (#35113) djz bsk djC @@ -94019,13 +90568,13 @@ aWZ aVs aVs aVs -bcS -bcS -bgt -bgt -bgt -bcS -bcS +aaa +aaa +aaa +aaa +aaa +aaa +aaa aVs aVs aVs @@ -94276,13 +90825,13 @@ aXa aYF aVs aaa -bcS -beJ -bgu +aaa +aaa +aaa djM -bgu -blS -bcS +aaa +aaa +aaa aaa aVs btR @@ -95023,7 +91572,7 @@ arX dne dne dne -dnH +aRG aoc drQ dne @@ -95032,14 +91581,14 @@ dne dst aDc dhE -dnH -dnH +aRG +aRG cWA auG dnd dhK dnk -dnH +aRG aSP dne dhM @@ -95794,25 +92343,25 @@ doJ atq aaf aaa -awN -awN -awO -awN -awO -awN -awN aaa -cUS -cUS -cUS -cUS -cUS -cUS -cUS -cUS -cUS -cUS -cUS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa dne @@ -96051,26 +92600,26 @@ doJ atq aaf aaa -awN -ayg -azh -dlB -azi -aDe -awN aaa -cUS -cUV -cUV -cUV -cUV -dlD -cUV -cUV -cUV -cVc -cUS -cVk +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaf dne bag @@ -96308,33 +92857,26 @@ doJ atq aaf aaa -<<<<<<< HEAD -awO -ayh -azi -azh -azi -aDf -aEu -======= aaa aaa aaa aaa ->>>>>>> 2db9ecb... Morgue and Crematorium Repositions (#35113) aaa -cUS -cUV -cUV -cUV -cUV -cUV -cUV -cUV -cUV -cUV -cVg -cVj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaf aip doJ @@ -96572,26 +93114,26 @@ doJ atq aaf aaa -awN -ayg -azh -azh -azi -aDg -awN aaa -cUS -dlC -cUV -cUV -cUV -cUV -cUV -cUV -cUV -cUV -cVg -cVj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aip asi @@ -96829,28 +93371,10 @@ doJ atq aaf aaa -awN -awN -awO +aaa +aaa +aaa aAA -awO -awN -awN -aaa -<<<<<<< HEAD -cUS -cUV -cUV -cUV -cUV -cUV -cUV -cUV -cUV -cUV -cVg -cVj -======= aaa aaa aaa @@ -96866,7 +93390,7 @@ aaa aaa aaa aaa ->>>>>>> 2db9ecb... Morgue and Crematorium Repositions (#35113) +aaa aaa aip doJ @@ -96886,7 +93410,7 @@ bxJ bzx bBi bCM -bEr +bBg bBg bHM bJv @@ -97112,18 +93636,18 @@ ayi ayi aaf aaa -cUS -cUV -cUV -cUV -cUV -cUY -cUV -cUV -cUV -cVc -cUS -cVl +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaf dne daX @@ -97369,17 +93893,17 @@ aBS ayi aaf aaa -cUS -cUS -cUS -cUW -cUX -cUS +aaa +aaa +aaa +aaa +aaa +aaa cUZ -cTh -cUS -cUS -cUS +aaa +aaa +aaa +aaa aaa aaf dne @@ -98901,7 +95425,7 @@ apt dnk doJ atu -dnH +aRG dnZ awQ ayk @@ -99693,7 +96217,7 @@ aQl aMv aSS aMv -aVI +aQl aXh aMv bar @@ -100438,7 +96962,7 @@ aji dnd alE dnr -dnH +aRG alE dou dne @@ -101209,7 +97733,7 @@ dho akq alH amW -dnH +aRG apw dod dne @@ -101259,7 +97783,7 @@ bEy bGr bwd bwd -bLj +bwd bMK bOl bPR @@ -101466,7 +97990,7 @@ ajl akr alI amX -dnH +aRG dnZ aqP dne @@ -101566,7 +98090,7 @@ cLT cMC cNt cTf -QuZ +eFN cMI cPC djX @@ -101723,8 +98247,8 @@ aio aks alJ amY -dnH -dnH +aRG +aRG aqQ dne atB @@ -102783,7 +99307,7 @@ aYT baC bbZ bdu -bfe +bbZ bgX biQ bkv @@ -103632,16 +100156,16 @@ dbF cMI aaa aaa -cZj -cZj -cZj -cZe -cZj -cZj -cZe -cZj -cZj -cZj +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -103888,18 +100412,18 @@ cRn cOS cMI aaa -cZe -cZl -cZl -cZl -cZe -cZl -cZl -cZe -cZl -cZl -cZl -cZe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -104040,15 +100564,15 @@ aoj apC doA dne -auQ -auQ -atJ -auQ -auQ -atJ -auQ -auQ -auQ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aDu aDu aDu @@ -104144,20 +100668,20 @@ cQE cQl cRo cMI -cZe -cZe -cYF -cYF -cYF -cZe -cYF -cYF -cZe -cYF -cYF -cYF -cZe -cZe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -104297,15 +100821,15 @@ aok aox aqV dne -atJ -auR -avU -awX -ayt -azA -aAU -aCi -aDt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa azC aFV aHu @@ -104401,20 +100925,20 @@ cQF cQV cRp cRL -cYF -daj -dai -dak -dal -dan -dam -dao -dax -cZL -cZL -cZL -dar -cYF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -104554,17 +101078,6 @@ aol apD aqW dne -<<<<<<< HEAD -atJ -auS -avV -auQ -dlA -ayt -ayt -aCi -aDt -======= aaa aaa aaa @@ -104574,7 +101087,6 @@ aaa aaa aaa aaa ->>>>>>> 2db9ecb... Morgue and Crematorium Repositions (#35113) azC aFW aHv @@ -104670,20 +101182,20 @@ cQF cOP cRp cRL -cYF -daf -cYO -dag -cZZ -cZm -cYO -cZy -cZe -cYV -dly -cYV -cYV -dae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -104823,15 +101335,15 @@ aom ajm dne dne -atJ -auT -avW -awY -ayu -azB -ayt -aCi -aDt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa azC aFW aHw @@ -104927,20 +101439,20 @@ cQG cQW cRq cRL -cYF -daa -cZm -cYO -cYO -cYO -dag -cZA -cZe -dae -cYI -cYV -cYV -dae +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -105080,15 +101592,15 @@ aon ajm aqX dne -auQ -auQ -avX -auQ -auQ -auQ +aaa +aaa +aaa +aaa +aaa +aaa aAV -auQ -auQ +aaa +aaa aDu aFX aHx @@ -105184,20 +101696,20 @@ cQF cOP cRp cRL -cYF -cZT -cZS -cYO -cYO -cYO -dlt -cYO -cZV -dlx -cZe -dad -dad -cYF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -105378,7 +101890,7 @@ bAZ bkz bzN bBB -bDc +bDa bEG bGB bIb @@ -105441,20 +101953,20 @@ cQF cQV cRp cRL -cZe -cZe -cZn -cZe -cZQ -cZe -cZn -cZe -cZe -cZe -cZe -cZn -cZe -cZe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -105698,20 +102210,20 @@ cQH cQX cRr cMI -cZe -cZK -dlr -cYO -cYO -cYO -dlr -cZK -cZe -cZD -cZD -cZD -daq -cZe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -105839,7 +102351,7 @@ ady adT adc aeW -afQ +afK agJ ahx ait @@ -105955,20 +102467,20 @@ cQI cZc cZd cMI -cYF -cYO -cYO -cYO -cYO -cYO -cYO -cYO -cZI -cZG -cZG -cZG -cZJ -cYF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -106084,7 +102596,7 @@ aaf aaf aaf aaa -EDz +urv aax aax aax @@ -106212,20 +102724,20 @@ cMI cMI cMI cMI -cZe -cZi -cYO -cZo -cYF -cZi -cYO -cZo -cYF -cZF -cZG -cZG -cZH -cYF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -106469,20 +102981,20 @@ cQJ cQY cRs cQY -cYH -cYO -cYO -cZo -dat -cZi -cYO -cZo -cZe -cZF -cZY -dlz -cZE -cZe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -106704,9 +103216,9 @@ cyZ cAd ctA dbr -QuX +tFJ dDC -QuX +tFJ cFU cCe ctK @@ -106726,20 +103238,20 @@ cQK cPv cPv cPv -cZe -dlq -cYO -cZo -cYF -cZi -cYO -cZk -cZe -cZe -dab -cZn -cZe -cZe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -106983,20 +103495,20 @@ cQL cQY cQK cQY -cYH -cYO -cYO -cZo -dax -cZi -cYO -cZo -cZe -cZx -cZw -cZz -das -cZe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -107112,7 +103624,7 @@ aaa aaf aaa aaa -EDz +urv abe abe abe @@ -107230,7 +103742,7 @@ cKy cLo cLm cLm -cNM +cLm cOr cOU dDG @@ -107240,20 +103752,20 @@ cQK cPv cPv cPv -cZg -cZi -cYO -cZo -cYF -cZi -cYO -cZo -cYF -cZM -cYO -cYO -dau -cYF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -107497,20 +104009,20 @@ cQK cPv aaa aaf -cYF -cZi -cYO -cYO -cYO -cYO -cYO -cYO -cZp -cYO -cYO -cYO -cZt -cYF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -107754,20 +104266,20 @@ cQM cPv aaa aaf -cYF -cZi -cYO -cZo -cYF -cZi -cYO -cZo -cYF -dlH -cZN -cYO -cZs -cZe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -108011,20 +104523,20 @@ cQK cPv aaa aaf -cYF -cZi -cYO -cZo -cYY -cZi -cYO -cZo -cZr -cZe -cYF -cZp -cZr -cZe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -108268,20 +104780,20 @@ cQK cPv cPv cPv -cZe -cYS -cYO -cZo -cYF -cZi -cYO -dlw -cZe -cZO -dac -dah -dav -cZe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -108526,21 +105038,6 @@ cQY cQK cQY cYJ -<<<<<<< HEAD -cYO -cYO -cZo -cYZ -cZi -cYO -cZo -cYF -cZP -cYX -cYV -cZB -cZe -======= aaa aaa aaa @@ -108554,7 +105051,6 @@ aaa aaa aaa aaa ->>>>>>> 2db9ecb... Morgue and Crematorium Repositions (#35113) aaa aaa aaa @@ -108798,20 +105294,20 @@ cQO cPv cPv cPv -cYF -cZi -cYO -cZo -cYF -cZi -cYO -cZo -dax -cZU -cYV -cYV -cZb -cYF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -109055,20 +105551,20 @@ cQP cQY cRt cQY -cYH -cYO -cYO -cYO -cYO -cYO -cYO -cYO -cZC -cZW -cYV -cYX -cYW -cYF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -109312,20 +105808,20 @@ cPb cPv cPv cPv -cZe -cYO -cYO -cYO -cYO -cYO -cYO -cYO -cZC -cZW -cYV -cYV -daw -cZe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -109569,20 +106065,20 @@ aaf aaa aaa aaf -cZe -cYN -cYM -cYO -dls -cYO -dlv -cYN -cZg -cZX -cZW -cZW -cYU -cZe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -109782,7 +106278,7 @@ bZk cau cce ccd -QsY +qBh cgd chj ciC @@ -109826,20 +106322,20 @@ aaf aaf aaf aaf -cZe -cZe -cZe -cYF -cYF -cYF -cZe -cZe -cZe -cZe -cYF -cYF -cZe -cZe +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -110553,9 +107049,9 @@ bZm cax cch cdK -QsZ +uRM cgf -Qta +rzX ciF ckb clD @@ -110747,7 +107243,7 @@ akM alY cZR cZR -EDD +rQK arm asC atT @@ -110811,7 +107307,7 @@ cay cci cdL ceR -QsX +izu chm ciG ckc @@ -110842,7 +107338,7 @@ cIN cJM cCq cgM -EDF +gNe cwc cNe cNT @@ -111099,7 +107595,7 @@ cFh cFh cKH cLz -EDG +wFH cMk bTs bTs @@ -111305,7 +107801,7 @@ bwB byp bAd byo -bDt +bDj bEZ bGM bIp @@ -111357,7 +107853,7 @@ cJN cCq cgN cMl -EDH +wOE bTs aaf aaf @@ -113645,7 +110141,7 @@ cgo cgo cgo ccd -cps +cpr cci crQ ctc @@ -115160,7 +111656,7 @@ bwN byz bAj bBU -bDE +bwO dDb bHb bMP @@ -115427,7 +111923,7 @@ bNA bOU bQD bRS -Ljw +oub bUi bVu bWO @@ -115967,13 +112463,13 @@ dwL dwL dwL dwL -QtY -Quf +xAp +vhG cAI cBD cCD -QuM -QuR +uun +rSL dvY cEz dxQ @@ -116223,10 +112719,10 @@ cub cJa cJa cJa -QtP -QtZ -QtZ -QtZ +gHh +wRy +wRy +wRy cBE cAJ cCE @@ -116455,8 +112951,8 @@ bNC bOW bQH bRV -EDw -bUl +bST +bUh bVx bWS bYi @@ -116481,17 +112977,17 @@ cuY cwa dzQ dwL -Qua -Quh +gLC +qqg cAK cBF cCF -QuN -QuS +uGW +dqU dvY dww -QuT -QuU +gEk +eZe cJa cPx cJb @@ -116739,8 +113235,8 @@ cuZ cuZ cuZ cuZ -Qui -Qtm +ioI +krD czD cAL cBG @@ -116993,11 +113489,11 @@ dwL dxQ cuZ cwb -QtD -QtQ -Qub -Quj -Quw +lal +ygk +sdi +fDD +wKo czD cQC cBH @@ -117249,12 +113745,12 @@ cgq dwL dxQ cuZ -Qtt -QtE -QtE -Quc -Quk -Qtm +eqG +cwZ +cwZ +cyM +uYk +krD cQv cAN cBI @@ -117501,17 +113997,17 @@ clW cIk cJa cpG -Qtb +kVo dDu ctk cuc cuZ dyp -QtE -QtE -Quc -Qul -Qtm +cwZ +cwZ +cyM +xVP +krD czF cAN cBJ @@ -117534,7 +114030,7 @@ aaa aaf aaa aaa -Qtj +vLD aaa aaf aaa @@ -117692,7 +114188,7 @@ asY aui avm asY -axH +aui ayO aAg aBA @@ -117761,14 +114257,14 @@ dvY dvY dvY dvY -Qtc +qnJ cuZ -Qtu -QtF -QtF -Qud -QtG -Qtm +upN +cxN +cxN +qJZ +cxO +krD czG cAN cBK @@ -118020,12 +114516,12 @@ cpH dvY cud cuZ -Qtv -QtG -QtG -QuW -Qum -Qtm +eXy +cxO +cxO +dGH +mzh +krD cQB cAO cBL @@ -118275,14 +114771,14 @@ cpI cqY crY dvY -Qtd -Qtl +lzk +gix cwd -QtH +kfu cxP -QtG -Qun -Qtm +cxO +gnZ +krD czI cAP cAP @@ -118532,14 +115028,14 @@ cpJ cqZ dvY dvY -Qte -Qtm -Qtw -QtI -QtR -QtG -Quo -Qtm +obb +krD +kOt +gRS +oUA +cxO +qRM +krD aaf aaf aaf @@ -118771,10 +115267,10 @@ byN bTb bUt bVA -bVA +nyo bYp bZy -bVA +tsx bZB cdW cfk @@ -118789,14 +115285,14 @@ dxh clY crZ dvY -Qtf -Qtm -Qtx -QtJ -QtS -QuX -QtG -Qtm +tVY +krD +oLW +gGT +wPk +dGH +cxO +krD aaf aaa aaf @@ -119027,11 +115523,11 @@ cco byN bTc bUu -apb -apb +xVl +kys cow -bZz -apb +xVl +dLK alq alq cfl @@ -119046,14 +115542,14 @@ cnb cra csa dvY -Qtg -Qtm -Qty -QtK -QtT -QtG -Qup -Qtm +lMz +krD +ocT +xkG +uTS +cxO +ykE +krD aaa aaa aaa @@ -119282,13 +115778,13 @@ dim bPe dis byN -apc +bvd bUv -anM -apb -bXa -bZz -caV +xVl +xVl +mvj +xVl +dLK alq cdX cfm @@ -119303,14 +115799,14 @@ ciL cou csb dvY -Qth -Qtm -Qtz -QtL -QtU -QtG -Quq -Qtm +mjJ +krD +eqq +llb +hfJ +cxO +tjH +krD aaa aaa aaa @@ -119470,7 +115966,7 @@ aaa aaa aaf aaa -EDB +jwW adl aQf adl @@ -119542,9 +116038,9 @@ byN cjr bTe bVB -apb -bXa -bZz +bVC +nAG +pCV caW alq cdY @@ -119560,14 +116056,14 @@ ciL cgs csc dvY -Qti -Qtm -QtA -QtM -QtV -QtG -Qur -Qtm +evy +krD +lsv +txj +eEe +cxO +ngl +krD aaa aaa aaa @@ -119796,11 +116292,11 @@ bHl bPg bHl bSc -bTe -apc -bVC -apb -bXa +eoK +uHc +uJU +uJU +pvA bZA bZE bZE @@ -119817,14 +116313,14 @@ cpK ciL csc dvY -Qtj -Qtm -QtB -QtN -QtW -QtG -Qus -Qtm +vLD +krD +jyv +ohj +nnK +cxO +gfh +krD aaa aaa aaa @@ -120074,14 +116570,14 @@ cpL crb csd dvY -Qtj -Qtm -Qtm -QtO -Qtm -QtO -Qtm -Qtm +vLD +krD +krD +noG +krD +noG +krD +krD aaa aaa aaa @@ -120597,8 +117093,8 @@ aaf aaf aaf aaf -QuJ -QuJ +lMJ +lMJ aaf aaa aaf @@ -121045,7 +117541,7 @@ axY aJm aJu aMb -EDE +fdr axY aPX aRm @@ -122890,7 +119386,7 @@ cbe ccO bza aaf -EDo +gJs chO cjd ckG @@ -122910,8 +119406,8 @@ aaa aaa aaf aaf -QuJ -QuJ +lMJ +lMJ aaf aaf aaa @@ -123918,7 +120414,7 @@ cbi ccS bza aaf -EDo +gJs chR cjg ckH @@ -124418,7 +120914,7 @@ bHx bIU bKB bMh -bNT +bCi bCi bKD bCi @@ -124946,7 +121442,7 @@ cVJ ccQ bza aaf -EDo +gJs chU cjj ckJ @@ -125173,7 +121669,7 @@ dgI bgb cTi bgb -EDC +sJW aNC brM aNC @@ -125737,8 +122233,8 @@ aaa aaf aaf aaf -QuJ -QuJ +lMJ +lMJ aaf aaf aaa @@ -126468,19 +122964,19 @@ aaa aaf bAR dBC -EDo +gJs bFZ bAR bCA -EDo +gJs bFZ bAR bCA -EDo +gJs bFZ bAR bCA -EDo +gJs bFZ bAR aaf @@ -129279,7 +125775,7 @@ aaa aaa aag aaa -EDb +siF aaa aaa aaa @@ -129296,7 +125792,7 @@ bzj bzj aai bzj -EDb +siF bzj bzj bKK @@ -129304,7 +125800,7 @@ bzj bzj bzj bzj -EDb +siF aai bzj bzj @@ -130838,7 +127334,7 @@ aaa aaa aai aaa -EDb +siF aaa aaa aaa @@ -131095,7 +127591,7 @@ aaa aaa aai aaa -EDb +siF aaa aaa aaa @@ -131849,7 +128345,7 @@ aaa aaa aag aaa -EDb +siF aaa aaa aaf @@ -132380,7 +128876,7 @@ aaf aaf aag aaa -EDb +siF aaa aaa aaa @@ -146899,4 +143395,3 @@ aaa aaa aaa "} - diff --git a/_maps/map_files/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm index a7b9d0e994..003b4d01e1 100644 --- a/_maps/map_files/Mining/Lavaland.dmm +++ b/_maps/map_files/Mining/Lavaland.dmm @@ -76,9 +76,6 @@ "an" = ( /turf/closed/mineral/random/labormineral/volcanic, /area/lavaland/surface/outdoors) -"ao" = ( -/turf/closed/mineral/random/volcanic, -/area/lavaland/surface/outdoors) "ap" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -501,7 +498,7 @@ pixel_y = 23 }, /obj/machinery/computer/shuttle/mining{ - req_access = "0" + req_access = null }, /turf/open/floor/plasteel/purple/side{ dir = 1 @@ -579,10 +576,7 @@ /turf/open/floor/plating, /area/mine/laborcamp) "bN" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; - name = "KEEP CLEAR: DOCKING AREA" - }, +/obj/structure/sign/warning/docking, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/mine/production) @@ -930,11 +924,7 @@ /turf/closed/wall, /area/mine/living_quarters) "cN" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall, /area/mine/living_quarters) "cO" = ( @@ -1172,10 +1162,6 @@ dir = 4 }, /area/mine/production) -"dt" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/mine/production) "du" = ( /obj/effect/turf_decal/loading_area, /turf/open/floor/plasteel, @@ -3311,24 +3297,6 @@ /obj/effect/baseturf_helper/picky/lava_land/plating, /turf/closed/wall, /area/mine/laborcamp/security) -"Wu" = ( -/obj/effect/baseturf_helper/lava_land/surface, -/turf/closed/wall, -/area/mine/laborcamp) -"Ww" = ( -/obj/effect/baseturf_helper/lava_land/surface, -/turf/open/floor/plasteel, -/area/mine/living_quarters) -"Wx" = ( -/obj/effect/baseturf_helper/lava_land/surface, -/turf/open/floor/plasteel/brown{ - dir = 4 - }, -/area/mine/eva) -"Wy" = ( -/obj/effect/baseturf_helper/lava_land/surface, -/turf/open/floor/plasteel, -/area/mine/production) "Wz" = ( /obj/effect/mapping_helpers/planet_z, /turf/open/lava/smooth/lava_land_surface, diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index 45ab557836..340afb89dc 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -27,7 +27,7 @@ /turf/open/space, /area/space/nearstation) "aah" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall, /area/asteroid/nearstation) "aai" = ( @@ -821,7 +821,6 @@ icon_state = "1-4" }, /obj/machinery/holopad, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel/vault, /area/bridge) "abF" = ( @@ -909,7 +908,7 @@ /turf/open/floor/plasteel, /area/maintenance/starboard/fore) "abN" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall, /area/maintenance/starboard) "abO" = ( @@ -985,7 +984,7 @@ /turf/closed/wall, /area/crew_quarters/heads/captain/private) "abZ" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = 32 }, /obj/structure/displaycase/captain{ @@ -1189,7 +1188,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = 32 }, /obj/machinery/atmospherics/components/unary/vent_pump/on, @@ -1325,7 +1324,7 @@ /area/asteroid/nearstation) "acI" = ( /obj/structure/dresser, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_y = 32 }, /obj/machinery/camera{ @@ -1709,7 +1708,7 @@ /area/quartermaster/storage) "adq" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/open/floor/plating, /area/quartermaster/storage) "ads" = ( @@ -1735,7 +1734,7 @@ /turf/open/floor/plating, /area/asteroid/nearstation) "adz" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall, /area/asteroid/nearstation) "adA" = ( @@ -1865,7 +1864,7 @@ /obj/structure/cable/white{ icon_state = "2-8" }, -/obj/structure/sign/goldenplaque/captain{ +/obj/structure/sign/plaques/golden/captain{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -1899,7 +1898,7 @@ /area/ai_monitored/turret_protected/ai) "adR" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = 32 }, /obj/structure/cable/white{ @@ -1931,7 +1930,7 @@ }, /area/bridge) "adU" = ( -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = -32 }, /obj/structure/cable/white, @@ -2004,7 +2003,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -2189,7 +2188,7 @@ /obj/structure/cable/white, /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = 32 }, /turf/open/floor/plating, @@ -2442,12 +2441,16 @@ /turf/open/floor/plasteel, /area/quartermaster/storage) "aeZ" = ( -/obj/machinery/door/airlock/shuttle{ - name = "Supply Shuttle Airlock"; - req_access_txt = "31" +/obj/docking_port/stationary{ + dir = 4; + dwidth = 9; + height = 7; + id = "supply_home"; + name = "Cargo Bay"; + width = 20 }, -/turf/open/floor/plating, -/area/shuttle/supply) +/turf/open/space/basic, +/area/space) "afa" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -3010,7 +3013,6 @@ "aga" = ( /obj/structure/table/wood, /obj/item/device/flashlight/lamp/green, -/obj/item/card/id/captains_spare, /obj/item/toy/figure/captain, /turf/open/floor/carpet, /area/crew_quarters/heads/captain/private) @@ -3115,7 +3117,7 @@ dir = 4 }, /obj/machinery/recharge_station, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -3286,22 +3288,6 @@ }, /turf/open/floor/plasteel, /area/quartermaster/storage) -"agD" = ( -/obj/docking_port/mobile/supply{ - dwidth = 5; - roundstart_move = "supply_away"; - width = 12 - }, -/obj/docking_port/stationary{ - dir = 8; - dwidth = 5; - height = 7; - id = "supply_home"; - name = "Cargo Bay"; - width = 12 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) "agE" = ( /obj/item/ore/silver, /obj/item/ore/iron, @@ -3935,7 +3921,7 @@ /turf/open/floor/plating, /area/maintenance/fore) "ahH" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = -32 }, /obj/structure/closet/secure_closet/captains, @@ -4231,7 +4217,7 @@ pixel_x = 3; pixel_y = -3 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/effect/turf_decal/bot, @@ -4240,7 +4226,7 @@ }, /area/security/brig) "aip" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/security/brig) "aiq" = ( @@ -4452,7 +4438,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "aiG" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall, /area/hallway/primary/central) "aiH" = ( @@ -4825,7 +4811,7 @@ }, /area/hallway/primary/central) "ajq" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -4904,7 +4890,7 @@ }, /area/hallway/primary/central) "ajx" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -5238,7 +5224,6 @@ }, /area/hallway/primary/central) "akd" = ( -/obj/effect/landmark/lightsout, /obj/structure/cable/white{ icon_state = "1-2" }, @@ -5328,7 +5313,7 @@ }, /area/hallway/primary/central) "akk" = ( -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -5511,7 +5496,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/landmark/lightsout, /obj/structure/cable/white{ icon_state = "1-4" }, @@ -5669,7 +5653,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "akI" = ( -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = -32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -5752,7 +5736,7 @@ /turf/open/floor/plating/airless, /area/shuttle/supply) "akT" = ( -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = -32 }, /obj/structure/cable/white{ @@ -5853,7 +5837,7 @@ /turf/closed/wall, /area/security/brig) "alb" = ( -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -6141,7 +6125,6 @@ /obj/structure/cable/white{ icon_state = "2-4" }, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel/neutral, /area/quartermaster/storage) "alF" = ( @@ -6241,7 +6224,6 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel/neutral/side{ dir = 4 }, @@ -6840,7 +6822,7 @@ }, /area/teleporter) "amY" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/teleporter) "amZ" = ( @@ -6887,7 +6869,7 @@ }, /area/hallway/primary/central) "ane" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/ai_monitored/storage/eva) "anf" = ( @@ -6999,7 +6981,7 @@ /turf/open/floor/plasteel, /area/quartermaster/storage) "anp" = ( -/obj/structure/sign/nosmoking_1, +/obj/structure/sign/warning/nosmoking/circle, /turf/closed/wall, /area/quartermaster/miningdock) "anq" = ( @@ -7039,7 +7021,7 @@ /area/quartermaster/miningdock) "ant" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/open/floor/plating, /area/quartermaster/miningdock) "anu" = ( @@ -7966,7 +7948,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/effect/landmark/lightsout, /obj/structure/cable/white{ icon_state = "1-2" }, @@ -8130,18 +8111,17 @@ /turf/open/floor/plasteel, /area/quartermaster/miningdock) "app" = ( -/obj/machinery/door/airlock/shuttle{ - name = "Mining Shuttle Airlock"; - req_access_txt = "0" +/obj/docking_port/stationary{ + dir = 4; + dwidth = 3; + height = 5; + id = "mining_home"; + name = "mining shuttle bay"; + roundstart_template = /datum/map_template/shuttle/mining/delta; + width = 7 }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/shuttle/mining) +/turf/open/space/basic, +/area/space) "apr" = ( /turf/open/floor/plasteel/neutral, /area/shuttle/mining) @@ -8433,7 +8413,7 @@ name = "Station Intercom"; pixel_x = 28 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /obj/effect/turf_decal/delivery, @@ -8593,7 +8573,7 @@ name = "Station Intercom"; pixel_x = -28 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /turf/open/floor/plasteel/vault/side{ @@ -8770,7 +8750,7 @@ /area/quartermaster/miningdock) "aqt" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ name = "MINING POD" }, /turf/open/floor/plating, @@ -9333,7 +9313,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_y = 32 }, /obj/effect/turf_decal/bot, @@ -9424,7 +9404,7 @@ /obj/machinery/atmospherics/components/unary/thermomachine/heater{ dir = 8 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /obj/effect/turf_decal/bot, @@ -10001,7 +9981,7 @@ }, /area/engine/atmos) "asI" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = -32 }, /turf/open/floor/plating, @@ -10547,7 +10527,7 @@ /turf/open/floor/plasteel, /area/security/brig) "atM" = ( -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -11229,7 +11209,7 @@ "auX" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/electrical, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /obj/effect/turf_decal/bot, @@ -12446,7 +12426,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/structure/sign/atmosplaque{ +/obj/structure/sign/plaques/atmos{ pixel_y = 32 }, /obj/effect/turf_decal/bot, @@ -12503,7 +12483,7 @@ name = "Station Intercom"; pixel_x = 26 }, -/obj/structure/sign/nosmoking_1{ +/obj/structure/sign/warning/nosmoking/circle{ pixel_x = 26; pixel_y = 26 }, @@ -13950,7 +13930,7 @@ }, /area/crew_quarters/dorms) "aAI" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /turf/open/floor/plasteel/neutral/corner{ @@ -14037,7 +14017,6 @@ }, /obj/structure/table/wood, /obj/item/kitchen/fork, -/obj/effect/landmark/lightsout, /obj/structure/cable/white{ icon_state = "4-8" }, @@ -14473,7 +14452,6 @@ }, /area/hallway/primary/central) "aBL" = ( -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -14766,7 +14744,7 @@ /area/hallway/secondary/exit) "aCn" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/open/floor/plating, /area/hallway/secondary/exit) "aCo" = ( @@ -14826,7 +14804,7 @@ dir = 4; name = "Air to Pure" }, -/obj/structure/sign/fire{ +/obj/structure/sign/warning/fire{ pixel_y = -32 }, /obj/effect/turf_decal/bot, @@ -14974,7 +14952,7 @@ id = "atmoslock"; name = "Atmospherics Lockdown Blast door" }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = -32 }, /obj/structure/cable/white{ @@ -15188,7 +15166,7 @@ desc = "Used to grind things up into raw materials and liquids."; pixel_y = 5 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/structure/sign/nanotrasen{ @@ -15256,16 +15234,6 @@ /turf/open/floor/plasteel, /area/hallway/secondary/exit) "aDj" = ( -/obj/machinery/door/airlock/shuttle{ - name = "Emergency Shuttle Airlock" - }, -/obj/docking_port/mobile/emergency{ - dheight = 0; - dwidth = 5; - height = 11; - name = "Omega emergency shuttle"; - width = 19 - }, /obj/docking_port/stationary{ dheight = 0; dir = 4; @@ -15276,14 +15244,8 @@ turf_type = /turf/open/space; width = 30 }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/shuttle/escape) +/turf/open/space/basic, +/area/space) "aDk" = ( /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -15329,11 +15291,11 @@ /turf/closed/wall/r_wall, /area/engine/atmos) "aDr" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall/r_wall, /area/engine/atmos) "aDs" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, /area/engine/atmos) "aDt" = ( @@ -15354,7 +15316,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "aDu" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, /area/engine/atmos) @@ -15805,7 +15767,7 @@ /area/shuttle/escape) "aEn" = ( /obj/machinery/shieldgen, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/item/device/radio/intercom{ @@ -15920,7 +15882,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 }, -/obj/effect/landmark/lightsout, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/engine/engineering) @@ -15937,7 +15898,7 @@ /area/engine/engineering) "aEA" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall/r_wall, /area/hallway/primary/central) "aEB" = ( @@ -16690,7 +16651,6 @@ /area/hallway/primary/central) "aFY" = ( /obj/machinery/holopad, -/obj/effect/landmark/lightsout, /obj/structure/cable/white{ icon_state = "1-2" }, @@ -16762,7 +16722,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aGi" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -16813,7 +16773,7 @@ /turf/open/floor/plating, /area/engine/engineering) "aGm" = ( -/obj/structure/sign/radiation, +/obj/structure/sign/warning/radiation, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, @@ -16837,7 +16797,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aGo" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, /area/engine/engineering) @@ -17289,7 +17249,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -17409,7 +17369,7 @@ id = "ceblast"; name = "Engineering Lockdown Shutters" }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -17655,7 +17615,7 @@ /turf/closed/wall, /area/hydroponics) "aHR" = ( -/obj/structure/sign/botany{ +/obj/structure/sign/departments/botany{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -17732,7 +17692,7 @@ /turf/open/floor/plasteel/neutral, /area/hallway/secondary/exit) "aIb" = ( -/obj/structure/sign/radiation{ +/obj/structure/sign/warning/radiation{ pixel_x = -32 }, /obj/effect/turf_decal/bot_white, @@ -17759,7 +17719,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -18400,7 +18360,7 @@ /obj/machinery/power/smes{ charge = 5e+006 }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/effect/turf_decal/bot, @@ -18458,7 +18418,7 @@ /turf/open/floor/plasteel/dark, /area/engine/engineering) "aJt" = ( -/obj/structure/sign/radiation, +/obj/structure/sign/warning/radiation, /turf/closed/wall/r_wall, /area/engine/supermatter) "aJu" = ( @@ -18766,7 +18726,7 @@ }, /area/crew_quarters/bar/atrium) "aJY" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall, /area/crew_quarters/kitchen) "aJZ" = ( @@ -19057,7 +19017,7 @@ /turf/open/floor/engine, /area/engine/supermatter) "aKD" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, /area/engine/supermatter) "aKE" = ( @@ -19946,7 +19906,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel/neutral, /area/hallway/secondary/exit) "aMC" = ( @@ -20239,7 +20198,7 @@ /area/engine/engineering) "aNg" = ( /obj/structure/reagent_dispensers/fueltank, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /obj/effect/turf_decal/stripes/line{ @@ -20569,7 +20528,7 @@ /obj/item/folder/yellow, /obj/item/pen, /obj/item/hand_labeler_refill, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /obj/item/device/radio/intercom{ @@ -20800,7 +20759,7 @@ /turf/open/floor/plating, /area/hydroponics) "aOk" = ( -/obj/structure/sign/botany, +/obj/structure/sign/departments/botany, /turf/closed/wall, /area/hydroponics) "aOm" = ( @@ -21140,7 +21099,6 @@ /area/hallway/primary/central) "aOU" = ( /obj/machinery/door/firedoor, -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /obj/structure/cable/white{ icon_state = "4-8" @@ -21616,7 +21574,7 @@ /turf/open/floor/engine, /area/engine/engineering) "aPK" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/engine/supermatter) "aPL" = ( @@ -21913,7 +21871,6 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "aQp" = ( -/obj/effect/landmark/lightsout, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -21997,7 +21954,7 @@ /turf/open/floor/plasteel/neutral/corner, /area/hallway/primary/central) "aQz" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = -32 }, /obj/machinery/light, @@ -22217,7 +22174,7 @@ /turf/open/floor/plasteel, /area/library) "aRa" = ( -/obj/structure/sign/kiddieplaque/library, +/obj/structure/sign/plaques/kiddie/library, /turf/closed/wall, /area/library) "aRb" = ( @@ -22577,7 +22534,7 @@ }, /area/library) "aRV" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /obj/machinery/vending/games, @@ -22664,7 +22621,7 @@ /turf/open/floor/plasteel/vault, /area/medical/morgue) "aSg" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -22961,7 +22918,7 @@ "aSR" = ( /obj/structure/table/reinforced, /obj/item/tank/internals/plasma, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /obj/effect/turf_decal/bot, @@ -24724,7 +24681,7 @@ /area/medical/chemistry) "aWO" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/nosmoking_1{ +/obj/structure/sign/warning/nosmoking/circle{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -24798,7 +24755,7 @@ /turf/open/floor/plating, /area/science/lab) "aWW" = ( -/obj/structure/sign/nosmoking_1, +/obj/structure/sign/warning/nosmoking/circle, /turf/closed/wall, /area/science/lab) "aWX" = ( @@ -25110,7 +25067,6 @@ /obj/structure/cable/white{ icon_state = "1-4" }, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel/whitepurple/corner{ dir = 1 }, @@ -25300,7 +25256,7 @@ /area/medical/medbay/zone3) "aXR" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/open/floor/plating, /area/medical/medbay/zone3) "aXS" = ( @@ -25865,7 +25821,7 @@ /turf/open/floor/plasteel/neutral, /area/hallway/primary/central) "aYZ" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -26181,7 +26137,6 @@ /obj/structure/cable/white{ icon_state = "2-4" }, -/obj/effect/landmark/lightsout, /turf/open/floor/plasteel/blue, /area/medical/medbay/zone3) "aZK" = ( @@ -26577,8 +26532,8 @@ /area/medical/medbay/zone3) "baw" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/bluecross_2, -/obj/structure/sign/nosmoking_1{ +/obj/structure/sign/departments/medbay/alt, +/obj/structure/sign/warning/nosmoking/circle{ pixel_y = -28 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -27424,7 +27379,7 @@ name = "Medbay Desk"; req_access_txt = "5" }, -/obj/structure/sign/nosmoking_1{ +/obj/structure/sign/warning/nosmoking/circle{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -27641,7 +27596,7 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /turf/open/floor/plasteel/bar, @@ -28382,7 +28337,7 @@ /turf/open/floor/circuit/green, /area/science/robotics/mechbay) "bei" = ( -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /turf/open/floor/mech_bay_recharge_floor, @@ -28448,7 +28403,7 @@ /obj/item/device/mmi, /obj/item/device/mmi, /obj/item/device/mmi, -/obj/structure/sign/bluecross_2{ +/obj/structure/sign/departments/medbay/alt{ pixel_y = -32 }, /obj/machinery/light, @@ -28482,7 +28437,7 @@ pixel_y = 16 }, /obj/item/circular_saw, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /obj/structure/mirror{ @@ -28628,7 +28583,7 @@ /turf/open/floor/plasteel, /area/maintenance/port) "beG" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall, /area/medical/medbay/zone3) "beH" = ( @@ -29218,7 +29173,7 @@ name = "Xenobiology Lab"; req_access_txt = "47" }, -/obj/structure/sign/xenobio{ +/obj/structure/sign/departments/xenobio{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -29340,7 +29295,7 @@ /area/chapel/main) "bgb" = ( /obj/structure/bookcase, -/obj/structure/sign/kiddieplaque/badger{ +/obj/structure/sign/plaques/kiddie/badger{ pixel_y = 32 }, /obj/machinery/light/small{ @@ -29395,16 +29350,6 @@ heat_capacity = 1e+006 }, /area/hallway/primary/central) -<<<<<<< HEAD -"bgh" = ( -/obj/effect/landmark/lightsout, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/neutral/side, -/area/hallway/primary/central) -======= ->>>>>>> 2d5c3d5... Merge pull request #34781 from DaxDupont/please-make-waffles-for=i-am-belgian "bgl" = ( /obj/machinery/vending/cola/random, /obj/machinery/newscaster{ @@ -29892,7 +29837,7 @@ pixel_x = -12; pixel_y = 2 }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, /turf/open/floor/plating, @@ -29912,7 +29857,7 @@ dir = 4; pixel_x = 11 }, -/obj/structure/sign/botany{ +/obj/structure/sign/departments/botany{ pixel_x = 32 }, /turf/open/floor/plating, @@ -30294,7 +30239,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/sign/kiddieplaque/badger{ +/obj/structure/sign/plaques/kiddie/badger{ pixel_y = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -30549,7 +30494,7 @@ }, /area/hallway/secondary/entry) "biB" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall/r_wall, /area/science/xenobiology) "biC" = ( @@ -30578,7 +30523,7 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "biE" = ( -/obj/structure/sign/xenobio, +/obj/structure/sign/departments/xenobio, /turf/closed/wall/r_wall, /area/science/xenobiology) "biF" = ( @@ -31315,7 +31260,7 @@ /area/hallway/secondary/entry) "bjY" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/open/floor/plating, /area/hallway/secondary/entry) "bjZ" = ( @@ -32510,23 +32455,17 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "btj" = ( -/obj/docking_port/mobile/arrivals{ - dir = 2; - dwidth = 4; - height = 17; - name = "omega arrivals shuttle"; - width = 9 - }, /obj/docking_port/stationary{ dir = 2; dwidth = 4; height = 17; id = "arrivals_stationary"; name = "omega arrivals"; + roundstart_template = /datum/map_template/shuttle/arrival/delta; width = 9 }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/arrival) +/turf/open/space/basic, +/area/space) "btk" = ( /obj/machinery/door/airlock/external{ cyclelinkeddir = 4; @@ -32662,7 +32601,7 @@ /turf/open/floor/circuit/green/telecomms, /area/tcommsat/server) "buP" = ( -/obj/machinery/message_server, +/obj/machinery/telecomms/message_server, /turf/open/floor/circuit/green/telecomms, /area/tcommsat/server) "buQ" = ( @@ -32837,18 +32776,6 @@ /turf/open/floor/pod/dark, /area/shuttle/transport) "bwz" = ( -/obj/machinery/door/airlock/titanium, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 2; - height = 13; - id = "ferry"; - name = "ferry shuttle"; - port_direction = 1; - preferred_direction = 4; - roundstart_move = "ferry_away"; - width = 5 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 2; @@ -32858,8 +32785,8 @@ turf_type = /turf/open/space; width = 5 }, -/turf/open/floor/pod/light, -/area/shuttle/transport) +/turf/open/space/basic, +/area/space) "bwB" = ( /obj/structure/shuttle/engine/heater{ dir = 8 @@ -33209,7 +33136,7 @@ /turf/closed/wall/rust, /area/maintenance/fore) "byf" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall, /area/maintenance/starboard/fore) "byg" = ( @@ -33344,7 +33271,7 @@ }, /area/bridge) "swF" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/rust, /area/asteroid/nearstation) "swG" = ( @@ -33483,7 +33410,7 @@ /turf/open/floor/plasteel, /area/maintenance/starboard) "sBW" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall/rust, /area/maintenance/starboard) "sCr" = ( @@ -33626,7 +33553,7 @@ /turf/open/floor/plasteel/vault, /area/maintenance/starboard) "sEQ" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall, /area/maintenance/starboard) "sFn" = ( @@ -34041,7 +33968,7 @@ }, /area/maintenance/starboard/central) "sIN" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/rust, /area/maintenance/starboard) "sIO" = ( @@ -34425,7 +34352,7 @@ /turf/closed/wall/rust, /area/hallway/secondary/entry) "sLw" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall/rust, /area/ai_monitored/turret_protected/ai) "sLx" = ( @@ -34466,11 +34393,11 @@ /turf/open/floor/plasteel/vault/side, /area/ai_monitored/turret_protected/ai) "sLA" = ( -/obj/structure/sign/electricshock, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/ai) "sLB" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/ai) "sLC" = ( @@ -34508,7 +34435,7 @@ /turf/open/floor/circuit/green, /area/ai_monitored/turret_protected/ai) "sLI" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall/rust, /area/ai_monitored/turret_protected/ai) "sLJ" = ( @@ -34959,7 +34886,7 @@ /obj/structure/cable/yellow{ icon_state = "0-2" }, -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -34978,7 +34905,7 @@ }, /area/ai_monitored/turret_protected/aisat_interior) "sMU" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/aisat_interior) "sMV" = ( @@ -35025,7 +34952,7 @@ }, /area/ai_monitored/turret_protected/aisat_interior) "sMY" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -35069,7 +34996,7 @@ }, /area/ai_monitored/turret_protected/aisat_interior) "sNc" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -35286,7 +35213,7 @@ }, /area/ai_monitored/turret_protected/aisat_interior) "sNx" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall, /area/ai_monitored/turret_protected/aisat_interior) "sNy" = ( @@ -35427,7 +35354,7 @@ /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) "sNQ" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/aisat_interior) "sNS" = ( @@ -35481,7 +35408,7 @@ /turf/open/space/basic, /area/space/nearstation) "sOk" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall, /area/space/nearstation) "sOr" = ( @@ -71102,7 +71029,7 @@ aaa aaa aaa aaa -bwb +aaa aaa aaa aaa @@ -71336,9 +71263,9 @@ aZz baq bbl bbY -bcP +bbm bdM -bcP +bbm sKE bfv bfS @@ -71358,9 +71285,9 @@ aaa aaa aaa aaa -bwb -bwo -bwb +aaa +aaa +aaa aaa aaa aaa @@ -71593,9 +71520,9 @@ aZA bar bbm bbZ -bcP -bcP -bcP +bbm +bbm +bbm baj bfu bfu @@ -71615,9 +71542,9 @@ aaa aaa aaa aaa -bwc -bwi -bwB +aaa +aaa +aaa aaa aaa aaa @@ -71872,9 +71799,9 @@ aaa aaa aaa aaa -bvS -bwq -bvS +aaa +aaa +aaa aaa aaa aaa @@ -72128,11 +72055,11 @@ aaa aaa aaa aaa -bvS -bvS -bwr -bvS -bvS +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -72385,11 +72312,11 @@ aaa aaa aaa aaa -bvT -bwf -bwi -bwE -bvT +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -72642,11 +72569,11 @@ aaa aaa aaa aaa -bvS -bwf -bwi -bwE -bvS +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -72899,11 +72826,11 @@ aaa aaa aaa aaa -bvS -bwh -bwi -bwi -bvS +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -73156,11 +73083,11 @@ aaa aaa aaa aaa -bvW -bwi -bwv -bwi -bwQ +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -73413,11 +73340,11 @@ aaa aaa aaa aaa -bvS -bwi -bwi -bwI -bvS +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -73670,11 +73597,11 @@ aaa aaa aaa aaa -bvS -bwf -bwi -bwE -bvS +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -73927,11 +73854,11 @@ aaa aaa aaa aaa -bvT -bwf -bwi -bwE -bvT +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -74184,11 +74111,11 @@ aaa aaa aaa aaa -bvS -bvT +aaa +aaa bwz -bvT -bvS +aaa +aaa aaa aaa aaa @@ -76489,19 +76416,19 @@ bgV aae aaa aaa -bjO -bjZ -bka -bkm -bka -bkb -bkb -bkb -bkb -bkG -bkm -bka -bka +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -76745,20 +76672,20 @@ biv bgU aae aaa -bjN -bjO -bka -bkc -bkn -bkq -bkv -bkv -bkv -bkv -bkH -bkn -bkM -bka +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -77002,23 +76929,23 @@ bxY bgU aaa aaa -bjN -bjW -bkb -bkd -bko -bko -bko -bko -bko -bko -bko -bko -bkN -bka -bka -bkb -bka +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -77259,23 +77186,23 @@ bix bgU aaa aaa -bjN -bjW -bkb -bke -bko -bko -bkw -bkw -bkw -bkw -bkI -bko -bkO -bkT -bkY -bld -bkb +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -77517,22 +77444,22 @@ bgU aaa aaa btj -bjO -bjZ -bkf -bko -bkr -buA -bkx -bkD -bkx -bkF -buB -bkP -bkU -bkZ -ble -bkb +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -77773,23 +77700,23 @@ bix bgU aaa aaa -bjN -bjW -bkb -bkg -bko -bko -bkv -bkv -bkv -bkv -bkJ -bko -bkQ -bkV -bla -bld -bkb +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -78030,23 +77957,23 @@ biw bgU aaa aaa -bjN -bjW -bkb -bkd -bko -bko -bko -bko -bko -bko -bko -bko -byn -bka -bka -bkb -bka +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -78287,20 +78214,20 @@ biy bgU aae aaa -bjN -bjO -bka -bkc -bkp -bks -bkw -bkw -bkw -bkw -bkK -bkp -bkR -bka +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -78545,19 +78472,19 @@ bgT aae aaa aaa -bjO -bjZ -bka -bkb -bka -bkb -bkb -bkb -bkb -bkG -bkb -bka -bka +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -81879,7 +81806,7 @@ aZl sPI bfP bgm -bhh +bhg bgm sKZ bjd @@ -84385,17 +84312,17 @@ aaa aaa aaa aaa -abQ -abQ -abQ -aei +aaa +aaa +aaa +aaa aeZ -abQ -aeZ -aht -abQ -abQ -abQ +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa amC @@ -84642,18 +84569,18 @@ aaa aaa aaa aaa -abQ -acz -afa -afa -afa -afK -afa -afa -aig -abQ -abQ -akQ +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa amC amC @@ -84899,18 +84826,18 @@ aaa aaa aaa aaa -abQ -acA -ads -aej -ads -ads -ads -ads -aii -aiQ -ajN -akR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aae amD @@ -85156,18 +85083,18 @@ aaa aaa aaa aaa -abQ -buy -ads -ads -ads -ads -ads -ads -aii -aiQ -ajN -akR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aae ant @@ -85413,18 +85340,18 @@ aaa aaa aaa aaa -abQ -acA -ads -ads -ads -ads -ads -ads -aii -aiQ -ajN -akR +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa amD @@ -85670,26 +85597,26 @@ aaa aaa aaa aaa -abQ -acC -aek -aek -aek -buz -aek -aek -aij -abQ -abQ -akS aaa -amE -amE -amF +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa app -amF -amE -amE +aaa +aaa +aaa aaa aaa aaa @@ -85927,26 +85854,26 @@ aaa aaa aaa aaa -abQ -abQ -abQ -abQ -abQ -abQ -agD -abQ -abQ -abQ -abQ aaa aaa -amE -anu -aon -aon -aqw -arn -amE +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -86197,13 +86124,13 @@ aaa aaa aaa aaa -amF -anv -aoo -apr -aqx -aro -asu +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -86454,13 +86381,13 @@ aaa aaa aaa aaa -amE -anw -aop -aps -aqy -arp -amE +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -86711,13 +86638,13 @@ aaa aaa aaa aaa -amE -amE -amF -apt -amF -amE -amE +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -87237,24 +87164,24 @@ aaa aaa aaa aaa -axX -axX -axX -aBj -axZ +aaa +aaa +aaa +aaa +aaa aDj -axX -axY -axY -axY -axX -aJe -axZ -aJe -axX -axX -aLz -aPD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -87494,25 +87421,25 @@ aaa aaa aaa aaa -axX -azc -aAa -aAb -axY -aDk -aEg -aEm -aEm -aEm -aEg -aDk -axY -aDk -aMD -aNL -axX -aPD -aQE +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -87751,25 +87678,25 @@ aaa aaa aaa aaa -axY -azd -aAb -aAb -aCo -aDl -aEh -aEh -aEh -aEh -aEh -aJf -aKm -aLw -aME -aNM -axY -aPE -aQE +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -88008,25 +87935,25 @@ aaa aaa aaa aaa -axY -azd -aAb -aAb -axY -aDl -aEi -bvP -aEi -aEi -aEi -aJf -aKm -aLx -aMF -aNN -axY -aPE -aQE +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -88265,25 +88192,25 @@ aaa aaa aaa aaa -axX -aze -aAb -aBk -axY -aDl -aEj -aFo -aEl -aFp -aEj -aJf -axY -aLy -aMG -aNO -axX -aPE -aQE +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -88522,25 +88449,25 @@ aaa aaa aaa aaa -axZ -axY -aAc -axY -aCp -bvO -aEk -aEj -aGd -aEl -aEk -bvR -aKn -aLz -axY -aLz -aLz -aPD -aPD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -88779,25 +88706,25 @@ aaa aaa aaa aaa -axX -azf -aAd -aBl -axY -aDl -aEl -aFp -aEj -aFo -aEl -aJf -axY -aLA -aMH -aNP -axX -aPE -aQE +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -89036,25 +88963,25 @@ aaa aaa aaa aaa -axY -azg -aAe -aAd -aCq -aDl -aEm -bvQ -aEm -aEm -aEm -aJf -aKo -aLB -aLB -aNQ -axY -aPE -aQE +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -89293,25 +89220,25 @@ aaa aaa aaa aaa -axY -azh -aAd -aBm -axY -aDl -aEh -aEh -aEh -aEh -aEh -aJf -aKo -aLB -aLB -aNR -axY -aPE -aQE +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -89550,25 +89477,25 @@ aaa aaa aaa aaa -axY -azi -aAf -aBn -axX -aDm -aEi -aEi -aEi -aEi -aEi -aJg -axY -aLC -aMI -aNS -axX -aPD -aQE +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -89807,24 +89734,24 @@ aaa aaa aaa aaa -axX -axY -axY -axX -axZ -axX -axY -axY -axY -axY -axY -axX -axZ -axX -axX -axX -aLz -aPD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa diff --git a/_maps/map_files/OmegaStation/job/job_changes.dm b/_maps/map_files/OmegaStation/job/job_changes.dm deleted file mode 100644 index a844a95305..0000000000 --- a/_maps/map_files/OmegaStation/job/job_changes.dm +++ /dev/null @@ -1,129 +0,0 @@ - -//custom access for some jobs. pasted together from ministation. - -/datum/job/New() - ..() - supervisors = "the captain and the head of personnel" - -/datum/outfit/job/New() - box = /obj/item/storage/box/survival/radio - -/datum/job/assistant // Here so assistant appears on the top of the select job list. - -//Command - -/datum/job/captain/New() - ..() - supervisors = "Nanotrasen and Central Command" - -/datum/job/hop/New() - ..() - supervisors = "the captain and Central Command" - -/datum/job/hop/get_access() - return get_all_accesses() - -//Security - -/datum/job/officer/New() - ..() - total_positions = 3 - spawn_positions = 3 - access = list(access_security, access_sec_doors, access_brig, access_armory, access_court, access_maint_tunnels, access_morgue, access_weapons, access_forensics_lockers) - minimal_access = list(access_security, access_sec_doors, access_brig, access_armory, access_court, access_maint_tunnels, access_morgue, access_weapons, access_forensics_lockers) - -/datum/outfit/job/officer/New() - box = /obj/item/storage/box/security/radio - -/datum/job/detective/New() - ..() - access = list(access_security, access_sec_doors, access_brig, access_armory, access_court, access_maint_tunnels, access_morgue, access_weapons, access_forensics_lockers) - minimal_access = list(access_security, access_sec_doors, access_brig, access_armory, access_court, access_maint_tunnels, access_morgue, access_weapons, access_forensics_lockers) - -/datum/outfit/job/detective/New() - box = /obj/item/storage/box/security/radio - -//Medbay - -/datum/job/doctor/New() - ..() - selection_color = "#ffffff" - total_positions = 3 - spawn_positions = 3 - access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics) - minimal_access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics) - -//Engineering - -/datum/job/engineer/New() - ..() - total_positions = 2 - spawn_positions = 2 - access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics, access_tcomsat) - minimal_access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics, access_tcomsat) - -/datum/outfit/job/engineer/New() - box = /obj/item/storage/box/engineer/radio - -/datum/job/atmos/New() - ..() - total_positions = 2 - spawn_positions = 2 - -//Science - -/datum/job/scientist/New() - ..() - total_positions = 3 - spawn_positions = 3 - access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_mineral_storeroom, access_tech_storage) - minimal_access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_mineral_storeroom, access_tech_storage) - -//Cargo - -/datum/job/cargo_tech/New() - ..() - total_positions = 2 - spawn_positions = 2 - access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station, access_mineral_storeroom) - minimal_access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station, access_mineral_storeroom) - -/datum/job/mining/New() - ..() - total_positions = 2 - spawn_positions = 2 - access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station, access_mineral_storeroom) - minimal_access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station, access_mineral_storeroom) - -/datum/outfit/job/mining/New() - box = /obj/item/storage/box/engineer/radio - -//Service - -/datum/job/bartender/New() - ..() - access = list(access_hydroponics, access_bar, access_kitchen, access_morgue, access_weapons) - minimal_access = list(access_hydroponics, access_bar, access_kitchen, access_morgue, access_weapons) - -/datum/job/cook/New() - ..() - access = list(access_hydroponics, access_bar, access_kitchen, access_morgue, access_weapons) - minimal_access = list(access_hydroponics, access_bar, access_kitchen, access_morgue, access_weapons) - -/datum/job/hydro/New() - ..() - access = list(access_hydroponics, access_bar, access_kitchen, access_morgue, access_maint_tunnels) - minimal_access = list(access_hydroponics, access_bar, access_kitchen, access_morgue, access_maint_tunnels) - // they get maint access because of all the hydro content in maint - -/datum/job/janitor/New() - ..() - access = list(access_janitor, access_hydroponics, access_bar, access_kitchen, access_morgue, access_maint_tunnels) - minimal_access = list(access_janitor, access_hydroponics, access_bar, access_kitchen, access_morgue, access_maint_tunnels) - - -//Civilian - -/datum/job/clown/New() - ..() - supervisors = "nobody but yourself" //Honk diff --git a/_maps/map_files/OmegaStation/job/removed_jobs.dm b/_maps/map_files/OmegaStation/job/removed_jobs.dm deleted file mode 100644 index 447f4ebd76..0000000000 --- a/_maps/map_files/OmegaStation/job/removed_jobs.dm +++ /dev/null @@ -1,29 +0,0 @@ -//removed jobs. pasted together from MiniStation. - - -/datum/job/hos/config_check() - return 0 - -/datum/job/chief_engineer/config_check() - return 0 - -/datum/job/qm/config_check() - return 0 - -/datum/job/cmo/config_check() - return 0 - -/datum/job/geneticist/config_check() - return 0 - -/datum/job/virologist/config_check() - return 0 - -/datum/job/rd/config_check() - return 0 - -/datum/job/warden/config_check() - return 0 - -/datum/job/lawyer/config_check() - return 0 \ No newline at end of file diff --git a/_maps/map_files/PubbyStation/EDITING_README.txt b/_maps/map_files/PubbyStation/EDITING_README.txt deleted file mode 100644 index a97e77f994..0000000000 --- a/_maps/map_files/PubbyStation/EDITING_README.txt +++ /dev/null @@ -1,4 +0,0 @@ -Before opening PubbyStation.dme in DreamMaker, you have to tick all the -.dm files in this folder first. Otherwise you will get path errors. - -Do not commit these changes to tgstation.dme. diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 99f86960ea..affc670467 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -2,19 +2,6 @@ "aaa" = ( /turf/open/space/basic, /area/space) -"aaT" = ( -/obj/docking_port/stationary{ - dheight = 9; - dir = 2; - dwidth = 5; - height = 24; - id = "syndicate_n"; - name = "north of station"; - turf_type = /turf/open/space; - width = 18 - }, -/turf/open/space, -/area/space/nearstation) "aby" = ( /obj/structure/lattice, /obj/structure/grille, @@ -109,7 +96,7 @@ /obj/structure/cable/yellow{ icon_state = "2-4" }, -/obj/effect/landmark/tripai, +/obj/effect/landmark/start/ai/secondary, /obj/item/device/radio/intercom{ anyai = 1; broadcasting = 0; @@ -158,7 +145,7 @@ areastring = "/area/ai_monitored/turret_protected/ai"; pixel_y = 24 }, -/obj/effect/landmark/tripai, +/obj/effect/landmark/start/ai/secondary, /obj/item/device/radio/intercom{ anyai = 1; broadcasting = 0; @@ -1836,18 +1823,10 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /turf/open/floor/plating, @@ -2002,7 +1981,6 @@ /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ id = "executionfireblast"; - layer = 2.9; name = "blast door" }, /obj/machinery/door/firedoor, @@ -2013,7 +1991,6 @@ /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ id = "executionfireblast"; - layer = 2.9; name = "blast door" }, /obj/machinery/door/firedoor, @@ -2022,7 +1999,6 @@ "agV" = ( /obj/machinery/door/poddoor/preopen{ id = "executionfireblast"; - layer = 2.9; name = "blast door" }, /obj/machinery/atmospherics/pipe/simple/general/hidden, @@ -3006,7 +2982,7 @@ dir = 4; light_color = "#e8eaff" }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /turf/open/floor/plasteel/dark, @@ -3041,7 +3017,7 @@ /area/security/main) "ajn" = ( /obj/structure/table, -/obj/structure/sign/goldenplaque{ +/obj/structure/sign/plaques/golden{ pixel_y = 32 }, /obj/machinery/light{ @@ -3368,7 +3344,7 @@ "akb" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, -/obj/structure/sign/atmosplaque{ +/obj/structure/sign/plaques/atmos{ desc = "An embossed piece of paper from the University of Nanotrasen at Portpoint."; icon_state = "kiddieplaque"; name = "\improper 'Diploma' frame"; @@ -5521,11 +5497,7 @@ /obj/structure/disposalpipe/segment{ dir = 5 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32; pixel_y = -32 }, @@ -5708,23 +5680,10 @@ }, /turf/open/floor/plating, /area/maintenance/department/security/brig) -"apA" = ( -/turf/open/floor/plating{ - icon_state = "platingdmg3" - }, -/area/maintenance/department/security/brig) "apB" = ( /obj/structure/girder, /turf/open/floor/plating, /area/maintenance/department/security/brig) -"apC" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/labor) -"apD" = ( -/obj/structure/grille, -/obj/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/labor) "apE" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -5841,11 +5800,7 @@ icon_state = "1-2" }, /obj/structure/disposalpipe/segment, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /turf/open/floor/plating, @@ -5972,27 +5927,6 @@ /obj/item/clothing/under/color/red, /turf/open/floor/plating, /area/maintenance/department/security/brig) -"aqj" = ( -/obj/machinery/computer/shuttle/labor{ - dir = 4 - }, -/obj/structure/reagent_dispensers/peppertank{ - pixel_x = -31 - }, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/labor) -"aqk" = ( -/obj/structure/chair/office/dark{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/labor) -"aql" = ( -/obj/structure/table, -/obj/item/folder/red, -/obj/item/restraints/handcuffs, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/labor) "aqm" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 @@ -6307,7 +6241,8 @@ launch_status = 0; name = "monastery shuttle"; port_direction = 2; - width = 5 + width = 5; + timid = 0 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/pod_1) @@ -6348,34 +6283,6 @@ /obj/item/clothing/head/cone, /turf/open/floor/plating, /area/maintenance/department/security/brig) -"are" = ( -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/labor) -"arf" = ( -/obj/machinery/button/flasher{ - id = "gulagshuttleflasher"; - name = "Flash Control"; - pixel_y = -26; - req_access_txt = "1" - }, -/obj/machinery/light, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/labor) -"arg" = ( -/obj/machinery/mineral/labor_claim_console{ - machinedir = 2; - pixel_x = 30; - pixel_y = 30 - }, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/labor) -"arh" = ( -/obj/machinery/door/airlock/titanium{ - name = "Labor Shuttle Airlock"; - req_access_txt = "2" - }, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/labor) "ari" = ( /obj/machinery/door/airlock/external{ name = "Labor Camp Shuttle Airlock"; @@ -6707,7 +6614,7 @@ network = list("SS13") }, /obj/structure/table, -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -6764,7 +6671,7 @@ pixel_y = 4 }, /obj/item/device/radio/off, -/obj/structure/sign/biohazard{ +/obj/structure/sign/warning/biohazard{ pixel_x = 32 }, /obj/item/device/radio/off, @@ -6900,20 +6807,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/security/brig) -"ass" = ( -/obj/machinery/door/airlock/titanium{ - name = "Labor Shuttle Airlock"; - req_access_txt = "2" - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/labor) -"ast" = ( -/obj/machinery/mineral/stacking_machine/laborstacker{ - input_dir = 2; - output_dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/labor) "asu" = ( /obj/machinery/atmospherics/pipe/manifold/cyan/hidden{ dir = 8 @@ -7297,11 +7190,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /obj/structure/closet/emcloset/anchored, @@ -7337,22 +7226,6 @@ "atq" = ( /turf/open/floor/circuit/green, /area/maintenance/department/security/brig) -"atr" = ( -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) -"ats" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) -"att" = ( -/obj/machinery/mineral/labor_claim_console{ - machinedir = 1; - pixel_x = 30 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) "atu" = ( /turf/open/space, /area/security/brig) @@ -7513,7 +7386,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall, /area/bridge) "atM" = ( @@ -7530,7 +7403,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall, /area/bridge) "atO" = ( @@ -7721,7 +7594,7 @@ /area/crew_quarters/dorms) "aul" = ( /obj/machinery/computer/shuttle/monastery_shuttle, -/obj/structure/sign/pods{ +/obj/structure/sign/warning/pods{ pixel_y = 32 }, /turf/open/floor/plasteel/dark, @@ -7789,22 +7662,6 @@ /obj/structure/cable, /turf/open/floor/plasteel, /area/maintenance/department/security/brig) -"auv" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) -"auw" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/flasher{ - id = "gulagshuttleflasher"; - pixel_x = 25 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) "aux" = ( /obj/item/device/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; @@ -7991,11 +7848,7 @@ /area/bridge) "auU" = ( /obj/structure/closet/emcloset/anchored, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /obj/machinery/light/small{ @@ -8013,7 +7866,7 @@ /turf/closed/wall/r_wall, /area/ai_monitored/nuke_storage) "auX" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 }, @@ -8032,7 +7885,7 @@ /turf/open/floor/plasteel/vault, /area/ai_monitored/nuke_storage) "auZ" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/ai_monitored/nuke_storage) "ava" = ( @@ -8059,7 +7912,7 @@ /turf/open/floor/plasteel, /area/gateway) "avc" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/gateway) "avd" = ( @@ -8085,7 +7938,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; @@ -8181,34 +8034,18 @@ }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) -"avo" = ( -/obj/structure/closet/crate, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) "avp" = ( -/obj/machinery/door/airlock/titanium{ - id_tag = "prisonshuttle"; - name = "Labor Shuttle Airlock" - }, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 2; - height = 5; - id = "laborcamp"; - name = "labor camp shuttle"; - port_direction = 4; - width = 9 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 2; height = 5; id = "laborcamp_home"; name = "fore bay 1"; + roundstart_template = /datum/map_template/shuttle/labour/box; width = 9 }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) +/turf/open/space/basic, +/area/space) "avq" = ( /obj/machinery/door/airlock/external{ name = "Labor Camp Shuttle Airlock" @@ -8760,14 +8597,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/security/brig) -"awG" = ( -/obj/structure/shuttle/engine/heater, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/floor/plating, -/area/shuttle/labor) "awH" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security/glass{ @@ -9157,10 +8986,6 @@ "axC" = ( /turf/closed/wall, /area/maintenance/solars/port) -"axD" = ( -/obj/structure/shuttle/engine/propulsion, -/turf/open/floor/plating, -/area/shuttle/labor) "axE" = ( /obj/machinery/door/poddoor/preopen{ id = "prison release"; @@ -9194,7 +9019,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/fore) "axJ" = ( -/obj/structure/sign/security{ +/obj/structure/sign/departments/security{ pixel_y = 32 }, /turf/open/floor/plasteel, @@ -9273,7 +9098,6 @@ /area/crew_quarters/heads/captain) "axU" = ( /obj/machinery/computer/card, -/obj/item/card/id/captains_spare, /obj/item/device/radio/intercom{ dir = 0; name = "Station Intercom (General)"; @@ -9405,7 +9229,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; @@ -9515,11 +9339,7 @@ /area/solar/port) "ayz" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /turf/open/floor/plating, @@ -9569,11 +9389,7 @@ }, /area/hallway/primary/fore) "ayF" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /turf/open/floor/plasteel, @@ -10506,11 +10322,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/maintenance/solars/port) -"aAZ" = ( -/turf/open/floor/plating{ - icon_state = "platingdmg3" - }, -/area/maintenance/department/security/brig) "aBa" = ( /turf/open/floor/plating{ icon_state = "panelscorched" @@ -10831,7 +10642,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; @@ -11483,7 +11294,7 @@ /area/crew_quarters/dorms) "aDi" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/structure/sign/restroom{ +/obj/structure/sign/departments/restroom{ pixel_y = -32 }, /turf/open/floor/plasteel/white/corner, @@ -11744,7 +11555,7 @@ /obj/machinery/porta_turret/ai{ dir = 8 }, -/obj/structure/sign/kiddieplaque{ +/obj/structure/sign/plaques/kiddie{ pixel_x = 32 }, /turf/open/floor/plasteel/darkblue/side{ @@ -12379,11 +12190,7 @@ /turf/open/floor/plating, /area/maintenance/department/cargo) "aFg" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /turf/open/floor/plating, @@ -12511,7 +12318,6 @@ "aFA" = ( /obj/machinery/door/poddoor/shutters/preopen{ id = "hop"; - layer = 2.9; name = "Privacy Shutters" }, /obj/effect/spawner/structure/window/reinforced, @@ -12539,7 +12345,6 @@ }, /obj/machinery/door/poddoor/preopen{ id = "hop"; - layer = 3.1; name = "privacy shutters" }, /turf/open/floor/plasteel, @@ -12684,14 +12489,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/cargo) -"aFS" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"aFT" = ( -/obj/structure/grille, -/obj/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/escape) "aFU" = ( /obj/structure/table, /obj/item/storage/box/bodybags, @@ -13027,26 +12824,6 @@ /obj/structure/closet/emcloset, /turf/open/floor/plating, /area/maintenance/department/cargo) -"aGQ" = ( -/obj/structure/table, -/obj/item/storage/firstaid/regular{ - pixel_x = 2; - pixel_y = 3 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"aGR" = ( -/obj/machinery/computer/emergency_shuttle, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"aGS" = ( -/obj/structure/table, -/obj/machinery/recharger, -/obj/structure/extinguisher_cabinet{ - pixel_x = 27 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) "aGT" = ( /obj/machinery/door/airlock/maintenance{ name = "Detective Maintenance"; @@ -13283,27 +13060,6 @@ /obj/structure/grille/broken, /turf/open/floor/plating, /area/maintenance/department/cargo) -"aHv" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/shuttle/escape) -"aHw" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"aHx" = ( -/obj/structure/chair/comfy/black{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"aHy" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) "aHz" = ( /turf/closed/wall, /area/hallway/secondary/exit/departure_lounge) @@ -13484,7 +13240,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /turf/open/floor/plasteel/blue/corner{ @@ -13582,7 +13338,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_y = 32 }, /turf/open/floor/plasteel/blue/corner{ @@ -13660,7 +13416,7 @@ /obj/machinery/airalarm{ pixel_y = 22 }, -/obj/structure/sign/restroom{ +/obj/structure/sign/departments/restroom{ pixel_x = 32 }, /turf/open/floor/plasteel/white/corner, @@ -13724,49 +13480,6 @@ }, /turf/open/space, /area/solar/port) -"aIs" = ( -/obj/structure/closet, -/turf/open/floor/mineral/titanium/yellow, -/area/shuttle/escape) -"aIt" = ( -/obj/machinery/recharge_station, -/turf/open/floor/mineral/titanium/yellow, -/area/shuttle/escape) -"aIu" = ( -/obj/machinery/vending/cola, -/turf/open/floor/mineral/titanium/yellow, -/area/shuttle/escape) -"aIv" = ( -/obj/machinery/computer/atmos_alert{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"aIw" = ( -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"aIx" = ( -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"aIy" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"aIz" = ( -/obj/machinery/computer/security{ - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"aIA" = ( -/obj/structure/chair, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/escape) "aIB" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-17" @@ -14236,56 +13949,8 @@ /obj/item/toy/figure/ian, /turf/open/floor/plating, /area/maintenance/department/cargo) -"aJx" = ( -/turf/open/floor/mineral/titanium/yellow, -/area/shuttle/escape) -"aJy" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = 27 - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/yellow, -/area/shuttle/escape) -"aJz" = ( -/obj/machinery/computer/crew{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"aJA" = ( -/obj/machinery/computer/communications{ - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"aJB" = ( -/obj/machinery/flasher{ - id = "shuttle_flasher"; - pixel_x = -24; - pixel_y = 6 - }, -/obj/machinery/button/flasher{ - id = "shuttle_flasher"; - pixel_x = -24; - pixel_y = -6 - }, -/obj/machinery/light/small{ - brightness = 3; - dir = 8 - }, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/escape) -"aJC" = ( -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/escape) "aJD" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /turf/open/floor/plasteel/red/side{ @@ -14370,7 +14035,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/sign/restroom{ +/obj/structure/sign/departments/restroom{ pixel_y = -32 }, /turf/open/floor/plasteel, @@ -14616,40 +14281,6 @@ /obj/item/toy/figure/lawyer, /turf/open/floor/plating, /area/maintenance/department/cargo) -"aKs" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock" - }, -/turf/open/floor/plating, -/area/shuttle/escape) -"aKt" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/mineral/titanium/yellow, -/area/shuttle/escape) -"aKu" = ( -/obj/structure/sign/nanotrasen, -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"aKv" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Emergency Shuttle Cockpit"; - req_access_txt = "19" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"aKw" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium/brig, -/area/shuttle/escape) -"aKx" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock"; - req_access_txt = "2" - }, -/turf/open/floor/plating, -/area/shuttle/escape) "aKy" = ( /obj/machinery/door/airlock/external{ cyclelinkeddir = 4; @@ -14892,26 +14523,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/maintenance/disposal) -"aLp" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Emergency Shuttle Cargo Hold"; - req_access_txt = "0" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"aLq" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-22" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) -"aLr" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Emergency Shuttle Brig"; - req_access_txt = "2" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) "aLs" = ( /obj/machinery/door/airlock/security/glass{ name = "Holding Area"; @@ -15480,15 +15091,6 @@ }, /turf/open/floor/plating, /area/maintenance/disposal) -"aMI" = ( -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"aMJ" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) "aMK" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-10" @@ -16026,43 +15628,6 @@ }, /turf/open/floor/plating, /area/maintenance/disposal) -"aNZ" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"aOa" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"aOb" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"aOc" = ( -/turf/open/floor/carpet, -/area/shuttle/escape) -"aOd" = ( -/obj/structure/chair/comfy/beige, -/turf/open/floor/carpet, -/area/shuttle/escape) -"aOe" = ( -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) "aOf" = ( /turf/open/floor/plasteel/escape{ dir = 8 @@ -16164,7 +15729,7 @@ }, /area/hallway/secondary/exit/departure_lounge) "aOs" = ( -/obj/structure/sign/evac, +/obj/structure/sign/departments/evac, /turf/closed/wall, /area/hallway/secondary/exit/departure_lounge) "aOt" = ( @@ -16521,10 +16086,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/quartermaster/storage) -"aPe" = ( -/obj/structure/shuttle/engine/propulsion/right, -/turf/open/floor/plating/airless, -/area/shuttle/supply) "aPf" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -16558,23 +16119,6 @@ }, /turf/open/floor/plating, /area/maintenance/disposal) -"aPj" = ( -/obj/structure/chair/comfy/beige{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/shuttle/escape) -"aPk" = ( -/obj/structure/table/wood/poker, -/obj/item/toy/cards/deck, -/turf/open/floor/carpet, -/area/shuttle/escape) -"aPl" = ( -/obj/structure/chair/comfy/beige{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/shuttle/escape) "aPm" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/neutral/side{ @@ -16916,16 +16460,6 @@ /obj/structure/closet/crate/medical, /turf/open/floor/plasteel/floorgrime, /area/quartermaster/warehouse) -"aQh" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) -"aQi" = ( -/obj/structure/shuttle/engine/heater{ - dir = 1 - }, -/obj/structure/window/reinforced, -/turf/open/floor/plating/airless, -/area/shuttle/supply) "aQj" = ( /obj/structure/disposalpipe/sorting/mail/flip{ dir = 2; @@ -16988,18 +16522,8 @@ }, /turf/open/floor/plating, /area/maintenance/disposal) -"aQq" = ( -/obj/structure/chair/comfy/beige{ - dir = 1 - }, -/turf/open/floor/carpet, -/area/shuttle/escape) "aQr" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /turf/open/floor/plasteel/escape{ @@ -17367,7 +16891,7 @@ /area/hallway/primary/central) "aRe" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/sign/cargo{ +/obj/structure/sign/departments/cargo{ pixel_x = 32 }, /turf/open/floor/plasteel/brown/corner{ @@ -17453,9 +16977,6 @@ /obj/structure/closet/crate/internals, /turf/open/floor/plasteel/floorgrime, /area/quartermaster/warehouse) -"aRr" = ( -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/supply) "aRs" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -17529,10 +17050,6 @@ }, /turf/open/floor/plating, /area/maintenance/disposal) -"aRA" = ( -/obj/machinery/light, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) "aRB" = ( /obj/structure/chair, /turf/open/floor/plasteel, @@ -17874,12 +17391,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/disposal) -"aSp" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Emergency Shuttle Infirmary" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) "aSq" = ( /obj/machinery/camera{ c_tag = "Departures - Port"; @@ -18306,17 +17817,6 @@ }, /turf/open/floor/plating, /area/quartermaster/storage) -"aTt" = ( -/obj/machinery/door/poddoor{ - id = "QMLoaddoor"; - name = "supply dock loading door" - }, -/obj/machinery/conveyor{ - dir = 8; - id = "QMLoad" - }, -/turf/open/floor/plating, -/area/shuttle/supply) "aTu" = ( /obj/structure/cable{ icon_state = "1-4" @@ -18441,20 +17941,7 @@ }, /turf/open/floor/plasteel/airless/solarpanel, /area/solar/starboard) -"aTF" = ( -/obj/machinery/sleeper{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"aTG" = ( -/obj/machinery/vending/medical, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) "aTH" = ( -/obj/machinery/door/airlock/titanium{ - name = "Emergency Shuttle Airlock" - }, /obj/docking_port/stationary{ dheight = 0; dir = 8; @@ -18464,17 +17951,8 @@ name = "PubbyStation emergency evac bay"; width = 20 }, -/obj/docking_port/mobile/emergency{ - dheight = 0; - dir = 8; - dwidth = 4; - height = 15; - name = "Pubby emergency shuttle"; - port_direction = 4; - width = 18 - }, -/turf/open/floor/plating, -/area/shuttle/escape) +/turf/open/space/basic, +/area/space) "aTI" = ( /obj/machinery/light, /turf/open/floor/plating, @@ -18821,13 +18299,6 @@ /turf/open/floor/plating, /area/quartermaster/storage) "aUA" = ( -/obj/machinery/door/airlock/titanium{ - name = "Supply Shuttle Airlock"; - req_access_txt = "31" - }, -/obj/docking_port/mobile/supply{ - dir = 4 - }, /obj/docking_port/stationary{ dir = 4; dwidth = 5; @@ -18836,8 +18307,8 @@ name = "Cargo Bay"; width = 12 }, -/turf/open/floor/plating, -/area/shuttle/supply) +/turf/open/space/basic, +/area/space) "aUB" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance, @@ -18865,28 +18336,6 @@ }, /turf/open/space, /area/solar/starboard) -"aUE" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) -"aUF" = ( -/obj/structure/table, -/obj/item/storage/firstaid/fire, -/obj/item/storage/firstaid/regular{ - pixel_x = 2; - pixel_y = 3 - }, -/obj/item/crowbar, -/obj/structure/sign/nosmoking_2{ - pixel_x = 32 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) "aUG" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/plasteel, @@ -19357,33 +18806,6 @@ }, /turf/open/floor/plasteel, /area/quartermaster/storage) -"aVC" = ( -/obj/machinery/button/door{ - id = "QMLoaddoor2"; - layer = 4; - name = "Loading Doors"; - pixel_x = -24; - pixel_y = -8 - }, -/obj/machinery/button/door{ - dir = 2; - id = "QMLoaddoor"; - layer = 4; - name = "Loading Doors"; - pixel_x = -24; - pixel_y = 8 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/supply) -"aVD" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/supply) "aVE" = ( /obj/structure/cable{ icon_state = "1-2" @@ -19420,16 +18842,6 @@ /obj/item/storage/crayons, /turf/open/floor/plating, /area/maintenance/department/cargo) -"aVJ" = ( -/obj/structure/shuttle/engine/heater, -/obj/structure/window/shuttle, -/turf/open/floor/plating/airless, -/area/shuttle/escape) -"aVK" = ( -/obj/structure/table, -/obj/item/defibrillator/loaded, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) "aVL" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 @@ -19569,7 +18981,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; @@ -19801,17 +19213,6 @@ }, /turf/open/floor/plating, /area/quartermaster/storage) -"aWC" = ( -/obj/machinery/door/airlock/titanium{ - name = "Supply Shuttle Airlock"; - req_access_txt = "31" - }, -/turf/open/floor/plating, -/area/shuttle/supply) -"aWD" = ( -/obj/structure/shuttle/engine/propulsion, -/turf/open/floor/plating/airless, -/area/shuttle/escape) "aWE" = ( /turf/open/floor/plasteel/neutral/corner{ dir = 8 @@ -19861,7 +19262,7 @@ /area/hallway/secondary/exit/departure_lounge) "aWM" = ( /obj/machinery/washing_machine, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; @@ -20081,7 +19482,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 }, -/obj/structure/sign/cargo{ +/obj/structure/sign/departments/cargo{ pixel_x = 32 }, /turf/open/floor/plasteel/brown/corner{ @@ -20171,17 +19572,6 @@ }, /turf/open/floor/plating, /area/quartermaster/storage) -"aXB" = ( -/obj/machinery/door/poddoor{ - id = "QMLoaddoor2"; - name = "supply dock loading door" - }, -/obj/machinery/conveyor{ - dir = 8; - id = "QMLoad2" - }, -/turf/open/floor/plating, -/area/shuttle/supply) "aXC" = ( /obj/structure/chair/stool, /turf/open/floor/plating, @@ -20237,7 +19627,6 @@ }, /obj/machinery/door/poddoor/preopen{ id = "papersplease"; - layer = 3.1; name = "privacy shutters" }, /obj/item/folder/red, @@ -20346,7 +19735,7 @@ /area/hydroponics) "aXY" = ( /obj/machinery/hydroponics/constructable, -/obj/structure/sign/botany{ +/obj/structure/sign/departments/botany{ pixel_y = 32 }, /obj/machinery/light{ @@ -20972,10 +20361,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/quartermaster/storage) -"aZu" = ( -/obj/machinery/light, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/supply) "aZv" = ( /obj/structure/cable{ icon_state = "2-4" @@ -21914,11 +21299,7 @@ /area/maintenance/solars/starboard) "bbO" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /turf/open/floor/plating, @@ -21968,7 +21349,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/door/poddoor/preopen{ id = "papersplease"; - layer = 3.1; name = "privacy shutters" }, /obj/item/crowbar, @@ -22373,11 +21753,7 @@ /turf/open/floor/plasteel/airless/solarpanel, /area/solar/starboard) "bcW" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/effect/spawner/structure/window/reinforced, @@ -22657,24 +22033,6 @@ }, /turf/open/floor/plasteel/brown/corner, /area/quartermaster/miningdock) -"bdN" = ( -/obj/structure/table, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) -"bdO" = ( -/obj/machinery/computer/shuttle/mining, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) -"bdP" = ( -/obj/structure/table, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) "bdQ" = ( /obj/structure/cable{ icon_state = "2-4" @@ -22763,7 +22121,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/sign/custodian{ +/obj/structure/sign/departments/custodian{ pixel_x = 32 }, /turf/open/floor/plasteel/neutral/corner, @@ -23089,12 +22447,6 @@ }, /turf/open/floor/plasteel/brown/corner, /area/quartermaster/miningdock) -"beQ" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) "beR" = ( /obj/structure/cable{ icon_state = "1-2" @@ -23128,19 +22480,6 @@ }, /turf/open/space, /area/solar/starboard) -"beV" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/arrival) -"beW" = ( -/obj/machinery/door/airlock/titanium{ - name = "Arrivals Shuttle Airlock" - }, -/turf/open/floor/plating, -/area/shuttle/arrival) -"beX" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/arrival) "beY" = ( /obj/machinery/camera{ c_tag = "Arrivals Central"; @@ -23468,36 +22807,17 @@ /turf/open/floor/plating, /area/quartermaster/miningdock) "bfK" = ( -/obj/machinery/door/airlock/titanium{ - name = "Mining Shuttle Airlock"; - req_access_txt = "48" - }, -/turf/open/floor/plating, -/area/shuttle/labor) -"bfL" = ( -/obj/machinery/door/airlock/titanium{ - name = "Mining Shuttle Airlock"; - req_access_txt = "48" - }, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 3; - height = 5; - id = "mining"; - name = "mining shuttle"; - port_direction = 4; - width = 7 - }, /obj/docking_port/stationary{ - dir = 8; + dir = 4; dwidth = 3; height = 5; id = "mining_home"; name = "mining shuttle bay"; + roundstart_template = /datum/map_template/shuttle/mining/delta; width = 7 }, -/turf/open/floor/plating, -/area/shuttle/labor) +/turf/open/space/basic, +/area/space) "bfM" = ( /obj/structure/chair{ dir = 4 @@ -23524,60 +22844,6 @@ /obj/item/electronics/apc, /turf/open/floor/plating, /area/maintenance/department/cargo) -"bfQ" = ( -/obj/structure/table, -/obj/item/storage/firstaid/regular{ - pixel_y = 4 - }, -/obj/item/storage/toolbox/emergency, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"bfR" = ( -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"bfS" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/sign/poster/official/enlist{ - pixel_y = 32 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"bfT" = ( -/obj/structure/closet/wardrobe/black, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"bfU" = ( -/obj/structure/closet/wardrobe/mixed, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"bfV" = ( -/obj/machinery/requests_console{ - department = "Arrival shuttle"; - name = "Arrivals Shuttle console"; - pixel_y = 30 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"bfW" = ( -/obj/structure/shuttle/engine/heater{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/shuttle/arrival) -"bfX" = ( -/obj/structure/shuttle/engine/propulsion/burst/right{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/arrival) "bfY" = ( /obj/machinery/atmospherics/pipe/simple/cyan/hidden, /turf/open/floor/plasteel/neutral/corner, @@ -23918,51 +23184,18 @@ /obj/item/paperplane, /turf/open/floor/plating, /area/maintenance/department/cargo) -"bgO" = ( -/turf/open/floor/plating{ - icon_state = "platingdmg3" - }, -/area/maintenance/department/cargo) -"bgP" = ( -/obj/structure/grille, -/obj/structure/window/shuttle, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "arrivy"; - name = "ship shutters" - }, -/turf/open/floor/plating, -/area/shuttle/arrival) -"bgQ" = ( -/obj/machinery/door/airlock/titanium{ - name = "Arrivals Shuttle Airlock" - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"bgR" = ( -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) "bgS" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 4 - }, -/obj/docking_port/mobile/arrivals{ - height = 13; - name = "pubby arrivals shuttle"; - width = 6 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 3; height = 13; id = "arrivals_stationary"; name = "pubby arrivals"; + roundstart_template = /datum/map_template/shuttle/arrival/pubby; width = 6 }, -/turf/open/floor/plating/airless, -/area/shuttle/arrival) +/turf/open/space/basic, +/area/space) "bgU" = ( /obj/structure/table/wood, /obj/item/device/flashlight/lamp/green{ @@ -24261,24 +23494,6 @@ dir = 6 }, /area/quartermaster/miningdock) -"bhw" = ( -/obj/structure/closet/crate, -/obj/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) -"bhx" = ( -/obj/structure/shuttle/engine/heater, -/turf/open/floor/plating, -/area/shuttle/labor) -"bhy" = ( -/obj/structure/ore_box, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/labor) "bhz" = ( /obj/structure/cable{ icon_state = "1-2" @@ -24303,16 +23518,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/cargo) -"bhC" = ( -/obj/machinery/light/small, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"bhD" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/arrival) "bhE" = ( /obj/machinery/light{ dir = 4 @@ -24458,42 +23663,6 @@ /obj/structure/cable, /turf/open/floor/plasteel/dark, /area/science/robotics/mechbay) -"bhW" = ( -/obj/structure/shuttle/engine/propulsion/burst, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/turf/open/floor/plating/airless, -/area/shuttle/labor) -"bhX" = ( -/obj/structure/closet/emcloset, -/obj/item/storage/firstaid/o2, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/clothing/mask/breath, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"bhY" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = -29 - }, -/obj/machinery/light, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"bhZ" = ( -/obj/item/device/radio/intercom{ - name = "Station Intercom (General)"; - pixel_y = -29 - }, -/obj/machinery/light, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/arrival) -"bia" = ( -/obj/structure/shuttle/engine/propulsion/burst/left{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/arrival) "bib" = ( /obj/structure/chair/comfy/beige{ dir = 4 @@ -24548,7 +23717,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/sign/bluecross_2{ +/obj/structure/sign/departments/medbay/alt{ pixel_x = 32; pixel_y = -32 }, @@ -24694,18 +23863,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/cargo) -"biA" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/department/cargo) "biB" = ( /obj/structure/cable{ icon_state = "4-8" @@ -24930,7 +24087,7 @@ /turf/open/floor/plating, /area/medical/medbay/central) "bje" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall, /area/medical/medbay/central) "bjf" = ( @@ -24998,7 +24155,7 @@ /turf/open/floor/plasteel/green/corner, /area/science/research/lobby) "bjs" = ( -/obj/structure/sign/science, +/obj/structure/sign/departments/science, /turf/closed/wall, /area/science/research/lobby) "bjt" = ( @@ -25095,11 +24252,6 @@ /obj/effect/decal/cleanable/vomit/old, /turf/open/floor/plating, /area/maintenance/department/cargo) -"bjG" = ( -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/maintenance/department/cargo) "bjH" = ( /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating{ @@ -25929,13 +25081,6 @@ }, /turf/open/floor/plasteel/dark/telecomms/server/walkway, /area/science/server) -"blO" = ( -/obj/machinery/rnd/server, -/obj/structure/sign/poster/random{ - pixel_y = 32 - }, -/turf/open/floor/circuit/telecomms/server, -/area/science/server) "blP" = ( /obj/effect/landmark/event_spawn, /obj/item/device/radio/beacon, @@ -25985,7 +25130,7 @@ /turf/open/floor/engine, /area/science/explab) "blV" = ( -/obj/structure/sign/kiddieplaque/perfect_drone{ +/obj/structure/sign/plaques/kiddie/perfect_drone{ pixel_y = 32 }, /turf/open/floor/engine, @@ -26857,9 +26002,6 @@ dir = 1 }, /area/science/xenobiology) -"boi" = ( -/turf/open/floor/engine, -/area/science/xenobiology) "boj" = ( /obj/item/weldingtool, /obj/effect/spawner/lootdrop/maintenance, @@ -27321,11 +26463,7 @@ /turf/open/floor/plasteel/white, /area/science/xenobiology) "bpq" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/science/xenobiology) "bpr" = ( @@ -28030,17 +27168,6 @@ /obj/item/cigbutt, /turf/open/floor/plating, /area/maintenance/department/cargo) -"bqP" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/transport) -"bqQ" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/transport) -"bqR" = ( -/obj/machinery/door/airlock/external, -/turf/open/floor/pod/dark, -/area/shuttle/transport) "bqS" = ( /obj/machinery/power/apc{ dir = 4; @@ -28544,7 +27671,7 @@ /turf/open/floor/plasteel/white, /area/science/xenobiology) "brR" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall, /area/science/xenobiology) "brS" = ( @@ -28625,7 +27752,7 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "brZ" = ( -/obj/structure/sign/xenobio, +/obj/structure/sign/departments/xenobio, /obj/machinery/atmospherics/pipe/simple/general/hidden{ dir = 9 }, @@ -28718,39 +27845,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/maintenance/department/cargo) -"bsg" = ( -/obj/structure/shuttle/engine/propulsion/left{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/shuttle/transport) -"bsh" = ( -/obj/structure/shuttle/engine/heater{ - dir = 8 - }, -/obj/structure/window/reinforced, -/turf/open/floor/plating/airless, -/area/shuttle/transport) -"bsi" = ( -/obj/structure/chair, -/turf/open/floor/pod/dark, -/area/shuttle/transport) -"bsj" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/pod/light, -/area/shuttle/transport) -"bsk" = ( -/turf/open/floor/pod/light, -/area/shuttle/transport) "bsl" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK" - }, +/obj/structure/sign/warning/vacuum/external, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/hallway/secondary/entry) @@ -29331,7 +28427,7 @@ dir = 8 }, /obj/effect/landmark/xeno_spawn, -/obj/structure/sign/xenobio{ +/obj/structure/sign/departments/xenobio{ pixel_x = -32 }, /turf/open/floor/plasteel/floorgrime, @@ -29348,7 +28444,7 @@ /area/science/xenobiology) "btC" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/open/floor/plating, /area/science/xenobiology) "btD" = ( @@ -29365,42 +28461,7 @@ /obj/item/reagent_containers/food/drinks/soda_cans/dr_gibb, /turf/open/floor/plating, /area/maintenance/department/cargo) -"btG" = ( -/obj/structure/shuttle/engine/heater{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/transport) -"btH" = ( -/obj/machinery/light/small, -/turf/open/floor/pod/light, -/area/shuttle/transport) -"btI" = ( -/obj/machinery/door/airlock/titanium, -/turf/open/floor/pod/light, -/area/shuttle/transport) -"btJ" = ( -/obj/machinery/computer/shuttle/ferry/request{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/shuttle/transport) "btK" = ( -/obj/machinery/door/airlock/titanium, -/obj/docking_port/mobile{ - dir = 8; - dwidth = 2; - height = 13; - id = "ferry"; - name = "ferry shuttle"; - port_direction = 1; - preferred_direction = 4; - roundstart_move = "ferry_away"; - width = 5 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 2; @@ -29410,8 +28471,8 @@ turf_type = /turf/open/space; width = 5 }, -/turf/open/floor/pod/light, -/area/shuttle/transport) +/turf/open/space/basic, +/area/space) "btL" = ( /obj/machinery/door/airlock/external{ cyclelinkeddir = 4; @@ -30006,26 +29067,6 @@ }, /turf/open/floor/plating/airless, /area/science/xenobiology) -"buX" = ( -/obj/structure/shuttle/engine/heater{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 1 - }, -/turf/open/floor/plating/airless, -/area/shuttle/transport) -"buY" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/shuttle/transport) -"buZ" = ( -/obj/machinery/light, -/turf/open/floor/pod/light, -/area/shuttle/transport) "bva" = ( /turf/closed/wall, /area/maintenance/department/engine) @@ -30302,7 +29343,7 @@ name = "research shutters" }, /obj/machinery/door/firedoor/heavy, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -30634,10 +29675,6 @@ }, /turf/open/floor/plating/airless, /area/space/nearstation) -"bwp" = ( -/obj/machinery/door/airlock/external, -/turf/open/floor/pod/light, -/area/shuttle/transport) "bwq" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -31900,7 +30937,7 @@ }, /obj/machinery/door/firedoor/heavy, /obj/effect/turf_decal/stripes/line, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -32288,7 +31325,7 @@ /obj/structure/chair{ dir = 4 }, -/obj/structure/sign/holy{ +/obj/structure/sign/departments/holy{ pixel_x = -32 }, /turf/open/floor/plasteel/dark, @@ -32502,7 +31539,7 @@ /turf/open/floor/plasteel/whiteblue/corner, /area/medical/medbay/central) "bzY" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall, /area/crew_quarters/heads/cmo) "bzZ" = ( @@ -32922,7 +31959,7 @@ /turf/open/floor/plasteel/white, /area/medical/virology) "bAY" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall, /area/medical/virology) "bAZ" = ( @@ -33750,7 +32787,7 @@ /turf/open/floor/engine, /area/science/storage) "bCS" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall, /area/science/storage) "bCT" = ( @@ -35139,7 +34176,7 @@ /obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Medbay Storage"; - req_access_txt = "45" + req_access_txt = "5" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -35198,7 +34235,7 @@ icon_state = "1-2" }, /obj/structure/disposalpipe/segment, -/obj/structure/sign/examroom{ +/obj/structure/sign/departments/examroom{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -35214,7 +34251,7 @@ /turf/open/floor/plasteel/yellow/corner, /area/hallway/primary/aft) "bGa" = ( -/obj/structure/sign/science, +/obj/structure/sign/departments/science, /turf/closed/wall, /area/hallway/primary/aft) "bGb" = ( @@ -35585,13 +34622,13 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "bGY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /obj/machinery/door/airlock/medical/glass{ id_tag = null; name = "Medbay Storage"; - req_access_txt = "45" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 + req_access_txt = "5" }, /turf/open/floor/plasteel/white, /area/medical/medbay/central) @@ -36349,7 +35386,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = -32 }, /obj/effect/turf_decal/stripes/corner{ @@ -36443,12 +35480,7 @@ /area/chapel/dock) "bIV" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK" - }, +/obj/structure/sign/warning/vacuum/external, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, /area/chapel/dock) @@ -37036,7 +36068,7 @@ /area/medical/virology) "bKq" = ( /obj/effect/spawner/structure/window, -/obj/structure/sign/deathsposal, +/obj/structure/sign/warning/deathsposal, /turf/open/floor/plating, /area/medical/virology) "bKr" = ( @@ -37199,7 +36231,7 @@ /obj/effect/turf_decal/delivery, /obj/machinery/door/poddoor/preopen{ id = "atmos"; - name = "atmos blast door" + name = "Atmospherics Blast Door" }, /obj/machinery/door/firedoor/heavy, /turf/open/floor/plasteel/dark, @@ -37208,7 +36240,7 @@ /obj/effect/turf_decal/delivery, /obj/machinery/door/poddoor/preopen{ id = "atmos"; - name = "atmos blast door" + name = "Atmospherics Blast Door" }, /obj/machinery/door/firedoor/heavy, /obj/structure/disposalpipe/segment, @@ -37503,9 +36535,6 @@ "bLv" = ( /turf/open/floor/engine, /area/maintenance/department/engine) -"bLw" = ( -/turf/open/floor/engine, -/area/maintenance/department/engine) "bLx" = ( /obj/structure/window/reinforced{ dir = 4 @@ -37840,11 +36869,7 @@ frequency = 1441; id = "inc_in" }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /turf/open/floor/engine/vacuum, @@ -37869,11 +36894,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /turf/open/floor/plating, @@ -38659,7 +37680,7 @@ /turf/open/floor/plating, /area/engine/atmos) "bOs" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, /area/science/mixing) "bOt" = ( @@ -38988,10 +38009,6 @@ }, /turf/open/space, /area/space/nearstation) -"bPm" = ( -/obj/structure/lattice/catwalk, -/turf/open/space, -/area/space/nearstation) "bPn" = ( /obj/machinery/door/airlock/centcom{ name = "Chapel"; @@ -39513,8 +38530,7 @@ }, /obj/machinery/door/poddoor/preopen{ id = "atmos"; - layer = 2.9; - name = "atmos blast door" + name = "Atmospherics Blast Door" }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, @@ -39748,10 +38764,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; +/obj/structure/sign/warning/radiation/rad_area{ pixel_x = -32 }, /obj/effect/turf_decal/stripes/corner{ @@ -39849,8 +38862,7 @@ }, /obj/machinery/door/poddoor/preopen{ id = "atmos"; - layer = 2.9; - name = "atmos blast door" + name = "Atmospherics Blast Door" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -40351,10 +39363,7 @@ /turf/closed/wall/r_wall, /area/storage/tech) "bSE" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; +/obj/structure/sign/warning/radiation/rad_area{ pixel_x = -32 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -40439,7 +39448,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/sign/engineering{ +/obj/structure/sign/departments/engineering{ pixel_y = -32 }, /turf/open/floor/plasteel/yellow/corner, @@ -40458,7 +39467,7 @@ icon_state = "plant-02" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/sign/engineering{ +/obj/structure/sign/departments/engineering{ pixel_y = -32 }, /turf/open/floor/plasteel/yellow/corner, @@ -40849,7 +39858,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 4 }, -/obj/structure/sign/atmosplaque{ +/obj/structure/sign/plaques/atmos{ pixel_y = 32 }, /obj/machinery/light{ @@ -40974,11 +39983,6 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/department/engine) -"bTY" = ( -/turf/open/floor/plating{ - icon_state = "platingdmg3" - }, -/area/maintenance/department/engine) "bUa" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 1; @@ -41007,7 +40011,7 @@ /turf/open/floor/plating, /area/maintenance/department/engine) "bUf" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/storage/tech) "bUg" = ( @@ -41019,7 +40023,7 @@ /turf/open/floor/plasteel/dark, /area/storage/tech) "bUh" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, /area/storage/tech) @@ -41098,7 +40102,7 @@ "bUo" = ( /obj/machinery/door/poddoor/preopen{ id = "atmos"; - name = "atmos blast door" + name = "Atmospherics Blast Door" }, /obj/machinery/door/firedoor/heavy, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -41196,19 +40200,6 @@ }, /turf/open/space, /area/space/nearstation) -"bUB" = ( -/obj/docking_port/stationary{ - dheight = 9; - dir = 2; - dwidth = 5; - height = 24; - id = "syndicate_se"; - name = "southeast of station"; - turf_type = /turf/open/space; - width = 18 - }, -/turf/open/space, -/area/space/nearstation) "bUC" = ( /obj/structure/flora/ausbushes/fernybush, /turf/open/floor/plating/asteroid, @@ -41461,7 +40452,7 @@ "bVc" = ( /obj/machinery/door/poddoor/preopen{ id = "atmos"; - name = "atmos blast door" + name = "Atmospherics Blast Door" }, /obj/machinery/door/firedoor/heavy, /obj/structure/disposalpipe/segment{ @@ -42602,7 +41593,7 @@ /obj/structure/disposalpipe/trunk{ dir = 4 }, -/obj/structure/sign/deathsposal{ +/obj/structure/sign/warning/deathsposal{ pixel_x = -32 }, /turf/open/floor/plating{ @@ -42695,11 +41686,7 @@ /area/engine/engineering) "bYf" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" - }, +/obj/structure/sign/warning/electricshock, /turf/open/floor/plating, /area/engine/engine_smes) "bYg" = ( @@ -43530,7 +42517,7 @@ /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "bZV" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) "bZY" = ( @@ -43667,13 +42654,6 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/engine/engineering) -"cas" = ( -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/engine/engineering) "cat" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 @@ -43719,10 +42699,6 @@ /obj/item/stack/cable_coil, /turf/open/floor/plasteel, /area/engine/engineering) -"cay" = ( -/obj/structure/closet/wardrobe/engineering_yellow, -/turf/open/floor/plasteel, -/area/engine/engineering) "caz" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/on{ dir = 1; @@ -44041,11 +43017,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "cbj" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; - icon_state = "radiation"; - name = "RADIOACTIVE AREA" - }, +/obj/structure/sign/warning/radiation/rad_area, /turf/closed/wall/r_wall, /area/engine/engineering) "cbk" = ( @@ -44540,21 +43512,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/engine/engineering) -"ccT" = ( -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"ccU" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "ccV" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -44598,36 +43555,12 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/plating, /area/engine/engineering) -"cdb" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/engineering) "cdc" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 }, /turf/open/floor/plasteel, /area/engine/engineering) -"cdd" = ( -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"cde" = ( -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "cdf" = ( /obj/structure/cable{ icon_state = "1-2" @@ -44668,11 +43601,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /turf/open/floor/plating, @@ -44922,13 +43851,6 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/engine/engineering) -"cea" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "ceb" = ( /obj/machinery/computer/rdconsole/production{ dir = 8 @@ -45239,11 +44161,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -45255,14 +44173,6 @@ }, /turf/open/floor/plating, /area/engine/engineering) -"ceZ" = ( -/obj/machinery/power/rad_collector/anchored, -/obj/structure/cable/yellow, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/engine/engineering) "cfa" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -45292,11 +44202,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /turf/open/floor/plating, @@ -45758,7 +44664,7 @@ /area/chapel/main/monastery) "cgM" = ( /obj/structure/dresser, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; @@ -45795,11 +44701,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /turf/open/floor/plating, @@ -45843,12 +44745,6 @@ }, /turf/open/floor/plating/airless, /area/space/nearstation) -"cgW" = ( -/turf/open/space, -/area/space) -"cgX" = ( -/turf/open/space/basic, -/area/space) "cgY" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -46001,10 +44897,6 @@ }, /turf/open/floor/plating/airless, /area/engine/engineering) -"chy" = ( -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) "chz" = ( /obj/structure/cable/yellow{ icon_state = "0-4" @@ -46237,21 +45129,6 @@ }, /turf/open/floor/plating/airless, /area/space/nearstation) -"cil" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"cim" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 1 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"cin" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Shuttle Airlock" - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/abandoned) "cio" = ( /obj/structure/closet/cabinet, /obj/item/clothing/suit/holidaypriest, @@ -46318,12 +45195,6 @@ /obj/structure/grille, /turf/open/floor/plating/airless, /area/engine/engineering) -"ciw" = ( -/turf/open/floor/plasteel/dark, -/area/shuttle/abandoned) -"cix" = ( -/turf/open/floor/plasteel, -/area/shuttle/abandoned) "ciy" = ( /obj/item/reagent_containers/glass/bucket, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -46474,47 +45345,6 @@ /obj/item/bikehorn/rubberducky, /turf/open/floor/plasteel/showroomfloor, /area/chapel/main/monastery) -"cja" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 8 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"cjb" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/table/glass, -/obj/item/gun/medbeam, -/turf/open/floor/plating/abductor, -/area/shuttle/abandoned) -"cjc" = ( -/obj/structure/chair, -/turf/open/floor/plating/abductor, -/area/shuttle/abandoned) -"cjd" = ( -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/table/glass, -/obj/machinery/recharger, -/obj/item/gun/energy/laser/retro, -/turf/open/floor/plating/abductor, -/area/shuttle/abandoned) -"cje" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 4 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) "cjf" = ( /obj/machinery/light/small{ dir = 8 @@ -46595,7 +45425,7 @@ /turf/closed/wall, /area/asteroid/nearstation/bomb_site) "cjw" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'BOMB RANGE"; name = "BOMB RANGE" }, @@ -46608,39 +45438,7 @@ "cjx" = ( /turf/open/floor/plating/asteroid/airless, /area/asteroid/nearstation/bomb_site) -"cjy" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/plating/abductor, -/area/shuttle/abandoned) -"cjz" = ( -/obj/machinery/computer/shuttle/white_ship, -/turf/open/floor/plating/abductor, -/area/shuttle/abandoned) -"cjA" = ( -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/plating/abductor, -/area/shuttle/abandoned) "cjB" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Shuttle Airlock" - }, -/obj/docking_port/mobile{ - dheight = 0; - dir = 8; - dwidth = 4; - height = 9; - id = "whiteship"; - launch_status = 0; - name = "White Ship"; - port_direction = 4; - preferred_direction = 1; - roundstart_move = "whiteship_away"; - width = 9 - }, /obj/docking_port/stationary{ dir = 8; dwidth = 11; @@ -46650,14 +45448,10 @@ turf_type = /turf/open/space; width = 35 }, -/turf/open/floor/plasteel/dark, -/area/shuttle/abandoned) +/turf/open/space/basic, +/area/space) "cjC" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/machinery/light/small{ @@ -46734,32 +45528,6 @@ }, /turf/open/floor/plating/asteroid/airless, /area/asteroid/nearstation/bomb_site) -"cjW" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced, -/obj/structure/table/glass, -/obj/item/tank/internals/oxygen, -/obj/item/clothing/mask/breath, -/obj/item/clothing/suit/space/hardsuit/engine/elite, -/turf/open/floor/plating/abductor, -/area/shuttle/abandoned) -"cjX" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/plating/abductor, -/area/shuttle/abandoned) -"cjY" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced, -/obj/structure/table/glass, -/obj/item/clothing/shoes/magboots, -/turf/open/floor/plating/abductor, -/area/shuttle/abandoned) "cjZ" = ( /obj/structure/table, /obj/item/storage/crayons, @@ -46987,7 +45755,7 @@ /turf/open/floor/plasteel/dark, /area/library) "ckJ" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/engine/engineering) "ckK" = ( @@ -47068,10 +45836,6 @@ /obj/structure/bookcase/random/fiction, /turf/open/floor/plasteel/dark, /area/library) -"ckY" = ( -/obj/structure/shuttle/engine/propulsion/burst, -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) "clb" = ( /obj/machinery/door/poddoor{ id = "chapelgun"; @@ -47143,19 +45907,6 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/closed/mineral, /area/asteroid/nearstation/bomb_site) -"clt" = ( -/obj/docking_port/stationary{ - dheight = 9; - dir = 2; - dwidth = 5; - height = 24; - id = "syndicate_southmaint"; - name = "south maintenance airlock"; - turf_type = /turf/open/space; - width = 18 - }, -/turf/open/space, -/area/space/nearstation) "clu" = ( /obj/machinery/camera{ c_tag = "Telecomms External Fore"; @@ -47657,7 +46408,7 @@ /turf/open/floor/circuit/telecomms/mainframe, /area/tcommsat/server) "cmH" = ( -/obj/machinery/message_server, +/obj/machinery/telecomms/message_server, /turf/open/floor/circuit/telecomms/mainframe, /area/tcommsat/server) "cmI" = ( @@ -47874,19 +46625,6 @@ }, /turf/open/space, /area/space/nearstation) -"cnA" = ( -/obj/docking_port/stationary{ - dheight = 9; - dir = 2; - dwidth = 5; - height = 24; - id = "syndicate_s"; - name = "south of station"; - turf_type = /turf/open/space; - width = 18 - }, -/turf/open/space, -/area/space/nearstation) "cnC" = ( /obj/machinery/turretid{ control_area = "/area/ai_monitored/turret_protected/aisat_interior"; @@ -48593,11 +47331,6 @@ dir = 1 }, /area/science/research/lobby) -"cqq" = ( -/obj/structure/grille, -/obj/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/transport) "cqs" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -48753,12 +47486,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) "crl" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK" - }, +/obj/structure/sign/warning/vacuum/external, /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/chapel/asteroid/monastery) @@ -48804,11 +47532,7 @@ /turf/open/floor/plating, /area/maintenance/department/engine) "crA" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, /obj/structure/disposalpipe/segment{ @@ -48865,7 +47589,7 @@ /obj/machinery/door/airlock/centcom{ name = "Crematorium"; opacity = 1; - req_access = "27" + req_access = list(27) }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/dark, @@ -49069,12 +47793,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine) -"csz" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/department/engine) "csB" = ( /obj/structure/chair/comfy/black{ dir = 4 @@ -49941,11 +48659,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /obj/machinery/camera{ @@ -50287,13 +49001,6 @@ }, /turf/closed/wall, /area/library) -"cxF" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/library) -"cxG" = ( -/turf/open/space/basic, -/area/library) "cxJ" = ( /obj/structure/window/reinforced/fulltile, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -50398,10 +49105,6 @@ }, /turf/closed/wall, /area/library) -"cyK" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) "cyL" = ( /obj/structure/lattice, /obj/structure/lattice, @@ -50495,11 +49198,6 @@ /obj/structure/table/wood/fancy, /turf/open/floor/carpet, /area/library) -"czs" = ( -/obj/structure/table/wood/fancy, -/obj/item/storage/pill_bottle/dice, -/turf/open/floor/carpet, -/area/library) "czt" = ( /obj/structure/table/wood/fancy, /obj/item/storage/photo_album, @@ -50526,11 +49224,6 @@ }, /turf/open/floor/plasteel/dark, /area/library) -"czA" = ( -/obj/structure/table/wood/fancy, -/obj/item/dice/d20, -/turf/open/floor/carpet, -/area/library) "czB" = ( /obj/structure/table/wood/fancy, /obj/item/storage/fancy/candle_box, @@ -50957,7 +49650,7 @@ /turf/open/floor/plating, /area/maintenance/department/engine) "cBM" = ( -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "Under the painting a plaque reads: 'While the meat grinder may not have spared you, fear not. Not one part of you has gone to waste... You were delicious.'"; icon_state = "monkey_painting"; name = "Mr. Deempisi portrait"; @@ -50965,23 +49658,6 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/office) -"cBN" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plating, -/area/shuttle/escape) -"cBO" = ( -/obj/docking_port/stationary{ - dheight = 9; - dir = 2; - dwidth = 5; - height = 24; - id = "syndicate_nw"; - name = "northwest of station"; - turf_type = /turf/open/space; - width = 18 - }, -/turf/open/space/basic, -/area/space/nearstation) "cBP" = ( /obj/machinery/smoke_machine, /turf/open/floor/plasteel/white, @@ -51017,99 +49693,12 @@ "cBU" = ( /turf/closed/wall/r_wall, /area/gateway) -"cBV" = ( -/turf/closed/wall/r_wall, -/area/gateway) -"cBW" = ( -/turf/closed/wall/r_wall, -/area/gateway) -"cBX" = ( -/turf/closed/wall/r_wall, -/area/gateway) -"cBY" = ( -/turf/closed/wall/r_wall, -/area/gateway) -"cBZ" = ( -/turf/closed/wall/r_wall, -/area/gateway) -"cCa" = ( -/turf/closed/wall/r_wall, -/area/gateway) -"cCb" = ( -/turf/closed/wall/r_wall, -/area/gateway) -"cCc" = ( -/turf/closed/wall/r_wall, -/area/gateway) -"cCd" = ( -/turf/closed/wall/r_wall, -/area/gateway) -"cCe" = ( -/turf/closed/wall/r_wall, -/area/gateway) -"cCf" = ( -/turf/closed/wall/r_wall, -/area/gateway) -"cCg" = ( -/turf/closed/wall/r_wall, -/area/gateway) -"cCh" = ( -/turf/closed/wall/r_wall, -/area/gateway) -"cCi" = ( -/turf/closed/wall/r_wall, -/area/gateway) -"cCj" = ( -/turf/closed/wall/r_wall, -/area/gateway) -"cCk" = ( -/turf/closed/wall/r_wall, -/area/gateway) "cCl" = ( /turf/closed/wall/r_wall, /area/science/lab) -"cCm" = ( -/turf/closed/wall/r_wall, -/area/science/lab) -"cCn" = ( -/turf/closed/wall/r_wall, -/area/science/lab) -"cCo" = ( -/turf/closed/wall/r_wall, -/area/science/lab) -"cCp" = ( -/turf/closed/wall/r_wall, -/area/science/lab) -"cCq" = ( -/turf/closed/wall/r_wall, -/area/science/lab) -"cCr" = ( -/turf/closed/wall/r_wall, -/area/science/lab) -"cCs" = ( -/turf/closed/wall/r_wall, -/area/science/lab) "cCt" = ( /turf/open/floor/plasteel/white, /area/science/lab) -"cCu" = ( -/turf/closed/wall/r_wall, -/area/science/lab) -"cCv" = ( -/turf/closed/wall/r_wall, -/area/science/lab) -"cCw" = ( -/turf/open/floor/plasteel/white, -/area/science/lab) -"cCx" = ( -/turf/closed/wall/r_wall, -/area/science/lab) -"cCy" = ( -/turf/closed/wall/r_wall, -/area/science/lab) -"cCz" = ( -/turf/closed/wall/r_wall, -/area/science/lab) "cCA" = ( /turf/closed/wall, /area/science/lab) @@ -51119,21 +49708,10 @@ }, /turf/open/floor/plasteel, /area/quartermaster/storage) -"cCC" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/rnd/protolathe/department/cargo, -/turf/open/floor/plasteel, -/area/quartermaster/storage) "cCD" = ( /obj/machinery/rnd/protolathe/department/service, /turf/open/floor/plating, /area/crew_quarters/kitchen) -"cCE" = ( -/obj/machinery/rnd/protolathe/department/medical, -/turf/open/floor/plasteel/white, -/area/medical/medbay/central) "cCF" = ( /obj/effect/turf_decal/bot, /turf/open/floor/plasteel/white, @@ -51154,30 +49732,6 @@ }, /turf/open/floor/plating/airless, /area/engine/engineering) -"cCJ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"cCK" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"cCL" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) -"cCM" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "cCN" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -51194,10 +49748,6 @@ /obj/effect/turf_decal/bot/right, /turf/open/floor/plasteel/white, /area/engine/gravity_generator) -"cCQ" = ( -/obj/effect/turf_decal/bot/right, -/turf/open/floor/plasteel/white, -/area/engine/gravity_generator) "cCR" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -51258,45 +49808,6 @@ "cDa" = ( /turf/closed/wall, /area/quartermaster/warehouse) -"cDb" = ( -/turf/closed/wall, -/area/quartermaster/warehouse) -"cDc" = ( -/turf/closed/wall, -/area/quartermaster/warehouse) -"cDd" = ( -/turf/closed/wall, -/area/quartermaster/warehouse) -"cDe" = ( -/turf/closed/wall, -/area/quartermaster/warehouse) -"cDf" = ( -/turf/closed/wall, -/area/quartermaster/warehouse) -"cDg" = ( -/turf/closed/wall, -/area/quartermaster/warehouse) -"cDh" = ( -/turf/closed/wall, -/area/quartermaster/warehouse) -"cDi" = ( -/turf/closed/wall, -/area/quartermaster/warehouse) -"cDj" = ( -/turf/closed/wall, -/area/quartermaster/warehouse) -"cDk" = ( -/turf/closed/wall, -/area/quartermaster/warehouse) -"cDl" = ( -/turf/closed/wall, -/area/quartermaster/warehouse) -"cDm" = ( -/turf/closed/wall, -/area/quartermaster/warehouse) -"cDn" = ( -/turf/closed/wall, -/area/quartermaster/warehouse) (1,1,1) = {" aaa @@ -59963,11 +58474,11 @@ aaa aaa aaa aaa -cil -cja -cin -cja -cil +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -60219,13 +58730,13 @@ aaa aaa aaa aaa -cil -cil -ciw -cix -ciw -cil -cil +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -60475,15 +58986,15 @@ aaa aaa aaa aaa -cil -cil -ciw -ciw -cix -ciw -ciw -cil -cil +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -60732,15 +59243,15 @@ aaa aaa aaa aaa -cim -ciw -ciw -cjb -cjy -cjW -ciw -ciw -ckY +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -60989,15 +59500,15 @@ aaa aaa aaa aaa -cin -cix -cix -cjc -cjz -cjX -cix -cix -cin +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -61246,15 +59757,15 @@ aaa aaa aaa aaa -cim -ciw -ciw -cjd -cjA -cjY -ciw -ciw -ckY +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -61503,15 +60014,15 @@ aaa aaa aaa aaa -cil -cil -ciw -ciw -cix -ciw -ciw -cil -cil +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -61761,13 +60272,13 @@ aaa aaa aaa aaa -cil -cil -ciw -cix -ciw -cil -cil +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -62019,11 +60530,11 @@ aaa aaa aaa aaa -cil -cje +aaa +aaa cjB -cje -cil +aaa +aaa aaa aaa aaa @@ -65274,21 +63785,21 @@ aaa aaa aaa aaa -aFS -cBN -cBN -aKs -aFS -aFS -cBN -cBN -aFS -aKs -aFS -aKs -aFS -aFS -aFS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -65531,21 +64042,21 @@ aaa aaa aaa aaa -aFS -aIs -aJx -aJx -cBN -aMI -aNZ -aNZ -aNZ -aMI -aNZ -aMI -aNZ -aVJ -aWD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -65788,21 +64299,21 @@ aaa aaa aaa aaa -aFS -aIt -aJx -aJx -aLp -aIx -aIx -aIx -aIx -aIx -aIx -aIx -aIx -aVJ -aWD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -66045,21 +64556,21 @@ aaa aaa aaa aaa -aFS -aIu -aJy -aKt -cBN -aIx -aOa -aOa -aOa -aIx -aIx -aOe -aOe -aVJ -aWD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -66302,22 +64813,22 @@ aaa aaa aaa aaa -aFS -aFS -aFS -aFS -aHv -aMJ -aOb -aOb -aOb -aRA -aHv -aFS -aFS -aFS -aFS -aFS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -66557,24 +65068,24 @@ aaa aaa aaa aaa -aFS -aFS -aHv -aIv -aJz -aKu -aLq -aIx -aIx -aIx -aIx -aIx -aFS -aTF -aUE -aTF -aVJ -aWD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -66814,24 +65325,24 @@ aaa aaa aaa aaa -cBN -aGQ -aHw -aIw -aIw -cBN -aIx -aIx -aOc -aPj -aOc -aIx -cBN -aMI -aMI -aMI -aVJ -aWD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -67071,24 +65582,24 @@ aaa aaa aaa aaa -aFT -aGR -aHx -aIx -aIx -aKv -aIx -aIx -aOd -aPk -aQq -aIx -aSp -aMI -aMI -aMI -aVJ -aWD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -67328,24 +65839,24 @@ aaa aaa aaa aaa -aFT -aGS -aHy -aIy -aIy -aFT -aIx -aIx -aOc -aPl -aOc -aIx -aFT -aMI -aNZ -aNZ -aVJ -aWD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -67585,24 +66096,24 @@ axB aaa aaa aaa -aFS -aFS -aHv -aIz -aJA -aKu -aLq -aIx -aIx -aIx -aIx -aIx -aFS -aTG -aUF -aVK -aVJ -aWD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -67844,22 +66355,22 @@ aaa aaa aaa aaa -aFS -aFS -aFS -aFS -aHv -aMJ -aOa -aOa -aOa -aRA -aHv -aFS -aFS -aFS -aFS -aFS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -68101,21 +66612,21 @@ aaa aaa aaa aaa -aFS -aIA -aJB -aKw -aFT -aIx -aOb -aOb -aOb -aIx -aIx -aNZ -aNZ -aVJ -aWD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -68358,21 +66869,21 @@ aaa aaa aaa aaa -aFS -aIA -aJC -aJC -aLr -aIx -aIx -aIx -aIx -aIx -aIx -aIx -aIx -aVJ -aWD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -68615,21 +67126,6 @@ aaa aaa aaa aaa -aFS -aIA -aJC -aJC -aFT -aMI -aOe -aOe -aOe -aMI -aOe -aMI -aOe -aVJ -aWD aaa aaa aaa @@ -68651,7 +67147,22 @@ aaa aaa aaa aaa -bsg +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -68872,21 +67383,18 @@ aaa aaa aaa aaa -aFS -aFT -aFT -aKx -aFS -aFS -aFT -aFT -aFS -aKs -aFS +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aTH -aFS -aFS -aFS aaa aaa aaa @@ -68907,9 +67415,12 @@ aaa aaa aaa aaa -bsg -btG -bsg +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -69152,10 +67663,6 @@ aaa aaa aaa aaa -beV -bgP -bgP -beV aaa aaa aaa @@ -69164,9 +67671,13 @@ aaa aaa aaa aaa -bsh -bsk -buX +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -69379,7 +67890,7 @@ aiu aiu ayD azU -aAZ +aoK ajD ait aaa @@ -69409,10 +67920,6 @@ aaa aaa aaa aaa -beV -bfR -bhC -beV aaa aaa aaa @@ -69421,9 +67928,13 @@ aaa aaa aaa aaa -bqP -btH -bqP +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -69665,23 +68176,23 @@ aZx aZx aaa aaa -beV -beV -bgQ -bgQ -beV -beV +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aZx aZx aZx aZx -bqP -bqP -btI -bqP -bqP +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -69882,15 +68393,15 @@ amI anu aog aiu -apC -apC -apD -apC -apC -apD -apC -apC -apC +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aiu azW aBa @@ -69922,23 +68433,23 @@ baJ aZx bcW aZx -beV -bfQ -bfR -bfR -bhX -beV +aaa +aaa +aaa +aaa +aaa +aaa aZx aZx aZx baJ bon aZx -bqQ -bsi -bsk -buY -cqq +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -70139,15 +68650,15 @@ amJ anv aoh aiu -apD -aqj -are -ass -atr -auv -avo -awG -axD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aiu azX aBb @@ -70179,23 +68690,23 @@ baK bbQ bcX bdV -beW -bfR -bgR -bgR -bfR -beW +aaa +aaa +aaa +aaa +aaa +aaa bbQ bcX bdV baK bon aZx -bqP -bsi -bsk -buY -bqP +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -70396,15 +68907,15 @@ amK anw aoh aiu -apD -aqk -arf -apC -ats -atr -atr -awG -axD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aiu azY aiu @@ -70436,23 +68947,23 @@ baK aZx aZx aZx -beV -bfS -bfR -bfR -bhY -beV +aaa +aaa +aaa +aaa +aaa +aaa aZx aZx aZx baK bon aZx -bqP -bsj -bsk -bsk -bqP +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -70653,15 +69164,15 @@ akA akA aoi aiu -apD -aql -arg -ast -att -auw -atr -awG -axD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aiu azZ aiu @@ -70693,23 +69204,23 @@ baK bbR bcY aZx -beX -bfT -bgR -bgR -bfR -beX +aaa +aaa +aaa +aaa +aaa +aaa aZx bkQ bbR baK bon aZx -bqR -bsk -btJ -bsk -bwp +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -70910,15 +69421,15 @@ amL anx aoj aiu -apC -apC -arh -apC -apC -apC +aaa +aaa +aaa +aaa +aaa +aaa avp -apC -apC +aaa +aaa aiu aAa aiu @@ -70950,23 +69461,23 @@ baL baK bcZ aZx -beX -bfU -bfR -bfR -bfR -beX +aaa +aaa +aaa +aaa +aaa +aaa aZx bkR baK baL bon aZx -bqP -bsk -bsk -buZ -bqP +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -71207,23 +69718,23 @@ baK bbS bda aZx -beX -bfR -bgR -bgR -bfR -beX +aaa +aaa +aaa +aaa +aaa +aaa aZx bkS bbS baK bon aZx -bqP -bsi -bsk -buY -bqP +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -71464,23 +69975,23 @@ baM aZx aZx aZx -beV -bfV -bgR -bgR -bhZ -beV +aaa +aaa +aaa +aaa +aaa +aaa aZx aZx aZx bno boo aZx -bqQ -bsi -bsk -buY -cqq +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -71721,23 +70232,23 @@ baN bbQ bcX bdV -beW -bfR -bfR -bfR -bfR -beW +aaa +aaa +aaa +aaa +aaa +aaa bbQ bcX bdV bnp bon aZx -bqP -bqQ +aaa +aaa btK -bqQ -bqP +aaa +aaa aaa aaa aaa @@ -71978,12 +70489,12 @@ baN aZx bcW aZx -beV -bfW -bfW -bfW -bfW -beV +aaa +aaa +aaa +aaa +aaa +aaa aZx aZx aZx @@ -72235,12 +70746,12 @@ baN bbR bbR aYG -beV -bfX +aaa +aaa bgS -bhD -bia -beV +aaa +aaa +aaa aYG bbR bbR @@ -73291,7 +71802,7 @@ bGL bHQ bJe bKj -bLw +bLv bMB bNI bOz @@ -74329,8 +72840,8 @@ bQT bDi bSq bDi -bTY -bTY +bSw +bSw bva bva bDi @@ -90722,10 +89233,10 @@ aJm aKg cDa aMo -cDd -cDf -cDg -cDh +cDa +cDa +cDa +cDa aLg aTj aUu @@ -91753,8 +90264,8 @@ aMs aNO aPb aQe -cDi -cDj +cDa +cDa aTn aUx aVA @@ -92011,7 +90522,7 @@ aNP aPb aNO aNP -cDk +cDa aTo aSk aTm @@ -92268,7 +90779,7 @@ aNO aPc aQf aRq -cDl +cDa aTp aSk aTm @@ -92525,7 +91036,7 @@ aNQ aNO aQg aNP -cDm +cDa aTq aSk aVB @@ -92776,13 +91287,13 @@ aEd aEd aEd cCX -cDb -cDc -cDe +cDa +cDa +cDa coL coL coL -cDn +cDa aTr aUy aPd @@ -93551,25 +92062,25 @@ aKq aJs aEj aaa -aQh -aQh -aQh -aTt -aUA -aQh -aWC -aXB -aQh -aQh -aQh aaa -apC -apC -apD +aaa +aaa +aaa +aUA +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa bfK -apD -apC -apC +aaa +aaa +aaa aEj aTx bkE @@ -93807,26 +92318,26 @@ aKn aKn aMy aEj -aPe -aQh -aQh -aRr -aRr -aRr -aVC -aRr -aRr -aRr -aRr -aQh aaa -apC -bdN -atr -atr -beQ -bhw -apC +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aEj aTx bkE @@ -94064,26 +92575,26 @@ aEj aLk aLk aEj -aPe -aQi -aRr -aRr -aRr -aRr -aRr -aRr -aRr -aRr -aRr -aQh aaa -apD -bdO -beQ -atr -beQ -bhx -bhW +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aEj bjz bkE @@ -94321,26 +92832,26 @@ aKo aLl aMz aEj -aPe -aQi -aRr -aRr -aRr -aRr -aRr -aRr -aRr -aRr -aZu -aQh aaa -apC -bdP -atr -atr -beQ -bhy -apC +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aEj aTx bkF @@ -94578,26 +93089,26 @@ aFi aFi aEj aEj -aPe -aQi -aRr -aRr -aRr -aRr -aRr -aRr -aRr -aRr -aRr -aQh aaa -apC -apC -apD -bfL -apD -apC -apC +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aEj aTx bkF @@ -94835,18 +93346,18 @@ aKp aFi aMA aEj -aPe -aQh -aQh -aRr -aRr -aRr -aVD -aRr -aRr -aRr -aRr -aQh +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -95093,17 +93604,17 @@ aFi aFi aEj aaa -aQh -aQh -aQh -aQh -aQh -aQh -aQh -aQh -aQh -aQh -aQh +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -96916,7 +95427,7 @@ bjE bkK bkF bnh -boi +blX blX bqH bsb @@ -96926,7 +95437,7 @@ bwe bxS bzr blX -boi +blX bDe bEg bFA @@ -97165,7 +95676,7 @@ bcL bdS baG bfP -bgO +bdz aFi aKq biD @@ -97683,7 +96194,7 @@ abI abI aEj biG -bjG +aKo bjD bkF blX @@ -97944,7 +96455,7 @@ bjH bjD bkF bnh -boi +blX blX bqK bsd @@ -97954,7 +96465,7 @@ bwe bxU bzu blX -boi +blX bDe bkF bjD @@ -99998,7 +98509,7 @@ aaa aaa aEj bkO -bgO +bdz bnn bom aEj @@ -116832,4 +115343,4 @@ aaa aaa aaa aaa -"} +"} \ No newline at end of file diff --git a/_maps/map_files/PubbyStation/areas.dm b/_maps/map_files/PubbyStation/areas.dm deleted file mode 100644 index e15bc87193..0000000000 --- a/_maps/map_files/PubbyStation/areas.dm +++ /dev/null @@ -1,7 +0,0 @@ -/area/chapel/asteroid - name = "Chapel Asteroid" - icon_state = "explored" - -/area/chapel/dock - name = "Chapel Dock" - icon_state = "construction" diff --git a/_maps/map_files/PubbyStation/job/job_changes.dm b/_maps/map_files/PubbyStation/job/job_changes.dm deleted file mode 100644 index 232f127f2d..0000000000 --- a/_maps/map_files/PubbyStation/job/job_changes.dm +++ /dev/null @@ -1,20 +0,0 @@ -/datum/job/assistant -/datum/job/captain -/datum/job/hop - -/datum/job/hos/New() - ..() - access += access_crematorium - minimal_access += access_crematorium - -/datum/job/warden/New() - ..() - access += access_crematorium - minimal_access += access_crematorium - -/datum/job/officer/New() - ..() - access += access_crematorium - minimal_access += access_crematorium - -/datum/job/detective diff --git a/_maps/map_files/PubbyStation/job/removed_jobs.dm b/_maps/map_files/PubbyStation/job/removed_jobs.dm deleted file mode 100644 index aea9363737..0000000000 --- a/_maps/map_files/PubbyStation/job/removed_jobs.dm +++ /dev/null @@ -1,5 +0,0 @@ -/datum/job/librarian/config_check() - return 0 - -/datum/job/lawyer/config_check() - return 0 diff --git a/_maps/map_files/PubbyStation/monastery_shuttle.dm b/_maps/map_files/PubbyStation/monastery_shuttle.dm deleted file mode 100644 index b1cbb3c7b2..0000000000 --- a/_maps/map_files/PubbyStation/monastery_shuttle.dm +++ /dev/null @@ -1,11 +0,0 @@ -/obj/machinery/computer/shuttle/monastery_shuttle - name = "monastery shuttle console" - desc = "Used to control the monastery shuttle." - circuit = /obj/item/circuitboard/computer/shuttle/monastery_shuttle - shuttleId = "pod1" - possible_destinations = "monastery_shuttle_asteroid;monastery_shuttle_station" - no_destination_swap = TRUE - -/obj/item/circuitboard/computer/shuttle/monastery_shuttle - name = "Monastery Shuttle (Computer Board)" - build_path = /obj/machinery/computer/shuttle/monastery_shuttle diff --git a/_maps/map_files/debug/runtimestation.dmm b/_maps/map_files/debug/runtimestation.dmm index d8ee100bf1..60bf3a95a6 100644 --- a/_maps/map_files/debug/runtimestation.dmm +++ b/_maps/map_files/debug/runtimestation.dmm @@ -20,10 +20,6 @@ "af" = ( /turf/open/floor/plating, /area/maintenance/department/bridge) -"ag" = ( -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) "ah" = ( /turf/closed/wall/r_wall, /area/engine/atmos) @@ -131,10 +127,7 @@ /area/engine/gravity_generator) "au" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; +/obj/structure/sign/warning/radiation/rad_area{ pixel_y = 32 }, /turf/open/floor/plating, @@ -1306,15 +1299,6 @@ dir = 1 }, /area/hallway/primary/central) -"dV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel/blue/side{ - dir = 1 - }, -/area/hallway/primary/central) "dW" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/camera/autoname, @@ -2510,7 +2494,7 @@ bI cf cq bu -dV +dU bE bE cN diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index a45c06d0dc..c4ce9d99fe 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -2860,7 +2860,7 @@ /turf/closed/indestructible/riveted, /area/centcom/prison) "iI" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/indestructible/riveted, /area/centcom/prison) "iJ" = ( @@ -2992,12 +2992,7 @@ /area/centcom/control) "jb" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK" - }, +/obj/structure/sign/warning/vacuum/external, /turf/open/floor/plating, /area/centcom/supply) "jc" = ( @@ -3250,11 +3245,12 @@ "jC" = ( /obj/docking_port/stationary{ dir = 8; - dwidth = 5; + dwidth = 8; height = 7; id = "supply_away"; + json_key = "cargo"; name = "CentCom"; - width = 12 + width = 20 }, /turf/open/space, /area/space) @@ -4751,7 +4747,7 @@ /turf/closed/indestructible/fakeglass, /area/syndicate_mothership/control) "nA" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/indestructible/riveted, /area/centcom/ferry) "nB" = ( @@ -5339,30 +5335,6 @@ dir = 8 }, /area/centcom/control) -"oS" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 9 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/bridge) -"oT" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/bridge) -"oU" = ( -/obj/structure/window/plastitanium, -/obj/machinery/door/poddoor/shutters{ - id = "syndieshutters"; - name = "blast shutters" - }, -/obj/structure/grille, -/turf/open/floor/plating, -/area/shuttle/syndicate/bridge) -"oV" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 5 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/bridge) "oW" = ( /obj/structure/flora/bush, /obj/effect/light_emitter{ @@ -5607,40 +5579,6 @@ dir = 8 }, /area/centcom/control) -"px" = ( -/obj/machinery/computer/med_data/syndie, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/bridge) -"py" = ( -/obj/machinery/computer/crew/syndie, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/bridge) -"pz" = ( -/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/bridge) -"pA" = ( -/obj/machinery/computer/shuttle/syndicate, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/bridge) -"pB" = ( -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/bridge) -"pC" = ( -/obj/machinery/computer/camera_advanced/syndie, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/bridge) -"pD" = ( -/obj/machinery/computer/secure_data/syndie, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/bridge) "pF" = ( /obj/machinery/door/airlock/centcom{ name = "Auxillary Dock"; @@ -5758,64 +5696,13 @@ /turf/open/floor/plasteel, /area/centcom/supply) "pR" = ( -/obj/structure/table/reinforced, -/obj/machinery/status_display{ - pixel_x = -32 - }, -/obj/item/clipboard, -/obj/machinery/light{ - dir = 8 - }, -/obj/item/folder/red, -/obj/item/toy/figure/syndie, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/shuttle/syndicate/bridge) -"pS" = ( -/obj/structure/chair/office/dark{ - dir = 8; - name = "tactical swivel chair" - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/bridge) -"pT" = ( -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/bridge) -"pU" = ( -/obj/structure/chair/office/dark{ - dir = 1; - name = "tactical swivel chair" - }, -/obj/machinery/button/door{ - id = "syndieshutters"; - name = "Cockpit View Control"; - pixel_x = 32; - pixel_y = 32; - req_access_txt = "150" - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/bridge) -"pV" = ( -/obj/structure/chair/office/dark{ - dir = 4; - name = "tactical swivel chair" - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/bridge) -"pW" = ( -/obj/structure/table/reinforced, -/obj/machinery/ai_status_display{ - pixel_x = 32 - }, -/obj/item/storage/fancy/donut_box, /obj/machinery/light{ dir = 4 }, /turf/open/floor/plasteel/vault{ - dir = 8 + dir = 5 }, -/area/shuttle/syndicate/bridge) +/area/centcom/ferry) "pX" = ( /obj/item/storage/crayons, /obj/structure/table, @@ -5929,7 +5816,7 @@ /area/centcom/ferry) "ql" = ( /obj/structure/dresser, -/obj/structure/sign/goldenplaque/captain{ +/obj/structure/sign/plaques/golden/captain{ pixel_x = 32 }, /turf/open/floor/plasteel/vault{ @@ -6081,9 +5968,6 @@ "qE" = ( /turf/closed/indestructible/riveted/uranium, /area/wizard_station) -"qI" = ( -/turf/open/floor/plasteel/vault/side, -/area/shuttle/syndicate/bridge) "qJ" = ( /obj/machinery/computer/shuttle/syndicate/recall, /turf/open/floor/plasteel/bar{ @@ -6208,19 +6092,6 @@ /obj/machinery/computer/shuttle, /turf/open/floor/engine/cult, /area/wizard_station) -"rb" = ( -/obj/machinery/status_display, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/bridge) -"rc" = ( -/obj/machinery/door/airlock/hatch{ - name = "Cockpit"; - req_access_txt = "150" - }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/shuttle/syndicate/bridge) "rd" = ( /obj/structure/flora/grass/brown, /obj/effect/light_emitter{ @@ -6411,7 +6282,7 @@ /turf/open/floor/plasteel/grimy, /area/centcom/ferry) "rz" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/indestructible/riveted, /area/centcom/ferry) "rA" = ( @@ -6647,46 +6518,6 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) -"rY" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 10 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/hallway) -"rZ" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/hallway) -"sa" = ( -/obj/structure/table/reinforced, -/obj/item/stack/cable_coil/white, -/obj/item/stack/cable_coil/white, -/obj/item/crowbar/red, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/hallway) -"sb" = ( -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/hallway) -"sc" = ( -/obj/structure/table/reinforced, -/obj/item/storage/box/handcuffs{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/zipties, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/hallway) -"sd" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 6 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/hallway) "se" = ( /obj/machinery/light{ dir = 8 @@ -7088,27 +6919,6 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) -"sY" = ( -/obj/structure/chair{ - dir = 4; - name = "tactical chair" - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/hallway) -"sZ" = ( -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/hallway) -"ta" = ( -/obj/structure/chair{ - dir = 8; - name = "tactical chair" - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/hallway) "te" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/snacks/pizzaslice/mushroom, @@ -7422,7 +7232,7 @@ }, /area/centcom/control) "tP" = ( -/obj/structure/sign/securearea, +/obj/structure/sign/warning/securearea, /turf/closed/indestructible/riveted, /area/centcom/control) "tQ" = ( @@ -7471,50 +7281,6 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) -"tY" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 9 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/eva) -"tZ" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/eva) -"ua" = ( -/obj/structure/chair{ - dir = 4; - name = "tactical chair" - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/hallway) -"ub" = ( -/obj/structure/chair{ - dir = 8; - name = "tactical chair" - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/hallway) -"uc" = ( -/obj/structure/chair{ - dir = 4; - name = "tactical chair" - }, -/obj/effect/turf_decal/bot_white, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/airlock) "ud" = ( /obj/machinery/door/poddoor/shutters{ id = "nukeop_ready"; @@ -7745,23 +7511,6 @@ /obj/structure/chair/wood/wings, /turf/open/floor/carpet, /area/wizard_station) -"uG" = ( -/obj/machinery/suit_storage_unit/syndicate, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/eva) -"uH" = ( -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/eva) -"uI" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/eva) "uJ" = ( /obj/machinery/door/airlock/external{ req_access_txt = "150" @@ -7964,7 +7713,8 @@ height = 50; id = "emergency_away"; name = "CentCom Emergency Shuttle Dock"; - width = 50 + width = 50; + json_key = "emergency" }, /turf/open/space, /area/space) @@ -7997,36 +7747,6 @@ }, /turf/open/floor/carpet, /area/wizard_station) -"vo" = ( -/obj/machinery/suit_storage_unit/syndicate, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/eva) -"vp" = ( -/obj/structure/tank_dispenser/oxygen, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/eva) -"vq" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/airlock) -"vs" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK" - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/airlock) -"vt" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 5 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/airlock) "vu" = ( /obj/item/storage/box/drinkingglasses, /obj/item/reagent_containers/food/drinks/bottle/rum, @@ -8329,28 +8049,6 @@ }, /turf/open/floor/carpet, /area/wizard_station) -"wf" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/machinery/light{ - dir = 4 - }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/eva) -"wg" = ( -/obj/structure/grille, -/obj/structure/window/plastitanium, -/turf/open/floor/plating, -/area/shuttle/syndicate/hallway) -"wh" = ( -/obj/machinery/door/airlock/external{ - name = "Ready Room"; - req_access_txt = "150" - }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/shuttle/syndicate/hallway) "wl" = ( /obj/machinery/light, /turf/open/floor/wood, @@ -8574,29 +8272,6 @@ /obj/item/toy/cards/deck, /turf/open/floor/carpet, /area/wizard_station) -"wR" = ( -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/eva) -"wS" = ( -/obj/machinery/door/airlock/external{ - name = "E.V.A. Gear Storage"; - req_access_txt = "150" - }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/shuttle/syndicate/eva) -"wT" = ( -/obj/machinery/door/airlock/external{ - req_access_txt = "150" - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/airlock) -"wU" = ( -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/airlock) "wV" = ( /obj/machinery/computer/telecrystals/boss{ dir = 1 @@ -8646,6 +8321,7 @@ dwidth = 2; height = 13; id = "ferry_away"; + json_key = "ferry"; name = "CentCom Ferry Dock"; width = 5 }, @@ -8807,28 +8483,6 @@ /obj/machinery/light, /turf/open/floor/carpet, /area/wizard_station) -"xA" = ( -/obj/machinery/suit_storage_unit/syndicate, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/eva) -"xB" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/eva) -"xC" = ( -/obj/structure/grille, -/obj/structure/window/plastitanium, -/turf/open/floor/plating, -/area/shuttle/syndicate/eva) -"xD" = ( -/obj/structure/grille, -/obj/structure/window/plastitanium, -/turf/open/floor/plating, -/area/shuttle/syndicate/airlock) "xG" = ( /turf/open/floor/plasteel/dark, /area/syndicate_mothership/control) @@ -8969,38 +8623,6 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) -"yc" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 9 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/medical) -"yd" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/medical) -"ye" = ( -/obj/machinery/ai_status_display, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/medical) -"yf" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/shuttle/syndicate/medical) -"yg" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/shuttle/syndicate/armory) -"yh" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/armory) -"yi" = ( -/obj/machinery/status_display, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/armory) -"yj" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 5 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/armory) "yk" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -9022,7 +8644,7 @@ /area/syndicate_mothership/control) "yn" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/open/floor/plating, /area/centcom/ferry) "yo" = ( @@ -9043,7 +8665,7 @@ /obj/machinery/computer/security/telescreen/entertainment{ pixel_y = -28 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ pixel_x = 32 }, /obj/effect/turf_decal/stripes/line{ @@ -9196,125 +8818,6 @@ /obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/grass, /area/wizard_station) -"yL" = ( -/obj/machinery/sleeper/syndie{ - dir = 4 - }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/medical) -"yM" = ( -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/medical) -"yN" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/medical) -"yO" = ( -/obj/item/reagent_containers/glass/bottle/epinephrine{ - pixel_x = 6 - }, -/obj/item/reagent_containers/glass/bottle/charcoal{ - pixel_x = -3 - }, -/obj/item/reagent_containers/glass/bottle/epinephrine{ - pixel_x = -3; - pixel_y = 8 - }, -/obj/item/reagent_containers/glass/bottle/charcoal{ - pixel_x = 6; - pixel_y = 8 - }, -/obj/item/reagent_containers/syringe/epinephrine{ - pixel_x = 3; - pixel_y = -2 - }, -/obj/item/reagent_containers/syringe/epinephrine{ - pixel_x = 4; - pixel_y = 1 - }, -/obj/item/reagent_containers/syringe/epinephrine{ - pixel_x = -2; - pixel_y = 5 - }, -/obj/item/reagent_containers/syringe/epinephrine{ - pixel_x = 2; - pixel_y = 8 - }, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/medical) -"yP" = ( -/obj/structure/table/reinforced, -/obj/item/stack/medical/gauze, -/obj/item/stack/medical/bruise_pack, -/obj/item/stack/medical/ointment, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/medical) -"yQ" = ( -/obj/structure/grille, -/obj/structure/window/plastitanium, -/turf/open/floor/plating, -/area/shuttle/syndicate/medical) -"yR" = ( -/obj/structure/grille, -/obj/structure/window/plastitanium, -/turf/open/floor/plating, -/area/shuttle/syndicate/armory) -"yS" = ( -/obj/item/stock_parts/cell/high{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/stock_parts/cell/high, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/armory) -"yT" = ( -/obj/item/screwdriver{ - pixel_y = 9 - }, -/obj/item/device/assembly/voice{ - pixel_y = 3 - }, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/armory) -"yU" = ( -/obj/item/wrench, -/obj/item/device/assembly/infra, -/obj/structure/table/reinforced, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/armory) -"yV" = ( -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/prox_sensor{ - pixel_x = -8; - pixel_y = 4 - }, -/obj/item/device/assembly/prox_sensor{ - pixel_x = -8; - pixel_y = 4 - }, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/armory) -"yW" = ( -/obj/item/weldingtool/largetank{ - pixel_y = 3 - }, -/obj/item/device/multitool, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/armory) "yX" = ( /obj/structure/chair/stool, /turf/open/floor/plasteel/dark, @@ -9494,34 +8997,6 @@ /obj/item/reagent_containers/food/snacks/meat/slab/corgi, /turf/open/floor/grass, /area/wizard_station) -"zs" = ( -/obj/structure/bed/roller, -/obj/machinery/iv_drip, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/medical) -"zt" = ( -/turf/open/floor/plasteel/vault/side, -/area/shuttle/syndicate/medical) -"zu" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/hallway) -"zv" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/hallway) -"zw" = ( -/turf/open/floor/plasteel/vault/side, -/area/shuttle/syndicate/armory) "zx" = ( /obj/structure/closet/syndicate/personal, /obj/effect/turf_decal/stripes/line{ @@ -9658,67 +9133,6 @@ }, /turf/open/floor/grass, /area/wizard_station) -"zR" = ( -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/medical) -"zS" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/medical) -"zT" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/medical) -"zU" = ( -/obj/machinery/door/airlock/hatch{ - req_access_txt = "150" - }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/shuttle/syndicate/medical) -"zV" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/hallway) -"zW" = ( -/obj/machinery/door/airlock/hatch{ - req_access_txt = "150" - }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/shuttle/syndicate/armory) -"zX" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/armory) -"zY" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/armory) -"zZ" = ( -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/armory) -"Aa" = ( -/obj/structure/closet/syndicate/personal, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/armory) "Ab" = ( /obj/machinery/photocopier, /turf/open/floor/plasteel/grimy, @@ -9888,42 +9302,6 @@ /obj/effect/decal/remains/xeno, /turf/open/floor/grass, /area/wizard_station) -"AC" = ( -/obj/structure/table/reinforced, -/obj/item/reagent_containers/glass/beaker/large, -/obj/item/reagent_containers/glass/beaker, -/obj/item/reagent_containers/dropper, -/turf/open/floor/plasteel/vault/side, -/area/shuttle/syndicate/medical) -"AD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/medical) -"AE" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/medical) -"AF" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/hallway) -"AG" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/armory) -"AH" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/armory) -"AI" = ( -/obj/structure/closet/syndicate/nuclear, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/armory) "AJ" = ( /obj/structure/chair/comfy/brown{ color = "#596479"; @@ -10003,7 +9381,7 @@ }, /area/centcom/ferry) "AT" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/indestructible/riveted, /area/centcom/control) "AU" = ( @@ -10096,111 +9474,6 @@ /obj/item/reagent_containers/food/snacks/meat/slab/xeno, /turf/open/floor/grass, /area/wizard_station) -"Bj" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/item/bodypart/r_arm/robot, -/obj/item/bodypart/l_arm/robot, -/obj/structure/table/reinforced, -/obj/item/toy/plush/nukeplushie, -/turf/open/floor/plasteel/vault/side, -/area/shuttle/syndicate/medical) -"Bk" = ( -/obj/machinery/door/window{ - dir = 1; - name = "Surgery"; - req_access_txt = "150" - }, -/turf/open/floor/plasteel/vault/side, -/area/shuttle/syndicate/medical) -"Bl" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/open/floor/plasteel/vault/side, -/area/shuttle/syndicate/medical) -"Bm" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/item/storage/firstaid/regular{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/firstaid/brute, -/obj/item/storage/firstaid/regular{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/vault/side, -/area/shuttle/syndicate/medical) -"Bn" = ( -/obj/item/storage/firstaid/regular{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/firstaid/fire, -/obj/item/storage/firstaid/regular{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/vault/side, -/area/shuttle/syndicate/medical) -"Bo" = ( -/turf/open/floor/plasteel/vault, -/area/shuttle/syndicate/hallway) -"Bp" = ( -/obj/item/device/sbeacondrop/bomb{ - pixel_y = 5 - }, -/obj/item/device/sbeacondrop/bomb, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/vault/side, -/area/shuttle/syndicate/armory) -"Bq" = ( -/obj/item/grenade/syndieminibomb{ - pixel_x = 4; - pixel_y = 2 - }, -/obj/item/grenade/syndieminibomb{ - pixel_x = -1 - }, -/obj/structure/table/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/grenade/plastic/c4, -/obj/item/grenade/plastic/c4, -/obj/item/grenade/plastic/c4, -/obj/item/grenade/plastic/c4, -/obj/item/grenade/plastic/c4, -/turf/open/floor/plasteel/vault/side, -/area/shuttle/syndicate/armory) -"Br" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/open/floor/plasteel/vault/side, -/area/shuttle/syndicate/armory) -"Bs" = ( -/obj/machinery/door/window{ - dir = 1; - name = "Technological Storage"; - req_access_txt = "150" - }, -/turf/open/floor/plasteel/vault/side, -/area/shuttle/syndicate/armory) -"Bt" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/table/reinforced, -/obj/item/device/aicard, -/turf/open/floor/plasteel/vault/side, -/area/shuttle/syndicate/armory) "Bu" = ( /obj/structure/table/wood, /obj/item/paper_bin, @@ -10445,50 +9718,6 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) -"BT" = ( -/obj/item/surgicaldrill, -/obj/item/circular_saw, -/obj/structure/table/reinforced, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/medical) -"BU" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, -/obj/structure/mirror{ - pixel_x = 30 - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/medical) -"BV" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/shuttle/syndicate/hallway) -"BW" = ( -/obj/machinery/nuclearbomb/syndicate, -/obj/machinery/door/window{ - dir = 1; - name = "Theatre Stage"; - req_access_txt = "0" - }, -/turf/open/floor/circuit/red, -/area/shuttle/syndicate/hallway) -"BX" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/armory) "BY" = ( /obj/item/toy/figure/syndie, /turf/open/floor/plating/asteroid/snow/airless, @@ -10576,46 +9805,6 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) -"Cj" = ( -/obj/item/cautery, -/obj/item/scalpel, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/medical) -"Ck" = ( -/obj/structure/table/optable, -/obj/item/surgical_drapes, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/medical) -"Cl" = ( -/obj/item/retractor, -/obj/item/hemostat, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/shuttle/syndicate/medical) -"Cm" = ( -/obj/structure/shuttle/engine/heater, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/shuttle/syndicate/hallway) -"Cn" = ( -/obj/machinery/recharge_station, -/turf/open/floor/circuit/red, -/area/shuttle/syndicate/armory) -"Co" = ( -/obj/machinery/telecomms/allinone{ - intercept = 1 - }, -/turf/open/floor/circuit/red, -/area/shuttle/syndicate/armory) "Cp" = ( /obj/structure/statue/uranium/nuke, /turf/open/floor/plating/asteroid/snow/airless, @@ -10755,7 +9944,7 @@ /obj/structure/table/reinforced, /obj/item/storage/box/emps, /obj/item/gun/energy/ionrifle, -/obj/structure/sign/bluecross_2{ +/obj/structure/sign/departments/medbay/alt{ pixel_y = -32 }, /obj/effect/turf_decal/stripes/line{ @@ -10888,37 +10077,6 @@ dir = 8 }, /area/centcom/evac) -"CS" = ( -/obj/structure/shuttle/engine/heater, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/shuttle/syndicate/medical) -"CT" = ( -/obj/structure/shuttle/engine/propulsion/left, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/shuttle/syndicate/hallway) -"CU" = ( -/obj/structure/shuttle/engine/propulsion, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/shuttle/syndicate/hallway) -"CV" = ( -/obj/structure/shuttle/engine/propulsion/right, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/shuttle/syndicate/hallway) -"CW" = ( -/obj/structure/shuttle/engine/heater, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/shuttle/syndicate/armory) "CX" = ( /obj/structure/closet/secure_closet/security, /obj/item/storage/belt/security/full, @@ -11030,48 +10188,6 @@ dir = 8 }, /area/centcom/evac) -"Di" = ( -/obj/structure/shuttle/engine/propulsion/left, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/shuttle/syndicate/medical) -"Dj" = ( -/obj/structure/shuttle/engine/propulsion, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/shuttle/syndicate/medical) -"Dk" = ( -/obj/structure/shuttle/engine/propulsion/right, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/shuttle/syndicate/medical) -"Dl" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 6 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/medical) -"Dm" = ( -/obj/machinery/porta_turret/syndicate{ - dir = 10 - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/syndicate/armory) -"Dn" = ( -/obj/structure/shuttle/engine/propulsion/left, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/shuttle/syndicate/armory) -"Do" = ( -/obj/structure/shuttle/engine/propulsion, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/shuttle/syndicate/armory) -"Dp" = ( -/obj/structure/shuttle/engine/propulsion/right, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/airless, -/area/shuttle/syndicate/armory) "Dq" = ( /obj/machinery/door/airlock/external, /obj/effect/turf_decal/stripes/line{ @@ -12178,7 +11294,7 @@ /turf/open/floor/plasteel, /area/tdome/tdomeobserve) "Gw" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/indestructible/riveted, /area/tdome/tdomeobserve) "Gx" = ( @@ -12353,7 +11469,7 @@ /area/tdome/tdomeobserve) "GL" = ( /obj/structure/table/wood, -/obj/structure/sign/goldenplaque{ +/obj/structure/sign/plaques/golden{ pixel_y = 32 }, /obj/item/clothing/accessory/lawyers_badge{ @@ -12374,7 +11490,7 @@ /area/tdome/tdomeobserve) "GO" = ( /obj/structure/table/wood, -/obj/structure/sign/goldenplaque{ +/obj/structure/sign/plaques/golden{ pixel_y = 32 }, /obj/item/clothing/accessory/medal/silver{ @@ -12579,7 +11695,7 @@ /area/tdome/tdomeobserve) "Hr" = ( /obj/structure/table/wood, -/obj/structure/sign/atmosplaque/thunderdome{ +/obj/structure/sign/plaques/thunderdome{ pixel_y = -32 }, /obj/item/clothing/accessory/medal/gold{ @@ -12597,7 +11713,7 @@ /area/tdome/tdomeobserve) "Ht" = ( /obj/structure/table/wood, -/obj/structure/sign/atmosplaque/thunderdome{ +/obj/structure/sign/plaques/thunderdome{ pixel_y = -32 }, /obj/item/clothing/accessory/medal{ @@ -13898,12 +13014,6 @@ "KS" = ( /turf/closed/wall/mineral/titanium/interior, /area/centcom/evac) -"KT" = ( -/obj/machinery/computer/camera_advanced{ - dir = 4 - }, -/turf/open/floor/wood, -/area/wizard_station) "KU" = ( /obj/structure/closet/emcloset, /turf/open/floor/mineral/titanium/blue, @@ -14313,29 +13423,6 @@ }, /turf/open/floor/plasteel, /area/tdome/arena) -"Mt" = ( -/obj/structure/chair{ - dir = 4; - name = "tactical chair" - }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/airlock) -"Mu" = ( -/obj/structure/table/reinforced, -/obj/item/storage/toolbox/syndicate, -/obj/item/crowbar/red, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/airlock) -"Mw" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/airlock) "My" = ( /obj/docking_port/stationary{ area_type = /area/syndicate_mothership; @@ -14346,63 +13433,30 @@ height = 17; id = "syndicate_away"; name = "syndicate recon outpost"; + roundstart_template = /datum/map_template/shuttle/infiltrator/basic; turf_type = /turf/open/floor/plating/asteroid/snow; width = 23 }, -/obj/machinery/door/poddoor{ - id = "smindicate"; - name = "outer blast door" - }, -/obj/machinery/button/door{ - id = "smindicate"; - name = "external door control"; - pixel_y = 26; - req_access_txt = "150" - }, -/obj/docking_port/mobile{ - dheight = 1; - dir = 8; - dwidth = 12; - height = 17; - hidden = 1; - id = "syndicate"; - movement_force = list("KNOCKDOWN" = 0, "THROW" = 0); - name = "syndicate infiltrator"; - port_direction = 4; - roundstart_move = null; - width = 23 - }, -/obj/structure/fans/tiny, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/airlock) -"Mz" = ( -/turf/open/floor/plasteel/dark, -/area/shuttle/syndicate/airlock) -"MC" = ( -/obj/structure/rack, -/obj/item/clothing/suit/space/syndicate/black/red, -/obj/item/clothing/head/helmet/space/syndicate/black/red, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/syndicate/airlock) +/turf/open/floor/plating/asteroid/snow/airless, +/area/syndicate_mothership) "MD" = ( /obj/effect/light_emitter{ set_cap = 1; set_luminosity = 4 }, -/obj/structure/sign/securearea{ +/obj/structure/sign/warning/securearea{ desc = "A warning sign which reads 'FOURTH WALL'."; name = "\improper FOURTH WALL"; pixel_x = -32 }, /turf/open/floor/plating/asteroid/snow/airless, /area/syndicate_mothership) +"ME" = ( +/obj/machinery/computer/camera_advanced{ + dir = 4 + }, +/turf/open/floor/wood, +/area/wizard_station) (1,1,1) = {" aa @@ -16285,7 +15339,7 @@ fX fX fX fX -fY +fX fX fX fX @@ -17056,7 +16110,7 @@ fX fX fX fX -fX +fY fX fX fX @@ -18334,21 +17388,21 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX aa aa aa @@ -18591,21 +17645,21 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX aa aa aa @@ -18848,21 +17902,21 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX aa aa aa @@ -19105,21 +18159,21 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX aa aa aa @@ -19362,21 +18416,21 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX aa aa aa @@ -19461,7 +18515,7 @@ lI lI qE qE -KT +ME vj ya qZ @@ -19619,21 +18673,21 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX aa aa aa @@ -26656,16 +25710,16 @@ kt kt kt kt -yc -yd -yd -yd -yd -yd -yd -yd -yd -yd +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hh @@ -26907,22 +25961,22 @@ hl hl hl kt -tY -tZ -tZ -tZ -tZ -tZ -yd -yL -zs -yL -AC -Bj -BT -Cj -CS -Di +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hh @@ -27164,22 +26218,22 @@ hl hl hl kt -tZ -uG -vo -vo -vo -xA -yd -yM -zt -zR -zR -Bk -zR -Ck -CS -Dj +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hh @@ -27421,22 +26475,22 @@ kt kt kt kt -tZ -uH -uH -uH -uH -uH -ye -yN -zt -zS -AD -Bl -BU -Cl -CS -Dk +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hh @@ -27671,29 +26725,29 @@ hl hl my hl -oS -oT -oT -oT -oT hl hl -tZ -uH -uH -uH -uH -uH -yd -yO -zt -zT -AE -Bm -yf -yd -yd -Dl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hh @@ -27928,26 +26982,26 @@ hl hl hl hl -oT -px -pR -qI -oT -rY hl -tZ -uI -vp -wf -wR -xB -yd -yP -zt -zT -AE -Bn -yd +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl hl hl kt @@ -28185,28 +27239,28 @@ hl hl hl hl -oU -py -pS -qI -oT -rZ -rZ -tZ -tZ -tZ -tZ -wS -xC -yf -yQ -yQ -zU -yQ -yd -yd -rZ -rZ +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hl @@ -28442,28 +27496,28 @@ hl hl hl nx -oU -pz -pT -qI -rb -sa -sY -ua -sY -sY -wg -sb -sb -sb -sb -zu -zV -AF -Bo -BV -Cm -CT +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hl @@ -28699,28 +27753,28 @@ hl hl hl hl -oU -pA -pU -qI -rc -sb -sZ -sZ -sZ -sb -wh -sb -sZ -sZ -sZ -sZ -zV -AF -Bo -BW -Cm -CU +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hl @@ -28956,28 +28010,28 @@ hl my hl hl -oU -pB -pT -qI -oT -sc -ta -ub -ta -ta -wg -sb -sb -sb -sb -zv -zV -AF -Bo -BV -Cm -CV +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hl @@ -29213,28 +28267,28 @@ hl hl hl hl -oU -pC -pV -qI -oT -rZ -rZ -vq -vq -vq -vq -wT -xD -yg -yR -yR -zW -yR -yh -yh -rZ -rZ +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hl @@ -29470,26 +28524,26 @@ hl hl hl hl -oT -pD -pW -qI -oT -sd hl -vq -Mt -Mt -uc -Mz -Mt -yh -yS -zw -zX -AG -Bp -yh +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl hl hl kt @@ -29727,29 +28781,29 @@ hl hl hl hl -oV -oT -oT -oT -oT hl hl -vq -wU -wU -wU -wU -wU -yh -yT -zw -zX -AG -Bq -yg -yh -yh -Dm +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hh @@ -29991,22 +29045,22 @@ kt kt kt kt -vq -wU -wU -wU -wU -wU -yi -yU -zw -zY -AH -Br -zZ -Cn -CW -Dn +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hh @@ -30248,22 +29302,22 @@ nx hl hl kt -vq -Mu -Mw -Mw -Mw -MC -yh -yV -zw -zZ -zZ -Bs -zZ -Co -CW -Do +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hh @@ -30505,22 +29559,22 @@ hl hl hl kt -vt -vq -vq +hl +hl +hl My -vs -vq -yh -yW -zw -Aa -AI -Bt -BX -Cn -CW -Dp +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hh @@ -30768,16 +29822,16 @@ nz uJ nz kt -yj -yh -yh -yh -yh -yh -yh -yh -yh -yh +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl kt hl hh @@ -51067,7 +50121,7 @@ qb mD rs sw -tw +pR sw uQ mD diff --git a/_maps/map_files/generic/Space2.dmm b/_maps/map_files/generic/Space2.dmm new file mode 100644 index 0000000000..6621535fd3 --- /dev/null +++ b/_maps/map_files/generic/Space2.dmm @@ -0,0 +1,65540 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/open/space/basic, +/area/space) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(3,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(4,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(5,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(6,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(7,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(8,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(9,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(10,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(11,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(12,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(13,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(14,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(15,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(16,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(17,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(18,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(19,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(20,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(21,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(22,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(23,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(24,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(25,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(26,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(27,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(28,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(29,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(30,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(31,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(32,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(33,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(34,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(35,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(36,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(37,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(38,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(39,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(40,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(41,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(42,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(43,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(44,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(45,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(46,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(47,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(48,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(49,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(50,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(51,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(52,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(53,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(54,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(55,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(56,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(57,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(58,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(59,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(60,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(61,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(62,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(63,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(64,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(65,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(66,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(67,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(68,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(69,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(70,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(71,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(72,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(73,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(74,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(75,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(76,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(77,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(78,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(79,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(80,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(81,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(82,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(83,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(84,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(85,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(86,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(87,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(88,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(89,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(90,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(91,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(92,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(93,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(94,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(95,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(96,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(97,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(98,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(99,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(100,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(101,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(102,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(103,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(104,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(105,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(106,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(107,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(108,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(109,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(110,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(111,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(112,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(113,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(114,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(115,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(116,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(117,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(118,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(119,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(120,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(121,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(122,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(123,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(124,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(125,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(126,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(127,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(128,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(129,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(130,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(131,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(132,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(133,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(134,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(135,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(136,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(137,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(138,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(139,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(140,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(141,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(142,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(143,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(144,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(145,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(146,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(147,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(148,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(149,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(150,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(151,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(152,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(153,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(154,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(155,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(156,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(157,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(158,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(159,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(160,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(161,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(162,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(163,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(164,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(165,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(166,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(167,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(168,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(169,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(170,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(171,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(172,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(173,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(174,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(175,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(176,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(177,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(178,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(179,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(180,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(181,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(182,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(183,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(184,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(185,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(186,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(187,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(188,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(189,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(190,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(191,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(192,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(193,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(194,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(195,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(196,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(197,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(198,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(199,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(200,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(201,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(202,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(203,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(204,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(205,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(206,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(207,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(208,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(209,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(210,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(211,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(212,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(213,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(214,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(215,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(216,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(217,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(218,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(219,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(220,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(221,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(222,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(223,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(224,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(225,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(226,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(227,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(228,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(229,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(230,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(231,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(232,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(233,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(234,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(235,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(236,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(237,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(238,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(239,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(240,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(241,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(242,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(243,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(244,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(245,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(246,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(247,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(248,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(249,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(250,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(251,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(252,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(253,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(254,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(255,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/_maps/map_files/generic/SpaceDock.dmm b/_maps/map_files/generic/SpaceDock.dmm index b0a9ccbf71..286ca3e97d 100644 --- a/_maps/map_files/generic/SpaceDock.dmm +++ b/_maps/map_files/generic/SpaceDock.dmm @@ -10,7 +10,8 @@ height = 22; id = "whiteship_away"; name = "Deep Space"; - width = 35 + width = 35; + json_key = "whiteship" }, /turf/open/space, /area/space) diff --git a/_maps/metastation.json b/_maps/metastation.json index bb22737c31..fdadfb058c 100644 --- a/_maps/metastation.json +++ b/_maps/metastation.json @@ -1,5 +1,11 @@ { "map_name": "MetaStation", - "map_path": "cit_map_files/MetaStation", - "map_file": "MetaStation.dmm" + "map_path": "map_files/MetaStation", + "map_file": "MetaStation.dmm", + "shuttles": { + "cargo": "cargo_box", + "ferry": "ferry_fancy", + "whiteship": "whiteship_meta", + "emergency": "emergency_meta" + } } diff --git a/_maps/ministation.dm b/_maps/ministation.dm deleted file mode 100644 index 268439050a..0000000000 --- a/_maps/ministation.dm +++ /dev/null @@ -1,87 +0,0 @@ -/* -MiniStation FAQ - Mod Created By Giacom - - -What is it? - -A mod of tgstation 13 that is modified for low population servers; with simplified jobs, maps, duties and command structure. - -How do I run it? - -Simply tick this file, and only this file in the _maps folder, then compile and you will be running MiniStation. - -Who is the target audience? - -Server hosters who want to host a server for a player count of around 5 to 20 people. - -What about the map? - -The map has been created from the ground up with population size in mind. - -What about the jobs? - -Many jobs have been combined or just plainly cut out. These are the remaining jobs with their duties next to them. - - * Captain - Make sure your station is running. - * HoP - You're second in command, protect the Captain and be his right hand man. - * Cargo Tech x3 - Running cargo bay and mining minerals for the station. - * Bartender - Keeping the bar, serving drinks and food. Hire the unemployeed to grow food for you, or do it yourself. - * Janitor - Cleans the station, removes litter and empty trash bins to be recycled by the crusher. - * Station Engineer x4 - Keeping the power running and fixing station damage. - * Security Officer x4 - Protecting the crewmembers and serving space law. - * Detective - Using forensic science to help security officers catch criminals. - * Scientist x4 - Research and development of new technologies and create bombs. - * Medical Doctor x4 - Healing the crew, performing surgeries and cloning dead crew. - * Chemist - Creating useful chemicals for the crew to use. - * Clown - Create laughter and boost the morale of the crew. Honk! - * Assistant xInfinity - Not in charge at all. - -There will be 26 job slots (not including Assistant) available on MiniStation; the HoP can add more from his ID computer. -There is a more simplified command system, with the Captain being the big boss and the HoP being second in command. -The heads will have control over all departments and jobs. - -What else has changed? - -Changes to the uplinks were made to discourage murderboning, the rest is the same. - -*/ - -#if !defined(MAP_FILE) - - #define TITLESCREEN "title" //Add an image in misc/fullscreen.dmi, and set this define to the icon_state, to set a custom titlescreen for your map - - #define MINETYPE "mining" - - #include "map_files\MiniStation\MiniStation.dmm" - #include "map_files\generic\z2.dmm" - #include "map_files\generic\z3.dmm" - #include "map_files\generic\z4.dmm" - #include "map_files\MiniStation\z5.dmm" - #include "map_files\generic\z6.dmm" - #include "map_files\generic\z7.dmm" - #include "map_files\generic\z8.dmm" - #include "map_files\generic\z9.dmm" - #include "map_files\generic\z10.dmm" - #include "map_files\generic\z11.dmm" - - #define MAP_PATH "map_files/MiniStation" - #define MAP_FILE "MiniStation.dmm" - #define MAP_NAME "MiniStation" - - #define MAP_TRANSITION_CONFIG DEFAULT_MAP_TRANSITION_CONFIG - - #if !defined(MAP_OVERRIDE_FILES) - #define MAP_OVERRIDE_FILES - #include "map_files\MiniStation\misc.dm" - #include "map_files\MiniStation\cargopacks.dm" - #include "map_files\MiniStation\telecomms.dm" - #include "map_files\MiniStation\uplink_item.dm" - #include "map_files\MiniStation\job\jobs.dm" - #include "map_files\MiniStation\job\removed.dm" - #endif - -#elif !defined(MAP_OVERRIDE) - - #warn a map has already been included, ignoring ministation. - -#endif diff --git a/_maps/omegastation.json b/_maps/omegastation.json index 69c667b724..805ec5eccc 100644 --- a/_maps/omegastation.json +++ b/_maps/omegastation.json @@ -1,5 +1,10 @@ { "map_name": "OmegaStation", - "map_path": "cit_map_files/OmegaStation", - "map_file": "OmegaStation.dmm" -} \ No newline at end of file + "map_path": "map_files/OmegaStation", + "map_file": "OmegaStation.dmm", + "shuttles": { + "emergency": "emergency_omega", + "ferry": "ferry_fancy", + "cargo": "cargo_delta" + } +} diff --git a/_maps/pubbystation.json b/_maps/pubbystation.json index f8253e3c33..f99cca57c5 100644 --- a/_maps/pubbystation.json +++ b/_maps/pubbystation.json @@ -1,5 +1,11 @@ { "map_name": "PubbyStation", - "map_path": "cit_map_files/PubbyStation", - "map_file": "PubbyStation.dmm" -} \ No newline at end of file + "map_path": "map_files/PubbyStation", + "map_file": "PubbyStation.dmm", + "shuttles": { + "emergency": "emergency_pubby", + "whiteship": "whiteship_pubby", + "ferry": "ferry_fancy", + "cargo": "cargo_box" + } +} diff --git a/_maps/shuttles/arrival_box.dmm b/_maps/shuttles/arrival_box.dmm new file mode 100644 index 0000000000..1bd1c69d39 --- /dev/null +++ b/_maps/shuttles/arrival_box.dmm @@ -0,0 +1,288 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"b" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/arrival) +"c" = ( +/obj/machinery/door/airlock/titanium{ + name = "Arrivals Shuttle Airlock" + }, +/turf/open/floor/plating, +/area/shuttle/arrival) +"d" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/arrival) +"e" = ( +/obj/structure/table, +/obj/item/storage/firstaid/regular, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"f" = ( +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"g" = ( +/obj/machinery/computer/arcade, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"h" = ( +/obj/structure/closet/wardrobe/green, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"i" = ( +/obj/structure/closet/wardrobe/black, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"j" = ( +/obj/structure/closet/wardrobe/mixed, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"k" = ( +/obj/structure/closet/wardrobe/grey, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"l" = ( +/obj/machinery/requests_console{ + department = "Arrival shuttle"; + name = "Arrivals Shuttle console"; + pixel_y = 30 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"m" = ( +/obj/structure/shuttle/engine/heater{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/arrival) +"n" = ( +/obj/structure/shuttle/engine/propulsion/burst/right{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/arrival) +"o" = ( +/obj/structure/window/shuttle, +/obj/structure/grille, +/turf/open/floor/plating, +/area/shuttle/arrival) +"p" = ( +/obj/structure/chair, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"q" = ( +/obj/structure/chair, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"r" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"s" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/arrival) +"t" = ( +/obj/machinery/door/airlock/titanium{ + name = "Arrivals Shuttle Airlock" + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"u" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 4 + }, +/obj/docking_port/mobile/arrivals, +/turf/open/floor/plating/airless, +/area/shuttle/arrival) +"v" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"w" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"x" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"y" = ( +/obj/machinery/light, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"z" = ( +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/machinery/light, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"A" = ( +/obj/structure/shuttle/engine/propulsion/burst/left{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/arrival) + +(1,1,1) = {" +a +b +o +d +d +b +a +"} +(2,1,1) = {" +a +b +p +f +v +b +a +"} +(3,1,1) = {" +a +b +q +f +w +b +a +"} +(4,1,1) = {" +b +b +b +t +b +b +b +"} +(5,1,1) = {" +b +e +f +f +f +x +b +"} +(6,1,1) = {" +c +f +r +r +r +f +c +"} +(7,1,1) = {" +b +g +f +f +f +y +b +"} +(8,1,1) = {" +d +h +r +r +r +f +d +"} +(9,1,1) = {" +d +i +f +f +f +f +d +"} +(10,1,1) = {" +d +j +r +r +r +f +d +"} +(11,1,1) = {" +d +k +f +f +f +f +d +"} +(12,1,1) = {" +b +l +r +r +r +z +b +"} +(13,1,1) = {" +c +f +f +f +f +f +c +"} +(14,1,1) = {" +b +m +m +m +m +m +b +"} +(15,1,1) = {" +b +n +s +u +s +A +b +"} diff --git a/_maps/shuttles/arrival_delta.dmm b/_maps/shuttles/arrival_delta.dmm new file mode 100644 index 0000000000..df4976c7e4 --- /dev/null +++ b/_maps/shuttles/arrival_delta.dmm @@ -0,0 +1,565 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"b" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/shuttle/arrival) +"c" = ( +/obj/docking_port/mobile/arrivals{ + dir = 2; + dwidth = 4; + height = 17; + name = "delta arrivals shuttle"; + timid = 1; + width = 9 + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/arrival) +"d" = ( +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/arrival) +"e" = ( +/obj/structure/window/reinforced, +/obj/structure/shuttle/engine/heater{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/shuttle/arrival) +"f" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/arrival) +"g" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/arrival) +"h" = ( +/obj/structure/window/shuttle, +/obj/structure/grille, +/turf/open/floor/plating, +/area/shuttle/arrival) +"i" = ( +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/tank/internals/emergency_oxygen/double{ + pixel_x = 3 + }, +/obj/item/tank/internals/emergency_oxygen/double{ + pixel_x = 3 + }, +/obj/item/tank/internals/emergency_oxygen/double{ + pixel_x = 3 + }, +/obj/item/tank/internals/emergency_oxygen/double{ + pixel_x = 3 + }, +/obj/item/tank/internals/emergency_oxygen/double{ + pixel_x = 3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/structure/closet/crate/internals, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/arrival) +"j" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/closet/wardrobe/mixed, +/turf/open/floor/plasteel, +/area/shuttle/arrival) +"k" = ( +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/emergency, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/arrival) +"l" = ( +/obj/structure/table/reinforced, +/obj/structure/extinguisher_cabinet{ + pixel_y = 32 + }, +/obj/item/storage/firstaid/regular{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/firstaid/regular, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/arrival) +"m" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/arrival) +"n" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Arrival Shuttle Airlock"; + req_access_txt = "0" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/arrival) +"o" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/shuttle/arrival) +"p" = ( +/turf/open/floor/plasteel/neutral, +/area/shuttle/arrival) +"q" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/shuttle/arrival) +"r" = ( +/obj/machinery/status_display{ + pixel_x = -32 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-21" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/shuttle/arrival) +"s" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/shuttle/arrival) +"t" = ( +/obj/machinery/ai_status_display{ + pixel_x = 32 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-21" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/shuttle/arrival) +"u" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/arrival) +"v" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/arrival) +"w" = ( +/obj/machinery/requests_console{ + department = "Arrival shuttle"; + name = "Arrivals Shuttle console" + }, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/arrival) +"x" = ( +/obj/structure/flora/ausbushes/grassybush, +/obj/structure/flora/ausbushes/lavendergrass, +/obj/structure/flora/ausbushes/ppflowers, +/obj/structure/flora/ausbushes/sunnybush, +/obj/structure/window/shuttle, +/turf/open/floor/grass, +/area/shuttle/arrival) +"y" = ( +/obj/structure/flora/ausbushes/grassybush, +/obj/structure/flora/ausbushes/lavendergrass, +/obj/structure/flora/ausbushes/ywflowers, +/obj/structure/flora/ausbushes/fernybush, +/obj/structure/window/shuttle, +/turf/open/floor/grass, +/area/shuttle/arrival) +"z" = ( +/obj/structure/sign/nanotrasen, +/turf/closed/wall/mineral/titanium, +/area/shuttle/arrival) +"A" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-21" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 8; + heat_capacity = 1e+006 + }, +/area/shuttle/arrival) +"B" = ( +/obj/structure/table/reinforced, +/obj/item/clipboard, +/obj/item/toy/figure/assistant, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/shuttle/arrival) +"C" = ( +/obj/machinery/vending/wallmed{ + name = "Emergency NanoMed"; + req_access_txt = "0"; + use_power = 0 + }, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/arrival) +"D" = ( +/obj/structure/table/reinforced, +/obj/item/folder, +/obj/item/storage/pill_bottle/dice, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/shuttle/arrival) +"E" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-21" + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/shuttle/arrival) +"F" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/arrival) +"G" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin, +/obj/item/pen, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/arrival) +"H" = ( +/obj/structure/closet/wardrobe/black, +/turf/open/floor/plasteel/neutral/side, +/area/shuttle/arrival) +"I" = ( +/obj/structure/closet/wardrobe/grey, +/turf/open/floor/plasteel/blue/corner, +/area/shuttle/arrival) +"J" = ( +/turf/open/floor/plasteel/blue/side, +/area/shuttle/arrival) +"K" = ( +/obj/structure/closet/wardrobe/yellow, +/turf/open/floor/plasteel/blue/corner{ + dir = 8 + }, +/area/shuttle/arrival) +"L" = ( +/obj/structure/closet/wardrobe/grey, +/turf/open/floor/plasteel/neutral, +/area/shuttle/arrival) +"M" = ( +/obj/structure/table/reinforced, +/obj/item/storage/briefcase{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/secure/briefcase, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/arrival) +"N" = ( +/obj/machinery/status_display, +/turf/closed/wall/mineral/titanium, +/area/shuttle/arrival) +"O" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/obj/machinery/door/airlock/shuttle{ + name = "Arrival Shuttle Airlock"; + req_access_txt = "0" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/arrival) +"P" = ( +/obj/machinery/ai_status_display, +/turf/closed/wall/mineral/titanium, +/area/shuttle/arrival) +"Q" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel/blue/side{ + dir = 8 + }, +/area/shuttle/arrival) +"R" = ( +/obj/structure/chair/office/dark, +/turf/open/floor/plasteel/blue/side{ + dir = 1 + }, +/area/shuttle/arrival) +"S" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel/blue/side{ + dir = 4 + }, +/area/shuttle/arrival) +"U" = ( +/obj/structure/frame/computer{ + dir = 1 + }, +/turf/open/floor/plasteel/blue, +/area/shuttle/arrival) +"V" = ( +/obj/structure/frame/computer{ + dir = 1 + }, +/turf/open/floor/plasteel/blue/side, +/area/shuttle/arrival) + +(1,1,1) = {" +a +d +f +g +n +g +h +h +h +h +z +n +g +g +a +a +a +"} +(2,1,1) = {" +b +d +g +i +o +r +u +u +u +u +A +o +G +g +a +a +a +"} +(3,1,1) = {" +b +e +h +j +p +p +p +p +p +p +p +p +H +g +g +h +g +"} +(4,1,1) = {" +b +e +h +k +p +p +v +v +v +v +B +p +I +N +Q +U +h +"} +(5,1,1) = {" +c +d +f +l +p +s +w +x +y +x +C +F +J +O +R +V +h +"} +(6,1,1) = {" +b +e +h +m +p +p +u +u +u +u +D +p +K +P +S +U +h +"} +(7,1,1) = {" +b +e +h +j +p +p +p +p +p +p +p +p +L +g +g +h +g +"} +(8,1,1) = {" +b +d +g +i +q +t +v +v +v +v +E +q +M +g +a +a +a +"} +(9,1,1) = {" +a +d +f +g +n +g +h +h +h +h +z +n +g +g +a +a +a +"} diff --git a/_maps/shuttles/arrival_pubby.dmm b/_maps/shuttles/arrival_pubby.dmm new file mode 100644 index 0000000000..7912a7a5ef --- /dev/null +++ b/_maps/shuttles/arrival_pubby.dmm @@ -0,0 +1,246 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"b" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/arrival) +"c" = ( +/obj/machinery/door/airlock/titanium{ + name = "Arrivals Shuttle Airlock" + }, +/turf/open/floor/plating, +/area/shuttle/arrival) +"d" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/arrival) +"e" = ( +/obj/structure/table, +/obj/item/storage/firstaid/regular{ + pixel_y = 4 + }, +/obj/item/storage/toolbox/emergency, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"f" = ( +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"g" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/sign/poster/official/enlist{ + pixel_y = 32 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"h" = ( +/obj/structure/closet/wardrobe/black, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"i" = ( +/obj/structure/closet/wardrobe/mixed, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"j" = ( +/obj/machinery/requests_console{ + department = "Arrival shuttle"; + name = "Arrivals Shuttle console"; + pixel_y = 30 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"k" = ( +/obj/structure/shuttle/engine/heater{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/arrival) +"l" = ( +/obj/structure/shuttle/engine/propulsion/burst/right{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/arrival) +"m" = ( +/obj/structure/grille, +/obj/structure/window/shuttle, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "arrivy"; + name = "ship shutters" + }, +/turf/open/floor/plating, +/area/shuttle/arrival) +"n" = ( +/obj/machinery/door/airlock/titanium{ + name = "Arrivals Shuttle Airlock" + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"o" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"p" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 4 + }, +/obj/docking_port/mobile/arrivals{ + height = 13; + name = "pubby arrivals shuttle"; + width = 6 + }, +/turf/open/floor/plating/airless, +/area/shuttle/arrival) +"q" = ( +/obj/machinery/light/small, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"r" = ( +/obj/structure/shuttle/engine/propulsion{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/arrival) +"s" = ( +/obj/structure/closet/emcloset, +/obj/item/storage/firstaid/o2, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/clothing/mask/breath, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"t" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -29 + }, +/obj/machinery/light, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"u" = ( +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/machinery/light, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/arrival) +"v" = ( +/obj/structure/shuttle/engine/propulsion/burst/left{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/arrival) + +(1,1,1) = {" +a +b +m +m +b +a +"} +(2,1,1) = {" +a +b +f +q +b +a +"} +(3,1,1) = {" +b +b +n +n +b +b +"} +(4,1,1) = {" +b +e +f +f +s +b +"} +(5,1,1) = {" +c +f +o +o +f +c +"} +(6,1,1) = {" +b +g +f +f +t +b +"} +(7,1,1) = {" +d +h +o +o +f +d +"} +(8,1,1) = {" +d +i +f +f +f +d +"} +(9,1,1) = {" +d +f +o +o +f +d +"} +(10,1,1) = {" +b +j +o +o +u +b +"} +(11,1,1) = {" +c +f +f +f +f +c +"} +(12,1,1) = {" +b +k +k +k +k +b +"} +(13,1,1) = {" +b +l +p +r +v +b +"} diff --git a/_maps/shuttles/assaultpod_basic.dmm b/_maps/shuttles/assaultpod_basic.dmm new file mode 100644 index 0000000000..38d6210f01 --- /dev/null +++ b/_maps/shuttles/assaultpod_basic.dmm @@ -0,0 +1,68 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) + +(1,1,1) = {" +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +a +a +a +a +a +a +"} +(3,1,1) = {" +a +a +a +a +a +a +a +"} +(4,1,1) = {" +a +a +a +a +a +a +a +"} +(5,1,1) = {" +a +a +a +a +a +a +a +"} +(6,1,1) = {" +a +a +a +a +a +a +a +"} +(7,1,1) = {" +a +a +a +a +a +a +a +"} diff --git a/_maps/shuttles/cargo_birdboat.dmm b/_maps/shuttles/cargo_birdboat.dmm index 85c2579597..4abd694656 100644 --- a/_maps/shuttles/cargo_birdboat.dmm +++ b/_maps/shuttles/cargo_birdboat.dmm @@ -1,16 +1,7 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/supply) "b" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/supply) -"c" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) -"d" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) "e" = ( /obj/machinery/conveyor{ dir = 2; @@ -138,12 +129,6 @@ }, /turf/open/floor/plating, /area/shuttle/supply) -"s" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/shuttle/supply) -"t" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) "u" = ( /obj/structure/window/reinforced{ dir = 1 @@ -151,9 +136,6 @@ /obj/structure/shuttle/engine/heater, /turf/open/floor/plating/airless, /area/shuttle/supply) -"v" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) "w" = ( /turf/template_noop, /area/template_noop) diff --git a/_maps/shuttles/cargo_box.dmm b/_maps/shuttles/cargo_box.dmm index a63162bae7..8f5a8ef1b4 100644 --- a/_maps/shuttles/cargo_box.dmm +++ b/_maps/shuttles/cargo_box.dmm @@ -1,16 +1,7 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/supply) "b" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/supply) -"c" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) -"d" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) "e" = ( /turf/open/floor/mineral/titanium/blue, /area/shuttle/supply) @@ -74,26 +65,9 @@ }, /turf/open/floor/plating, /area/shuttle/supply) -"k" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) "l" = ( /turf/closed/wall/mineral/titanium/interior, /area/shuttle/supply) -"m" = ( -/turf/closed/wall/mineral/titanium/interior{ - icon_state = "swall_f6" - }, -/area/shuttle/supply) -"n" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) -"o" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) -"p" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) "q" = ( /obj/structure/window/reinforced{ dir = 1 @@ -101,9 +75,6 @@ /obj/structure/shuttle/engine/heater, /turf/open/floor/plating/airless, /area/shuttle/supply) -"r" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/supply) "s" = ( /turf/template_noop, /area/template_noop) diff --git a/_maps/shuttles/cargo_delta.dmm b/_maps/shuttles/cargo_delta.dmm new file mode 100644 index 0000000000..ba8a8a555f --- /dev/null +++ b/_maps/shuttles/cargo_delta.dmm @@ -0,0 +1,320 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/supply) +"b" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/shuttle/supply) +"c" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/supply) +"d" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/supply) +"e" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/supply) +"f" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/shuttle/supply) +"g" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/shuttle/supply) +"h" = ( +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/supply) +"i" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/supply) +"j" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/shuttle/supply) +"k" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "cargounload" + }, +/obj/machinery/door/poddoor{ + id = "cargounload"; + name = "supply dock unloading door" + }, +/turf/open/floor/plating, +/area/shuttle/supply) +"l" = ( +/obj/effect/decal/cleanable/oil, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/supply) +"m" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/shuttle/supply) +"n" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Supply Shuttle Airlock"; + req_access_txt = "31" + }, +/obj/effect/decal/cleanable/dirt, +/obj/docking_port/mobile/supply{ + dir = 4; + dwidth = 4; + timid = 1; + width = 12 + }, +/turf/open/floor/plating, +/area/shuttle/supply) +"o" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/shuttle/supply) +"p" = ( +/obj/machinery/button/door{ + dir = 2; + id = "cargounload"; + name = "Loading Doors"; + pixel_x = -24; + pixel_y = 8 + }, +/obj/machinery/button/door{ + id = "cargoload"; + name = "Loading Doors"; + pixel_x = -24; + pixel_y = -8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/shuttle/supply) +"q" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/shuttle/supply) +"r" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Supply Shuttle Airlock"; + req_access_txt = "31" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/shuttle/supply) +"s" = ( +/obj/machinery/door/poddoor{ + id = "cargoload"; + name = "supply dock loading door" + }, +/obj/machinery/conveyor{ + dir = 4; + id = "cargoload" + }, +/turf/open/floor/plating, +/area/shuttle/supply) +"t" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/shuttle/supply) +"u" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/shuttle/supply) +"v" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/shuttle/supply) +"w" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/shuttle/supply) +"x" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/shuttle/supply) +"y" = ( +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/shuttle/supply) +"z" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/shuttle/engine/heater, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/shuttle/supply) +"A" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/shuttle/engine/heater, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/shuttle/supply) +"B" = ( +/turf/template_noop, +/area/template_noop) +"C" = ( +/obj/structure/shuttle/engine/propulsion/burst/left, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/shuttle/supply) +"D" = ( +/obj/structure/shuttle/engine/propulsion, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/shuttle/supply) +"E" = ( +/obj/structure/shuttle/engine/propulsion/burst/right, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/shuttle/supply) + +(1,1,1) = {" +a +a +a +k +n +a +r +s +a +a +a +B +"} +(2,1,1) = {" +a +b +g +g +o +p +o +o +t +a +a +C +"} +(3,1,1) = {" +a +c +h +l +h +h +h +i +u +x +z +D +"} +(4,1,1) = {" +a +d +i +i +i +h +i +h +v +x +A +D +"} +(5,1,1) = {" +a +e +i +h +h +h +h +h +v +y +A +D +"} +(6,1,1) = {" +a +f +j +m +j +q +m +j +w +a +a +E +"} +(7,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +B +"} diff --git a/_maps/shuttles/emergency_airless.dmm b/_maps/shuttles/emergency_airless.dmm index d5dc2d6d00..1606703ac2 100644 --- a/_maps/shuttles/emergency_airless.dmm +++ b/_maps/shuttles/emergency_airless.dmm @@ -46,9 +46,6 @@ /obj/effect/shuttle_build, /turf/open/floor/plating/airless, /area/shuttle/escape) -"i" = ( -/turf/open/space/basic, -/area/space) (1,1,1) = {" a @@ -76,9 +73,9 @@ f e e a -i -i -i +a +a +a a "} (2,1,1) = {" @@ -107,9 +104,9 @@ f f e a -i -i -i +a +a +a a "} (3,1,1) = {" @@ -138,9 +135,9 @@ f f f a -i -i -i +a +a +a a "} (4,1,1) = {" @@ -169,9 +166,9 @@ f f e a -i -i -i +a +a +a a "} (5,1,1) = {" diff --git a/_maps/shuttles/emergency_asteroid.dmm b/_maps/shuttles/emergency_asteroid.dmm index 3eba8d7a61..01772ed706 100644 --- a/_maps/shuttles/emergency_asteroid.dmm +++ b/_maps/shuttles/emergency_asteroid.dmm @@ -2,9 +2,6 @@ "aa" = ( /turf/template_noop, /area/template_noop) -"ab" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/escape) "ac" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/escape) @@ -19,12 +16,6 @@ }, /turf/open/floor/mineral/titanium/yellow, /area/shuttle/escape) -"af" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"ag" = ( -/turf/template_noop, -/area/template_noop) "ah" = ( /obj/effect/spawner/structure/window/shuttle, /turf/open/floor/plating, @@ -49,9 +40,6 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/escape) -"ak" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "al" = ( /obj/machinery/door/airlock/titanium{ name = "Emergency Shuttle Airlock"; @@ -71,9 +59,6 @@ }, /turf/open/floor/plating/airless, /area/shuttle/escape) -"ao" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "ap" = ( /obj/structure/ore_box, /turf/open/floor/mineral/titanium/yellow, @@ -85,15 +70,9 @@ /obj/machinery/recharge_station, /turf/open/floor/mineral/titanium/yellow, /area/shuttle/escape) -"as" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "at" = ( /turf/open/floor/mineral/titanium, /area/shuttle/escape) -"au" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "av" = ( /obj/structure/chair{ dir = 4 @@ -109,26 +88,12 @@ }, /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) -"ay" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "az" = ( /turf/closed/wall/mineral/titanium/nodiagonal, /area/shuttle/escape) -"aA" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "aB" = ( /turf/closed/wall/mineral/titanium/interior, /area/shuttle/escape) -"aC" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"aD" = ( -/obj/structure/window/shuttle, -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/shuttle/escape) "aE" = ( /obj/structure/chair{ dir = 4 @@ -193,9 +158,6 @@ /obj/structure/bed/roller, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"aO" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "aP" = ( /obj/machinery/door/airlock/security/glass{ name = "Emergency Shuttle Brig"; @@ -303,10 +265,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"bh" = ( -/obj/effect/spawner/structure/window/shuttle, -/turf/open/floor/plasteel/shuttle, -/area/shuttle/escape) "bi" = ( /obj/machinery/status_display, /turf/closed/wall/mineral/titanium, @@ -344,10 +302,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"bo" = ( -/obj/machinery/status_display, -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "bp" = ( /obj/machinery/computer/crew{ dir = 4 @@ -427,12 +381,6 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/escape) -"bA" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"bB" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "bC" = ( /obj/item/device/radio/intercom{ dir = 8; @@ -490,13 +438,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"bL" = ( -/obj/structure/chair, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) "bM" = ( /obj/machinery/light, /turf/open/floor/mineral/plastitanium/brig, @@ -507,20 +448,10 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/escape) -"bO" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) "bP" = ( /obj/machinery/light, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"bQ" = ( -/obj/machinery/light, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) (1,1,1) = {" aa @@ -643,7 +574,7 @@ ac ac "} (9,1,1) = {" -ag +aa ac ac aH @@ -658,8 +589,8 @@ ac aa "} (10,1,1) = {" -ag -ag +aa +aa ac aI at @@ -718,8 +649,8 @@ aa aa "} (14,1,1) = {" -ag -ag +aa +aa ad aK at @@ -733,8 +664,8 @@ aa aa "} (15,1,1) = {" -ag -ag +aa +aa ad aK at @@ -748,8 +679,8 @@ aa aa "} (16,1,1) = {" -ag -ag +aa +aa ad aK at @@ -808,8 +739,8 @@ aa aa "} (20,1,1) = {" -ag -ag +aa +aa ac aM at @@ -823,7 +754,7 @@ aa aa "} (21,1,1) = {" -ag +aa ac ac aN @@ -928,9 +859,9 @@ aa aa "} (28,1,1) = {" -ag -ag -ag +aa +aa +aa ac ac ad diff --git a/_maps/shuttles/emergency_bar.dmm b/_maps/shuttles/emergency_bar.dmm index b5104569ac..262ed4029b 100644 --- a/_maps/shuttles/emergency_bar.dmm +++ b/_maps/shuttles/emergency_bar.dmm @@ -9,9 +9,6 @@ /obj/effect/spawner/structure/window/shuttle, /turf/open/floor/plating, /area/shuttle/escape) -"ad" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "ae" = ( /turf/closed/wall/mineral/titanium/nodiagonal, /area/shuttle/escape) @@ -39,9 +36,6 @@ }, /turf/open/floor/carpet, /area/shuttle/escape) -"aj" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "ak" = ( /obj/structure/extinguisher_cabinet{ pixel_y = 30 @@ -118,18 +112,6 @@ }, /turf/open/floor/carpet, /area/shuttle/escape) -"av" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"aw" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"ax" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"ay" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "az" = ( /obj/machinery/door/airlock/public/glass{ name = "Emergency Shuttle Cockpit"; @@ -141,9 +123,6 @@ /obj/machinery/status_display, /turf/closed/wall/mineral/titanium, /area/shuttle/escape) -"aB" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "aC" = ( /obj/structure/chair, /turf/open/floor/mineral/plastitanium/brig, @@ -243,9 +222,6 @@ /obj/structure/table/wood/bar, /turf/open/floor/plasteel/bar, /area/shuttle/escape) -"aQ" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "aR" = ( /obj/structure/table/wood/bar{ boot_dir = 8 @@ -331,40 +307,19 @@ }, /turf/open/floor/plasteel/bar, /area/shuttle/escape) -"bf" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "bg" = ( /obj/machinery/door/airlock/titanium{ name = "Emergency Shuttle Airlock" }, /turf/open/floor/plasteel/bar, /area/shuttle/escape) -"bh" = ( -/obj/machinery/shower{ - dir = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) "bi" = ( /turf/open/floor/mineral/titanium, /area/shuttle/escape) -"bj" = ( -/obj/structure/table/reinforced, -/obj/item/storage/firstaid/regular, -/obj/item/storage/firstaid/toxin{ - pixel_x = 4; - pixel_y = 4 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/escape) "bk" = ( /obj/machinery/vending/cigarette, /turf/open/floor/plasteel/bar, /area/shuttle/escape) -"bl" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "bm" = ( /obj/machinery/door/airlock{ name = "Unisex Restrooms"; @@ -374,7 +329,7 @@ /area/shuttle/escape) "bn" = ( /obj/effect/spawner/structure/window/shuttle, -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall/mineral/titanium, /area/shuttle/escape) "bo" = ( @@ -404,9 +359,6 @@ }, /turf/open/floor/plasteel/freezer, /area/shuttle/escape) -"bt" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "bu" = ( /obj/machinery/door/airlock{ name = "Unit 2" @@ -452,14 +404,6 @@ /obj/item/scalpel, /turf/open/floor/mineral/titanium, /area/shuttle/escape) -"bA" = ( -/turf/closed/wall/mineral/plastitanium{ - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) -"bB" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/escape) "bC" = ( /obj/structure/window/reinforced{ dir = 1 @@ -467,12 +411,6 @@ /obj/structure/shuttle/engine/heater, /turf/open/floor/plating/airless, /area/shuttle/escape) -"bD" = ( -/turf/closed/wall/mineral/plastitanium{ - dir = 4; - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) "bE" = ( /obj/structure/shuttle/engine/propulsion, /turf/open/floor/plating/airless, @@ -624,35 +562,35 @@ aa aa aa aa -bt -bt -bt +ab +ab +ab aK -bt +ab aT -bt +ab ac ac ac -bt +ab bg -bt +ab bo -bt -bt -bt +ab +ab +ab aa "} (2,1,1) = {" aa -bt -bt -bt -bt +ab +ab +ab +ab aC aH aL -bt +ab bY bH aZ @@ -660,23 +598,23 @@ bc aZ bH bZ -bt +ab bp bs bx -bt -bt +ab +ab "} (3,1,1) = {" -bt +ab ae al aq -bt +ab aC aI aM -bt +ab aE aW ba @@ -684,10 +622,10 @@ bL bO bQ bR -bt +ab bp -bt -bt +ab +ab bC bE "} @@ -696,11 +634,11 @@ ac af am ar -bt +ab aC aI aM -bt +ab aE aW bJ @@ -708,7 +646,7 @@ bM bP bQ aE -bt +ab ak bu bx @@ -720,7 +658,7 @@ ac ag an as -bt +ab ac aJ ac @@ -734,8 +672,8 @@ bH aE aA bp -bt -bt +ab +ab bC bE "} @@ -744,7 +682,7 @@ ac ah an at -bt +ab aD aE aE @@ -781,9 +719,9 @@ aN aE ca ae -bt -bt -bt +ab +ab +ab bC bE "} @@ -812,11 +750,11 @@ bC bE "} (9,1,1) = {" -bt +ab ae ap au -bt +ab aF bH aP @@ -837,10 +775,10 @@ bE "} (10,1,1) = {" aa -bt -bt -bt -bt +ab +ab +ab +ab aG bW bI @@ -856,30 +794,30 @@ bF br cb bU -bt -bt +ab +ab "} (11,1,1) = {" aa aa aa aa -bt +ab ac -bt +ab ac -bt -bt -bt +ab +ab +ab ac ac ac -bt -bt -bt +ab +ab +ab ac -bt +ab ac -bt +ab aa "} diff --git a/_maps/shuttles/emergency_box.dmm b/_maps/shuttles/emergency_box.dmm index 65cc9803cb..6443518590 100644 --- a/_maps/shuttles/emergency_box.dmm +++ b/_maps/shuttles/emergency_box.dmm @@ -2,9 +2,6 @@ "aa" = ( /turf/template_noop, /area/template_noop) -"ab" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/escape) "ac" = ( /obj/effect/spawner/structure/window/shuttle, /turf/open/floor/plating, @@ -40,14 +37,6 @@ /obj/item/storage/firstaid/fire, /turf/open/floor/mineral/titanium, /area/shuttle/escape) -"aj" = ( -/turf/closed/wall/mineral/titanium/interior{ - icon_state = "swall_f5" - }, -/area/shuttle/escape) -"ak" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "al" = ( /obj/machinery/computer/atmos_alert{ dir = 4 @@ -112,15 +101,6 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/escape) -"av" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"aw" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"ax" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "ay" = ( /obj/machinery/door/airlock/public/glass{ name = "Emergency Shuttle Cockpit"; @@ -218,12 +198,6 @@ /obj/structure/table, /turf/open/floor/mineral/titanium, /area/shuttle/escape) -"aN" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"aO" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "aP" = ( /obj/machinery/door/airlock/titanium{ name = "Emergency Shuttle Airlock" @@ -292,19 +266,12 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"aY" = ( -/obj/machinery/status_display, -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "aZ" = ( /obj/machinery/door/airlock/public/glass{ name = "Emergency Shuttle Infirmary" }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"ba" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "bb" = ( /turf/open/floor/mineral/titanium/yellow, /area/shuttle/escape) @@ -344,9 +311,6 @@ /obj/structure/closet/crate, /turf/open/floor/mineral/titanium/yellow, /area/shuttle/escape) -"bh" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "bi" = ( /obj/structure/window/reinforced{ dir = 1 @@ -414,35 +378,35 @@ aa aa aa aa -ak -ak -ak +ad +ad +ad aI -ak +ad aP -ak +ad ac ac ac -ak +ad aV -ak +ad aV -ak -ak -ak +ad +ad +ad aa "} (2,1,1) = {" aa -ak -ak -ak -ak +ad +ad +ad +ad aA aF aG -ak +ad bn aL aL @@ -450,23 +414,23 @@ aL aL aL bo -ak +ad bb bq bf -ak -ak +ad +ad "} (3,1,1) = {" -ak +ad ae al aq -ak +ad aA aG aJ -ak +ad aQ an an @@ -474,7 +438,7 @@ an an an aW -ak +ad bb bb bf @@ -486,11 +450,11 @@ ac af am ar -ak +ad aA aG aJ -ak +ad an aS aS @@ -510,7 +474,7 @@ ac ag an as -ak +ad ac aH ac @@ -522,7 +486,7 @@ aT aT aT an -ak +ad bc br bg @@ -534,7 +498,7 @@ ac ah an at -ak +ad aB an aK @@ -547,9 +511,9 @@ an an bp az -ak -ak -ak +ad +ad +ad bi bk "} @@ -602,11 +566,11 @@ bi bk "} (9,1,1) = {" -ak +ad ae ap au -ak +ad aD an an @@ -627,10 +591,10 @@ bk "} (10,1,1) = {" aa -ak -ak -ak -ak +ad +ad +ad +ad aE bl aC @@ -646,30 +610,30 @@ ac bd be bd -ak -ak +ad +ad "} (11,1,1) = {" aa aa aa aa -ak +ad ac -ak +ad ac -ak -ak -ak +ad +ad +ad ac ac ac -ak -ak -ak +ad +ad +ad ac -ak +ad ac -ak +ad aa "} diff --git a/_maps/shuttles/emergency_cere.dmm b/_maps/shuttles/emergency_cere.dmm index f860593b6e..72620f68f7 100644 --- a/_maps/shuttles/emergency_cere.dmm +++ b/_maps/shuttles/emergency_cere.dmm @@ -695,7 +695,7 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "cb" = ( -/obj/structure/sign/bluecross_2{ +/obj/structure/sign/departments/medbay/alt{ pixel_x = 32; pixel_y = -32 }, @@ -1109,7 +1109,7 @@ }, /area/shuttle/escape) "di" = ( -/obj/structure/sign/electricshock{ +/obj/structure/sign/warning/electricshock{ pixel_x = 32 }, /turf/open/floor/plasteel/yellow/side{ @@ -1131,7 +1131,7 @@ /area/shuttle/escape) "dl" = ( /obj/structure/table, -/obj/structure/sign/enginesafety{ +/obj/structure/sign/warning/enginesafety{ pixel_y = -32 }, /turf/open/floor/plasteel/yellow/side, diff --git a/_maps/shuttles/emergency_delta.dmm b/_maps/shuttles/emergency_delta.dmm index 6e22434fcd..6a166bfe15 100644 --- a/_maps/shuttles/emergency_delta.dmm +++ b/_maps/shuttles/emergency_delta.dmm @@ -392,7 +392,7 @@ /turf/open/floor/plasteel/white, /area/shuttle/escape) "aP" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall/mineral/titanium, /area/shuttle/escape) "aQ" = ( @@ -1052,14 +1052,6 @@ dir = 1 }, /area/shuttle/escape) -"cz" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/neutral/side{ - dir = 1 - }, -/area/shuttle/escape) "cA" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; @@ -1088,24 +1080,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/shuttle/escape) -"cD" = ( -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/shuttle/escape) -"cE" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - pixel_x = -3; - pixel_y = 3 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/plasteel/neutral/side{ - dir = 8; - heat_capacity = 1e+006 - }, -/area/shuttle/escape) "cF" = ( /obj/machinery/light, /turf/open/floor/plasteel, diff --git a/_maps/shuttles/emergency_discoinferno.dmm b/_maps/shuttles/emergency_discoinferno.dmm index eb3a27359b..3cd9fc7890 100644 --- a/_maps/shuttles/emergency_discoinferno.dmm +++ b/_maps/shuttles/emergency_discoinferno.dmm @@ -221,12 +221,6 @@ "O" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/shuttle/escape) -"P" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/shuttle/escape) -"Q" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/shuttle/escape) (1,1,1) = {" a diff --git a/_maps/shuttles/emergency_goon.dmm b/_maps/shuttles/emergency_goon.dmm index 62a84d9c3d..b79aa8c62c 100644 --- a/_maps/shuttles/emergency_goon.dmm +++ b/_maps/shuttles/emergency_goon.dmm @@ -20,9 +20,6 @@ "d" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/escape) -"e" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/escape) "f" = ( /obj/machinery/status_display, /turf/closed/wall/mineral/titanium, @@ -47,15 +44,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"i" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"j" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"k" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "l" = ( /obj/machinery/vending/wallmed, /turf/closed/wall/mineral/titanium, @@ -65,9 +53,6 @@ /obj/structure/grille, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"n" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "o" = ( /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) @@ -98,9 +83,6 @@ "t" = ( /turf/closed/wall/mineral/titanium/interior, /area/shuttle/escape) -"u" = ( -/turf/template_noop, -/area/template_noop) "v" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/maintenance, @@ -153,12 +135,6 @@ /obj/structure/table/reinforced, /turf/open/floor/mineral/titanium/yellow, /area/shuttle/escape) -"C" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"D" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "E" = ( /obj/machinery/door/airlock/public/glass{ name = "Emergency Shuttle Cockpit"; @@ -217,16 +193,6 @@ }, /turf/open/floor/mineral/titanium/yellow, /area/shuttle/escape) -"N" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"O" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"P" = ( -/obj/machinery/status_display, -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "Q" = ( /obj/machinery/light, /turf/open/floor/mineral/titanium/blue, @@ -253,15 +219,6 @@ }, /turf/open/floor/mineral/plastitanium/brig, /area/shuttle/escape) -"U" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) "V" = ( /obj/machinery/light{ dir = 1 diff --git a/_maps/shuttles/emergency_luxury.dmm b/_maps/shuttles/emergency_luxury.dmm index 4345939922..8306423ffd 100644 --- a/_maps/shuttles/emergency_luxury.dmm +++ b/_maps/shuttles/emergency_luxury.dmm @@ -345,24 +345,6 @@ }, /turf/open/floor/mineral/gold, /area/shuttle/escape/luxury) -"bm" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/mineral/gold, -/area/shuttle/escape/luxury) -"bn" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/mineral/gold, -/area/shuttle/escape/luxury) -"bo" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/mineral/gold, -/area/shuttle/escape/luxury) "bp" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-21"; @@ -372,15 +354,6 @@ /obj/machinery/light, /turf/open/floor/mineral/gold, /area/shuttle/escape/luxury) -"bq" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-21"; - pixel_x = -3; - pixel_y = 3 - }, -/obj/machinery/light, -/turf/open/floor/mineral/gold, -/area/shuttle/escape/luxury) (1,1,1) = {" aa diff --git a/_maps/shuttles/emergency_meta.dmm b/_maps/shuttles/emergency_meta.dmm index 9824fec026..0bd4da4a7d 100644 --- a/_maps/shuttles/emergency_meta.dmm +++ b/_maps/shuttles/emergency_meta.dmm @@ -2,9 +2,6 @@ "aa" = ( /turf/template_noop, /area/template_noop) -"ab" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/escape) "ac" = ( /obj/effect/spawner/structure/window/shuttle, /turf/open/floor/plating, @@ -12,9 +9,6 @@ "ad" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/escape) -"ae" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "af" = ( /obj/machinery/door/airlock/titanium{ name = "Emergency Shuttle Airlock" @@ -22,7 +16,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "ag" = ( -/obj/structure/sign/nosmoking_2, +/obj/structure/sign/warning/nosmoking, /turf/closed/wall/mineral/titanium, /area/shuttle/escape) "ah" = ( @@ -39,18 +33,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"ai" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"aj" = ( -/turf/closed/wall/mineral/plastitanium{ - dir = 8; - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) -"ak" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "al" = ( /obj/structure/table, /obj/item/phone{ @@ -238,9 +220,6 @@ /obj/structure/chair/office/dark, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"aD" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "aE" = ( /obj/structure/chair{ dir = 1 @@ -278,18 +257,12 @@ /obj/structure/extinguisher_cabinet, /turf/closed/wall/mineral/titanium, /area/shuttle/escape) -"aK" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/escape) "aL" = ( /obj/machinery/computer/station_alert{ dir = 4 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"aM" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "aN" = ( /obj/machinery/status_display{ dir = 8; @@ -359,12 +332,6 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/escape) -"aU" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"aV" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "aW" = ( /obj/machinery/door/airlock/command{ name = "Emergency Recovery Airlock"; @@ -373,9 +340,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"aX" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "aY" = ( /obj/machinery/door/airlock/security/glass{ name = "Brig"; @@ -392,7 +356,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "ba" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall/mineral/titanium, /area/shuttle/escape) "bb" = ( @@ -402,9 +366,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/shuttle/escape) -"bc" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "bd" = ( /obj/structure/chair{ dir = 4 @@ -420,9 +381,6 @@ }, /turf/open/floor/plasteel/floorgrime, /area/shuttle/escape) -"bg" = ( -/turf/open/floor/mineral/plastitanium, -/area/shuttle/escape) "bh" = ( /obj/structure/chair{ dir = 4 @@ -482,9 +440,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/shuttle/escape) -"br" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "bs" = ( /obj/structure/chair{ dir = 8 @@ -551,9 +506,6 @@ /obj/item/cigbutt, /turf/open/floor/plasteel/floorgrime, /area/shuttle/escape) -"bx" = ( -/turf/open/floor/plasteel/floorgrime, -/area/shuttle/escape) "by" = ( /obj/machinery/suit_storage_unit/standard_unit, /turf/open/floor/plasteel/floorgrime, @@ -572,11 +524,6 @@ }, /turf/open/floor/plasteel, /area/shuttle/escape) -"bB" = ( -/turf/closed/wall/mineral/plastitanium{ - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) "bC" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plasteel/floorgrime, @@ -874,12 +821,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) -"bZ" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/blue, -/area/shuttle/escape) "ca" = ( /obj/structure/chair{ dir = 1 diff --git a/_maps/shuttles/emergency_mini.dmm b/_maps/shuttles/emergency_mini.dmm index d7d5644336..8bf882302b 100644 --- a/_maps/shuttles/emergency_mini.dmm +++ b/_maps/shuttles/emergency_mini.dmm @@ -205,9 +205,6 @@ /obj/item/extinguisher, /turf/closed/wall/mineral/titanium, /area/shuttle/escape) -"G" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "H" = ( /obj/machinery/status_display, /turf/closed/wall/mineral/titanium, diff --git a/_maps/shuttles/emergency_omega.dmm b/_maps/shuttles/emergency_omega.dmm new file mode 100644 index 0000000000..19c1cadb7e --- /dev/null +++ b/_maps/shuttles/emergency_omega.dmm @@ -0,0 +1,955 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/escape) +"ab" = ( +/obj/structure/window/shuttle, +/obj/structure/grille, +/turf/open/floor/plating, +/area/shuttle/escape) +"ac" = ( +/obj/structure/sign/nanotrasen, +/turf/closed/wall/mineral/titanium, +/area/shuttle/escape) +"ad" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/newscaster/security_unit{ + pixel_y = 32 + }, +/obj/structure/reagent_dispensers/peppertank{ + pixel_x = -32 + }, +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/escape) +"ae" = ( +/obj/structure/chair, +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/escape) +"af" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom"; + pixel_y = 24 + }, +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/escape) +"ag" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/shuttle/escape) +"ah" = ( +/obj/machinery/computer/emergency_shuttle, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/shuttle/escape) +"ai" = ( +/obj/machinery/computer/communications, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/shuttle/escape) +"aj" = ( +/obj/structure/table/reinforced, +/obj/item/storage/firstaid/regular, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/shuttle/escape) +"ak" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/escape) +"al" = ( +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/escape) +"am" = ( +/obj/machinery/door/airlock/command{ + name = "Emergency Recovery Airlock"; + req_access = null; + req_access_txt = "19" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"an" = ( +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/escape) +"ao" = ( +/obj/structure/chair/comfy/brown{ + color = "#596479"; + dir = 1 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/escape) +"ap" = ( +/obj/structure/table/reinforced, +/obj/item/storage/fancy/donut_box, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/shuttle/escape) +"aq" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Emergency Shuttle Airlock"; + req_access_txt = "2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"ar" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger, +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/escape) +"as" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-21"; + pixel_x = -3; + pixel_y = 3 + }, +/turf/open/floor/plasteel/vault{ + dir = 4 + }, +/area/shuttle/escape) +"at" = ( +/obj/structure/chair/comfy/brown{ + color = "#596479"; + dir = 4 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/escape) +"au" = ( +/obj/machinery/computer/crew{ + dir = 8 + }, +/obj/machinery/ai_status_display{ + pixel_x = 32 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/shuttle/escape) +"av" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Holding Area"; + req_access_txt = "2" + }, +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/escape) +"aw" = ( +/obj/machinery/ai_status_display, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/escape) +"ax" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Cockpit"; + req_access_txt = "19" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"ay" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Emergency Shuttle Airlock" + }, +/obj/docking_port/mobile/emergency{ + dheight = 0; + dwidth = 5; + height = 11; + name = "Omega emergency shuttle"; + width = 19 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"az" = ( +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"aA" = ( +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/shuttle/escape) +"aB" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 1 + }, +/area/shuttle/escape) +"aC" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-21"; + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom"; + pixel_x = 26 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"aD" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"aE" = ( +/turf/open/floor/plasteel/neutral, +/area/shuttle/escape) +"aF" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"aG" = ( +/obj/structure/flora/ausbushes/grassybush, +/obj/structure/flora/ausbushes/lavendergrass, +/obj/structure/flora/ausbushes/ppflowers, +/obj/structure/flora/ausbushes/sunnybush, +/obj/structure/window/shuttle, +/turf/open/floor/grass, +/area/shuttle/escape) +"aH" = ( +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/tank/internals/emergency_oxygen/double{ + pixel_x = 3 + }, +/obj/item/tank/internals/emergency_oxygen/double{ + pixel_x = 3 + }, +/obj/item/tank/internals/emergency_oxygen/double{ + pixel_x = 3 + }, +/obj/item/tank/internals/emergency_oxygen/double{ + pixel_x = 3 + }, +/obj/item/tank/internals/emergency_oxygen/double{ + pixel_x = 3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/structure/closet/crate/internals, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"aI" = ( +/obj/structure/flora/ausbushes/grassybush, +/obj/structure/flora/ausbushes/lavendergrass, +/obj/structure/flora/ausbushes/ywflowers, +/obj/structure/flora/ausbushes/fernybush, +/obj/structure/window/shuttle, +/turf/open/floor/grass, +/area/shuttle/escape) +"aJ" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"aK" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"aL" = ( +/obj/structure/extinguisher_cabinet, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/escape) +"aM" = ( +/obj/machinery/vending/wallmed{ + name = "Emergency NanoMed"; + req_access_txt = "0"; + use_power = 0 + }, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/escape) +"aN" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"aO" = ( +/obj/structure/flora/ausbushes/grassybush, +/obj/structure/flora/ausbushes/lavendergrass, +/obj/structure/flora/ausbushes/brflowers, +/obj/structure/flora/ausbushes/grassybush, +/obj/structure/flora/ausbushes/pointybush, +/turf/open/floor/grass, +/area/shuttle/escape) +"aP" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Emergency Shuttle Airlock"; + req_access_txt = "0" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/escape) +"aQ" = ( +/turf/open/floor/plasteel/neutral/side, +/area/shuttle/escape) +"aR" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/neutral/side, +/area/shuttle/escape) +"aS" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-21"; + pixel_x = -3; + pixel_y = 3 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 24 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"aT" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Emergency Shuttle Cargo" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"aU" = ( +/obj/machinery/status_display, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/escape) +"aV" = ( +/obj/machinery/door/airlock/medical/glass{ + id_tag = null; + name = "Escape Shuttle Infirmary"; + req_access_txt = "0" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"aW" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"aX" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"aY" = ( +/obj/structure/closet/crate/medical{ + name = "medical crate" + }, +/obj/item/storage/firstaid/regular, +/obj/item/storage/firstaid/o2{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/firstaid/toxin{ + pixel_x = -4; + pixel_y = 3 + }, +/obj/item/device/healthanalyzer{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/lazarus_injector, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/mob/living/simple_animal/bot/medbot{ + name = "\improper emergency medibot"; + pixel_x = -3; + pixel_y = 2 + }, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"aZ" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/escape) +"ba" = ( +/obj/machinery/sleeper{ + dir = 4 + }, +/obj/machinery/vending/wallmed{ + name = "Emergency NanoMed"; + pixel_x = -26; + req_access_txt = "0"; + use_power = 0 + }, +/turf/open/floor/plasteel/cmo, +/area/shuttle/escape) +"bb" = ( +/turf/open/floor/plasteel/cmo, +/area/shuttle/escape) +"bc" = ( +/obj/machinery/sleeper{ + dir = 8 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom"; + pixel_x = 26 + }, +/turf/open/floor/plasteel/cmo, +/area/shuttle/escape) +"bd" = ( +/obj/machinery/recharge_station, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/delivery, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"be" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"bf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"bg" = ( +/obj/structure/closet/crate{ + name = "emergency supplies crate" + }, +/obj/item/storage/toolbox/emergency, +/obj/item/storage/toolbox/emergency, +/obj/item/device/flashlight/flare{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/device/flashlight/flare{ + pixel_x = -6; + pixel_y = -2 + }, +/obj/item/crowbar, +/obj/item/wrench, +/obj/item/device/radio, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"bh" = ( +/obj/machinery/shower{ + dir = 4; + icon_state = "shower"; + name = "emergency shower" + }, +/turf/open/floor/plasteel/cmo, +/area/shuttle/escape) +"bi" = ( +/obj/item/storage/firstaid/toxin, +/obj/item/storage/firstaid/o2{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/structure/table/reinforced, +/obj/machinery/status_display{ + pixel_x = 32 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 5 + }, +/area/shuttle/escape) +"bj" = ( +/obj/structure/table, +/obj/item/clipboard, +/obj/item/folder/yellow, +/obj/item/pen, +/obj/item/hand_labeler_refill, +/obj/structure/sign/warning/nosmoking/circle{ + pixel_x = -32 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom"; + pixel_y = -26 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"bk" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"bl" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/electrical{ + pixel_x = -3; + pixel_y = 1 + }, +/obj/item/storage/toolbox/mechanical{ + pixel_y = -1 + }, +/obj/item/storage/toolbox/emergency{ + pixel_x = 3; + pixel_y = -5 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"bm" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high, +/obj/structure/extinguisher_cabinet{ + pixel_x = 24 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/shuttle/escape) +"bn" = ( +/obj/item/scalpel{ + pixel_y = 12 + }, +/obj/item/circular_saw, +/obj/item/retractor{ + pixel_x = 4 + }, +/obj/item/hemostat{ + pixel_x = -4 + }, +/obj/item/clothing/gloves/color/latex, +/obj/item/clothing/mask/surgical, +/obj/structure/table/reinforced, +/obj/structure/extinguisher_cabinet{ + pixel_x = -24 + }, +/turf/open/floor/plasteel/cmo, +/area/shuttle/escape) +"bo" = ( +/obj/structure/table/optable, +/obj/item/surgical_drapes, +/turf/open/floor/plasteel/cmo, +/area/shuttle/escape) +"bp" = ( +/obj/item/defibrillator/loaded, +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/cmo, +/area/shuttle/escape) +"bq" = ( +/obj/item/storage/firstaid/fire, +/obj/item/storage/firstaid/regular{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/whiteblue/side{ + dir = 4 + }, +/area/shuttle/escape) +"br" = ( +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/escape) +"bs" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/shuttle/engine/heater, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/shuttle/escape) +"bt" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/shuttle/engine/heater, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/shuttle/escape) +"bu" = ( +/turf/template_noop, +/area/template_noop) +"bv" = ( +/obj/structure/shuttle/engine/propulsion, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/shuttle/escape) + +(1,1,1) = {" +aa +aa +aa +aq +ac +ay +aa +ab +ab +ab +aa +aP +ac +aP +aa +aa +aZ +br +bu +"} +(2,1,1) = {" +aa +ad +ak +al +ab +az +aD +aJ +aJ +aJ +aD +az +ab +az +bd +bj +aa +br +bv +"} +(3,1,1) = {" +ab +ae +al +al +av +aA +aE +aE +aE +aE +aE +aQ +aT +aW +be +bk +ab +bs +bv +"} +(4,1,1) = {" +ab +ae +al +al +ab +aA +aF +aK +aF +aF +aF +aQ +aT +aX +bf +bl +ab +bt +bv +"} +(5,1,1) = {" +aa +af +al +ar +ab +aA +aG +aL +aI +aM +aG +aQ +ab +aY +bg +bm +aa +bt +bv +"} +(6,1,1) = {" +ac +ab +am +ab +aw +aB +aH +aG +aO +aI +aH +aR +aU +aZ +ab +aZ +aZ +br +br +"} +(7,1,1) = {" +aa +ag +an +as +ab +aA +aI +aM +aG +aL +aI +aQ +ab +ba +bh +bn +aa +bt +bv +"} +(8,1,1) = {" +ab +ah +ao +an +ax +aA +aJ +aN +aJ +aJ +aJ +aQ +aV +bb +bb +bo +ab +bt +bv +"} +(9,1,1) = {" +ab +ai +an +at +ab +aA +aE +aE +aE +aE +aE +aQ +aV +bb +bb +bp +ab +bt +bv +"} +(10,1,1) = {" +ab +aj +ap +au +aa +aC +aF +aF +aF +aF +aF +aS +ab +bc +bi +bq +aa +br +bv +"} +(11,1,1) = {" +aa +ab +ab +aa +ac +aa +ab +ab +ab +ab +ab +aa +ac +aa +aa +aa +aZ +br +bu +"} diff --git a/_maps/shuttles/emergency_pubby.dmm b/_maps/shuttles/emergency_pubby.dmm index 9c84d5883b..92ad72d1c5 100644 --- a/_maps/shuttles/emergency_pubby.dmm +++ b/_maps/shuttles/emergency_pubby.dmm @@ -307,7 +307,7 @@ pixel_y = 3 }, /obj/item/crowbar, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, /obj/machinery/light{ @@ -332,21 +332,6 @@ "bd" = ( /turf/closed/wall/mineral/titanium/nodiagonal, /area/shuttle/escape) -"be" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/shuttle/escape) -"bf" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/shuttle/escape) -"bg" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/shuttle/escape) -"bh" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/shuttle/escape) -"bi" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/shuttle/escape) (1,1,1) = {" aa diff --git a/_maps/shuttles/emergency_raven.dmm b/_maps/shuttles/emergency_raven.dmm index c8178fd9a2..f1dbe29fbe 100644 --- a/_maps/shuttles/emergency_raven.dmm +++ b/_maps/shuttles/emergency_raven.dmm @@ -317,15 +317,6 @@ icon_state = "darkred" }, /area/shuttle/escape) -"aY" = ( -/obj/machinery/flasher{ - id = "shuttleflash"; - pixel_x = -26 - }, -/turf/open/floor/plasteel/darkgreen/side{ - dir = 8 - }, -/area/shuttle/escape) "aZ" = ( /turf/open/floor/plasteel/darkgreen/side{ dir = 4 @@ -580,10 +571,6 @@ /obj/structure/chair/office/dark, /turf/open/floor/plasteel/dark, /area/shuttle/escape) -"bw" = ( -/obj/machinery/door/airlock/shuttle, -/turf/open/floor/plasteel/dark, -/area/shuttle/escape) "bx" = ( /obj/structure/chair{ dir = 8 @@ -892,22 +879,6 @@ dir = 6 }, /area/shuttle/escape) -"cf" = ( -/obj/machinery/door/airlock/titanium/glass{ - name = "Shuttle Engine Room" - }, -/turf/open/floor/plasteel/darkgreen/side{ - dir = 8 - }, -/area/shuttle/escape) -"cg" = ( -/obj/machinery/door/airlock/titanium/glass{ - name = "Shuttle Engine Room" - }, -/turf/open/floor/plasteel/darkgreen/side{ - dir = 4 - }, -/area/shuttle/escape) "ch" = ( /obj/structure/reagent_dispensers/fueltank, /obj/machinery/light{ @@ -988,18 +959,6 @@ "cs" = ( /turf/closed/wall/mineral/plastitanium/interior, /area/shuttle/escape) -"cx" = ( -/turf/closed/wall/mineral/plastitanium{ - dir = 8; - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) -"cy" = ( -/turf/closed/wall/mineral/plastitanium{ - dir = 1; - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) "cz" = ( /obj/machinery/button/door{ id = "shuttleshutters"; @@ -1010,25 +969,6 @@ /obj/machinery/light, /turf/open/floor/plasteel/darkblue/side, /area/shuttle/escape) -"cA" = ( -/obj/machinery/door/poddoor/shutters{ - id = "shuttleshutters"; - name = "blast shutters" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/shuttle/escape) -"cD" = ( -/turf/closed/wall/mineral/plastitanium{ - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) -"cI" = ( -/turf/closed/wall/mineral/plastitanium{ - dir = 4; - icon_state = "diagonalWall3" - }, -/area/shuttle/escape) "ei" = ( /obj/machinery/porta_turret/centcom_shuttle{ dir = 10 @@ -1091,15 +1031,6 @@ /obj/machinery/light, /turf/open/floor/plasteel/darkgreen/side, /area/shuttle/escape) -"eJ" = ( -/obj/machinery/button/flasher{ - id = "cockpit_flasher"; - pixel_x = 6; - pixel_y = -24 - }, -/obj/machinery/light, -/turf/open/floor/mineral/titanium/blue, -/area/space) "eN" = ( /obj/machinery/light{ dir = 4 @@ -1115,9 +1046,6 @@ "eP" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/shuttle/escape) -"eQ" = ( -/turf/template_noop, -/area/template_noop) (1,1,1) = {" aa @@ -1543,8 +1471,8 @@ bu bA bJ ad -eQ -eQ +ad +ad ad cs bV @@ -1577,8 +1505,8 @@ bv bB bJ ad -eQ -eQ +ad +ad ad bJ br @@ -1611,8 +1539,8 @@ aC bC bJ ad -eQ -eQ +ad +ad ad bJ br @@ -1645,8 +1573,8 @@ bm ar cs ad -eQ -eQ +ad +ad ad cs bW diff --git a/_maps/shuttles/emergency_supermatter.dmm b/_maps/shuttles/emergency_supermatter.dmm index 1b4acd218f..d5caf0ddb2 100644 --- a/_maps/shuttles/emergency_supermatter.dmm +++ b/_maps/shuttles/emergency_supermatter.dmm @@ -2,11 +2,8 @@ "aa" = ( /turf/template_noop, /area/template_noop) -"ab" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/escape) "ac" = ( -/obj/structure/sign/radiation, +/obj/structure/sign/warning/radiation, /turf/closed/wall/mineral/titanium, /area/shuttle/escape) "ad" = ( @@ -16,9 +13,6 @@ "ae" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/escape) -"af" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "ag" = ( /obj/structure/closet/radiation{ anchored = 1 @@ -39,10 +33,6 @@ }, /turf/open/floor/mineral/titanium/yellow, /area/shuttle/escape) -"ak" = ( -/obj/structure/sign/radiation, -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "al" = ( /obj/machinery/shower{ dir = 8 @@ -115,12 +105,6 @@ "ax" = ( /turf/closed/wall/mineral/titanium/interior, /area/shuttle/escape) -"ay" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"az" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "aA" = ( /obj/machinery/door/airlock/titanium{ name = "Emergency Shuttle Airlock" @@ -138,10 +122,6 @@ }, /turf/open/floor/plating, /area/shuttle/escape) -"aC" = ( -/obj/structure/sign/radiation, -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "aD" = ( /obj/structure/table/reinforced, /obj/item/storage/firstaid/toxin, @@ -166,24 +146,10 @@ }, /turf/open/floor/plating, /area/shuttle/escape) -"aG" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"aH" = ( -/obj/machinery/status_display, -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "aI" = ( -/obj/structure/sign/radiation, +/obj/structure/sign/warning/radiation, /turf/closed/wall/mineral/titanium/nodiagonal, /area/shuttle/escape) -"aJ" = ( -/obj/structure/sign/radiation, -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) -"aK" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/escape) "aL" = ( /obj/machinery/door/airlock/external{ name = "Emergency Launch Catwalk"; @@ -385,8 +351,8 @@ aa aa "} (2,1,1) = {" -af -af +ae +ae ad ac aq @@ -577,8 +543,8 @@ bc be "} (10,1,1) = {" -af -af +ae +ae ad ac aq diff --git a/_maps/shuttles/emergency_wabbajack.dmm b/_maps/shuttles/emergency_wabbajack.dmm index 7c4b5ea932..facb14a15c 100644 --- a/_maps/shuttles/emergency_wabbajack.dmm +++ b/_maps/shuttles/emergency_wabbajack.dmm @@ -29,7 +29,7 @@ /turf/open/floor/plasteel/darkgreen, /area/shuttle/escape) "ai" = ( -/obj/structure/sign/biohazard, +/obj/structure/sign/warning/biohazard, /turf/closed/wall/mineral/titanium, /area/shuttle/escape) "aj" = ( diff --git a/_maps/shuttles/ferry_base.dmm b/_maps/shuttles/ferry_base.dmm index cc24ea9293..e0cdfc2c38 100644 --- a/_maps/shuttles/ferry_base.dmm +++ b/_maps/shuttles/ferry_base.dmm @@ -20,9 +20,6 @@ /obj/effect/spawner/structure/window/shuttle, /turf/open/floor/plating, /area/shuttle/transport) -"f" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/transport) "g" = ( /turf/closed/wall/mineral/titanium/interior, /area/shuttle/transport) @@ -57,22 +54,12 @@ height = 12; id = "ferry"; name = "ferry shuttle"; - roundstart_move = "ferry_away"; port_direction = 2; width = 5; timid = 1 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/transport) -"n" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 4 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/transport) -"o" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/transport) "p" = ( /obj/structure/closet/crate, /turf/open/floor/mineral/titanium/blue, @@ -83,9 +70,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/transport) -"r" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/transport) (1,1,1) = {" a diff --git a/_maps/shuttles/ferry_fancy.dmm b/_maps/shuttles/ferry_fancy.dmm new file mode 100644 index 0000000000..83795f0c55 --- /dev/null +++ b/_maps/shuttles/ferry_fancy.dmm @@ -0,0 +1,195 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"b" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/transport) +"c" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/transport) +"d" = ( +/obj/machinery/door/airlock/external, +/turf/open/floor/pod/dark, +/area/shuttle/transport) +"e" = ( +/obj/structure/shuttle/engine/propulsion/left{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/transport) +"f" = ( +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/shuttle/transport) +"g" = ( +/obj/structure/chair, +/turf/open/floor/pod/dark, +/area/shuttle/transport) +"h" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/pod/light, +/area/shuttle/transport) +"i" = ( +/turf/open/floor/pod/light, +/area/shuttle/transport) +"j" = ( +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/transport) +"k" = ( +/obj/machinery/light/small, +/turf/open/floor/pod/light, +/area/shuttle/transport) +"l" = ( +/obj/machinery/door/airlock/titanium, +/turf/open/floor/pod/light, +/area/shuttle/transport) +"m" = ( +/obj/machinery/computer/shuttle/ferry/request{ + dir = 8 + }, +/turf/open/floor/pod/dark, +/area/shuttle/transport) +"n" = ( +/obj/machinery/door/airlock/titanium, +/obj/docking_port/mobile{ + dir = 8; + dwidth = 2; + height = 13; + id = "ferry"; + name = "ferry shuttle"; + port_direction = 1; + preferred_direction = 4; + timid = 1; + width = 5 + }, +/turf/open/floor/pod/light, +/area/shuttle/transport) +"o" = ( +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1; + pixel_y = 1 + }, +/turf/open/floor/plating/airless, +/area/shuttle/transport) +"p" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/pod/dark, +/area/shuttle/transport) +"q" = ( +/obj/machinery/light, +/turf/open/floor/pod/light, +/area/shuttle/transport) +"r" = ( +/obj/machinery/door/airlock/external, +/turf/open/floor/pod/light, +/area/shuttle/transport) + +(1,1,1) = {" +a +a +e +a +a +"} +(2,1,1) = {" +a +e +j +e +a +"} +(3,1,1) = {" +a +f +i +o +a +"} +(4,1,1) = {" +a +b +k +b +a +"} +(5,1,1) = {" +b +b +l +b +b +"} +(6,1,1) = {" +c +g +i +p +c +"} +(7,1,1) = {" +b +g +i +p +b +"} +(8,1,1) = {" +b +h +i +i +b +"} +(9,1,1) = {" +d +i +m +i +r +"} +(10,1,1) = {" +b +i +i +q +b +"} +(11,1,1) = {" +b +g +i +p +b +"} +(12,1,1) = {" +c +g +i +p +c +"} +(13,1,1) = {" +b +c +n +c +b +"} diff --git a/_maps/shuttles/ferry_lighthouse.dmm b/_maps/shuttles/ferry_lighthouse.dmm index f7e907a255..f1c7bb5e69 100644 --- a/_maps/shuttles/ferry_lighthouse.dmm +++ b/_maps/shuttles/ferry_lighthouse.dmm @@ -17,19 +17,12 @@ "ad" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/transport) -"ae" = ( -/turf/template_noop, -/area/template_noop) "af" = ( /turf/closed/wall/r_wall, /area/shuttle/transport) "ag" = ( /turf/open/floor/plating/airless, /area/shuttle/transport) -"ah" = ( -/obj/structure/foamedmetal, -/turf/open/space, -/area/shuttle/transport) "ai" = ( /obj/machinery/vending/liberationstation, /turf/open/floor/mineral/titanium/blue, @@ -97,9 +90,6 @@ /obj/effect/spawner/structure/window/shuttle, /turf/closed/wall/mineral/titanium, /area/shuttle/transport) -"ax" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/transport) "ay" = ( /obj/structure/window/shuttle, /obj/structure/grille, @@ -109,9 +99,6 @@ /obj/effect/spawner/structure/window/shuttle, /turf/open/floor/plating, /area/shuttle/transport) -"aA" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/transport) "aB" = ( /obj/structure/grille/broken, /obj/structure/window/fulltile, @@ -178,7 +165,6 @@ height = 27; id = "ferry"; name = "The Lighthouse"; - roundstart_move = "ferry_away"; timid = 1; port_direction = 2; width = 16 @@ -232,9 +218,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/closed/wall/mineral/titanium, /area/shuttle/transport) -"aZ" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/transport) "ba" = ( /obj/machinery/conveyor{ dir = 1; @@ -392,7 +375,7 @@ bi bj "} (6,1,1) = {" -ae +aa ad aM al @@ -410,8 +393,8 @@ aM ad "} (7,1,1) = {" -ae -ae +aa +aa ad ad aM @@ -425,13 +408,13 @@ aL bf aM ad -ae +aa "} (8,1,1) = {" -ae -ae -ae -ae +aa +aa +aa +aa ad ar au @@ -442,14 +425,14 @@ au bb bg ad -ae -ae +aa +aa "} (9,1,1) = {" -ae -ae -ae -ae +aa +aa +aa +aa ap ap av @@ -460,15 +443,15 @@ aC bc aM ad -ae -ae +aa +aa "} (10,1,1) = {" -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa ap au aD @@ -477,16 +460,16 @@ aD aD bd ad -ae -ae -ae +aa +aa +aa "} (11,1,1) = {" -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa ap ap aD @@ -495,295 +478,295 @@ aD aD aM ad -ae -ae -ae +aa +aa +aa "} (12,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa ap aD aD aD aD ad -ae -ae -ae -ae +aa +aa +aa +aa "} (13,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa ap aE aN aE aM ad -ae -ae -ae -ae +aa +aa +aa +aa "} (14,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa aw aE aN aE ad -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa "} (15,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa aw aE aE aE ad -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa "} (16,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa ad ak aE ak aY -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa "} (17,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa ad aF aE aT aw -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa "} (18,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa ad aG aE aU ad -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa "} (19,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa ad aH aE aV ad -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa "} (20,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa ay aI aE aW ay -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa "} (21,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa ad ak aE aW ad -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa "} (22,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa ad aJ aE aW ad -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa "} (23,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa ad aJ aE aW ad -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa "} (24,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa az aJ aE aW az -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa "} (25,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa ad aJ aE aW ad -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa "} (26,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa ad aK aE aW ad -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa "} (27,1,1) = {" -ae -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa +aa ad ay aO ay ad -ae -ae -ae -ae -ae +aa +aa +aa +aa +aa "} diff --git a/_maps/shuttles/ferry_meat.dmm b/_maps/shuttles/ferry_meat.dmm index b9d3f49695..de68123287 100644 --- a/_maps/shuttles/ferry_meat.dmm +++ b/_maps/shuttles/ferry_meat.dmm @@ -11,9 +11,6 @@ "c" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/transport) -"d" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/transport) "e" = ( /turf/closed/wall/mineral/titanium/interior, /area/shuttle/transport) @@ -113,22 +110,12 @@ height = 12; id = "ferry"; name = "ferry shuttle"; - roundstart_move = "ferry_away"; port_direction = 2; width = 5; timid = 1 }, /turf/open/floor/plasteel/freezer, /area/shuttle/transport) -"r" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 4 - }, -/turf/closed/wall/mineral/titanium, -/area/shuttle/transport) -"s" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/transport) "t" = ( /obj/structure/closet/chefcloset, /turf/open/floor/plasteel/freezer, @@ -140,7 +127,7 @@ "v" = ( /obj/machinery/door/airlock/freezer{ name = "Meat Tradeship Backroom"; - req_access = "28" + req_access = list(28) }, /turf/open/floor/plasteel/freezer, /area/shuttle/transport) @@ -150,9 +137,6 @@ }, /turf/open/floor/plasteel/freezer, /area/shuttle/transport) -"x" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/transport) (1,1,1) = {" a diff --git a/_maps/shuttles/infiltrator_basic.dmm b/_maps/shuttles/infiltrator_basic.dmm new file mode 100644 index 0000000000..8f45a0c4f1 --- /dev/null +++ b/_maps/shuttles/infiltrator_basic.dmm @@ -0,0 +1,1379 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/template_noop, +/area/template_noop) +"ac" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 9 + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/syndicate/bridge) +"ad" = ( +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/syndicate/bridge) +"ae" = ( +/obj/structure/window/plastitanium, +/obj/machinery/door/poddoor/shutters{ + id = "syndieshutters"; + name = "blast shutters" + }, +/obj/structure/grille, +/turf/open/floor/plating, +/area/shuttle/syndicate/bridge) +"af" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 5 + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/syndicate/bridge) +"ag" = ( +/obj/machinery/computer/med_data/syndie, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/bridge) +"ah" = ( +/obj/machinery/computer/crew/syndie, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/bridge) +"ai" = ( +/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/bridge) +"aj" = ( +/obj/machinery/computer/shuttle/syndicate, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/bridge) +"ak" = ( +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/bridge) +"al" = ( +/obj/machinery/computer/camera_advanced/syndie, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/bridge) +"am" = ( +/obj/machinery/computer/secure_data/syndie, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/bridge) +"an" = ( +/obj/structure/table/reinforced, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/obj/item/clipboard, +/obj/machinery/light{ + dir = 8 + }, +/obj/item/folder/red, +/obj/item/toy/figure/syndie, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/shuttle/syndicate/bridge) +"ao" = ( +/obj/structure/chair/office/dark{ + dir = 8; + name = "tactical swivel chair" + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/bridge) +"ap" = ( +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/bridge) +"aq" = ( +/obj/structure/chair/office/dark{ + dir = 1; + name = "tactical swivel chair" + }, +/obj/machinery/button/door{ + id = "syndieshutters"; + name = "Cockpit View Control"; + pixel_x = 32; + pixel_y = 32; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/bridge) +"ar" = ( +/obj/structure/chair/office/dark{ + dir = 4; + name = "tactical swivel chair" + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/bridge) +"as" = ( +/obj/structure/table/reinforced, +/obj/machinery/ai_status_display{ + pixel_x = 32 + }, +/obj/item/storage/fancy/donut_box, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/shuttle/syndicate/bridge) +"at" = ( +/turf/open/floor/plasteel/vault/side, +/area/shuttle/syndicate/bridge) +"au" = ( +/obj/machinery/status_display, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/syndicate/bridge) +"av" = ( +/obj/machinery/door/airlock/hatch{ + name = "Cockpit"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/shuttle/syndicate/bridge) +"aw" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 10 + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/syndicate/hallway) +"ax" = ( +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/syndicate/hallway) +"ay" = ( +/obj/structure/table/reinforced, +/obj/item/stack/cable_coil/white, +/obj/item/stack/cable_coil/white, +/obj/item/crowbar/red, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/syndicate/hallway) +"az" = ( +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/syndicate/hallway) +"aA" = ( +/obj/structure/table/reinforced, +/obj/item/storage/box/handcuffs{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/box/zipties, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/syndicate/hallway) +"aB" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 6 + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/syndicate/hallway) +"aC" = ( +/obj/structure/chair{ + dir = 4; + name = "tactical chair" + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/syndicate/hallway) +"aD" = ( +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/hallway) +"aE" = ( +/obj/structure/chair{ + dir = 8; + name = "tactical chair" + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/syndicate/hallway) +"aF" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 9 + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/syndicate/eva) +"aG" = ( +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/syndicate/eva) +"aH" = ( +/obj/structure/chair{ + dir = 4; + name = "tactical chair" + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/syndicate/hallway) +"aI" = ( +/obj/structure/chair{ + dir = 8; + name = "tactical chair" + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/syndicate/hallway) +"aJ" = ( +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/syndicate/airlock) +"aK" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 5 + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/syndicate/armory) +"aL" = ( +/obj/machinery/suit_storage_unit/syndicate, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/syndicate/eva) +"aM" = ( +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/syndicate/eva) +"aN" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/eva) +"aO" = ( +/obj/structure/chair{ + dir = 4; + name = "tactical chair" + }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/airlock) +"aP" = ( +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/syndicate/airlock) +"aQ" = ( +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/syndicate, +/obj/item/crowbar/red, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/syndicate/airlock) +"aR" = ( +/obj/machinery/suit_storage_unit/syndicate, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/syndicate/eva) +"aS" = ( +/obj/structure/tank_dispenser/oxygen, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/eva) +"aT" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/syndicate/airlock) +"aU" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/eva) +"aV" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/turf/open/floor/plating, +/area/shuttle/syndicate/hallway) +"aW" = ( +/obj/machinery/door/airlock/external{ + name = "Ready Room"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/shuttle/syndicate/hallway) +"aX" = ( +/obj/structure/chair{ + dir = 4; + name = "tactical chair" + }, +/obj/effect/turf_decal/bot_white, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/airlock) +"aY" = ( +/obj/machinery/door/poddoor{ + id = "smindicate"; + name = "outer blast door" + }, +/obj/machinery/button/door{ + id = "smindicate"; + name = "external door control"; + pixel_y = 26; + req_access_txt = "150" + }, +/obj/docking_port/mobile{ + dheight = 1; + dir = 8; + dwidth = 12; + height = 17; + hidden = 1; + id = "syndicate"; + movement_force = list("KNOCKDOWN" = 0, "THROW" = 0); + name = "syndicate infiltrator"; + port_direction = 4; + width = 23 + }, +/obj/structure/fans/tiny, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/syndicate/airlock) +"aZ" = ( +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/eva) +"ba" = ( +/obj/machinery/door/airlock/external{ + name = "E.V.A. Gear Storage"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/shuttle/syndicate/eva) +"bb" = ( +/obj/machinery/door/airlock/external{ + req_access_txt = "150" + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/syndicate/airlock) +"bc" = ( +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/airlock) +"bd" = ( +/obj/structure/sign/warning/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK" + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/syndicate/airlock) +"be" = ( +/obj/machinery/suit_storage_unit/syndicate, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/syndicate/eva) +"bf" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/eva) +"bg" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/turf/open/floor/plating, +/area/shuttle/syndicate/eva) +"bh" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/turf/open/floor/plating, +/area/shuttle/syndicate/airlock) +"bi" = ( +/obj/structure/rack, +/obj/item/clothing/suit/space/syndicate/black/red, +/obj/item/clothing/head/helmet/space/syndicate/black/red, +/obj/effect/turf_decal/bot_white, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/syndicate/airlock) +"bj" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 9 + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/syndicate/medical) +"bk" = ( +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/syndicate/medical) +"bl" = ( +/obj/machinery/ai_status_display, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/syndicate/medical) +"bm" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/syndicate/medical) +"bn" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/syndicate/armory) +"bo" = ( +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/syndicate/armory) +"bp" = ( +/obj/machinery/status_display, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/syndicate/armory) +"bq" = ( +/obj/machinery/sleeper/syndie{ + dir = 4 + }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/medical) +"br" = ( +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/medical) +"bs" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/medical) +"bt" = ( +/obj/item/reagent_containers/glass/bottle/epinephrine{ + pixel_x = 6 + }, +/obj/item/reagent_containers/glass/bottle/charcoal{ + pixel_x = -3 + }, +/obj/item/reagent_containers/glass/bottle/epinephrine{ + pixel_x = -3; + pixel_y = 8 + }, +/obj/item/reagent_containers/glass/bottle/charcoal{ + pixel_x = 6; + pixel_y = 8 + }, +/obj/item/reagent_containers/syringe/epinephrine{ + pixel_x = 3; + pixel_y = -2 + }, +/obj/item/reagent_containers/syringe/epinephrine{ + pixel_x = 4; + pixel_y = 1 + }, +/obj/item/reagent_containers/syringe/epinephrine{ + pixel_x = -2; + pixel_y = 5 + }, +/obj/item/reagent_containers/syringe/epinephrine{ + pixel_x = 2; + pixel_y = 8 + }, +/obj/structure/table/reinforced, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/medical) +"bu" = ( +/obj/structure/table/reinforced, +/obj/item/stack/medical/gauze, +/obj/item/stack/medical/bruise_pack, +/obj/item/stack/medical/ointment, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/medical) +"bv" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/turf/open/floor/plating, +/area/shuttle/syndicate/medical) +"bw" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/turf/open/floor/plating, +/area/shuttle/syndicate/armory) +"bx" = ( +/obj/item/stock_parts/cell/high{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/stock_parts/cell/high, +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/armory) +"by" = ( +/obj/item/screwdriver{ + pixel_y = 9 + }, +/obj/item/device/assembly/voice{ + pixel_y = 3 + }, +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/armory) +"bz" = ( +/obj/item/wrench, +/obj/item/device/assembly/infra, +/obj/structure/table/reinforced, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/armory) +"bA" = ( +/obj/item/device/assembly/signaler, +/obj/item/device/assembly/signaler, +/obj/item/device/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/device/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/armory) +"bB" = ( +/obj/item/weldingtool/largetank{ + pixel_y = 3 + }, +/obj/item/device/multitool, +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/armory) +"bC" = ( +/obj/structure/bed/roller, +/obj/machinery/iv_drip, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/medical) +"bD" = ( +/turf/open/floor/plasteel/vault/side, +/area/shuttle/syndicate/medical) +"bE" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/syndicate/hallway) +"bF" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/syndicate/hallway) +"bG" = ( +/turf/open/floor/plasteel/vault/side, +/area/shuttle/syndicate/armory) +"bH" = ( +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/syndicate/medical) +"bI" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/syndicate/medical) +"bJ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/syndicate/medical) +"bK" = ( +/obj/machinery/door/airlock/hatch{ + req_access_txt = "150" + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/shuttle/syndicate/medical) +"bL" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/syndicate/hallway) +"bM" = ( +/obj/machinery/door/airlock/hatch{ + req_access_txt = "150" + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/shuttle/syndicate/armory) +"bN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/syndicate/armory) +"bO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/syndicate/armory) +"bP" = ( +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/syndicate/armory) +"bQ" = ( +/obj/structure/closet/syndicate/personal, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/armory) +"bR" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/glass/beaker/large, +/obj/item/reagent_containers/glass/beaker, +/obj/item/reagent_containers/dropper, +/turf/open/floor/plasteel/vault/side, +/area/shuttle/syndicate/medical) +"bS" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/syndicate/medical) +"bT" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/syndicate/medical) +"bU" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/syndicate/hallway) +"bV" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/syndicate/armory) +"bW" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/syndicate/armory) +"bX" = ( +/obj/structure/closet/syndicate/nuclear, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/armory) +"bY" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/item/bodypart/r_arm/robot, +/obj/item/bodypart/l_arm/robot, +/obj/structure/table/reinforced, +/obj/item/toy/plush/nukeplushie, +/turf/open/floor/plasteel/vault/side, +/area/shuttle/syndicate/medical) +"bZ" = ( +/obj/machinery/door/window{ + dir = 1; + name = "Surgery"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/vault/side, +/area/shuttle/syndicate/medical) +"ca" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel/vault/side, +/area/shuttle/syndicate/medical) +"cb" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/storage/firstaid/regular{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/firstaid/brute, +/obj/item/storage/firstaid/regular{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/vault/side, +/area/shuttle/syndicate/medical) +"cc" = ( +/obj/item/storage/firstaid/regular{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/firstaid/fire, +/obj/item/storage/firstaid/regular{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/vault/side, +/area/shuttle/syndicate/medical) +"cd" = ( +/turf/open/floor/plasteel/vault, +/area/shuttle/syndicate/hallway) +"ce" = ( +/obj/item/device/sbeacondrop/bomb{ + pixel_y = 5 + }, +/obj/item/device/sbeacondrop/bomb, +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/vault/side, +/area/shuttle/syndicate/armory) +"cf" = ( +/obj/item/grenade/syndieminibomb{ + pixel_x = 4; + pixel_y = 2 + }, +/obj/item/grenade/syndieminibomb{ + pixel_x = -1 + }, +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/grenade/plastic/c4, +/obj/item/grenade/plastic/c4, +/obj/item/grenade/plastic/c4, +/obj/item/grenade/plastic/c4, +/obj/item/grenade/plastic/c4, +/turf/open/floor/plasteel/vault/side, +/area/shuttle/syndicate/armory) +"cg" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel/vault/side, +/area/shuttle/syndicate/armory) +"ch" = ( +/obj/machinery/door/window{ + dir = 1; + name = "Technological Storage"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/vault/side, +/area/shuttle/syndicate/armory) +"ci" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/table/reinforced, +/obj/item/device/aicard, +/turf/open/floor/plasteel/vault/side, +/area/shuttle/syndicate/armory) +"cj" = ( +/obj/item/surgicaldrill, +/obj/item/circular_saw, +/obj/structure/table/reinforced, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/syndicate/medical) +"ck" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/structure/mirror{ + pixel_x = 30 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/syndicate/medical) +"cl" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/shuttle/syndicate/hallway) +"cm" = ( +/obj/machinery/nuclearbomb/syndicate, +/obj/machinery/door/window{ + dir = 1; + name = "Theatre Stage"; + req_access_txt = "0" + }, +/turf/open/floor/circuit/red, +/area/shuttle/syndicate/hallway) +"cn" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/syndicate/armory) +"co" = ( +/obj/item/cautery, +/obj/item/scalpel, +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/syndicate/medical) +"cp" = ( +/obj/structure/table/optable, +/obj/item/surgical_drapes, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/shuttle/syndicate/medical) +"cq" = ( +/obj/item/retractor, +/obj/item/hemostat, +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/syndicate/medical) +"cr" = ( +/obj/structure/shuttle/engine/heater, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/shuttle/syndicate/hallway) +"cs" = ( +/obj/machinery/recharge_station, +/turf/open/floor/circuit/red, +/area/shuttle/syndicate/armory) +"ct" = ( +/obj/machinery/telecomms/allinone{ + intercept = 1 + }, +/turf/open/floor/circuit/red, +/area/shuttle/syndicate/armory) +"cu" = ( +/obj/structure/shuttle/engine/heater, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/shuttle/syndicate/medical) +"cv" = ( +/obj/structure/shuttle/engine/propulsion/left, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/shuttle/syndicate/hallway) +"cw" = ( +/obj/structure/shuttle/engine/propulsion, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/shuttle/syndicate/hallway) +"cx" = ( +/obj/structure/shuttle/engine/propulsion/right, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/shuttle/syndicate/hallway) +"cy" = ( +/obj/structure/shuttle/engine/heater, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/shuttle/syndicate/armory) +"cz" = ( +/obj/structure/shuttle/engine/propulsion/left, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/shuttle/syndicate/medical) +"cA" = ( +/obj/structure/shuttle/engine/propulsion, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/shuttle/syndicate/medical) +"cB" = ( +/obj/structure/shuttle/engine/propulsion/right, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/shuttle/syndicate/medical) +"cC" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 6 + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/syndicate/medical) +"cD" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 10 + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/syndicate/armory) +"cE" = ( +/obj/structure/shuttle/engine/propulsion/left, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/shuttle/syndicate/armory) +"cF" = ( +/obj/structure/shuttle/engine/propulsion, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/shuttle/syndicate/armory) +"cG" = ( +/obj/structure/shuttle/engine/propulsion/right, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/shuttle/syndicate/armory) + +(1,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +bj +bk +bk +bk +bk +bk +bk +bk +bk +bk +"} +(2,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aF +aG +aG +aG +aG +aG +bk +bq +bC +bq +bR +bY +cj +co +cu +cz +"} +(3,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aG +aL +aR +aR +aR +be +bk +br +bD +bH +bH +bZ +bH +cp +cu +cA +"} +(4,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aG +aM +aM +aM +aM +aM +bl +bs +bD +bI +bS +ca +ck +cq +cu +cB +"} +(5,1,1) = {" +ac +ad +ad +ad +ad +aa +aa +aG +aM +aM +aM +aM +aM +bk +bt +bD +bJ +bT +cb +bm +bk +bk +cC +"} +(6,1,1) = {" +ad +ag +an +at +ad +aw +aa +aG +aN +aS +aU +aZ +bf +bk +bu +bD +bJ +bT +cc +bk +aa +aa +aa +"} +(7,1,1) = {" +ae +ah +ao +at +ad +ax +ax +aG +aG +aG +aG +ba +bg +bm +bv +bv +bK +bv +bk +bk +ax +ax +aa +"} +(8,1,1) = {" +ae +ai +ap +at +au +ay +aC +aH +aC +aC +aV +az +az +az +az +bE +bL +bU +cd +cl +cr +cv +aa +"} +(9,1,1) = {" +ae +aj +aq +at +av +az +aD +aD +aD +az +aW +az +aD +aD +aD +aD +bL +bU +cd +cm +cr +cw +aa +"} +(10,1,1) = {" +ae +ak +ap +at +ad +aA +aE +aI +aE +aE +aV +az +az +az +az +bF +bL +bU +cd +cl +cr +cx +aa +"} +(11,1,1) = {" +ae +al +ar +at +ad +ax +ax +ax +ax +aJ +aJ +bb +bh +bn +bw +bw +bM +bw +bo +bo +ax +ax +aa +"} +(12,1,1) = {" +ad +am +as +at +ad +aB +aa +aJ +aO +aO +aX +bc +aO +bo +bx +bG +bN +bV +ce +bo +aa +aa +aa +"} +(13,1,1) = {" +af +ad +ad +ad +ad +aa +aa +aJ +aP +aP +aP +aP +aP +bo +by +bG +bN +bV +cf +bn +bo +bo +cD +"} +(14,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aJ +aP +aP +aP +aP +aP +bp +bz +bG +bO +bW +cg +bP +cs +cy +cE +"} +(15,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aJ +aQ +aT +aT +aT +bi +bo +bA +bG +bP +bP +ch +bP +ct +cy +cF +"} +(16,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aK +aJ +aJ +aY +bd +aJ +bo +bB +bG +bQ +bX +ci +cn +cs +cy +cG +"} +(17,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aK +bo +bo +bo +bo +bo +bo +bo +bo +bo +"} diff --git a/_maps/shuttles/labour_box.dmm b/_maps/shuttles/labour_box.dmm new file mode 100644 index 0000000000..dac173c279 --- /dev/null +++ b/_maps/shuttles/labour_box.dmm @@ -0,0 +1,186 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/labor) +"b" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/labor) +"c" = ( +/obj/machinery/computer/shuttle/labor{ + dir = 4 + }, +/obj/structure/reagent_dispensers/peppertank{ + pixel_x = -31 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/labor) +"d" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/labor) +"e" = ( +/obj/structure/table, +/obj/item/folder/red, +/obj/item/restraints/handcuffs, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/labor) +"f" = ( +/turf/open/floor/mineral/plastitanium, +/area/shuttle/labor) +"g" = ( +/obj/machinery/button/flasher{ + id = "gulagshuttleflasher"; + name = "Flash Control"; + pixel_y = -26; + req_access_txt = "1" + }, +/obj/machinery/light, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/labor) +"h" = ( +/obj/machinery/mineral/labor_claim_console{ + machinedir = 2; + pixel_x = 30; + pixel_y = 30 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/labor) +"i" = ( +/obj/machinery/door/airlock/titanium{ + name = "Labor Shuttle Airlock"; + req_access_txt = "2" + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/labor) +"j" = ( +/obj/machinery/door/airlock/titanium{ + name = "Labor Shuttle Airlock"; + req_access_txt = "2" + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/labor) +"k" = ( +/obj/machinery/mineral/stacking_machine/laborstacker{ + input_dir = 2; + output_dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/labor) +"l" = ( +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/labor) +"m" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/labor) +"n" = ( +/obj/machinery/mineral/labor_claim_console{ + machinedir = 1; + pixel_x = 30 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/labor) +"o" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/flasher{ + id = "gulagshuttleflasher"; + pixel_x = 25 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/labor) +"p" = ( +/obj/structure/closet/crate, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/labor) +"q" = ( +/obj/machinery/door/airlock/titanium{ + id_tag = "prisonshuttle"; + name = "Labor Shuttle Airlock" + }, +/obj/docking_port/mobile{ + dir = 8; + dwidth = 2; + height = 5; + id = "laborcamp"; + name = "labor camp shuttle"; + port_direction = 4; + timid = 1; + width = 9 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/labor) +"r" = ( +/obj/structure/shuttle/engine/heater, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/turf/open/floor/plating/airless, +/area/shuttle/labor) +"s" = ( +/obj/structure/shuttle/engine/propulsion, +/turf/open/floor/plating/airless, +/area/shuttle/labor) + +(1,1,1) = {" +a +a +b +a +a +b +a +a +a +"} +(2,1,1) = {" +b +c +f +j +l +l +p +r +s +"} +(3,1,1) = {" +b +d +g +a +m +l +l +r +s +"} +(4,1,1) = {" +b +e +h +k +n +o +l +r +s +"} +(5,1,1) = {" +a +a +i +a +a +a +q +a +a +"} diff --git a/_maps/shuttles/labour_delta.dmm b/_maps/shuttles/labour_delta.dmm new file mode 100644 index 0000000000..2ad922d9f4 --- /dev/null +++ b/_maps/shuttles/labour_delta.dmm @@ -0,0 +1,333 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/labor) +"b" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/labor) +"c" = ( +/obj/machinery/computer/shuttle/labor{ + dir = 4 + }, +/obj/structure/reagent_dispensers/peppertank{ + pixel_x = -31 + }, +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/labor) +"d" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/labor) +"e" = ( +/obj/item/folder/red, +/obj/item/restraints/handcuffs, +/obj/structure/table/reinforced, +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/labor) +"f" = ( +/obj/structure/grille, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/labor) +"g" = ( +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/labor) +"h" = ( +/obj/machinery/button/flasher{ + id = "gulagshuttleflasher"; + name = "Flash Control"; + pixel_y = -26; + req_access_txt = "1" + }, +/obj/machinery/light, +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/labor) +"i" = ( +/obj/machinery/mineral/labor_claim_console{ + machinedir = 2; + pixel_x = 30; + pixel_y = 30 + }, +/turf/open/floor/mineral/plastitanium/brig, +/area/shuttle/labor) +"j" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Labor Shuttle Airlock"; + req_access_txt = "2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/labor) +"k" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Labor Shuttle Airlock"; + req_access_txt = "2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/labor) +"l" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/shuttle/labor) +"m" = ( +/obj/machinery/mineral/stacking_machine/laborstacker{ + input_dir = 2; + output_dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/labor) +"n" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/shuttle/labor) +"o" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/labor) +"p" = ( +/obj/machinery/mineral/labor_claim_console{ + machinedir = 1; + pixel_x = 30 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/shuttle/labor) +"q" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/shuttle/labor) +"r" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/shuttle/labor) +"s" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/flasher{ + id = "gulagshuttleflasher"; + pixel_x = 25 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/shuttle/labor) +"t" = ( +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/tank/internals/emergency_oxygen/double{ + pixel_x = 3 + }, +/obj/item/tank/internals/emergency_oxygen/double{ + pixel_x = 3 + }, +/obj/item/tank/internals/emergency_oxygen/double{ + pixel_x = 3 + }, +/obj/item/tank/internals/emergency_oxygen/double{ + pixel_x = 3 + }, +/obj/item/tank/internals/emergency_oxygen/double{ + pixel_x = 3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/structure/closet/crate/internals, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/shuttle/labor) +"u" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/end{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/shuttle/labor) +"v" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/shuttle/labor) +"w" = ( +/obj/machinery/door/airlock/shuttle{ + id_tag = "prisonshuttle"; + name = "Labor Shuttle Airlock" + }, +/obj/docking_port/mobile{ + dir = 8; + dwidth = 2; + height = 5; + id = "laborcamp"; + name = "labor camp shuttle"; + port_direction = 4; + width = 9 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/labor) +"x" = ( +/obj/structure/shuttle/engine/heater, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/shuttle/labor) +"y" = ( +/obj/structure/shuttle/engine/propulsion, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/shuttle/labor) + +(1,1,1) = {" +a +a +f +a +a +f +a +a +a +"} +(2,1,1) = {" +b +c +g +k +n +q +t +a +y +"} +(3,1,1) = {" +b +d +h +l +o +r +u +x +y +"} +(4,1,1) = {" +b +e +i +m +p +s +v +a +y +"} +(5,1,1) = {" +a +a +j +a +a +a +w +a +a +"} diff --git a/_maps/shuttles/mining_box.dmm b/_maps/shuttles/mining_box.dmm new file mode 100644 index 0000000000..2b1771e0c7 --- /dev/null +++ b/_maps/shuttles/mining_box.dmm @@ -0,0 +1,114 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/mining) +"b" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/mining) +"c" = ( +/obj/structure/table, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/mining) +"d" = ( +/obj/machinery/computer/shuttle/mining, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/mining) +"e" = ( +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/mining) +"f" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/mining) +"g" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/mining) +"h" = ( +/obj/machinery/door/airlock/titanium{ + name = "Mining Shuttle Airlock"; + req_access_txt = "0" + }, +/obj/docking_port/mobile{ + dir = 8; + dwidth = 3; + height = 5; + id = "mining"; + name = "mining shuttle"; + port_direction = 4; + timid = 1; + width = 7 + }, +/turf/open/floor/plating, +/area/shuttle/mining) +"i" = ( +/obj/structure/closet/crate, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/mining) +"j" = ( +/obj/structure/shuttle/engine/heater, +/turf/open/floor/plating, +/area/shuttle/mining) +"k" = ( +/obj/structure/ore_box, +/turf/open/floor/mineral/titanium/blue, +/area/shuttle/mining) +"l" = ( +/obj/structure/shuttle/engine/propulsion/burst, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/turf/open/floor/plating/airless, +/area/shuttle/mining) + +(1,1,1) = {" +a +a +b +a +b +a +a +"} +(2,1,1) = {" +a +c +e +g +f +i +a +"} +(3,1,1) = {" +b +d +f +e +f +j +l +"} +(4,1,1) = {" +a +c +e +e +f +k +a +"} +(5,1,1) = {" +a +a +b +h +b +a +a +"} diff --git a/_maps/shuttles/mining_delta.dmm b/_maps/shuttles/mining_delta.dmm new file mode 100644 index 0000000000..bbdc919afc --- /dev/null +++ b/_maps/shuttles/mining_delta.dmm @@ -0,0 +1,310 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/wall/mineral/titanium, +/area/shuttle/mining) +"b" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/shuttle/mining) +"c" = ( +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/emergency, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/shuttle/mining) +"d" = ( +/obj/machinery/computer/shuttle/mining, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/mining) +"e" = ( +/obj/structure/table/reinforced, +/obj/effect/decal/cleanable/dirt, +/obj/item/crowbar/red, +/obj/item/wrench, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/clothing/mask/gas, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/shuttle/mining) +"f" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/shuttle/mining) +"g" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel/neutral, +/area/shuttle/mining) +"h" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/shuttle/mining) +"i" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Mining Shuttle Airlock"; + req_access_txt = "0" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/docking_port/mobile{ + dir = 4; + dwidth = 3; + height = 5; + id = "mining"; + name = "mining shuttle"; + port_direction = 8; + width = 7 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/mining) +"j" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/shuttle/mining) +"k" = ( +/turf/open/floor/plasteel/neutral, +/area/shuttle/mining) +"l" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/shuttle/mining) +"m" = ( +/obj/machinery/door/airlock/shuttle{ + name = "Mining Shuttle Airlock"; + req_access_txt = "0" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/shuttle/mining) +"n" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/end{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/shuttle/mining) +"o" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/mining) +"p" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/end{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/shuttle/mining) +"q" = ( +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/tank/internals/emergency_oxygen/double{ + pixel_x = 3 + }, +/obj/item/tank/internals/emergency_oxygen/double{ + pixel_x = 3 + }, +/obj/item/tank/internals/emergency_oxygen/double{ + pixel_x = 3 + }, +/obj/item/tank/internals/emergency_oxygen/double{ + pixel_x = 3 + }, +/obj/item/tank/internals/emergency_oxygen/double{ + pixel_x = 3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/item/clothing/head/hardhat/orange{ + name = "protective hat"; + pixel_y = 9 + }, +/obj/structure/closet/crate/internals, +/obj/effect/decal/cleanable/dirt, +/obj/item/pickaxe/emergency, +/obj/item/pickaxe/emergency, +/obj/effect/turf_decal/delivery, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/shuttle/mining) +"r" = ( +/obj/structure/shuttle/engine/heater, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/shuttle/mining) +"s" = ( +/obj/structure/ore_box, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/delivery, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/shuttle/mining) +"t" = ( +/obj/structure/shuttle/engine/propulsion/burst, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/shuttle/mining) + +(1,1,1) = {" +a +a +b +i +b +a +a +"} +(2,1,1) = {" +a +c +f +j +n +q +a +"} +(3,1,1) = {" +b +d +g +k +o +r +t +"} +(4,1,1) = {" +a +e +h +l +p +s +a +"} +(5,1,1) = {" +a +a +b +m +b +a +a +"} diff --git a/_maps/shuttles/whiteship_box.dmm b/_maps/shuttles/whiteship_box.dmm index f1c6c838b1..d51176b1b8 100644 --- a/_maps/shuttles/whiteship_box.dmm +++ b/_maps/shuttles/whiteship_box.dmm @@ -2,9 +2,6 @@ "aa" = ( /turf/template_noop, /area/template_noop) -"ab" = ( -/turf/closed/wall/mineral/titanium/overspace, -/area/shuttle/abandoned) "ac" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) @@ -22,15 +19,11 @@ name = "NT Medical Ship"; port_direction = 8; preferred_direction = 4; - roundstart_move = "whiteship_away"; timid = 1; width = 35 }, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"ae" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) "af" = ( /obj/machinery/door/airlock/titanium, /turf/open/floor/mineral/titanium, @@ -41,12 +34,6 @@ }, /turf/open/floor/plating/airless, /area/shuttle/abandoned) -"ah" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"ai" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) "aj" = ( /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) @@ -63,9 +50,6 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"am" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) "an" = ( /obj/structure/shuttle/engine/propulsion{ dir = 8 @@ -84,9 +68,6 @@ "ap" = ( /turf/closed/wall/mineral/titanium/interior, /area/shuttle/abandoned) -"aq" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) "ar" = ( /obj/machinery/computer/pod{ dir = 8; @@ -94,15 +75,9 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"as" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) "at" = ( /turf/open/floor/plating, /area/shuttle/abandoned) -"au" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) "av" = ( /obj/structure/rack, /obj/item/clothing/suit/space/hardsuit/medical, @@ -128,21 +103,12 @@ }, /turf/open/floor/plating, /area/shuttle/abandoned) -"az" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) -"aA" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) "aB" = ( /obj/structure/shuttle/engine/propulsion/right{ dir = 8 }, /turf/open/floor/plating/airless, /area/shuttle/abandoned) -"aC" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) "aD" = ( /obj/machinery/door/airlock/titanium, /turf/open/floor/plating, @@ -154,9 +120,6 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"aF" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) "aG" = ( /obj/structure/rack, /obj/item/tank/internals/emergency_oxygen, @@ -174,9 +137,6 @@ /obj/structure/light_construct, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"aI" = ( -/turf/closed/wall/mineral/titanium, -/area/shuttle/abandoned) "aJ" = ( /obj/structure/chair{ dir = 1 @@ -193,10 +153,6 @@ /obj/effect/spawner/structure/window/shuttle, /turf/open/floor/plating, /area/shuttle/abandoned) -"aM" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "aN" = ( /obj/machinery/door/window, /turf/open/floor/mineral/titanium/purple, @@ -245,13 +201,6 @@ /obj/item/tank/internals/oxygen, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"aW" = ( -/obj/machinery/door/airlock/titanium, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"aX" = ( -/turf/closed/wall/mineral/titanium/interior, -/area/shuttle/abandoned) "aY" = ( /obj/structure/bed, /obj/item/bedsheet, @@ -287,10 +236,6 @@ /obj/structure/chair, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"be" = ( -/obj/machinery/door/airlock/public/glass, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "bf" = ( /obj/item/scalpel, /turf/open/floor/mineral/titanium, @@ -352,26 +297,12 @@ }, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"bp" = ( -/obj/structure/light_construct, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "bq" = ( /obj/structure/light_construct/small{ dir = 8 }, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) -"br" = ( -/obj/structure/light_construct, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) -"bs" = ( -/obj/structure/light_construct{ - dir = 1 - }, -/turf/open/floor/mineral/titanium, -/area/shuttle/abandoned) "bt" = ( /obj/structure/light_construct/small{ dir = 1 @@ -394,11 +325,11 @@ aa aa aa aa -aC -aC -aW -aC -aC +ac +ac +af +ac +ac aa aa aa @@ -418,11 +349,11 @@ aa aa aa aa -aC -aX +ac +ap aj -aX -aC +ap +ac aa aa aa @@ -442,11 +373,11 @@ aa aa aa aa -aC +ac aj aj aj -aC +ac aa aa aa @@ -466,11 +397,11 @@ aa aa aa aa -aC +ac aj aj aj -aC +ac aa aa aa @@ -490,11 +421,11 @@ aa aa aa aa -aC +ac aj aj aj -aC +ac aa aa aa @@ -514,11 +445,11 @@ aa aa aa aa -aC +ac aj aj bk -aC +ac aa aa aa @@ -538,11 +469,11 @@ aa aa aa aa -aC +ac aj aj aj -aC +ac aa aa aa @@ -562,11 +493,11 @@ aa aa aa aa -aC +ac aj aj aj -aC +ac aa aa aa @@ -586,11 +517,11 @@ aa aa aa aa -aC +ac aj aj aU -aC +ac aa aa aa @@ -610,11 +541,11 @@ aa aa aa aa -aC -aX +ac +ap aj -aX -aC +ap +ac aa aa aa @@ -634,11 +565,11 @@ aa aa aa aa -aC -aC -aW -aC -aC +ac +ac +af +ac +ac aa aa aa @@ -659,9 +590,9 @@ aa aa aa aa -aC +ac aj -aC +ac aa aa aa @@ -682,11 +613,11 @@ aa aa aa aa -aC -aC -aW -aC -aC +ac +ac +af +ac +ac aa aa aa @@ -705,13 +636,13 @@ aa aa aa aa -aC -aC -aX +ac +ac +ap aj -aX -aC -aC +ap +ac +ac aa aa aa @@ -722,85 +653,85 @@ aa aa "} (15,1,1) = {" -aC +ac ag an an an aB aa -aC -aX +ac +ap aj aj aj -aX -aC +ap +ac aa ag an an an aB -aC +ac aa "} (16,1,1) = {" -aC -aC +ac +ac ao ao ao -aC -aC -aC +ac +ac +ac bl aj aj aj bk -aC -aC -aC +ac +ac +ac ao ao ao -aC -aC +ac +ac aa "} (17,1,1) = {" aa -aC +ac ap at at ap -aC -aX +ac +ap aj aj aj aj aj -aX -aC +ap +ac ap at at ap -aC +ac aa aa "} (18,1,1) = {" aa aa -aC +ac ap at bi -aC +ac aj aj aj @@ -808,11 +739,11 @@ aj aj aj ba -aC +ac bt at ap -aC +ac aa aa aa @@ -821,21 +752,21 @@ aa aa aa aa -aC -aC +ac +ac aD -aC -aC -aC +ac +ac +ac aL -be +aR aL -aC -aC -aC +ac +ac +ac aD -aC -aC +ac +ac aa aa aa @@ -845,8 +776,8 @@ aa aa aa aa -aC -aC +ac +ac aj aj aj @@ -858,8 +789,8 @@ aj aj aj aj -aC -aC +ac +ac aa aa aa @@ -868,9 +799,9 @@ aa (21,1,1) = {" aa aa -aC -aC -aX +ac +ac +ap aE aj aj @@ -882,58 +813,58 @@ aj aj aj aj -aC -aC -aC +ac +ac +ac aa aa aa "} (22,1,1) = {" aa -aC -aC -aX +ac +ac +ap aj aj aj aj -aC -aC -aC -aC -aC -aC +ac +ac +ac +ac +ac +ac aj aj -aC -aC -aC -aC +ac +ac +ac +ac aa aa "} (23,1,1) = {" -aC -aC -aC -aC -aC -aC -aX +ac +ac +ac +ac +ac +ac +ap aj -aC +ac aN aj bq aj -aW +af aj aj -aW +af aj -aX -aC +ap +ac aa aa "} @@ -943,80 +874,80 @@ aj aj av av -aX -aC +ap +ac bk -aC +ac aO aj aV aY -aC +ac bl aj -aC +ac aj bg -aC -aC +ac +ac aa "} (25,1,1) = {" -aC +ac aj aj aj aj aG -aC +ac aj -aW +af aj bn aj aZ -aC +ac aj aj -aC +ac aj aj -aX -aC +ap +ac aa "} (26,1,1) = {" -aC +ac ak aj aj aj aj -aC +ac aj -aC -aC -aC -aC -aC -aC +ac +ac +ac +ac +ac +ac aj aE aL bf aj aj -aC +ac aa "} (27,1,1) = {" -aC +ac al aj aj aj aj -aW +af aj aj aj @@ -1030,18 +961,18 @@ aL aj aj bh -aC +ac aa "} (28,1,1) = {" -aC +ac aj aj aj aj aj -aC -aX +ac +ap aj aj aj @@ -1054,41 +985,41 @@ aL aj aj aj -aC +ac aa "} (29,1,1) = {" -aC +ac aj aj aj aj -aX -aC -aC -aC +ap +ac +ac +ac aL -be +aR aL -aC -aC -aC -aC -aC +ac +ac +ac +ac +ac aj aj aj -aC +ac aa "} (30,1,1) = {" -aC +ac aj aj aj -aX -aC -aX +ap +ac +ap aj aj aj @@ -1098,20 +1029,20 @@ aj aP aP aP -aC +ac aj aj -aX -aC +ap +ac aa "} (31,1,1) = {" -aW +af aj ar aj -aC -aX +ac +ap aj aj aj @@ -1122,19 +1053,19 @@ aj aj aj aj -aX -aX +ap +ap bb -aC +ac aa aa "} (32,1,1) = {" -aC -aC -aC +ac +ac +ac aw -aC +ac bj aJ aj @@ -1147,18 +1078,18 @@ aj aj bd aH -aC -aC -aC +ac +ac +ac aa aa "} (33,1,1) = {" aa aa -aC +ac ax -aC +ac bu aJ aj @@ -1170,9 +1101,9 @@ aj aj aj aj -aX -aC -aC +ap +ac +ac aa aa aa @@ -1180,10 +1111,10 @@ aa (34,1,1) = {" aa aa -aC +ac ay -aC -aX +ac +ap aK aj aj @@ -1193,9 +1124,9 @@ aP aj aj aj -aX -aC -aC +ap +ac +ac aa aa aa @@ -1206,9 +1137,9 @@ aa aa aa aa -aC -aC -aC +ac +ac +ac aL aL aL @@ -1216,9 +1147,9 @@ aL aL aL aL -aC -aC -aC +ac +ac +ac aa aa aa diff --git a/_maps/shuttles/whiteship_cere.dmm b/_maps/shuttles/whiteship_cere.dmm index dc51d7630c..54cda6755b 100644 --- a/_maps/shuttles/whiteship_cere.dmm +++ b/_maps/shuttles/whiteship_cere.dmm @@ -24,7 +24,6 @@ port_direction = 8; preferred_direction = 1; timid = 1; - roundstart_move = "whiteship_away"; width = 16 }, /turf/open/floor/plating, @@ -584,9 +583,6 @@ }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/abandoned) -"aY" = ( -/turf/template_noop, -/area/template_noop) "aZ" = ( /obj/structure/table, /obj/item/phone{ @@ -637,8 +633,8 @@ aa aa aa aa -aY -aY +aa +aa "} (2,1,1) = {" aa @@ -656,7 +652,7 @@ ab ab aa aa -aY +aa "} (3,1,1) = {" ab diff --git a/_maps/shuttles/whiteship_delta.dmm b/_maps/shuttles/whiteship_delta.dmm index 25f6b99ae4..57adba831c 100644 --- a/_maps/shuttles/whiteship_delta.dmm +++ b/_maps/shuttles/whiteship_delta.dmm @@ -47,7 +47,7 @@ /turf/open/floor/plasteel/neutral, /area/shuttle/abandoned) "ah" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall/mineral/titanium/nodiagonal, /area/shuttle/abandoned) "ai" = ( @@ -891,7 +891,7 @@ }, /area/shuttle/abandoned) "bI" = ( -/obj/structure/sign/vacuum, +/obj/structure/sign/warning/vacuum, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "bJ" = ( @@ -1084,7 +1084,7 @@ /turf/open/floor/plasteel/whiteblue/side, /area/shuttle/abandoned) "cc" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "cd" = ( @@ -1097,7 +1097,7 @@ }, /area/shuttle/abandoned) "ce" = ( -/obj/structure/sign/engineering, +/obj/structure/sign/departments/engineering, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "cf" = ( @@ -1430,7 +1430,7 @@ /turf/open/floor/plasteel/whitepurple/corner, /area/shuttle/abandoned) "cL" = ( -/obj/structure/sign/science, +/obj/structure/sign/departments/science, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "cM" = ( @@ -1518,7 +1518,6 @@ name = "White-Ship"; port_direction = 8; preferred_direction = 8; - roundstart_move = "whiteship_away"; timid = 1; width = 32 }, diff --git a/_maps/shuttles/whiteship_meta.dmm b/_maps/shuttles/whiteship_meta.dmm index 96f6e7e3b4..be7b37b260 100644 --- a/_maps/shuttles/whiteship_meta.dmm +++ b/_maps/shuttles/whiteship_meta.dmm @@ -39,15 +39,11 @@ name = "NT Recovery White-Ship"; port_direction = 8; preferred_direction = 4; - roundstart_move = "whiteship_away"; timid = 1; width = 28 }, /turf/open/floor/mineral/titanium/blue, /area/shuttle/abandoned) -"af" = ( -/turf/template_noop, -/area/template_noop) "ag" = ( /obj/structure/shuttle/engine/propulsion/left{ dir = 8 @@ -151,7 +147,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) "ao" = ( -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = -32 }, /obj/effect/decal/cleanable/dirt{ @@ -559,7 +555,7 @@ /turf/open/floor/plasteel, /area/shuttle/abandoned) "aT" = ( -/obj/structure/sign/restroom, +/obj/structure/sign/departments/restroom, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "aU" = ( @@ -608,7 +604,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/abandoned) "aY" = ( -/obj/structure/sign/cargo, +/obj/structure/sign/departments/cargo, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "aZ" = ( @@ -730,7 +726,7 @@ /area/shuttle/abandoned) "bl" = ( /obj/structure/reagent_dispensers/fueltank, -/obj/structure/sign/vacuum{ +/obj/structure/sign/warning/vacuum{ pixel_x = -32 }, /obj/effect/decal/cleanable/dirt{ @@ -1085,7 +1081,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/abandoned) "bR" = ( -/obj/structure/sign/science{ +/obj/structure/sign/departments/science{ pixel_y = -32 }, /obj/effect/decal/cleanable/dirt{ @@ -1118,7 +1114,7 @@ }, /obj/machinery/computer/camera_advanced/shuttle_docker/whiteship{ dir = 1; - station_lock_override = 1; + lock_override = 1; view_range = 15; x_offset = -3; y_offset = -7 @@ -1148,7 +1144,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) "bX" = ( -/obj/structure/sign/botany, +/obj/structure/sign/departments/botany, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "bY" = ( @@ -1182,7 +1178,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/abandoned) "cb" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall/mineral/titanium, /area/shuttle/abandoned) "cc" = ( @@ -1634,20 +1630,20 @@ (1,1,1) = {" aa -af -af -af -af +aa +aa +aa +aa ab ab ad ab ab -af -af -af -af -af +aa +aa +aa +aa +aa "} (2,1,1) = {" aa @@ -1664,7 +1660,7 @@ au au au cA -af +aa "} (3,1,1) = {" ab @@ -2025,9 +2021,9 @@ ab "} (24,1,1) = {" aa -af -af -af +aa +aa +aa ac bj aB @@ -2035,16 +2031,16 @@ bH bN bV ac -af -af -af -af +aa +aa +aa +aa "} (25,1,1) = {" -af -af -af -af +aa +aa +aa +aa ac bk bs @@ -2052,16 +2048,16 @@ bI bO bW ac -af -af -af -af +aa +aa +aa +aa "} (26,1,1) = {" aa -af -af -af +aa +aa +aa ba ac ac @@ -2069,10 +2065,10 @@ ac ac ac ba -af -af -af -af +aa +aa +aa +aa "} (27,1,1) = {" aa @@ -2092,19 +2088,19 @@ aa aa "} (28,1,1) = {" -af -af -af -af -af -af -af -af -af -af -af -af -af -af -af +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa "} diff --git a/_maps/shuttles/whiteship_pubby.dmm b/_maps/shuttles/whiteship_pubby.dmm index 1ea9db3063..3ef386e265 100644 --- a/_maps/shuttles/whiteship_pubby.dmm +++ b/_maps/shuttles/whiteship_pubby.dmm @@ -94,7 +94,6 @@ name = "White Ship"; port_direction = 4; preferred_direction = 1; - roundstart_move = "whiteship_away"; timid = 1; width = 9 }, diff --git a/_maps/templates/medium_shuttle1.dmm b/_maps/templates/medium_shuttle1.dmm index 80833ada8d..ec158f3b4c 100644 --- a/_maps/templates/medium_shuttle1.dmm +++ b/_maps/templates/medium_shuttle1.dmm @@ -20,7 +20,7 @@ "d" = ( /turf/closed/wall/mineral/plastitanium, /area/ruin/powered/shuttle/medium_1) -"g" = ( +"f" = ( /turf/closed/wall/mineral/titanium, /area/ruin/powered/shuttle/medium_1) "h" = ( @@ -96,7 +96,7 @@ a a i h -g +f h i a @@ -111,11 +111,11 @@ a a a a -g +f n n n -g +f a a a @@ -127,13 +127,13 @@ a a a i -g -g +f +f o -g +f o -g -g +f +f i a a @@ -143,15 +143,15 @@ a b b b -g +f j -g +f n n n -g +f j -g +f w w w @@ -160,7 +160,7 @@ w c c c -g +f j k n @@ -168,7 +168,7 @@ t n k j -g +f c c c @@ -176,41 +176,41 @@ c (6,1,1) = {" d d -g -g +f +f k -g -g -g -g -g +f +f +f +f +f k -g -g +f +f d d "} (7,1,1) = {" d d -g +f j j -g +f j j j -g +f j j -g +f d d "} (8,1,1) = {" d d -g +f j j k @@ -220,41 +220,41 @@ j k j j -g +f d d "} (9,1,1) = {" d d -g +f j j -g +f j j j -g +f j j -g +f d a "} (10,1,1) = {" a d -g -g -g -g +f +f +f +f k -g +f k -g -g -g -g +f +f +f +f a a "} @@ -280,13 +280,13 @@ a a h j -g +f j j u j j -g +f j h a @@ -296,15 +296,15 @@ a a a i -g -g -g +f +f +f k -g +f k -g -g -g +f +f +f i a a @@ -314,13 +314,13 @@ a a a a -g +f l p u j j -g +f a a a @@ -331,13 +331,13 @@ a a a a -g +f m p u j j -g +f a a a @@ -348,13 +348,13 @@ a a a a -g -g +f +f k -g +f k -g -g +f +f a a a @@ -365,13 +365,13 @@ a a a a -g +f j j -g +f j j -g +f a a a @@ -382,13 +382,13 @@ a a a a -g +f j j -g +f j j -g +f a a a @@ -400,11 +400,11 @@ a a a i -g +f k -g +f k -g +f i a a @@ -417,11 +417,11 @@ a a a a -g +f q q q -g +f a a a @@ -434,11 +434,11 @@ a a a a -g +f q v q -g +f a a a @@ -451,11 +451,11 @@ a a a a -g +f r r r -g +f a a a diff --git a/_maps/templates/medium_shuttle2.dmm b/_maps/templates/medium_shuttle2.dmm index 3b46d40382..904c7da6d6 100644 --- a/_maps/templates/medium_shuttle2.dmm +++ b/_maps/templates/medium_shuttle2.dmm @@ -26,7 +26,7 @@ }, /turf/open/space, /area/ruin/powered/shuttle/medium_2) -"h" = ( +"g" = ( /turf/closed/wall/mineral/titanium, /area/ruin/powered/shuttle/medium_2) "i" = ( @@ -159,11 +159,11 @@ c c d d -h -h +g +g l -h -h +g +g d d c @@ -172,22 +172,22 @@ c (6,1,1) = {" d d -h -h -h +g +g +g r m r -h -h -h +g +g +g d d "} (7,1,1) = {" d d -h +g m m m @@ -195,74 +195,74 @@ m m m m -h +g d d "} (8,1,1) = {" d -h -h +g +g n -h +g B w B -h +g n -h -h +g +g d "} (9,1,1) = {" d -h +g k k -h -h +g +g B -h -h +g +g k k -h +g d "} (10,1,1) = {" d -h +g k k -h -h -h -h -h +g +g +g +g +g k k -h +g d "} (11,1,1) = {" a i -h +g n -h -h -h -h -h +g +g +g +g +g n -h +g i a "} (12,1,1) = {" a a -h +g k k n @@ -270,37 +270,37 @@ k n k k -h +g a a "} (13,1,1) = {" a a -h +g k k -h -h -h +g +g +g k k -h +g a a "} (14,1,1) = {" a a -h -h +g +g n -h -h -h +g +g +g n -h -h +g +g a a "} @@ -310,9 +310,9 @@ a l k k -h -h -h +g +g +g k k l @@ -323,13 +323,13 @@ a a a i -h +g n -h -h -h +g +g +g n -h +g i a a @@ -338,13 +338,13 @@ a a a a -h +g k k k k k -h +g a a a @@ -353,13 +353,13 @@ a a a a -h +g n -h -h -h +g +g +g n -h +g a a a @@ -368,13 +368,13 @@ a a a a -h +g o s x k k -h +g a a a @@ -383,13 +383,13 @@ a a a a -h +g o t x k k -h +g a a a @@ -398,13 +398,13 @@ a a a a -h +g n -h -h -h +g +g +g n -h +g a a a @@ -413,13 +413,13 @@ a a a a -h +g k k x k k -h +g a a a @@ -428,13 +428,13 @@ a a a a -h +g k k x k k -h +g a a a @@ -443,13 +443,13 @@ a a a a -h +g n -h -h -h +g +g +g n -h +g a a a @@ -458,13 +458,13 @@ a a a a -h +g p p y p p -h +g a a a @@ -473,13 +473,13 @@ a a a a -h +g p u u u p -h +g a a a @@ -489,11 +489,11 @@ a a a i -h +g v v v -h +g i a a diff --git a/_maps/templates/medium_shuttle4.dmm b/_maps/templates/medium_shuttle4.dmm index 1464f0961d..4595f8704a 100644 --- a/_maps/templates/medium_shuttle4.dmm +++ b/_maps/templates/medium_shuttle4.dmm @@ -54,27 +54,6 @@ }, /turf/open/floor/oldshuttle, /area/ruin/powered/shuttle/medium_4) -"m" = ( -/turf/closed/indestructible/oldshuttle/corner{ - dir = 8 - }, -/area/ruin/powered/shuttle/medium_4) -"n" = ( -/turf/closed/indestructible/oldshuttle/corner, -/area/ruin/powered/shuttle/medium_4) -"o" = ( -/turf/closed/indestructible/oldshuttle/corner{ - dir = 1 - }, -/area/ruin/powered/shuttle/medium_4) -"p" = ( -/turf/closed/indestructible/oldshuttle/corner{ - dir = 4 - }, -/area/ruin/powered/shuttle/medium_4) -"q" = ( -/turf/closed/indestructible/oldshuttle/corner, -/area/ruin/powered/shuttle/medium_4) "r" = ( /obj/machinery/power/generator, /turf/open/floor/oldshuttle, @@ -162,7 +141,7 @@ g g g g -m +b d k u @@ -178,8 +157,8 @@ c g g g -m -o +b +f a a a @@ -199,7 +178,7 @@ c c c c -p +h a "} (7,1,1) = {" @@ -217,7 +196,7 @@ i c s c -p +h "} (8,1,1) = {" b @@ -233,7 +212,7 @@ l l c g -n +e c "} (9,1,1) = {" @@ -247,7 +226,7 @@ l l l l -m +b c g g @@ -281,7 +260,7 @@ l l l l -n +e c g g @@ -301,7 +280,7 @@ l l c g -m +b c "} (13,1,1) = {" @@ -319,7 +298,7 @@ i c s c -o +f "} (14,1,1) = {" a @@ -335,7 +314,7 @@ c c c c -o +f a "} (15,1,1) = {" @@ -348,8 +327,8 @@ c g g g -n -p +e +h a a a @@ -366,7 +345,7 @@ g g g g -n +e d k t @@ -417,7 +396,7 @@ a a a a -q +e c k v diff --git a/_maps/templates/pirate_ship.dmm b/_maps/templates/pirate_ship.dmm index a97be6e9bd..9ecd27ac28 100644 --- a/_maps/templates/pirate_ship.dmm +++ b/_maps/templates/pirate_ship.dmm @@ -213,7 +213,7 @@ /turf/open/floor/plasteel/dark, /area/shuttle/pirate) "aD" = ( -/obj/structure/sign/bluecross_2, +/obj/structure/sign/departments/medbay/alt, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/shuttle/pirate) "aE" = ( @@ -542,11 +542,7 @@ /turf/open/floor/plasteel, /area/shuttle/pirate) "bt" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = -32 }, /obj/machinery/light/small{ @@ -641,11 +637,7 @@ /turf/open/floor/plasteel, /area/shuttle/pirate) "bE" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_x = 32 }, /obj/machinery/light/small{ @@ -672,7 +664,7 @@ name = "Pirate Ship"; port_direction = 8; preferred_direction = 1; - roundstart_move = "pirateship_home"; + timid = 0; width = 23 }, /obj/docking_port/stationary{ @@ -715,7 +707,7 @@ /obj/machinery/airalarm{ dir = 8; pixel_x = 24; - req_access = 152 + req_access = list(152) }, /obj/effect/decal/cleanable/dirt, /obj/structure/rack{ @@ -1310,7 +1302,7 @@ /turf/open/floor/plasteel/bar, /area/shuttle/pirate) "cS" = ( -/obj/structure/sign/engineering{ +/obj/structure/sign/departments/engineering{ pixel_x = 32 }, /obj/machinery/light/small{ @@ -1379,7 +1371,7 @@ /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/shuttle/pirate) "cY" = ( -/obj/structure/sign/engineering{ +/obj/structure/sign/departments/engineering{ pixel_x = -32 }, /obj/machinery/light/small{ @@ -1462,7 +1454,7 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/nosmoking_2{ +/obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, /turf/open/floor/plasteel, @@ -1707,7 +1699,7 @@ /turf/open/floor/plating/airless, /area/shuttle/pirate) "dJ" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/shuttle/pirate) "dK" = ( @@ -1753,11 +1745,7 @@ frequency = 1441; id = "inc_in" }, -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; +/obj/structure/sign/warning/vacuum/external{ pixel_y = -32 }, /turf/open/floor/engine/vacuum, @@ -1789,7 +1777,7 @@ /turf/open/floor/engine/vacuum, /area/shuttle/pirate) "dT" = ( -/obj/structure/sign/fire, +/obj/structure/sign/warning/fire, /turf/closed/wall/mineral/plastitanium, /area/shuttle/pirate) "dU" = ( diff --git a/_maps/templates/shelter_2.dmm b/_maps/templates/shelter_2.dmm index 69e7369af7..1d4c810eb4 100644 --- a/_maps/templates/shelter_2.dmm +++ b/_maps/templates/shelter_2.dmm @@ -8,9 +8,6 @@ }, /turf/closed/wall/mineral/titanium/survival/pod, /area/survivalpod) -"c" = ( -/turf/closed/wall/mineral/titanium/survival, -/area/survivalpod) "d" = ( /obj/structure/sign/mining/survival{ dir = 8 @@ -154,7 +151,7 @@ alert = 0; desc = "A display case containing an expensive forgery, probably."; pixel_y = -4; - req_access = 48; + req_access = list(48); start_showpiece_type = /obj/item/fakeartefact }, /turf/open/floor/carpet/black, diff --git a/_maps/templates/small_shuttle_1.dmm b/_maps/templates/small_shuttle_1.dmm index 901d67d6d6..03789ef847 100644 --- a/_maps/templates/small_shuttle_1.dmm +++ b/_maps/templates/small_shuttle_1.dmm @@ -12,9 +12,6 @@ "d" = ( /turf/closed/wall/mineral/titanium, /area/space) -"e" = ( -/turf/closed/wall/mineral/titanium, -/area/space) "f" = ( /turf/open/floor/mineral/titanium/blue, /area/space) @@ -24,19 +21,10 @@ }, /turf/open/floor/mineral/titanium/blue, /area/space) -"h" = ( -/turf/closed/wall/mineral/titanium, -/area/space) -"i" = ( -/turf/closed/wall/mineral/titanium, -/area/space) "j" = ( /obj/machinery/door/unpowered/shuttle, /turf/open/floor/mineral/titanium/blue, /area/space) -"k" = ( -/turf/closed/wall/mineral/titanium, -/area/space) "l" = ( /obj/structure/chair{ dir = 4 @@ -53,9 +41,6 @@ /obj/structure/shuttle/engine/heater, /turf/open/floor/plating/airless, /area/space) -"o" = ( -/turf/closed/wall/mineral/titanium, -/area/space) "p" = ( /obj/structure/shuttle/engine/propulsion/left, /turf/open/floor/plating/airless, @@ -68,28 +53,25 @@ /obj/structure/shuttle/engine/propulsion/right, /turf/open/floor/plating/airless, /area/space) -"s" = ( -/turf/closed/wall/mineral/titanium, -/area/space) (1,1,1) = {" a a a b -e -e +d +d j j -e -e +d +d b "} (2,1,1) = {" b -e -e -e +d +d +d l l f @@ -102,7 +84,7 @@ p c f f -e +d f f f @@ -128,7 +110,7 @@ q c f f -e +d f f f @@ -139,9 +121,9 @@ q "} (6,1,1) = {" b -e -e -e +d +d +d m m f @@ -155,11 +137,11 @@ a a a b -e -e +d +d j j -e -e +d +d b "} diff --git a/apc_repair.dmi b/apc_repair.dmi deleted file mode 100644 index 6e861eef61..0000000000 Binary files a/apc_repair.dmi and /dev/null differ diff --git a/cfg/admin.txt b/cfg/admin.txt index ea2886f6e3..8b13789179 100644 --- a/cfg/admin.txt +++ b/cfg/admin.txt @@ -1,125 +1 @@ -jayehh role=admin -optimumtact role=admin -newsta role=admin -expletives role=admin -kingofkosmos role=admin -mrstonedone role=admin -microscopics role=admin -gunhog role=admin -korphaeron role=admin -razharas role=admin -lordpidey role=admin -niknakflak role=admin -rolan7 role=admin -quarxink role=admin -adrix89 role=admin -tle role=admin -xsi role=admin -scaredofshadows role=admin -neofite role=admin -trubblebass role=admin -mport2004 role=admin -deuryn role=admin -agouri role=admin -errorage role=admin -superxpdude role=admin -petethegoat role=admin -nodrak role=admin -carnwennan role=admin -ikarrus role=admin -cheridan role=admin -giacomand role=admin -rockdtben role=admin -sieve role=admin -aranclanos role=admin -intigracy role=admin -dumpdavidson role=admin -kazeespada role=admin -malkevin role=admin -incoming role=admin -demas role=admin -fleure role=admin -ricotez role=admin -misterperson role=admin -crimsonvision role=admin -iamgoofball role=admin -zelacks role=admin -androidsfv role=admin -miggles role=admin -jordie0608 role=admin -s0ldi3rkr4s0 role=admin -ergovisavi role=admin -vistapowa role=admin -miauw62 role=admin -rumia29 role=admin -bobylein role=admin -sirbayer role=admin -hornygranny role=admin -yota role=admin -firecage role=admin -donkieyo role=admin -argoneus role=admin -paprka role=admin -cookingboy3 role=admin -limeliz role=admin -steelpoint role=admin -phil235 role=admin -corruptcomputer role=admin -xxnoob role=admin -tkdrg role=admin -cuboos role=admin -thunder12345 role=admin -wjohnston role=admin -mandurrh role=admin -thurgatar role=admin -xerux role=admin -dannno role=admin -lo6a4evskiy role=admin -vekter role=admin -ahammer18 role=admin -account12 role=admin -fayrik role=admin -shadowlight213 role=admin -drovidicorv role=admin -dunc role=admin -mmmiracles role=admin -bear1ake role=admin -coreoverload role=admin -jalleo role=admin -changelingrain role=admin -foxpmccloud role=admin -xhuis role=admin -astralenigma role=admin -tokiko1 role=admin -supersayu role=admin -lzimann role=admin -as334 role=admin -neersighted role=admin -swankcookie role=admin -ressler role=admin -folix role=admin -bawhoppennn role=admin -anturke role=admin -lumipharon role=admin -bgobandit role=admin -coiax role=admin -randommarine role=admin -pkpenguin321 role=admin -technoalchemist role=admin -aloraydrel role=admin -quiltyquilty role=admin -snipedragon role=admin -fjeld role=admin -kevinz000 role=admin -tacolizard role=admin -trustygun role=admin -cyberboss role=admin -pjb3005 role=admin -sweaterkittens role=admin -feemjmeem role=admin -jstheguy role=admin -excessiveuseofcobby role=admin -plizzard role=admin -octareenroon91 role=admin -serpentarium role=admin -cebutris role=admin + diff --git a/code/__DATASTRUCTURES/linked_lists.dm b/code/__DATASTRUCTURES/linked_lists.dm deleted file mode 100644 index 1d2e8d78a6..0000000000 --- a/code/__DATASTRUCTURES/linked_lists.dm +++ /dev/null @@ -1,191 +0,0 @@ - -//Ok so it's technically a double linked list, bite me. - -/datum/linked_list - var/datum/linked_node/head - var/datum/linked_node/tail - var/node_amt = 0 - - -/datum/linked_node - var/value = null - var/datum/linked_list/linked_list = null - var/datum/linked_node/next_node = null - var/datum/linked_node/previous_node = null - - -/datum/linked_list/proc/IsEmpty() - . = (node_amt <= 0) - - -//Add a linked_node (or value, creating a linked_node) at position -//the added node BECOMES the position-th element, -//eg: add("Test",5), the 5th node is now "Test", the previous 5th moves up to become the 6th -/datum/linked_list/proc/Add(node, position) - var/datum/linked_node/adding - if(istype(node, /datum/linked_node)) - adding = node - else - adding = new() - adding.value = node - - if(!adding.linked_list || (adding.linked_list && (adding.linked_list != src))) - node_amt++ - - adding.linked_list = src - - if(position && position < node_amt) - //Replacing head - if(position == 1) - if(head) - head.previous_node = adding - adding.next_node = head - head = adding - - //Replacing any middle node - else - var/location = 0 - var/datum/linked_node/at - while((location != position) && (location <= node_amt)) - if(at) - if(at.next_node) - at = at.next_node - else - break - else - at = head - location++ - - //Push at up and assume it's place as the position-th element - if(at && at.previous_node) - at.previous_node.next_node = adding - adding.previous_node = at.previous_node - at.previous_node = adding - adding.next_node = at - return - - //Replacing tail - if(tail) - tail.next_node = adding - adding.previous_node = tail - if(!tail.previous_node) - head = tail - tail = adding - - - -//Remove a linked_node or the linked_node of a value -//If you specify a value the FIRST ONE is removed -/datum/linked_list/proc/Remove(node) - var/datum/linked_node/removing - if(istype(node, /datum/linked_node)) - removing = node - else - //optimise removing head and tail, no point looping for them, especially the tail - if(removing == head) - removing = head - else if(removing == tail) - removing = tail - else - var/location = 1 - var/current_value = null - var/datum/linked_node/at = null - while((current_value != node) && (location <= node_amt)) - if(at) - if(at.next_node) - at = at.next_node - else - at = head - location++ - if(at) - current_value = at.value - if(current_value == node) - removing = at - break - - //Adjust pointers of where removing -was- in the chain. - if(removing) - if(removing.previous_node) - if(removing == tail) - tail = removing.previous_node - if(removing.next_node) - if(removing == head) - head = removing.next_node - removing.next_node.previous_node = removing.previous_node - removing.previous_node.next_node = removing.next_node - else - removing.previous_node.next_node = null - else - if(removing.next_node) - if(removing == head) - head = removing.next_node - removing.next_node.previous_node = null - - //if this is still true at this point, there's no more nodes to replace them with - if(removing == head) - head = null - if(removing == tail) - tail = null - - removing.next_node = null - removing.previous_node = null - if(removing.linked_list == src) - node_amt-- - removing.linked_list = null - - return removing - return 0 - - -//Removes and deletes a node or value -/datum/linked_list/proc/RemoveDelete(node) - var/datum/linked_node/dead = Remove(node) - if(dead) - qdel(dead) - return 1 - return 0 - - -//Empty the linked_list, deleting all nodes -/datum/linked_list/proc/Empty() - var/datum/linked_node/n = head - while(n) - var/next = n.next_node - Remove(n) - qdel(n) - n = next - node_amt = 0 - - -//Some debugging tools -/datum/linked_list/proc/CheckNodeLinks() - var/datum/linked_node/n = head - while(n) - . = "|[n.value]|" - if(n.previous_node) - . = "[n.previous_node.value]<-" + . - if(n.next_node) - . += "->[n.next_node.value]" - n = n.next_node - . += "
" - - -/datum/linked_list/proc/DrawNodeLinks() - . = "|<-" - var/datum/linked_node/n = head - while(n) - if(n.previous_node) - . += "<-" - . += "[n.value]" - if(n.next_node) - . += "->" - n = n.next_node - . += "->|" - - -/datum/linked_list/proc/ToList() - . = list() - var/datum/linked_node/n = head - while(n) - . += n - n = n.next_node \ No newline at end of file diff --git a/code/__DATASTRUCTURES/priority_queue.dm b/code/__DATASTRUCTURES/priority_queue.dm deleted file mode 100644 index 8689a19f4e..0000000000 --- a/code/__DATASTRUCTURES/priority_queue.dm +++ /dev/null @@ -1,83 +0,0 @@ - -////////////////////// -//PriorityQueue object -////////////////////// - -//an ordered list, using the cmp proc to weight the list elements -/PriorityQueue - var/list/L //the actual queue - var/cmp //the weight function used to order the queue - -/PriorityQueue/New(compare) - L = new() - cmp = compare - -/PriorityQueue/proc/IsEmpty() - return !L.len - -//return the index the element should be in the priority queue using dichotomic search -/PriorityQueue/proc/FindElementIndex(atom/A) - var/i = 1 - var/j = L.len - var/mid - - while(i < j) - mid = round((i+j)/2) - - if(call(cmp)(L[mid],A) < 0) - i = mid + 1 - else - j = mid - - if(i == 1 || i == L.len) //edge cases - return (call(cmp)(L[i],A) > 0) ? i : i+1 - else - return i - - -//add an element in the list, -//immediatly ordering it to its position using dichotomic search -/PriorityQueue/proc/Enqueue(atom/A) - if(!L.len) - L.Add(A) - return - - L.Insert(FindElementIndex(A),A) - -//removes and returns the first element in the queue -/PriorityQueue/proc/Dequeue() - if(!L.len) - return 0 - . = L[1] - - Remove(.) - -//removes an element -/PriorityQueue/proc/Remove(atom/A) - return L.Remove(A) - -//returns a copy of the elements list -/PriorityQueue/proc/List() - . = L.Copy() - -//return the position of an element or 0 if not found -/PriorityQueue/proc/Seek(atom/A) - . = L.Find(A) - -//return the element at the i_th position -/PriorityQueue/proc/Get(i) - if(i > L.len || i < 1) - return 0 - return L[i] - -//replace the passed element at it's right position using the cmp proc -/PriorityQueue/proc/ReSort(atom/A) - var/i = Seek(A) - if(i == 0) - return - while(i < L.len && call(cmp)(L[i],L[i+1]) > 0) - L.Swap(i,i+1) - i++ - while(i > 1 && call(cmp)(L[i],L[i-1]) <= 0) //last inserted element being first in case of ties (optimization) - L.Swap(i,i-1) - i-- \ No newline at end of file diff --git a/code/__DATASTRUCTURES/stacks.dm b/code/__DATASTRUCTURES/stacks.dm deleted file mode 100644 index b310a3b940..0000000000 --- a/code/__DATASTRUCTURES/stacks.dm +++ /dev/null @@ -1,56 +0,0 @@ -/datum/stack - var/list/stack = list() - var/max_elements = 0 - -/datum/stack/New(list/elements,max) - ..() - if(elements) - stack = elements.Copy() - if(max) - max_elements = max - -/datum/stack/proc/Pop() - if(is_empty()) - return null - . = stack[stack.len] - stack.Cut(stack.len,0) - -/datum/stack/proc/Push(element) - if(max_elements && (stack.len+1 > max_elements)) - return null - stack += element - -/datum/stack/proc/Top() - if(is_empty()) - return null - . = stack[stack.len] - -/datum/stack/proc/is_empty() - . = stack.len ? 0 : 1 - -//Rotate entire stack left with the leftmost looping around to the right -/datum/stack/proc/RotateLeft() - if(is_empty()) - return 0 - . = stack[1] - stack.Cut(1,2) - Push(.) - -//Rotate entire stack to the right with the rightmost looping around to the left -/datum/stack/proc/RotateRight() - if(is_empty()) - return 0 - . = stack[stack.len] - stack.Cut(stack.len,0) - stack.Insert(1,.) - - -/datum/stack/proc/Copy() - var/datum/stack/S=new() - S.stack = stack.Copy() - S.max_elements = max_elements - return S - - -/datum/stack/proc/Clear() - stack.Cut() diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index 253e9f5888..87552e5841 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -123,6 +123,7 @@ #define SPECIES_INORGANIC 32 #define SPECIES_UNDEAD 33 #define SPECIES_ROBOTIC 34 +#define NOEYES 35 #define ORGAN_SLOT_BRAIN "brain" #define ORGAN_SLOT_APPENDIX "appendix" diff --git a/code/__DATASTRUCTURES/globals.dm b/code/__DEFINES/_globals.dm similarity index 97% rename from code/__DATASTRUCTURES/globals.dm rename to code/__DEFINES/_globals.dm index c7aa865573..7e7aa3158f 100644 --- a/code/__DATASTRUCTURES/globals.dm +++ b/code/__DEFINES/_globals.dm @@ -1,38 +1,38 @@ -//See controllers/globals.dm -#define GLOBAL_MANAGED(X, InitValue)\ -/datum/controller/global_vars/proc/InitGlobal##X(){\ - ##X = ##InitValue;\ - gvars_datum_init_order += #X;\ -} -#define GLOBAL_UNMANAGED(X) /datum/controller/global_vars/proc/InitGlobal##X() { return; } - -#ifndef TESTING -#define GLOBAL_PROTECT(X)\ -/datum/controller/global_vars/InitGlobal##X(){\ - ..();\ - gvars_datum_protected_varlist[#X] = TRUE;\ -} -#else -#define GLOBAL_PROTECT(X) -#endif - -#define GLOBAL_REAL_VAR(X) var/global/##X -#define GLOBAL_REAL(X, Typepath) var/global##Typepath/##X - -#define GLOBAL_RAW(X) /datum/controller/global_vars/var/global##X - -#define GLOBAL_VAR_INIT(X, InitValue) GLOBAL_RAW(/##X); GLOBAL_MANAGED(X, InitValue) - -#define GLOBAL_VAR_CONST(X, InitValue) GLOBAL_RAW(/const/##X) = InitValue; GLOBAL_UNMANAGED(X) - -#define GLOBAL_LIST_INIT(X, InitValue) GLOBAL_RAW(/list/##X); GLOBAL_MANAGED(X, InitValue) - -#define GLOBAL_LIST_EMPTY(X) GLOBAL_LIST_INIT(X, list()) - -#define GLOBAL_DATUM_INIT(X, Typepath, InitValue) GLOBAL_RAW(Typepath/##X); GLOBAL_MANAGED(X, InitValue) - -#define GLOBAL_VAR(X) GLOBAL_RAW(/##X); GLOBAL_UNMANAGED(X) - -#define GLOBAL_LIST(X) GLOBAL_RAW(/list/##X); GLOBAL_UNMANAGED(X) - -#define GLOBAL_DATUM(X, Typepath) GLOBAL_RAW(Typepath/##X); GLOBAL_UNMANAGED(X) +//See controllers/globals.dm +#define GLOBAL_MANAGED(X, InitValue)\ +/datum/controller/global_vars/proc/InitGlobal##X(){\ + ##X = ##InitValue;\ + gvars_datum_init_order += #X;\ +} +#define GLOBAL_UNMANAGED(X) /datum/controller/global_vars/proc/InitGlobal##X() { return; } + +#ifndef TESTING +#define GLOBAL_PROTECT(X)\ +/datum/controller/global_vars/InitGlobal##X(){\ + ..();\ + gvars_datum_protected_varlist[#X] = TRUE;\ +} +#else +#define GLOBAL_PROTECT(X) +#endif + +#define GLOBAL_REAL_VAR(X) var/global/##X +#define GLOBAL_REAL(X, Typepath) var/global##Typepath/##X + +#define GLOBAL_RAW(X) /datum/controller/global_vars/var/global##X + +#define GLOBAL_VAR_INIT(X, InitValue) GLOBAL_RAW(/##X); GLOBAL_MANAGED(X, InitValue) + +#define GLOBAL_VAR_CONST(X, InitValue) GLOBAL_RAW(/const/##X) = InitValue; GLOBAL_UNMANAGED(X) + +#define GLOBAL_LIST_INIT(X, InitValue) GLOBAL_RAW(/list/##X); GLOBAL_MANAGED(X, InitValue) + +#define GLOBAL_LIST_EMPTY(X) GLOBAL_LIST_INIT(X, list()) + +#define GLOBAL_DATUM_INIT(X, Typepath, InitValue) GLOBAL_RAW(Typepath/##X); GLOBAL_MANAGED(X, InitValue) + +#define GLOBAL_VAR(X) GLOBAL_RAW(/##X); GLOBAL_UNMANAGED(X) + +#define GLOBAL_LIST(X) GLOBAL_RAW(/list/##X); GLOBAL_UNMANAGED(X) + +#define GLOBAL_DATUM(X, Typepath) GLOBAL_RAW(Typepath/##X); GLOBAL_UNMANAGED(X) diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index 2c60abb325..62d4b94528 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -76,3 +76,8 @@ #define AHELP_ACTIVE 1 #define AHELP_CLOSED 2 #define AHELP_RESOLVED 3 + +#define ROUNDSTART_LOGOUT_REPORT_TIME 6000 //Amount of time (in deciseconds) after the rounds starts, that the player disconnect report is issued. + +#define SPAM_TRIGGER_WARNING 5 //Number of identical messages required before the spam-prevention will warn you to stfu +#define SPAM_TRIGGER_AUTOMUTE 10 //Number of identical messages required before the spam-prevention will automute you diff --git a/code/__DEFINES/antagonists.dm b/code/__DEFINES/antagonists.dm new file mode 100644 index 0000000000..c82404fd00 --- /dev/null +++ b/code/__DEFINES/antagonists.dm @@ -0,0 +1,14 @@ +#define NUKE_RESULT_FLUKE 0 +#define NUKE_RESULT_NUKE_WIN 1 +#define NUKE_RESULT_CREW_WIN 2 +#define NUKE_RESULT_CREW_WIN_SYNDIES_DEAD 3 +#define NUKE_RESULT_DISK_LOST 4 +#define NUKE_RESULT_DISK_STOLEN 5 +#define NUKE_RESULT_NOSURVIVORS 6 +#define NUKE_RESULT_WRONG_STATION 7 +#define NUKE_RESULT_WRONG_STATION_DEAD 8 + +#define APPRENTICE_DESTRUCTION "destruction" +#define APPRENTICE_BLUESPACE "bluespace" +#define APPRENTICE_ROBELESS "robeless" +#define APPRENTICE_HEALING "healing" \ No newline at end of file diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index ff60d1c030..1516be9fa3 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -99,3 +99,5 @@ //Brainslugs #define isborer(A) (istype(A, /mob/living/simple_animal/borer)) + +#define CITADEL_MENTOR_OOC_COLOUR "#ad396e" \ No newline at end of file diff --git a/code/__DEFINES/clockcult.dm b/code/__DEFINES/clockcult.dm index cc501b5289..9f23ba2d38 100644 --- a/code/__DEFINES/clockcult.dm +++ b/code/__DEFINES/clockcult.dm @@ -28,8 +28,9 @@ GLOBAL_LIST_EMPTY(all_scripture) //a list containing scripture instances; not us #define SCRIPTURE_APPLICATION "Application" //Various costs related to power. -#define SCRIPT_UNLOCK_THRESHOLD 50000 //Scripts will unlock if the total power reaches this amount -#define APPLICATION_UNLOCK_THRESHOLD 100000 //Applications will unlock if the total powre reaches this amount +#define MAX_CLOCKWORK_POWER 50000 //The max power in W that the cult can stockpile +#define SCRIPT_UNLOCK_THRESHOLD 25000 //Scripts will unlock if the total power reaches this amount +#define APPLICATION_UNLOCK_THRESHOLD 40000 //Applications will unlock if the total powre reaches this amount #define ABSCOND_ABDUCTION_COST 95 diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 582074fcba..8e791cfffd 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -34,13 +34,7 @@ #define CANKNOCKDOWN 2 #define CANUNCONSCIOUS 4 #define CANPUSH 8 -#define IGNORESLOWDOWN 16 -#define GOTTAGOFAST 32 -#define GOTTAGOREALLYFAST 64 -#define GODMODE 4096 -#define FAKEDEATH 8192 //Replaces stuff like changeling.changeling_fakedeath -#define DISFIGURED 16384 //I'll probably move this elsewhere if I ever get wround to writing a bitflag mob-damage system -#define XENO_HOST 32768 //Tracks whether we're gonna be a baby alien's mummy. +#define GODMODE 16 //Health Defines #define HEALTH_THRESHOLD_CRIT 0 diff --git a/code/__DEFINES/cult.dm b/code/__DEFINES/cult.dm index 71d4ad3af9..73ec1bc8d7 100644 --- a/code/__DEFINES/cult.dm +++ b/code/__DEFINES/cult.dm @@ -4,6 +4,11 @@ #define RUNE_COLOR_OFFER "#FFFFFF" #define RUNE_COLOR_DARKRED "#7D1717" #define RUNE_COLOR_MEDIUMRED "#C80000" +#define RUNE_COLOR_BURNTORANGE "#CC5500" #define RUNE_COLOR_RED "#FF0000" #define RUNE_COLOR_EMP "#4D94FF" #define RUNE_COLOR_SUMMON "#00FF00" + +//blood magic +#define MAX_BLOODCHARGE 5 +#define RUNELESS_MAX_BLOODCHARGE 2 \ No newline at end of file diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index cb8a2ad2ca..d2c88a0c1b 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -65,7 +65,8 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define UNUSED_TRANSIT_TURF_1 2 #define CAN_BE_DIRTY_1 4 // If a turf can be made dirty at roundstart. This is also used in areas. #define NO_DEATHRATTLE_1 16 // Do not notify deadchat about any deaths that occur on this turf. -#define NO_RUINS_1 32 //Blocks ruins spawning in the area +#define NO_RUINS_1 32 //Blocks ruins spawning on the turf +#define NO_LAVA_GEN_1 64 //Blocks lava rivers being generated on the turf //#define CHECK_RICOCHET_1 32 //Same thing as atom flag. /* diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index addeca8739..cd73f2b1f8 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -61,13 +61,15 @@ #define isplasmaman(A) (is_species(A, /datum/species/plasmaman)) #define ispodperson(A) (is_species(A, /datum/species/podperson)) #define isflyperson(A) (is_species(A, /datum/species/fly)) +#define isjellyperson(A) (is_species(A, /datum/species/jelly)) #define isslimeperson(A) (is_species(A, /datum/species/jelly/slime)) +#define isluminescent(A) (is_species(A, /datum/species/jelly/luminescent)) #define isshadowperson(A) (is_species(A, /datum/species/shadow)) #define iszombie(A) (is_species(A, /datum/species/zombie)) #define ishumanbasic(A) (is_species(A, /datum/species/human)) //why arent catpeople a subspecies -#define iscatperson(A) (ishumanbasic(A) && ( A.dna.features["ears"] == "Cat" || A.dna.features["human_tail"] == "Cat") ) +#define iscatperson(A) (ishumanbasic(A) && ( A.dna.features["ears"] == "Cat" || A.dna.features["tail_human"] == "Cat") ) //more carbon mobs #define ismonkey(A) (istype(A, /mob/living/carbon/monkey)) diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm index a3e2222f2e..80d5730386 100644 --- a/code/__DEFINES/layers.dm +++ b/code/__DEFINES/layers.dm @@ -34,7 +34,7 @@ #define HIGH_SIGIL_LAYER 2.56 #define BELOW_OPEN_DOOR_LAYER 2.6 -#define SHUTTER_LAYER 2.65 //Prevents shutters from being placed above doors. It's overridden by /obj/machinery/door/New() & poddoor/shutters/New() +#define SHUTTER_LAYER 2.65 //Prevents shutters from being placed above doors. It's overridden by /obj/machinery/door/Initialize() & poddoor/shutters/Initialize() #define OPEN_DOOR_LAYER 2.7 #define PROJECTILE_HIT_THRESHHOLD_LAYER 2.75 //projectiles won't hit objects at or below this layer if possible #define TABLE_LAYER 2.8 diff --git a/code/__DEFINES/maps.dm b/code/__DEFINES/maps.dm index 5306110b3b..5ab7e793ae 100644 --- a/code/__DEFINES/maps.dm +++ b/code/__DEFINES/maps.dm @@ -70,3 +70,18 @@ Last space-z level = empty DECLARE_LEVEL("Lavaland", UNAFFECTED, list(ZTRAIT_MINING = TRUE, ZTRAIT_LAVA_RUINS = TRUE, ZTRAIT_BOMBCAP_MULTIPLIER = 3)),\ DECLARE_LEVEL("Reebe", UNAFFECTED, list(ZTRAIT_REEBE = TRUE, ZTRAIT_BOMBCAP_MULTIPLIER = 0.5)),\ ) + +//Camera lock flags +#define CAMERA_LOCK_STATION 1 +#define CAMERA_LOCK_MINING 2 +#define CAMERA_LOCK_CENTCOM 4 +#define CAMERA_LOCK_REEBE 8 + +//Ruin Generation + +#define PLACEMENT_TRIES 100 //How many times we try to fit the ruin somewhere until giving up (really should just swap to some packing algo) + +#define PLACE_DEFAULT "random" +#define PLACE_SAME_Z "same" +#define PLACE_SPACE_RUIN "space" +#define PLACE_LAVA_RUIN "lavaland" \ No newline at end of file diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index ddf5286305..c3a331b651 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -61,6 +61,7 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s #define DAMAGE_LAYER 22 //damage indicators (cuts and burns) #define UNIFORM_LAYER 21 #define ID_LAYER 20 +#define HANDS_PART_LAYER 20 #define SHOES_LAYER 19 #define GLOVES_LAYER 18 #define EARS_LAYER 17 @@ -93,8 +94,9 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s #define UNDER_DAMAGE_LAYER DAMAGE_LAYER+1 #define UNDER_UNIFORM_LAYER UNIFORM_LAYER+1 #define UNDER_ID_LAYER ID_LAYER+1 -#define UNDER_SHOES_LAYER SHOES_LAYER+1 +#define UNDER_HANDS_PART_LAYER HANDS_PART_LAYER+1 #define UNDER_GLOVES_LAYER GLOVES_LAYER+1 +#define UNDER_SHOES_LAYER SHOES_LAYER+1 #define UNDER_EARS_LAYER EARS_LAYER+1 #define UNDER_SUIT_LAYER SUIT_LAYER+1 #define UNDER_GLASSES_LAYER GLASSES_LAYER+1 @@ -119,8 +121,9 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s #define ABOVE_DAMAGE_LAYER DAMAGE_LAYER-1 #define ABOVE_UNIFORM_LAYER UNIFORM_LAYER-1 #define ABOVE_ID_LAYER ID_LAYER-1 -#define ABOVE_SHOES_LAYER SHOES_LAYER-1 +#define ABOVE_HANDS_PART_LAYER HANDS_PART_LAYER-1 #define ABOVE_GLOVES_LAYER GLOVES_LAYER-1 +#define ABOVE_SHOES_LAYER SHOES_LAYER-1 #define ABOVE_EARS_LAYER EARS_LAYER-1 #define ABOVE_SUIT_LAYER SUIT_LAYER-1 #define ABOVE_GLASSES_LAYER GLASSES_LAYER-1 @@ -488,8 +491,18 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE #define HOSTILE_SPAWN 1 #define FRIENDLY_SPAWN 2 +//slime core activation type +#define SLIME_ACTIVATE_MINOR 1 +#define SLIME_ACTIVATE_MAJOR 2 + +#define LUMINESCENT_DEFAULT_GLOW 2 + #define RIDING_OFFSET_ALL "ALL" +//stack recipe placement check types +#define STACK_CHECK_CARDINALS "cardinals" //checks if there is an object of the result type in any of the cardinal directions +#define STACK_CHECK_ADJACENT "adjacent" //checks if there is an object of the result type within one tile + //text files #define BRAIN_DAMAGE_FILE "traumas.json" @@ -499,3 +512,10 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE #define SUMMON_GUNS "guns" #define SUMMON_MAGIC "magic" + +//Run the world with this parameter to enable a single run though of the game setup and tear down process with unit tests in between +#define TEST_RUN_PARAMETER "test-run" +//Force the log directory to be something specific in the data/logs folder +#define OVERRIDE_LOG_DIRECTORY_PARAMETER "log-directory" +//Prevent the master controller from starting automatically, overrides TEST_RUN_PARAMETER +#define NO_INIT_PARAMETER "no-init" diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 4bfb70a257..9142996693 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -188,4 +188,21 @@ #define OFFSET_BELT "belt" #define OFFSET_BACK "back" #define OFFSET_SUIT "suit" -#define OFFSET_NECK "neck" \ No newline at end of file +#define OFFSET_NECK "neck" + +//MINOR TWEAKS/MISC +#define AGE_MIN 17 //youngest a character can be +#define AGE_MAX 85 //oldest a character can be +#define WIZARD_AGE_MIN 30 //youngest a wizard can be +#define APPRENTICE_AGE_MIN 29 //youngest an apprentice can be +#define SHOES_SLOWDOWN 0 //How much shoes slow you down by default. Negative values speed you up +#define POCKET_STRIP_DELAY 40 //time taken (in deciseconds) to search somebody's pockets +#define DOOR_CRUSH_DAMAGE 15 //the amount of damage that airlocks deal when they crush you + +#define HUNGER_FACTOR 0.1 //factor at which mob nutrition decreases +#define REAGENTS_METABOLISM 0.4 //How many units of reagent are consumed per tick, by default. +#define REAGENTS_EFFECT_MULTIPLIER (REAGENTS_METABOLISM / 0.4) // By defining the effect multiplier this way, it'll exactly adjust all effects according to how they originally were with the 0.4 metabolism + +// AI Toggles +#define AI_CAMERA_LUMINOSITY 5 +#define AI_VOX // Comment out if you don't want VOX to be enabled and have players download the voice sounds. diff --git a/code/__DEFINES/obj_flags.dm b/code/__DEFINES/obj_flags.dm new file mode 100644 index 0000000000..ba326b7c91 --- /dev/null +++ b/code/__DEFINES/obj_flags.dm @@ -0,0 +1,19 @@ +// Flags for the obj_flags var on /obj + + +#define EMAGGED 1 +#define IN_USE 2 // If we have a user using us, this will be set on. We will check if the user has stopped using us, and thus stop updating and LAGGING EVERYTHING! +#define CAN_BE_HIT 4 //can this be bludgeoned by items? +#define BEING_SHOCKED 8 // Whether this thing is currently (already) being shocked by a tesla +#define DANGEROUS_POSSESSION 16 //Admin possession yes/no +#define ON_BLUEPRINTS 32 //Are we visible on the station blueprints at roundstart? +#define UNIQUE_RENAME 64 // can you customize the description/name of the thing? + +// If you add new ones, be sure to add them to /obj/Initialize as well for complete mapping support + +// Flags for the item_flags var on /obj/item + +#define BEING_REMOVED 1 +#define IN_INVENTORY 2 //is this item equipped into an inventory slot or hand of a mob? used for tooltips +#define FORCE_STRING_OVERRIDE 4 // used for tooltips +#define NEEDS_PERMIT 8 //Used by security bots to determine if this item is safe for public use. diff --git a/code/__DEFINES/pipe_construction.dm b/code/__DEFINES/pipe_construction.dm index 641187e964..7d2899d869 100644 --- a/code/__DEFINES/pipe_construction.dm +++ b/code/__DEFINES/pipe_construction.dm @@ -1,10 +1,11 @@ //Construction Categories -#define PIPE_STRAIGHT 0 //2 directions: N/S, E/W -#define PIPE_BENDABLE 1 //6 directions: N/S, E/W, N/E, N/W, S/E, S/W -#define PIPE_TRINARY 2 //4 directions: N/E/S, E/S/W, S/W/N, W/N/E -#define PIPE_TRIN_M 3 //8 directions: N->S+E, S->N+E, N->S+W, S->N+W, E->W+S, W->E+S, E->W+N, W->E+N -#define PIPE_UNARY 4 //4 directions: N, S, E, W -#define PIPE_ONEDIR 5 //1 direction: N/S/E/W +#define PIPE_STRAIGHT 0 //2 directions: N/S, E/W +#define PIPE_BENDABLE 1 //6 directions: N/S, E/W, N/E, N/W, S/E, S/W +#define PIPE_TRINARY 2 //4 directions: N/E/S, E/S/W, S/W/N, W/N/E +#define PIPE_TRIN_M 3 //8 directions: N->S+E, S->N+E, N->S+W, S->N+W, E->W+S, W->E+S, E->W+N, W->E+N +#define PIPE_UNARY 4 //4 directions: N, S, E, W +#define PIPE_ONEDIR 5 //1 direction: N/S/E/W +#define PIPE_UNARY_FLIPPABLE 6 //8 directions: N/S/E/W/N-flipped/S-flipped/E-flipped/W-flipped //Disposal pipe relative connection directions #define DISP_DIR_BASE 0 diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm index a489f449cf..8c2791670c 100644 --- a/code/__DEFINES/role_preferences.dm +++ b/code/__DEFINES/role_preferences.dm @@ -6,12 +6,14 @@ //These are synced with the Database, if you change the values of the defines //then you MUST update the database! +#define ROLE_SYNDICATE "Syndicate" #define ROLE_TRAITOR "traitor" #define ROLE_OPERATIVE "operative" #define ROLE_CHANGELING "changeling" #define ROLE_WIZARD "wizard" #define ROLE_MALF "malf AI" #define ROLE_REV "revolutionary" +#define ROLE_REV_HEAD "Head Revolutionary" #define ROLE_ALIEN "xenomorph" #define ROLE_PAI "pAI" #define ROLE_CULTIST "cultist" diff --git a/code/__DEFINES/say.dm b/code/__DEFINES/say.dm index 8f38acb203..c5708034fe 100644 --- a/code/__DEFINES/say.dm +++ b/code/__DEFINES/say.dm @@ -56,4 +56,10 @@ #define LINGHIVE_NONE 0 #define LINGHIVE_OUTSIDER 1 #define LINGHIVE_LING 2 -#define LINGHIVE_LINK 3 \ No newline at end of file +#define LINGHIVE_LINK 3 + +//Don't set this very much higher then 1024 unless you like inviting people in to dos your server with message spam +#define MAX_MESSAGE_LEN 1024 +#define MAX_NAME_LEN 42 +#define MAX_BROADCAST_LEN 512 +#define MAX_CHARTER_LEN 80 diff --git a/code/__DEFINES/stat.dm b/code/__DEFINES/stat.dm index 96dceb6db2..96c72bcab2 100644 --- a/code/__DEFINES/stat.dm +++ b/code/__DEFINES/stat.dm @@ -8,35 +8,6 @@ #define UNCONSCIOUS 2 #define DEAD 3 -//mob disabilities stat - -#define DISABILITY_BLIND "blind" -#define DISABILITY_MUTE "mute" -#define DISABILITY_DEAF "deaf" -#define DISABILITY_NEARSIGHT "nearsighted" -#define DISABILITY_FAT "fat" -#define DISABILITY_HUSK "husk" -#define DISABILITY_NOCLONE "noclone" -#define DISABILITY_CLUMSY "clumsy" -#define DISABILITY_DUMB "dumb" -#define DISABILITY_MONKEYLIKE "monkeylike" //sets IsAdvancedToolUser to FALSE -#define DISABILITY_PACIFISM "pacifism" - -// common disability sources -#define EYE_DAMAGE "eye_damage" -#define GENETIC_MUTATION "genetic" -#define OBESITY "obesity" -#define MAGIC_DISABILITY "magic" -#define STASIS_MUTE "stasis" -#define GENETICS_SPELL "genetics_spell" -#define TRAUMA_DISABILITY "trauma" -#define CHEMICAL_DISABILITY "chemical" - -// unique disability sources, still defines -#define STATUE_MUTE "statue" -#define CHANGELING_DRAIN "drain" -#define ABYSSAL_GAZE_BLIND "abyssal_gaze" - // bitflags for machine stat variable #define BROKEN 1 #define NOPOWER 2 diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 6e223446fd..27cd86edd4 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -1,3 +1,7 @@ +//Update this whenever the db schema changes +//make sure you add an update to the schema_version stable in the db changelog +#define DB_MAJOR_VERSION 4 +#define DB_MINOR_VERSION 0 //Timing subsystem //Don't run if there is an identical unique timer active diff --git a/code/__DEFINES/time.dm b/code/__DEFINES/time.dm index 987d52e0cd..8bc4d039f6 100644 --- a/code/__DEFINES/time.dm +++ b/code/__DEFINES/time.dm @@ -22,6 +22,6 @@ When using time2text(), please use "DDD" to find the weekday. Refrain from using #define TICKS *world.tick_lag -#define DS2TICKS(DS) (DS/world.tick_lag) +#define DS2TICKS(DS) ((DS)/world.tick_lag) -#define TICKS2DS(T) (T TICKS) \ No newline at end of file +#define TICKS2DS(T) ((T) TICKS) \ No newline at end of file diff --git a/code/__DEFINES/tools.dm b/code/__DEFINES/tools.dm index 8b696032fa..e4eaf09347 100644 --- a/code/__DEFINES/tools.dm +++ b/code/__DEFINES/tools.dm @@ -1,6 +1,7 @@ -#define TOOL_NONE 0 -#define TOOL_CROWBAR 1 -#define TOOL_MULTITOOL 2 -#define TOOL_SCREWDRIVER 3 -#define TOOL_WIRECUTTER 4 -#define TOOL_WRENCH 5 \ No newline at end of file +// Tool types +#define TOOL_CROWBAR "crowbar" +#define TOOL_MULTITOOL "multitool" +#define TOOL_SCREWDRIVER "screwdriver" +#define TOOL_WIRECUTTER "wirecutter" +#define TOOL_WRENCH "wrench" +#define TOOL_WELDER "welder" diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm new file mode 100644 index 0000000000..b180a32674 --- /dev/null +++ b/code/__DEFINES/traits.dm @@ -0,0 +1,40 @@ +//mob traits +#define TRAIT_BLIND "blind" +#define TRAIT_MUTE "mute" +#define TRAIT_DEAF "deaf" +#define TRAIT_NEARSIGHT "nearsighted" +#define TRAIT_FAT "fat" +#define TRAIT_HUSK "husk" +#define TRAIT_NOCLONE "noclone" +#define TRAIT_CLUMSY "clumsy" +#define TRAIT_DUMB "dumb" +#define TRAIT_MONKEYLIKE "monkeylike" //sets IsAdvancedToolUser to FALSE +#define TRAIT_PACIFISM "pacifism" +#define TRAIT_IGNORESLOWDOWN "ignoreslow" +#define TRAIT_GOTTAGOFAST "fast" +#define TRAIT_GOTTAGOREALLYFAST "2fast" +#define TRAIT_FAKEDEATH "fakedeath" +#define TRAIT_DISFIGURED "disfigured" +#define TRAIT_XENO_HOST "xeno_host" //Tracks whether we're gonna be a baby alien's mummy. +#define TRAIT_STUNIMMUNE "stun_immunity" +#define TRAIT_SLEEPIMMUNE "sleep_immunity" +#define TRAIT_PUSHIMMUNE "push_immunity" +#define TRAIT_SHOCKIMMUNE "shock_immunity" + +// common trait sources +#define TRAIT_GENERIC "generic" +#define EYE_DAMAGE "eye_damage" +#define GENETIC_MUTATION "genetic" +#define OBESITY "obesity" +#define MAGIC_TRAIT "magic" +#define STASIS_MUTE "stasis" +#define GENETICS_SPELL "genetics_spell" +#define TRAUMA_TRAIT "trauma" + +// unique trait sources, still defines +#define STATUE_MUTE "statue" +#define CHANGELING_DRAIN "drain" +#define CHANGELING_HIVEMIND_MUTE "ling_mute" +#define ABYSSAL_GAZE_BLIND "abyssal_gaze" +#define HIGHLANDER "highlander" +#define TRAIT_HULK "hulk" diff --git a/code/__DEFINES/vv.dm b/code/__DEFINES/vv.dm index 807e5187b0..0617c5d345 100644 --- a/code/__DEFINES/vv.dm +++ b/code/__DEFINES/vv.dm @@ -18,4 +18,4 @@ #define VV_NULL "NULL" #define VV_RESTORE_DEFAULT "Restore to Default" #define VV_MARKED_DATUM "Marked Datum" - +#define VV_BITFIELD "Bitfield" diff --git a/code/__HELPERS/_logging.dm b/code/__HELPERS/_logging.dm index 8b7cdc0c2e..18dd85fa5b 100644 --- a/code/__HELPERS/_logging.dm +++ b/code/__HELPERS/_logging.dm @@ -24,6 +24,12 @@ #define testing(msg) #endif +#ifdef UNIT_TESTS +/proc/log_test(text) + WRITE_FILE(GLOB.test_log, "\[[time_stamp()]]: [text]") + SEND_TEXT(world.log, text) +#endif + /proc/log_admin(text) GLOB.admin_log.Add(text) if (CONFIG_GET(flag/log_admin)) diff --git a/code/__HELPERS/areas.dm b/code/__HELPERS/areas.dm index 3a35646321..3e097c46f3 100644 --- a/code/__HELPERS/areas.dm +++ b/code/__HELPERS/areas.dm @@ -42,12 +42,13 @@ if(turfs.len > BP_MAX_ROOM_SIZE) to_chat(creator, "The room you're in is too big. It is [((turfs.len / BP_MAX_ROOM_SIZE)-1)*100]% larger than allowed.") return - // This will fuck up shuttles that use the base area type but we need to fix those anyway - var/list/areas = list("New Area" = /area, "New Shuttle Area" = /area/shuttle/custom) + var/list/areas = list("New Area" = /area) for(var/i in 1 to turfs.len) var/area/place = get_area(turfs[i]) if(blacklisted_areas[place.type]) continue + if(!place.requires_power || place.noteleport || place.hidden) + continue // No expanding powerless rooms etc areas[place.name] = place var/area_choice = input(creator, "Choose an area to expand or make a new area.", "Area Expansion") as null|anything in areas area_choice = areas[area_choice] diff --git a/code/__HELPERS/dates.dm b/code/__HELPERS/dates.dm new file mode 100644 index 0000000000..240ff87b9d --- /dev/null +++ b/code/__HELPERS/dates.dm @@ -0,0 +1,47 @@ +//Curse you calenders... +/proc/IsLeapYear(y) + return ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0)) + +//Y, eg: 2017, 2018, 2019, in num form (not string) +//etc. Between 1583 and 4099 +//Adapted from a free algorithm written in BASIC (https://www.assa.org.au/edm#Computer) +/proc/EasterDate(y) + var/FirstDig, Remain19, temp //Intermediate Results + var/tA, tB, tC, tD, tE //Table A-E results + var/d, m //Day and Month returned + + FirstDig = round((y / 100)) + Remain19 = y % 19 + + temp = (round((FirstDig - 15) / 2)) + 202 - 11 * Remain19 + + switch(FirstDig) + if(21,24,25,27,28,29,30,31,32,34,35,38) + temp -= 1 + if(33,36,37,39,40) + temp -= 2 + temp %= 30 + + tA = temp + 21 + if(temp == 29) + tA -= 1 + if(temp == 28 && (Remain19 > 10)) + tA -= 1 + tB = (tA - 19) % 7 + + tC = (40 - FirstDig) % 4 + if(tC == 3) + tC += 1 + if(tC > 1) + tC += 1 + temp = y % 100 + tD = (temp + round((temp / 4))) % 7 + + tE = ((20 - tB - tC - tD) % 7) + 1 + d = tA + tE + if(d > 31) + d -= 31 + m = 4 + else + m = 3 + return list("day" = d, "month" = m) diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 2d200438ef..b120dfd52c 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -241,9 +241,6 @@ processing_list += A.contents /proc/get_mobs_in_radio_ranges(list/obj/item/device/radio/radios) - - set background = BACKGROUND_ENABLED - . = list() // Returns a list of mobs who can hear any of the radios given in @radios for(var/obj/item/device/radio/R in radios) @@ -358,7 +355,7 @@ /proc/flick_overlay(image/I, list/show_to, duration) for(var/client/C in show_to) C.images += I - addtimer(CALLBACK(GLOBAL_PROC, /.proc/remove_images_from_clients, I, show_to), duration) + addtimer(CALLBACK(GLOBAL_PROC, /.proc/remove_images_from_clients, I, show_to), duration, TIMER_CLIENT_TIME) /proc/flick_overlay_view(image/I, atom/target, duration) //wrapper for the above, flicks to everyone who can see the target atom var/list/viewing = list() @@ -479,7 +476,7 @@ if(!gametypeCheck.age_check(M.client)) continue if(jobbanType) - if(jobban_isbanned(M, jobbanType) || jobban_isbanned(M, "Syndicate")) + if(jobban_isbanned(M, jobbanType) || jobban_isbanned(M, ROLE_SYNDICATE)) continue showCandidatePollWindow(M, poll_time, Question, result, ignore_category, time_passed, flashwindow) diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 0f7f4397db..fd83cc0658 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -29,7 +29,9 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/spines_animated, GLOB.animated_spines_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/legs, GLOB.legs_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, GLOB.r_wings_list,roundstart = TRUE) - + //moffs + init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_wings, GLOB.moth_wings_list) + //CIT CHANGES START HERE, ADDS SNOWFLAKE BODYPARTS AND MORE //mammal bodyparts (fucking furries) init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_body_markings, GLOB.mam_body_markings_list) diff --git a/code/__DATASTRUCTURES/heap.dm b/code/__HELPERS/heap.dm similarity index 100% rename from code/__DATASTRUCTURES/heap.dm rename to code/__HELPERS/heap.dm index ce03b482e5..c34d5a2b9e 100644 --- a/code/__DATASTRUCTURES/heap.dm +++ b/code/__HELPERS/heap.dm @@ -38,6 +38,7 @@ while(parent > 0 && (call(cmp)(L[index],L[parent]) > 0)) L.Swap(index,parent) + index = parent parent = round(index * 0.5) @@ -67,7 +68,6 @@ //Replaces a given node so it verify the heap condition /datum/Heap/proc/ReSort(atom/A) var/index = L.Find(A) - Swim(index) Sink(index) diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm index eb09ce6daa..0e5fff082c 100644 --- a/code/__HELPERS/icons.dm +++ b/code/__HELPERS/icons.dm @@ -890,7 +890,10 @@ The _flatIcons list is a cache for generated icon files. flat.Blend(rgb(255, 255, 255, A.alpha), ICON_MULTIPLY) if(no_anim) - return icon(flat, "", SOUTH, frame=1) + //Clean up repeated frames + var/icon/cleaned = new /icon() + cleaned.Insert(flat, "", SOUTH, 1, 0) + return cleaned else return icon(flat, "", SOUTH) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 9d01999847..b2bb939b11 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -32,7 +32,7 @@ else return pick(GLOB.underwear_list)*/ -/proc/random_undershirt(gender)//Cit change - makes random underwear always return nude +/proc/random_undershirt(gender)//Cit change - makes random undershirts always return nude if(!GLOB.undershirt_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/undershirt, GLOB.undershirt_list, GLOB.undershirt_m, GLOB.undershirt_f) return "Nude" @@ -44,7 +44,7 @@ else return pick(GLOB.undershirt_list)*/ -/proc/random_socks()//Cit change - makes random underwear always return nude +/proc/random_socks()//Cit change - makes random socks always return nude if(!GLOB.socks_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/socks, GLOB.socks_list) return "Nude" @@ -71,6 +71,8 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/body_markings, GLOB.body_markings_list) if(!GLOB.wings_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/wings, GLOB.wings_list) + if(!GLOB.moth_wings_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_wings, GLOB.moth_wings_list) //CIT CHANGES - genitals and such if(!GLOB.cock_shapes_list.len) @@ -109,6 +111,7 @@ "spines" = pick(GLOB.spines_list), "body_markings" = pick(GLOB.body_markings_list), "legs" = "Normal Legs", + "moth_wings" = pick(GLOB.moth_wings_list), "taur" = "None", "mam_body_markings" = "None", "mam_ears" = "None", @@ -163,7 +166,6 @@ "womb_efficiency" = CUM_EFFICIENCY, "womb_fluid" = "femcum", "flavor_text" = "")) - /proc/random_hair_style(gender) switch(gender) if(MALE) @@ -183,27 +185,34 @@ return pick(GLOB.facial_hair_styles_list) /proc/random_unique_name(gender, attempts_to_find_unique_name=10) - for(var/i=1, i<=attempts_to_find_unique_name, i++) + for(var/i in 1 to attempts_to_find_unique_name) if(gender==FEMALE) . = capitalize(pick(GLOB.first_names_female)) + " " + capitalize(pick(GLOB.last_names)) else . = capitalize(pick(GLOB.first_names_male)) + " " + capitalize(pick(GLOB.last_names)) - if(i != attempts_to_find_unique_name && !findname(.)) + if(!findname(.)) break /proc/random_unique_lizard_name(gender, attempts_to_find_unique_name=10) - for(var/i=1, i<=attempts_to_find_unique_name, i++) + for(var/i in 1 to attempts_to_find_unique_name) . = capitalize(lizard_name(gender)) - if(i != attempts_to_find_unique_name && !findname(.)) + if(!findname(.)) break /proc/random_unique_plasmaman_name(attempts_to_find_unique_name=10) - for(var/i=1, i<=attempts_to_find_unique_name, i++) + for(var/i in 1 to attempts_to_find_unique_name) . = capitalize(plasmaman_name()) - if(i != attempts_to_find_unique_name && !findname(.)) + if(!findname(.)) + break + +/proc/random_unique_moth_name(attempts_to_find_unique_name=10) + for(var/i in 1 to attempts_to_find_unique_name) + . = capitalize(moth_name()) + + if(!findname(.)) break /proc/random_skin_tone() @@ -580,3 +589,24 @@ Proc for attack log creation, because really why not warning("Invalid speech logging type detected. [logtype]. Defaulting to say") log_say(logmessage) +//Used in chemical_mob_spawn. Generates a random mob based on a given gold_core_spawnable value. +/proc/create_random_mob(spawn_location, mob_class = HOSTILE_SPAWN) + var/static/list/mob_spawn_meancritters = list() // list of possible hostile mobs + var/static/list/mob_spawn_nicecritters = list() // and possible friendly mobs + + if(mob_spawn_meancritters.len <= 0 || mob_spawn_nicecritters.len <= 0) + for(var/T in typesof(/mob/living/simple_animal)) + var/mob/living/simple_animal/SA = T + switch(initial(SA.gold_core_spawnable)) + if(HOSTILE_SPAWN) + mob_spawn_meancritters += T + if(FRIENDLY_SPAWN) + mob_spawn_nicecritters += T + + var/chosen + if(mob_class == FRIENDLY_SPAWN) + chosen = pick(mob_spawn_nicecritters) + else + chosen = pick(mob_spawn_meancritters) + var/mob/living/simple_animal/C = new chosen(spawn_location) + return C diff --git a/code/__HELPERS/names.dm b/code/__HELPERS/names.dm index e019af213f..8fbb5d805b 100644 --- a/code/__HELPERS/names.dm +++ b/code/__HELPERS/names.dm @@ -9,6 +9,9 @@ /proc/plasmaman_name() return "[pick(GLOB.plasmaman_names)] \Roman[rand(1,99)]" +/proc/moth_name() + return "[pick(GLOB.moth_names)]" + /proc/church_name() var/static/church_name if (church_name) diff --git a/code/__HELPERS/roundend.dm b/code/__HELPERS/roundend.dm index bd18ce239f..ee575f686f 100644 --- a/code/__HELPERS/roundend.dm +++ b/code/__HELPERS/roundend.dm @@ -391,6 +391,7 @@ if(X.get_team() == T) all_antagonists -= X result += " "//newline between teams + CHECK_TICK var/currrent_category var/datum/antagonist/previous_category @@ -410,6 +411,7 @@ previous_category = A result += A.roundend_report() result += "

" + CHECK_TICK if(all_antagonists.len) var/datum/antagonist/last = all_antagonists[all_antagonists.len] diff --git a/code/__HELPERS/sorts/InsertSort.dm b/code/__HELPERS/sorts/InsertSort.dm index 23e0dc8876..962709527e 100644 --- a/code/__HELPERS/sorts/InsertSort.dm +++ b/code/__HELPERS/sorts/InsertSort.dm @@ -8,9 +8,12 @@ if(toIndex <= 0) toIndex += L.len + 1 - GLOB.sortInstance.L = L - GLOB.sortInstance.cmp = cmp - GLOB.sortInstance.associative = associative + var/datum/sortInstance/SI = GLOB.sortInstance + if(!SI) + SI = new + SI.L = L + SI.cmp = cmp + SI.associative = associative - GLOB.sortInstance.binarySort(fromIndex, toIndex, fromIndex) + SI.binarySort(fromIndex, toIndex, fromIndex) return L \ No newline at end of file diff --git a/code/__HELPERS/sorts/MergeSort.dm b/code/__HELPERS/sorts/MergeSort.dm index cc47123b3c..39d3799725 100644 --- a/code/__HELPERS/sorts/MergeSort.dm +++ b/code/__HELPERS/sorts/MergeSort.dm @@ -8,9 +8,12 @@ if(toIndex <= 0) toIndex += L.len + 1 - GLOB.sortInstance.L = L - GLOB.sortInstance.cmp = cmp - GLOB.sortInstance.associative = associative - GLOB.sortInstance.mergeSort(fromIndex, toIndex) + var/datum/sortInstance/SI = GLOB.sortInstance + if(!SI) + SI = new + SI.L = L + SI.cmp = cmp + SI.associative = associative + SI.mergeSort(fromIndex, toIndex) return L \ No newline at end of file diff --git a/code/__HELPERS/sorts/TimSort.dm b/code/__HELPERS/sorts/TimSort.dm index 8cfb792672..d709044dc0 100644 --- a/code/__HELPERS/sorts/TimSort.dm +++ b/code/__HELPERS/sorts/TimSort.dm @@ -8,10 +8,13 @@ if(toIndex <= 0) toIndex += L.len + 1 - GLOB.sortInstance.L = L - GLOB.sortInstance.cmp = cmp - GLOB.sortInstance.associative = associative + var/datum/sortInstance/SI = GLOB.sortInstance + if(!SI) + SI = new - GLOB.sortInstance.timSort(fromIndex, toIndex) + SI.L = L + SI.cmp = cmp + SI.associative = associative + SI.timSort(fromIndex, toIndex) return L \ No newline at end of file diff --git a/code/__HELPERS/text_vr.dm b/code/__HELPERS/text_vr.dm index 7cd683f456..846cb1b26a 100644 --- a/code/__HELPERS/text_vr.dm +++ b/code/__HELPERS/text_vr.dm @@ -17,11 +17,11 @@ proc/TextPreview(var/string,var/len=40) else return "[copytext(string, 1, 37)]..." -GLOBAL_LIST_EMPTY(mentor_log) -GLOBAL_PROTECT(mentor_log) +GLOBAL_LIST_EMPTY(mentorlog) +GLOBAL_PROTECT(mentorlog) GLOBAL_LIST_EMPTY(whitelisted_species_list) /proc/log_mentor(text) - GLOB.mentor_log.Add(text) - GLOB.world_game_log << "\[[time_stamp()]]MENTOR: [text]" \ No newline at end of file + GLOB.mentorlog.Add(text) + GLOB.world_game_log << "\[[time_stamp()]]MENTOR: [text]" \ No newline at end of file diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index 372dc64cab..59f9a82309 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -65,6 +65,7 @@ return . //Splits the text of a file at seperator and returns them in a list. +//returns an empty list if the file doesn't exist /world/proc/file2list(filename, seperator="\n", trim = TRUE) if (trim) return splittext(trim(file2text(filename)),seperator) @@ -589,4 +590,4 @@ for(var/i = 1 to length(str)/2) c= hex2num(copytext(str,i*2-1,i*2+1)) r+= ascii2text(c) - return r \ No newline at end of file + return r diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index aaabbef74b..598fb8b7a2 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1511,7 +1511,7 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) usr = M . = CB.Invoke() usr = temp - + //Returns a list of all servants of Ratvar and observers. /proc/servants_and_ghosts() . = list() diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index 7acb5bf729..ebf86ed666 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -34,6 +34,7 @@ GLOBAL_LIST_EMPTY(ears_list) GLOBAL_LIST_EMPTY(wings_list) GLOBAL_LIST_EMPTY(wings_open_list) GLOBAL_LIST_EMPTY(r_wings_list) +GLOBAL_LIST_EMPTY(moth_wings_list) GLOBAL_LIST_INIT(ghost_forms_with_directions_list, list("ghost")) //stores the ghost forms that support directional sprites GLOBAL_LIST_INIT(ghost_forms_with_accessories_list, list("ghost")) //stores the ghost forms that support hair and other such things diff --git a/code/_globalvars/lists/names.dm b/code/_globalvars/lists/names.dm index ad5e18d3f7..eaaa2c1755 100644 --- a/code/_globalvars/lists/names.dm +++ b/code/_globalvars/lists/names.dm @@ -13,6 +13,7 @@ GLOBAL_LIST_INIT(clown_names, world.file2list("strings/names/clown.txt")) GLOBAL_LIST_INIT(mime_names, world.file2list("strings/names/mime.txt")) GLOBAL_LIST_INIT(carp_names, world.file2list("strings/names/carp.txt")) GLOBAL_LIST_INIT(golem_names, world.file2list("strings/names/golem.txt")) +GLOBAL_LIST_INIT(moth_names, world.file2list("strings/names/moth.txt")) GLOBAL_LIST_INIT(plasmaman_names, world.file2list("strings/names/plasmaman.txt")) GLOBAL_LIST_INIT(posibrain_names, world.file2list("strings/names/posibrain.txt")) GLOBAL_LIST_INIT(nightmare_names, world.file2list("strings/names/nightmare.txt")) diff --git a/code/_globalvars/misc.dm b/code/_globalvars/misc.dm index 8b8b817586..807ec5c5fe 100644 --- a/code/_globalvars/misc.dm +++ b/code/_globalvars/misc.dm @@ -17,4 +17,10 @@ GLOBAL_LIST_EMPTY(powernets) GLOBAL_VAR_INIT(bsa_unlock, FALSE) //BSA unlocked by head ID swipes -GLOBAL_LIST_EMPTY(player_details) // ckey -> /datum/player_details \ No newline at end of file +GLOBAL_LIST_EMPTY(player_details) // ckey -> /datum/player_details + +GLOBAL_LIST_INIT(bitfields, list( + "obj_flags" = list("EMAGGED" = EMAGGED, "IN_USE" = IN_USE, "CAN_BE_HIT" = CAN_BE_HIT, "BEING_SHOCKED" = BEING_SHOCKED, "DANGEROUS_POSSESSION" = DANGEROUS_POSSESSION, "ON_BLUEPRINTS" = ON_BLUEPRINTS, "UNIQUE_RENAME" = UNIQUE_RENAME), + "datum_flags" = list("DF_USE_TAG" = DF_USE_TAG, "DF_VAR_EDITED" = DF_VAR_EDITED), + "item_flags" = list("BEING_REMOVED" = BEING_REMOVED, "IN_INVENTORY" = IN_INVENTORY, "FORCE_STRING_OVERRIDE" = FORCE_STRING_OVERRIDE, "NEEDS_PERMIT" = NEEDS_PERMIT) + )) diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index e97f4d5426..ac03465773 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -130,16 +130,16 @@ /* Airlocks */ /obj/machinery/door/airlock/AICtrlClick() // Bolts doors - if(emagged) + if(obj_flags & EMAGGED) return - + if(locked) bolt_raise(usr) else bolt_drop(usr) /obj/machinery/door/airlock/AIAltClick() // Eletrifies doors. - if(emagged) + if(obj_flags & EMAGGED) return if(!secondsElectrified) @@ -148,15 +148,15 @@ shock_restore(usr) /obj/machinery/door/airlock/AIShiftClick() // Opens and closes doors! - if(emagged) + if(obj_flags & EMAGGED) return user_toggle_open(usr) /obj/machinery/door/airlock/AICtrlShiftClick() // Sets/Unsets Emergency Access Override - if(emagged) + if(obj_flags & EMAGGED) return - + if(!emergency) emergency_on(usr) else diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index 97d6549048..4379398a7d 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -330,20 +330,20 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." var/datum/objective/eldergod/summon_objective = locate() in antag.cult_team.objectives if(!summon_objective) return + desc = "The sacrifice is complete, summon Nar-Sie! The summoning can only take place in [english_list(summon_objective.summon_spots)]!" if(icon_state == "runed_sense1") return animate(src, transform = null, time = 1, loop = 0) angle = 0 cut_overlays() icon_state = "runed_sense1" - desc = "The sacrifice is complete, summon Nar-Sie! The summoning can only take place in [english_list(summon_objective.summon_spots)]!" add_overlay(narnar) return var/turf/P = get_turf(blood_target) var/turf/Q = get_turf(mob_viewer) - if(P.z != Q.z) //The target is on a different Z level, we cannot sense that far. + if(!P || !Q || (P.z != Q.z)) //The target is on a different Z level, we cannot sense that far. icon_state = "runed_sense2" - desc = "[blood_target] is no longer in your sector, you cannot sense its presence here." + desc = "You can no longer sense your target's presence." return desc = "You are currently tracking [blood_target] in [get_area_name(blood_target)]." var/target_angle = Get_Angle(Q, P) @@ -419,7 +419,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." time_name = "until the Ark finishes summoning" if(time_info) textlist += "[time_info / 60] minutes [time_name].
" - textlist += "[DisplayPower(get_clockwork_power())] power available for use." + textlist += "[DisplayPower(get_clockwork_power())] / [DisplayPower(MAX_CLOCKWORK_POWER)] power available for use." desc = textlist.Join() ..() diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 10744f401d..c7df44dfec 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -548,7 +548,7 @@ /obj/screen/splash/New(client/C, visible, use_previous_title) //TODO: Make this use INITIALIZE_IMMEDIATE, except its not easy . = ..() - + holder = C if(!visible) @@ -565,8 +565,6 @@ holder.screen += src - ..() - /obj/screen/splash/proc/Fade(out, qdel_after = TRUE) if(QDELETED(src)) return diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 8a5b9ba519..3368960da4 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -1,6 +1,6 @@ /obj/item/proc/melee_attack_chain(mob/user, atom/target, params) - if(!tool_check(user, target) && pre_attackby(target, user, params)) + if(!tool_attack_chain(user, target) && pre_attackby(target, user, params)) // Return 1 in attackby() to prevent afterattack() effects (when safely moving items for example) var/resolved = target.attackby(src, user, params) if(!resolved && target && !QDELETED(src)) @@ -8,20 +8,11 @@ //Checks if the item can work as a tool, calling the appropriate tool behavior on the target -/obj/item/proc/tool_check(mob/user, atom/target) - switch(tool_behaviour) - if(TOOL_NONE) - return FALSE - if(TOOL_CROWBAR) - return target.crowbar_act(user, src) - if(TOOL_MULTITOOL) - return target.multitool_act(user, src) - if(TOOL_SCREWDRIVER) - return target.screwdriver_act(user, src) - if(TOOL_WRENCH) - return target.wrench_act(user, src) - if(TOOL_WIRECUTTER) - return target.wirecutter_act(user, src) +/obj/item/proc/tool_attack_chain(mob/user, atom/target) + if(!tool_behaviour) + return FALSE + + return target.tool_act(user, src, tool_behaviour) // Called when the item is in the active hand, and clicked; alternately, there is an 'activate held object' verb or you can hit pagedown. @@ -39,7 +30,7 @@ return FALSE /obj/attackby(obj/item/I, mob/living/user, params) - return ..() || (can_be_hit && I.attack_obj(src, user)) + return ..() || ((obj_flags & CAN_BE_HIT) && I.attack_obj(src, user)) /mob/living/attackby(obj/item/I, mob/living/user, params) user.changeNext_move(CLICK_CD_MELEE) @@ -59,10 +50,10 @@ if(flags_1 & NOBLUDGEON_1) return - if(force && user.has_disability(DISABILITY_PACIFISM)) + if(force && user.has_trait(TRAIT_PACIFISM)) to_chat(user, "You don't want to harm other living beings!") return - + if(!force) playsound(loc, 'sound/weapons/tap.ogg', get_clamped_volume(), 1, -1) else if(hitsound) diff --git a/code/citadel/_cit_helpers.dm b/code/citadel/_cit_helpers.dm index 1eacc01ef3..f4772fa464 100644 --- a/code/citadel/_cit_helpers.dm +++ b/code/citadel/_cit_helpers.dm @@ -86,9 +86,6 @@ GLOBAL_LIST_INIT(dildo_colors, list(//mostly neon colors "Purple" = "#e300ff"//purple )) -//mentor stuff -GLOBAL_LIST_EMPTY(mentors) - //Looc stuff GLOBAL_VAR_INIT(looc_allowed, 1) GLOBAL_VAR_INIT(dlooc_allowed, 1) diff --git a/code/citadel/cit_guns.dm b/code/citadel/cit_guns.dm index 8f113494cb..a0a80bdbfb 100644 --- a/code/citadel/cit_guns.dm +++ b/code/citadel/cit_guns.dm @@ -182,7 +182,7 @@ icon = 'icons/obj/guns/cit_guns.dmi' icon_state = "toy9" can_suppress = 0 - needs_permit = 0 + obj_flags = 0 mag_type = /obj/item/ammo_box/magazine/toy/x9 casing_ejector = 0 spread = 90 //MAXIMUM XCOM MEMES (actually that'd be 180 spread) @@ -489,7 +489,7 @@ name = "foamag rifle" desc = "A foam launching magnetic rifle. Ages 8 and up." icon_state = "foamagrifle" - needs_permit = FALSE + obj_flags = 0 mag_type = /obj/item/ammo_box/magazine/toy/foamag casing_ejector = FALSE spread = 60 @@ -617,7 +617,7 @@ icon = 'icons/obj/guns/cit_guns.dmi' icon_state = "toyburst" clumsy_check = FALSE - needs_permit = FALSE + obj_flags = 0 fire_delay = 40 weapon_weight = WEAPON_HEAVY selfcharge = TRUE @@ -772,7 +772,7 @@ obj/item/projectile/bullet/c10mm/soporific caliber = "flechette" throwforce = 2 throw_speed = 3 - embed_chance = 75 + embedding = list("embedded_pain_multiplier" = 0, "embed_chance" = 40, "embedded_fall_chance" = 10) ///magazine/// @@ -858,7 +858,7 @@ obj/item/projectile/bullet/c10mm/soporific icon = 'icons/obj/guns/cit_guns.dmi' icon_state = "cde" can_unsuppress = TRUE - unique_rename = TRUE + obj_flags = UNIQUE_RENAME unique_reskin = list("Default" = "cde", "NT-99" = "n99", "Stealth" = "stealthpistol", @@ -1154,7 +1154,7 @@ obj/item/projectile/bullet/c10mm/soporific icon_state = "p37_foam" pin = /obj/item/device/firing_pin spawnwithmagazine = TRUE - needs_permit = FALSE + obj_flags = 0 mag_type = /obj/item/ammo_box/magazine/toy/pistol can_suppress = FALSE actions_types = list(/datum/action/item_action/pick_color) @@ -1216,3 +1216,86 @@ obj/item/gun/energy/e_gun/cx/worn_overlays(isinhands, icon_file) /obj/item/ammo_box/magazine/toy/pistol //forcing this might be a bad idea, but it'll fix the foam gun infinite material exploit materials = list(MAT_METAL = 200) + +/*///////////////////////////////////////////////////////////// +//////////////////////// Zero's Meme ////////////////////////// +*////////////////////////////////////////////////////////////// +/obj/item/ammo_box/magazine/toy/AM4B + name = "foam force AM4-B magazine" + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "AM4MAG-60" + max_ammo = 60 + multiple_sprites = 0 + materials = list(MAT_METAL = 200) + +/obj/item/gun/ballistic/automatic/AM4B + name = "AM4-B" + desc = "A Relic from a bygone age. Nobody quite knows why it's here. Has a polychromic coating." + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "AM4" + item_state = "arg" + mag_type = /obj/item/ammo_box/magazine/toy/AM4B + can_suppress = 0 + item_flags = NEEDS_PERMIT + casing_ejector = 0 + spread = 30 //Assault Rifleeeeeee + w_class = WEIGHT_CLASS_NORMAL + burst_size = 4 //Shh. + fire_delay = 1 + var/body_color = "#3333aa" + +/obj/item/gun/ballistic/automatic/AM4B/update_icon() + ..() + var/mutable_appearance/body_overlay = mutable_appearance('icons/obj/guns/cit_guns.dmi', "AM4-Body") + if(body_color) + body_overlay.color = body_color + cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other + add_overlay(body_overlay) + if(ismob(loc)) + var/mob/M = loc + M.update_inv_hands() +/obj/item/gun/ballistic/automatic/AM4B/AltClick(mob/living/user) + if(!in_range(src, user)) //Basic checks to prevent abuse + return + if(user.incapacitated() || !istype(user)) + to_chat(user, "You can't do that right now!") + return + if(alert("Are you sure you want to recolor your gun?", "Confirm Repaint", "Yes", "No") == "Yes") + var/body_color_input = input(usr,"Choose Shroud Color") as color|null + if(body_color_input) + body_color = sanitize_hexcolor(body_color_input, desired_format=6, include_crunch=1) + update_icon() +/obj/item/gun/ballistic/automatic/AM4B/examine(mob/user) + ..() + to_chat(user, "Alt-click to recolor it.") + +/obj/item/ammo_box/magazine/toy/AM4C + name = "foam force AM4-C magazine" + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "AM4MAG-32" + max_ammo = 32 + multiple_sprites = 0 + materials = list(MAT_METAL = 200) + +/obj/item/gun/ballistic/automatic/AM4C + name = "AM4-C" + desc = "A Relic from a bygone age. This one seems newer, yet less effective." + icon = 'icons/obj/guns/cit_guns.dmi' + icon_state = "AM4C" + item_state = "arg" + mag_type = /obj/item/ammo_box/magazine/toy/AM4C + can_suppress = 0 + item_flags = NEEDS_PERMIT + casing_ejector = 0 + spread = 45 //Assault Rifleeeeeee + w_class = WEIGHT_CLASS_NORMAL + burst_size = 4 //Shh. + fire_delay = 1 + +/datum/design/am4c + name = "Foam Force AM4-C Rifle" + id = "foam_am4c" + build_type = AUTOLATHE + materials = list(MAT_METAL = 24000, MAT_GLASS = 14000) + build_path = /obj/item/gun/ballistic/automatic/AM4C + category = list("hacked", "Misc") diff --git a/code/citadel/dogborgstuff.dm b/code/citadel/dogborgstuff.dm index 2713b19976..bfa40c6cda 100644 --- a/code/citadel/dogborgstuff.dm +++ b/code/citadel/dogborgstuff.dm @@ -31,32 +31,30 @@ /obj/item/dogborg/jaws/small/attack_self(mob/user) var/mob/living/silicon/robot.R = user if(R.emagged) - emagged = !emagged - if(emagged) - name = "combat jaws" - icon = 'icons/mob/dogborg.dmi' - icon_state = "jaws" - desc = "The jaws of the law." - flags_1 = CONDUCT_1 - force = 12 - throwforce = 0 - hitsound = 'sound/weapons/bite.ogg' - attack_verb = list("chomped", "bit", "ripped", "mauled", "enforced") - w_class = 3 - sharpness = IS_SHARP - else - name = "puppy jaws" - icon = 'icons/mob/dogborg.dmi' - icon_state = "smalljaws" - desc = "The jaws of a small dog." - flags_1 = CONDUCT_1 - force = 5 - throwforce = 0 - hitsound = 'sound/weapons/bite.ogg' - attack_verb = list("nibbled", "bit", "gnawed", "chomped", "nommed") - w_class = 3 - sharpness = IS_SHARP - update_icon() + name = "combat jaws" + icon = 'icons/mob/dogborg.dmi' + icon_state = "jaws" + desc = "The jaws of the law." + flags_1 = CONDUCT_1 + force = 12 + throwforce = 0 + hitsound = 'sound/weapons/bite.ogg' + attack_verb = list("chomped", "bit", "ripped", "mauled", "enforced") + w_class = 3 + sharpness = IS_SHARP + else + name = "puppy jaws" + icon = 'icons/mob/dogborg.dmi' + icon_state = "smalljaws" + desc = "The jaws of a small dog." + flags_1 = CONDUCT_1 + force = 5 + throwforce = 0 + hitsound = 'sound/weapons/bite.ogg' + attack_verb = list("nibbled", "bit", "gnawed", "chomped", "nommed") + w_class = 3 + sharpness = IS_SHARP + update_icon() //Cuffs @@ -189,107 +187,101 @@ /obj/item/soap/tongue/attack_self(mob/user) var/mob/living/silicon/robot.R = user if(R.emagged) - emagged = !emagged - if(emagged) - name = "hacked tongue of doom" - desc = "Your tongue has been upgraded successfully. Congratulations." - icon = 'icons/mob/dogborg.dmi' - icon_state = "syndietongue" - cleanspeed = 10 //(nerf'd)tator soap stat - else - name = "synthetic tongue" - desc = "Useful for slurping mess off the floor before affectionally licking the crew members in the face." - icon = 'icons/mob/dogborg.dmi' - icon_state = "synthtongue" - cleanspeed = initial(cleanspeed) - update_icon() + name = "hacked tongue of doom" + desc = "Your tongue has been upgraded successfully. Congratulations." + icon = 'icons/mob/dogborg.dmi' + icon_state = "syndietongue" + cleanspeed = 10 //(nerf'd)tator soap stat + else + name = "synthetic tongue" + desc = "Useful for slurping mess off the floor before affectionally licking the crew members in the face." + icon = 'icons/mob/dogborg.dmi' + icon_state = "synthtongue" + cleanspeed = initial(cleanspeed) + update_icon() /obj/item/soap/tongue/afterattack(atom/target, mob/user, proximity) + var/mob/living/silicon/robot.R = user if(!proximity || !check_allowed_items(target)) return - if(user.client && (target in user.client.screen)) - to_chat(user, "You need to take that [target.name] off before cleaning it!") + if(R.client && (target in R.client.screen)) + to_chat(R, "You need to take that [target.name] off before cleaning it!") else if(istype(target,/obj/effect/decal/cleanable)) - user.visible_message("[user] begins to lick off \the [target.name].", "You begin to lick off \the [target.name]...") - if(do_after(user, src.cleanspeed, target = target)) + R.visible_message("[R] begins to lick off \the [target.name].", "You begin to lick off \the [target.name]...") + if(do_after(R, src.cleanspeed, target = target)) if(!in_range(src, target)) //Proximity is probably old news by now, do a new check. return //If they moved away, you can't eat them. - to_chat(user, "You finish licking off \the [target.name].") + to_chat(R, "You finish licking off \the [target.name].") qdel(target) - var/mob/living/silicon/robot.R = user R.cell.give(50) else if(istype(target,/obj/item)) //hoo boy. danger zone man if(istype(target,/obj/item/trash)) - user.visible_message("[user] nibbles away at \the [target.name].", "You begin to nibble away at \the [target.name]...") - if(do_after(user, src.cleanspeed, target = target)) + R.visible_message("[R] nibbles away at \the [target.name].", "You begin to nibble away at \the [target.name]...") + if(do_after(R, src.cleanspeed, target = target)) if(!in_range(src, target)) //Proximity is probably old news by now, do a new check. return //If they moved away, you can't eat them. - to_chat(user, "You finish off \the [target.name].") + to_chat(R, "You finish off \the [target.name].") qdel(target) - var/mob/living/silicon/robot.R = user R.cell.give(250) return if(istype(target,/obj/item/stock_parts/cell)) - user.visible_message("[user] begins cramming \the [target.name] down its throat.", "You begin cramming \the [target.name] down your throat...") - if(do_after(user, 50, target = target)) + R.visible_message("[R] begins cramming \the [target.name] down its throat.", "You begin cramming \the [target.name] down your throat...") + if(do_after(R, 50, target = target)) if(!in_range(src, target)) //Proximity is probably old news by now, do a new check. return //If they moved away, you can't eat them. - to_chat(user, "You finish off \the [target.name].") - var/mob/living/silicon/robot.R = user + to_chat(R, "You finish off \the [target.name].") var/obj/item/stock_parts/cell.C = target R.cell.charge = R.cell.charge + (C.charge / 3) //Instant full cell upgrades op idgaf qdel(target) return var/obj/item/I = target //HAHA FUCK IT, NOT LIKE WE ALREADY HAVE A SHITTON OF WAYS TO REMOVE SHIT - if(!I.anchored && src.emagged) - user.visible_message("[user] begins chewing up \the [target.name]. Looks like it's trying to loophole around its diet restriction!", "You begin chewing up \the [target.name]...") - if(do_after(user, 100, target = I)) //Nerf dat time yo + if(!I.anchored && R.emagged) + R.visible_message("[R] begins chewing up \the [target.name]. Looks like it's trying to loophole around its diet restriction!", "You begin chewing up \the [target.name]...") + if(do_after(R, 100, target = I)) //Nerf dat time yo if(!in_range(src, target)) //Proximity is probably old news by now, do a new check. Even emags don't make you magically eat things at range. return //If they moved away, you can't eat them. - visible_message("[user] chews up \the [target.name] and cleans off the debris!") - to_chat(user, "You finish off \the [target.name].") + visible_message("[R] chews up \the [target.name] and cleans off the debris!") + to_chat(R, "You finish off \the [target.name].") qdel(I) - var/mob/living/silicon/robot.R = user R.cell.give(500) return - user.visible_message("[user] begins to lick \the [target.name] clean...", "You begin to lick \the [target.name] clean...") - if(do_after(user, src.cleanspeed, target = target)) + R.visible_message("[R] begins to lick \the [target.name] clean...", "You begin to lick \the [target.name] clean...") + if(do_after(R, src.cleanspeed, target = target)) if(!in_range(src, target)) //Proximity is probably old news by now, do a new check. return //If they moved away, you can't clean them. - to_chat(user,"You clean \the [target.name].") + to_chat(R,"You clean \the [target.name].") var/obj/effect/decal/cleanable/C = locate() in target qdel(C) SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) else if(ishuman(target)) - if(src.emagged) - var/mob/living/silicon/robot.R = user + if(R.emagged) var/mob/living/L = target if(R.cell.charge <= 666) return L.Stun(4) // normal stunbaton is force 7 gimme a break good sir! L.Knockdown(80) L.apply_effect(STUTTER, 4) - L.visible_message("[user] has shocked [L] with its tongue!", \ - "[user] has shocked you with its tongue! You can feel the betrayal.") + L.visible_message("[R] has shocked [L] with its tongue!", \ + "[R] has shocked you with its tongue! You can feel the betrayal.") playsound(loc, 'sound/weapons/Egloves.ogg', 50, 1, -1) R.cell.use(666) else - user.visible_message("\the [user] affectionally licks \the [target]'s face!", "You affectionally lick \the [target]'s face!") + R.visible_message("\the [R] affectionally licks \the [target]'s face!", "You affectionally lick \the [target]'s face!") playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1) return else if(istype(target, /obj/structure/window)) - user.visible_message("[user] begins to lick \the [target.name] clean...", "You begin to lick \the [target.name] clean...") - if(do_after(user, src.cleanspeed, target = target)) + R.visible_message("[R] begins to lick \the [target.name] clean...", "You begin to lick \the [target.name] clean...") + if(do_after(R, src.cleanspeed, target = target)) if(!in_range(src, target)) //Proximity is probably old news by now, do a new check. return //If they moved away, you can't clean them. - to_chat(user, "You clean \the [target.name].") + to_chat(R, "You clean \the [target.name].") target.color = initial(target.color) else - user.visible_message("[user] begins to lick \the [target.name] clean...", "You begin to lick \the [target.name] clean...") - if(do_after(user, src.cleanspeed, target = target)) + R.visible_message("[R] begins to lick \the [target.name] clean...", "You begin to lick \the [target.name] clean...") + if(do_after(R, src.cleanspeed, target = target)) if(!in_range(src, target)) //Proximity is probably old news by now, do a new check. return //If they moved away, you can't clean them. - to_chat(user, "You clean \the [target.name].") + to_chat(R, "You clean \the [target.name].") var/obj/effect/decal/cleanable/C = locate() in target qdel(C) SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD) @@ -338,10 +330,10 @@ var/escape_in_progress = FALSE var/message_cooldown var/breakout_time = 300 - var/list/items_preserved = list( + var/list/items_preserved = list() + var/static/list/important_items = typecacheof(list( /obj/item/hand_tele, /obj/item/card/id, - /obj/item/device/pda, /obj/item/device/aicard, /obj/item/gun, /obj/item/pinpointer, @@ -359,31 +351,11 @@ /obj/item/documents/syndicate, /obj/item/disk/nuclear, /obj/item/bombcore, - /obj/item/grenade - ) + /obj/item/grenade, + /obj/item/storage + )) - var/list/important_items = list( - /obj/item/hand_tele, - /obj/item/card/id/captains_spare, - /obj/item/device/aicard, - /obj/item/gun, - /obj/item/pinpointer, - /obj/item/clothing/shoes/magboots, - /obj/item/clothing/head/helmet/space, - /obj/item/clothing/suit/space, - /obj/item/reagent_containers/hypospray/CMO, - /obj/item/tank/jetpack/oxygen/captain, - /obj/item/clothing/accessory/medal/gold/captain, - /obj/item/clothing/suit/armor, - /obj/item/documents, - /obj/item/nuke_core, - /obj/item/nuke_core_container, - /obj/item/areaeditor/blueprints, - /obj/item/documents/syndicate, - /obj/item/disk/nuclear, - /obj/item/bombcore, - /obj/item/grenade - ) +// Bags are prohibited from this due to the potential explotation of objects, same with brought /obj/item/device/dogborg/sleeper/New() ..() @@ -397,7 +369,7 @@ hound = loc if(!proximity) return - if(!ishuman(target)) + if(!iscarbon(target)) return if(target.buckled) to_chat(user, "The user is buckled and can not be put into your [src.name].") @@ -405,8 +377,9 @@ if(patient) to_chat(user, "Your [src.name] is already occupied.") return + testing("using sleeper/afterattack") user.visible_message("[hound.name] is carefully inserting [target.name] into their [src.name].", "You start placing [target] into your [src]...") - if(!patient && ishuman(target) && !target.buckled && do_after (user, 50, target = target)) + if(!patient && iscarbon(target) && !target.buckled && do_after (user, 50, target = target)) if(!in_range(src, target)) //Proximity is probably old news by now, do a new check. return //If they moved away, you can't eat them. @@ -414,10 +387,10 @@ if(patient) return //If you try to eat two people at once, you can only eat one. else //If you don't have someone in you, proceed. - if(!isslimeperson(target) && ("toxin" in injection_chems)) + if(!isjellyperson(target) && ("toxin" in injection_chems)) injection_chems -= "toxin" injection_chems += "antitoxin" - if(isslimeperson(target) && !("toxin" in injection_chems)) + if(isjellyperson(target) && !("toxin" in injection_chems)) injection_chems -= "antitoxin" injection_chems += "toxin" target.forceMove(src) @@ -451,8 +424,8 @@ if(length(contents) > 0) hound.visible_message("[hound.name] empties out their contents via their release port.", "You empty your contents via your release port.") if(target) - if(ishuman(target)) - var/mob/living/carbon/human/person = target + if(iscarbon(target)) + var/mob/living/carbon/person = target person.forceMove(get_turf(src)) person.reset_perspective() else @@ -460,8 +433,8 @@ T.loc = hound.loc else for(var/C in contents) - if(ishuman(C)) - var/mob/living/carbon/human/person = C + if(iscarbon(C)) + var/mob/living/carbon/person = C person.forceMove(get_turf(src)) person.reset_perspective() else @@ -580,7 +553,6 @@ hound.update_icons() //Return original patient return(patient) - //Check for a new patient else for(var/mob/living/carbon/human/C in contents) @@ -601,7 +573,6 @@ if(cleaning && !patient) hound.sleeper_r = 1 hound.sleeper_g = 0 - //Couldn't find anyone, and not cleaning else if(!cleaning && !patient) hound.sleeper_r = 0 @@ -615,18 +586,15 @@ //Gurgleborg process /obj/item/device/dogborg/sleeper/proc/clean_cycle() testing("clean_cycle activated") - //Sanity? Maybe not required. More like if indigestible person OOC escapes. + //Sanity for(var/I in items_preserved) if(!(I in contents)) items_preserved -= I - var/list/touchable_items = contents - items_preserved - if(cleaning_cycles) testing("clean_cycle being used") cleaning_cycles-- cleaning = TRUE - //Burn all the mobs or add them to the exclusion list for(var/mob/living/carbon/human/T in (touchable_items)) if((T.status_flags & GODMODE) || !T.digestable) src.items_preserved += T @@ -634,38 +602,11 @@ T.adjustBruteLoss(2) T.adjustFireLoss(3) update_gut() - addtimer(CALLBACK(src, .proc/clean_cycle), 50) - else - testing("clean_cycle resetted") - cleaning_cycles = initial(cleaning_cycles) - cleaning = FALSE - update_gut() - to_chat(hound, "Your [src.name] chimes it ends its self-cleaning cycle.")//Belly is entirely empty - if(!length(contents)) - to_chat(hound, "Your [src.name] is now clean. Ending self-cleaning cycle.") - cleaning = FALSE - update_gut() - return - - //sound effects - for(var/mob/living/M in contents) - if(prob(50)) - M.stop_sound_channel(CHANNEL_PRED) - playsound(get_turf(hound),"digest_pred",75,0,-6,0,channel=CHANNEL_PRED) - M.stop_sound_channel(CHANNEL_PRED) - M.playsound_local("digest_prey",60) - - - //Pick a random item to deal with (if there are any) var/atom/target = pick(touchable_items) - - //Handle the target being a mob - if(ishuman(target)) - var/mob/living/carbon/human/T = target - - //Mob is now dead - if(T.stat == DEAD && T.digestable) + if(iscarbon(target)) //Handle the target being a mob + var/mob/living/carbon/T = target + if(T.stat == DEAD && T.digestable) //Mob is now dead message_admins("[key_name(hound)] has digested [key_name(T)] as a dogborg. ([hound ? "JMP" : "null"])") to_chat(hound,"You feel your belly slowly churn around [T], breaking them down into a soft slurry to be used as power for your systems.") to_chat(T,"You feel [hound]'s belly slowly churn around your form, breaking you down into a soft slurry to be used as power for [hound]'s systems.") @@ -674,24 +615,47 @@ playsound(get_turf(hound),"death_pred",50,0,-6,0,channel=CHANNEL_PRED) T.stop_sound_channel(CHANNEL_PRED) T.playsound_local("death_prey",60) + for(var/obj/item/W in T) + if(!T.dropItemToGround(W)) + qdel(W) qdel(T) - src.update_gut() - - //Handle the target being anything but a /mob/living/carbon/human - else + update_gut() + //Handle the target being anything but a mob + else if(isobj(target)) var/obj/T = target - - //If the object is in the items_preserved global list //POLARISTODO - - if(T.type in important_items) + if(T.type in important_items) //If the object is in the items_preserved global list src.items_preserved += T - //If the object is not one to preserve else qdel(T) src.update_gut() src.hound.cell.give(10) - return + else + testing("clean_cycle finished and reset") + cleaning_cycles = initial(cleaning_cycles) + cleaning = FALSE + to_chat(hound, "Your [src.name] chimes it ends its self-cleaning cycle.")//Belly is entirely empty + update_gut() + + if(!length(contents)) + to_chat(hound, "Your [src.name] is now clean. Ending self-cleaning cycle.") + cleaning = FALSE + update_gut() + return + +//sound effects + for(var/mob/living/M in contents) + if(prob(50)) + M.stop_sound_channel(CHANNEL_PRED) + playsound(get_turf(hound),"digest_pred",75,0,-6,0,channel=CHANNEL_PRED) + M.stop_sound_channel(CHANNEL_PRED) + M.playsound_local("digest_prey",60) + + if(cleaning) + addtimer(CALLBACK(src, .proc/clean_cycle), 50) + +/obj/item/device/dogborg/sleeper/proc/CheckAccepted(obj/item/I) + return is_type_in_typecache(I, important_items) /obj/item/device/dogborg/sleeper/proc/inject_chem(chem) testing("inject chem triggered, checking power") @@ -737,8 +701,11 @@ return if(target.anchored) return - if(ishuman(target)) - var/mob/living/carbon/human/brigman = target + if(isobj(target)) + to_chat(user, "You are above putting such trash inside of yourself.") + return + if(iscarbon(target)) + var/mob/living/carbon/brigman = target if (!brigman.devourable) to_chat(user, "The target registers an error code. Unable to insert into [src.name].") return @@ -776,7 +743,7 @@ /obj/item/device/dogborg/sleeper/compactor/afterattack(var/atom/movable/target, mob/living/silicon/user, proximity)//GARBO NOMS hound = loc - + var/obj/item/target_obj = target if(!istype(target)) return if(!proximity) @@ -786,14 +753,16 @@ if(length(contents) > (max_item_count - 1)) to_chat(user,"Your [src.name] is full. Eject or process contents to continue.") return - if(istype(target,/obj/item)) - var/obj/item/target_obj = target - if(target_obj.type in important_items) + if(isobj(target)) + testing("Checking target type") + if(CheckAccepted(target)) to_chat(user,"\The [target] registers an error code to your [src.name]") return + testing("Target not on the important list") if(target_obj.w_class > WEIGHT_CLASS_NORMAL) to_chat(user,"\The [target] is too large to fit into your [src.name]") return + testing("Target not too large.") user.visible_message("[hound.name] is ingesting [target.name] into their [src.name].", "You start ingesting [target] into your [src.name]...") if(do_after(user, 15, target = target) && length(contents) < max_item_count) if(!in_range(src, target)) //Proximity is probably old news by now, do a new check. @@ -804,10 +773,13 @@ if(length(contents) > 11) //grow that tum after a certain junk amount hound.sleeper_r = 1 hound.update_icons() + else + hound.sleeper_r = 0 + hound.update_icons() return - else if(ishuman(target)) - var/mob/living/carbon/human/trashman = target + else if(iscarbon(target)) + var/mob/living/carbon/trashman = target if (!trashman.devourable) to_chat(user, "\The [target] registers an error code to your [src.name]") return diff --git a/code/citadel/organs/genitals.dm b/code/citadel/organs/genitals.dm index 79784a1eb8..ee706fa7f9 100644 --- a/code/citadel/organs/genitals.dm +++ b/code/citadel/organs/genitals.dm @@ -260,11 +260,10 @@ for(var/L in relevant_layers) //Less hardcode H.remove_overlay(L) - if(H.has_disability(DISABILITY_HUSK)) + if(H.has_trait(TRAIT_HUSK)) return //start scanning for genitals //var/list/worn_stuff = H.get_equipped_items()//cache this list so it's not built again - for(var/obj/item/organ/O in H.internal_organs) if(istype(O, /obj/item/organ/genital)) var/obj/item/organ/genital/G = O @@ -272,7 +271,6 @@ genitals_to_add += H.getorganslot(G.slot) //Now we added all genitals that aren't internal and should be rendered - var/image/I //start applying overlays for(var/layer in relevant_layers) var/layertext = genitals_layertext(layer) @@ -289,46 +287,45 @@ if(!S || S.icon_state == "none") continue - var/icon_string + var/mutable_appearance/genital_overlay = mutable_appearance(S.icon, layer = -layer) if(S.alt_aroused) G.aroused_state = H.isPercentAroused(G.aroused_amount) else G.aroused_state = FALSE - icon_string = "[G.slot]_[S.icon_state]_[size]_[G.aroused_state]_[layertext]" - I = image("icon" = S.icon, "icon_state" = icon_string, "layer" =- layer) + genital_overlay.icon_state = "[G.slot]_[S.icon_state]_[size]_[G.aroused_state]_[layertext]" if(S.center) - I = center_image(I,S.dimension_x,S.dimension_y) + genital_overlay = center_image(genital_overlay, S.dimension_x, S.dimension_y) if(use_skintones && H.dna.features["genitals_use_skintone"]) - I.color = "#[skintone2hex(H.skin_tone)]" + genital_overlay.color = "#[skintone2hex(H.skin_tone)]" else switch(S.color_src) if("cock_color") - I.color = "#[H.dna.features["cock_color"]]" + genital_overlay.color = "#[H.dna.features["cock_color"]]" if("breasts_color") - I.color = "#[H.dna.features["breasts_color"]]" + genital_overlay.color = "#[H.dna.features["breasts_color"]]" if("vag_color") - I.color = "#[H.dna.features["vag_color"]]" + genital_overlay.color = "#[H.dna.features["vag_color"]]" if(MUTCOLORS) if(fixed_mut_color) - I.color = "#[fixed_mut_color]" + genital_overlay.color = "#[fixed_mut_color]" else - I.color = "#[H.dna.features["mcolor"]]" + genital_overlay.color = "#[H.dna.features["mcolor"]]" if(MUTCOLORS2) if(fixed_mut_color2) - I.color = "#[fixed_mut_color2]" + genital_overlay.color = "#[fixed_mut_color2]" else - I.color = "#[H.dna.features["mcolor2"]]" + genital_overlay.color = "#[H.dna.features["mcolor2"]]" if(MUTCOLORS3) if(fixed_mut_color3) - I.color = "#[fixed_mut_color3]" + genital_overlay.color = "#[fixed_mut_color3]" else - I.color = "#[H.dna.features["mcolor3"]]" - standing += I + genital_overlay.color = "#[H.dna.features["mcolor3"]]" + standing += genital_overlay if(LAZYLEN(standing)) H.overlays_standing[layer] = standing.Copy() standing = list() for(var/L in relevant_layers) - H.apply_overlay(L) \ No newline at end of file + H.apply_overlay(L) diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm index 3ca27110ef..c05221944b 100644 --- a/code/controllers/configuration/configuration.dm +++ b/code/controllers/configuration/configuration.dm @@ -187,7 +187,7 @@ mode_names[M.config_tag] = M.name probabilities[M.config_tag] = M.probability mode_reports[M.config_tag] = M.generate_report() - if(M.probability) + if(probabilities[M.config_tag]>0) mode_false_report_weight[M.config_tag] = M.false_report_weight else mode_false_report_weight[M.config_tag] = 1 diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index f91d775fba..cc8f832229 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -249,6 +249,15 @@ /datum/config_entry/flag/allow_miscreants /datum/config_entry/flag/allow_extended_miscreants + + +/datum/config_entry/flag/nightshift_enabled + +/datum/config_entry/number/nightshift_start + config_entry_value = 20 + +/datum/config_entry/number/nightshift_finish + config_entry_value = 6 //End of Cit changes /datum/config_entry/number/bombcap/ValidateAndSet(str_val) diff --git a/code/controllers/master.dm b/code/controllers/master.dm index 6363cc435d..68f75491f3 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -49,6 +49,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new var/map_loading = FALSE //Are we loading in a new map? var/current_runlevel //for scheduling different subsystems for different stages of the round + var/sleep_offline_after_initializations = TRUE var/static/restart_clear = 0 var/static/restart_timeout = 0 @@ -65,7 +66,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new // Highlander-style: there can only be one! Kill off the old and replace it with the new. if(!random_seed) - random_seed = rand(1, 1e9) + random_seed = (TEST_RUN_PARAMETER in world.params) ? 29051994 : rand(1, 1e9) rand_seed(random_seed) var/list/_subsystems = list() @@ -197,11 +198,12 @@ GLOBAL_REAL(Master, /datum/controller/master) = new // Sort subsystems by display setting for easy access. sortTim(subsystems, /proc/cmp_subsystem_display) // Set world options. - world.sleep_offline = TRUE + if(sleep_offline_after_initializations) + world.sleep_offline = TRUE world.fps = CONFIG_GET(number/fps) var/initialized_tod = REALTIMEOFDAY sleep(1) - if(CONFIG_GET(flag/resume_after_initializations)) + if(sleep_offline_after_initializations && CONFIG_GET(flag/resume_after_initializations)) world.sleep_offline = FALSE initializations_finished_with_no_players_logged_in = initialized_tod < REALTIMEOFDAY - 10 // Loop. diff --git a/code/controllers/subsystem/augury.dm b/code/controllers/subsystem/augury.dm index 38e9724b5f..875f1ee7d3 100644 --- a/code/controllers/subsystem/augury.dm +++ b/code/controllers/subsystem/augury.dm @@ -76,7 +76,7 @@ SUBSYSTEM_DEF(augury) active = FALSE UpdateButtonIcon() -/datum/action/innate/augury/UpdateButtonIcon(status_only = FALSE) +/datum/action/innate/augury/UpdateButtonIcon(status_only = FALSE, force) ..() if(active) button.icon_state = "template_active" diff --git a/code/controllers/subsystem/communications.dm b/code/controllers/subsystem/communications.dm index fcf7dba607..d4838a21c3 100644 --- a/code/controllers/subsystem/communications.dm +++ b/code/controllers/subsystem/communications.dm @@ -23,7 +23,7 @@ SUBSYSTEM_DEF(communications) minor_announce(html_decode(input),"[user.name] Announces:") silicon_message_cooldown = world.time + COMMUNICATION_COOLDOWN_AI else - priority_announce(html_decode(input), null, 'sound/misc/announce.ogg', "Captain") + priority_announce(html_decode(user.treat_message(input)), null, 'sound/misc/announce.ogg', "Captain") nonsilicon_message_cooldown = world.time + COMMUNICATION_COOLDOWN log_talk(user,"[key_name(user)] has made a priority announcement: [input]",LOGSAY) message_admins("[key_name_admin(user)] has made a priority announcement.") diff --git a/code/controllers/subsystem/dbcore.dm b/code/controllers/subsystem/dbcore.dm index 850fccd1fb..5555525262 100644 --- a/code/controllers/subsystem/dbcore.dm +++ b/code/controllers/subsystem/dbcore.dm @@ -1,14 +1,26 @@ -#define FAILED_DB_CONNECTION_CUTOFF 5 -#define DM_DEFAULT_CURSOR 0 - SUBSYSTEM_DEF(dbcore) name = "Database" flags = SS_NO_FIRE init_order = INIT_ORDER_DBCORE + var/const/FAILED_DB_CONNECTION_CUTOFF = 5 + var/const/Default_Cursor = 0 + var/const/Client_Cursor = 1 + var/const/Server_Cursor = 2 + //conversions + var/const/TEXT_CONV = 1 + var/const/RSC_FILE_CONV = 2 + var/const/NUMBER_CONV = 3 + //column flag values: + var/const/IS_NUMERIC = 1 + var/const/IS_BINARY = 2 + var/const/IS_NOT_NULL = 4 + var/const/IS_PRIMARY_KEY = 8 + var/const/IS_UNSIGNED = 16 var/schema_mismatch = 0 var/db_minor = 0 var/db_major = 0 +// TODO: Investigate more recent type additions and see if I can handle them. - Nadrew var/_db_con// This variable contains a reference to the actual database connection. var/failed_connections = 0 @@ -64,7 +76,7 @@ SUBSYSTEM_DEF(dbcore) var/address = CONFIG_GET(string/address) var/port = CONFIG_GET(number/port) - _dm_db_connect(_db_con, "dbi:mysql:[db]:[address]:[port]", user, pass, DM_DEFAULT_CURSOR, null) + _dm_db_connect(_db_con, "dbi:mysql:[db]:[address]:[port]", user, pass, Default_Cursor, null) . = IsConnected() if (!.) log_sql("Connect() failed | [ErrorMsg()]") @@ -117,7 +129,7 @@ SUBSYSTEM_DEF(dbcore) return "Database disabled by configuration" return _dm_db_error_msg(_db_con) -/datum/controller/subsystem/dbcore/proc/NewQuery(sql_query, cursor_handler = DM_DEFAULT_CURSOR) +/datum/controller/subsystem/dbcore/proc/NewQuery(sql_query, cursor_handler = Default_Cursor) if(IsAdminAdvancedProcCall()) log_admin_private("ERROR: Advanced admin proc call led to sql query: [sql_query]. Query has been blocked") message_admins("ERROR: Advanced admin proc call led to sql query. Query has been blocked") diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index 4faf234ffd..e83d05a28d 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -332,7 +332,6 @@ SUBSYSTEM_DEF(garbage) /datum/verb/find_refs() set category = "Debug" set name = "Find References" - set background = 1 set src in world find_references(FALSE) @@ -385,7 +384,6 @@ SUBSYSTEM_DEF(garbage) /datum/verb/qdel_then_find_references() set category = "Debug" set name = "qdel() then Find References" - set background = 1 set src in world qdel(src) diff --git a/code/controllers/subsystem/idlenpcpool.dm b/code/controllers/subsystem/idlenpcpool.dm index a15237e5a7..1e895d56f3 100644 --- a/code/controllers/subsystem/idlenpcpool.dm +++ b/code/controllers/subsystem/idlenpcpool.dm @@ -1,6 +1,6 @@ SUBSYSTEM_DEF(idlenpcpool) name = "Idling NPC Pool" - flags = SS_POST_FIRE_TIMING|SS_BACKGROUND + flags = SS_POST_FIRE_TIMING|SS_BACKGROUND|SS_NO_INIT priority = FIRE_PRIORITY_IDLE_NPC wait = 60 runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME @@ -13,9 +13,12 @@ SUBSYSTEM_DEF(idlenpcpool) var/list/zlist = GLOB.simple_animals[AI_Z_OFF] ..("IdleNPCS:[idlelist.len]|Z:[zlist.len]") -/datum/controller/subsystem/idlenpcpool/Initialize(start_timeofday) - idle_mobs_by_zlevel = new /list(world.maxz,0) - return ..() +/datum/controller/subsystem/idlenpcpool/proc/MaxZChanged() + if (!islist(idle_mobs_by_zlevel)) + idle_mobs_by_zlevel = new /list(world.maxz,0) + while (SSidlenpcpool.idle_mobs_by_zlevel.len < world.maxz) + SSidlenpcpool.idle_mobs_by_zlevel.len++ + SSidlenpcpool.idle_mobs_by_zlevel[idle_mobs_by_zlevel.len] = list() /datum/controller/subsystem/idlenpcpool/fire(resumed = FALSE) diff --git a/code/controllers/subsystem/input.dm b/code/controllers/subsystem/input.dm index 136501373e..8a17ad07d1 100644 --- a/code/controllers/subsystem/input.dm +++ b/code/controllers/subsystem/input.dm @@ -61,7 +61,7 @@ SUBSYSTEM_DEF(input) "North", "East", "South", "West", "Northeast", "Southeast", "Northwest", "Southwest", "Insert", "Delete", "Ctrl", "Alt", - "F1", "F2", "F5", "F6", "F7", "F8", "F12", + "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", ) for(var/i in 1 to oldmode_keys.len) diff --git a/code/controllers/subsystem/mobs.dm b/code/controllers/subsystem/mobs.dm index 14ad19e1ea..cd47adf476 100644 --- a/code/controllers/subsystem/mobs.dm +++ b/code/controllers/subsystem/mobs.dm @@ -1,7 +1,7 @@ SUBSYSTEM_DEF(mobs) name = "Mobs" priority = FIRE_PRIORITY_MOBS - flags = SS_KEEP_TIMING + flags = SS_KEEP_TIMING | SS_NO_INIT runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME var/list/currentrun = list() @@ -10,9 +10,12 @@ SUBSYSTEM_DEF(mobs) /datum/controller/subsystem/mobs/stat_entry() ..("P:[GLOB.mob_living_list.len]") -/datum/controller/subsystem/mobs/Initialize(start_timeofday) - clients_by_zlevel = new /list(world.maxz,0) - return ..() +/datum/controller/subsystem/mobs/proc/MaxZChanged() + if (!islist(clients_by_zlevel)) + clients_by_zlevel = new /list(world.maxz,0) + while (clients_by_zlevel.len < world.maxz) + clients_by_zlevel.len++ + clients_by_zlevel[clients_by_zlevel.len] = list() /datum/controller/subsystem/mobs/fire(resumed = 0) var/seconds = wait * 0.1 diff --git a/code/controllers/subsystem/persistence.dm b/code/controllers/subsystem/persistence.dm index b98be937fc..3973d9d281 100644 --- a/code/controllers/subsystem/persistence.dm +++ b/code/controllers/subsystem/persistence.dm @@ -10,6 +10,7 @@ SUBSYSTEM_DEF(persistence) var/list/saved_messages = list() var/list/saved_modes = list(1,2,3) var/list/saved_trophies = list() + var/list/spawned_objects = list() /datum/controller/subsystem/persistence/Initialize() LoadSatchels() @@ -62,7 +63,8 @@ SUBSYSTEM_DEF(persistence) if(isfloorturf(F.loc) && !isplatingturf(F.loc)) F.hide(1) if(ispath(path)) - new path(F) + var/spawned_item = new path(F) + spawned_objects[spawned_item] = TRUE placed_satchel++ var/free_satchels = 0 for(var/turf/T in shuffle(block(locate(TRANSITIONEDGE,TRANSITIONEDGE,ZLEVEL_STATION_PRIMARY), locate(world.maxx-TRANSITIONEDGE,world.maxy-TRANSITIONEDGE,ZLEVEL_STATION_PRIMARY)))) //Nontrivially expensive but it's roundstart only diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index bdf124cc4e..bff46717b1 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -8,6 +8,8 @@ SUBSYSTEM_DEF(shuttle) flags = SS_KEEP_TIMING|SS_NO_TICK_CHECK runlevels = RUNLEVEL_SETUP | RUNLEVEL_GAME + var/obj/machinery/shuttle_manipulator/manipulator + var/list/mobile = list() var/list/stationary = list() var/list/transit = list() @@ -53,19 +55,10 @@ SUBSYSTEM_DEF(shuttle) var/list/shuttle_purchase_requirements_met = list() //For keeping track of ingame events that would unlock new shuttles, such as defeating a boss or discovering a secret item var/lockdown = FALSE //disallow transit after nuke goes off - + var/auto_call = 99000 //CIT CHANGE - time before in deciseconds in which the shuttle is auto called. Default is 2½ hours plus 15 for the shuttle. So total is 3. /datum/controller/subsystem/shuttle/Initialize(timeofday) - if(!arrivals) - WARNING("No /obj/docking_port/mobile/arrivals placed on the map!") - if(!emergency) - WARNING("No /obj/docking_port/mobile/emergency placed on the map!") - if(!backup_shuttle) - WARNING("No /obj/docking_port/mobile/emergency/backup placed on the map!") - if(!supply) - WARNING("No /obj/docking_port/mobile/supply placed on the map!") - ordernum = rand(1, 9000) for(var/pack in subtypesof(/datum/supply_pack)) @@ -76,12 +69,32 @@ SUBSYSTEM_DEF(shuttle) if(!transit_turfs.len) setup_transit_zone() - initial_move() + + initial_load() + #ifdef HIGHLIGHT_DYNAMIC_TRANSIT color_space() #endif + + if(!arrivals) + WARNING("No /obj/docking_port/mobile/arrivals placed on the map!") + if(!emergency) + WARNING("No /obj/docking_port/mobile/emergency placed on the map!") + if(!backup_shuttle) + WARNING("No /obj/docking_port/mobile/emergency/backup placed on the map!") + if(!supply) + WARNING("No /obj/docking_port/mobile/supply placed on the map!") ..() +/datum/controller/subsystem/shuttle/proc/initial_load() + if(!istype(manipulator)) + CRASH("No shuttle manipulator found.") + + for(var/s in stationary) + var/obj/docking_port/stationary/S = s + S.load_roundstart() + CHECK_TICK + /datum/controller/subsystem/shuttle/proc/setup_transit_zone() // transit zone var/z = SSmapping.transit.z_value @@ -436,14 +449,6 @@ SUBSYSTEM_DEF(shuttle) if(!(M in transit_requesters)) transit_requesters += M - -/datum/controller/subsystem/shuttle/proc/autoEnd() //CIT CHANGE - allows shift to end after 3 hours has passed. - if(world.time > auto_call && EMERGENCY_IDLE_OR_RECALLED) //3 hours - SSshuttle.emergency.request(null, 1.5) - priority_announce("The shift has come to an end and the shuttle called.") - log_game("Round time limit reached. Shuttle has been auto-called.") - message_admins("Round time limit reached. Shuttle called.") - /datum/controller/subsystem/shuttle/proc/generate_transit_dock(obj/docking_port/mobile/M) // First, determine the size of the needed zone // Because of shuttle rotation, the "width" of the shuttle is not @@ -558,15 +563,7 @@ SUBSYSTEM_DEF(shuttle) T.flags_1 &= ~(UNUSED_TRANSIT_TURF_1) M.assigned_transit = new_transit_dock - return TRUE - -/datum/controller/subsystem/shuttle/proc/initial_move() - for(var/obj/docking_port/mobile/M in mobile) - if(!M.roundstart_move) - continue - M.dockRoundstart() - M.roundstart_move = FALSE - CHECK_TICK + return new_transit_dock /datum/controller/subsystem/shuttle/Recover() if (istype(SSshuttle.mobile)) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 4894edb6dd..03a1325923 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -65,6 +65,7 @@ SUBSYSTEM_DEF(ticker) var/end_state = "undefined" var/modevoted = FALSE //Have we sent a vote for the gamemode? + var/tumpedbuckets = FALSE //Have we tumped over buckets? //Crew Objective/Miscreant stuff var/list/crewobjlist = list() @@ -159,6 +160,8 @@ SUBSYSTEM_DEF(ticker) fire() if(GAME_STATE_PREGAME) //lobby stats for statpanels + if(!tumpedbuckets) + SStimer.tump_buckets() if(!modevoted) send_gamemode_vote() if(isnull(timeLeft)) diff --git a/code/controllers/subsystem/timer.dm b/code/controllers/subsystem/timer.dm index 6c48531cf9..2c46621f16 100644 --- a/code/controllers/subsystem/timer.dm +++ b/code/controllers/subsystem/timer.dm @@ -1,5 +1,6 @@ #define BUCKET_LEN (world.fps*1*60) //how many ticks should we keep in the bucket. (1 minutes worth) -#define BUCKET_POS(timer) (round((timer.timeToRun - SStimer.head_offset) / world.tick_lag) + 1) +#define BUCKET_POS(timer) ((round((timer.timeToRun - SStimer.head_offset) / world.tick_lag) % BUCKET_LEN) + 1) +#define TIMER_MAX (world.time + TICKS2DS(min(BUCKET_LEN-(SStimer.practical_offset-DS2TICKS(world.time - SStimer.head_offset))-1, BUCKET_LEN-1))) #define TIMER_ID_MAX (2**24) //max float with integer precision SUBSYSTEM_DEF(timer) @@ -9,11 +10,11 @@ SUBSYSTEM_DEF(timer) flags = SS_TICKER|SS_NO_INIT - var/list/datum/timedevent/processing = list() + var/list/datum/timedevent/second_queue = list() //awe, yes, you've had first queue, but what about second queue? var/list/hashes = list() var/head_offset = 0 //world.time of the first entry in the the bucket. - var/practical_offset = 0 //index of the first non-empty item in the bucket. + var/practical_offset = 1 //index of the first non-empty item in the bucket. var/bucket_resolution = 0 //world.tick_lag the bucket was designed for var/bucket_count = 0 //how many timers are in the buckets @@ -27,13 +28,19 @@ SUBSYSTEM_DEF(timer) var/static/last_invoke_warning = 0 var/static/bucket_auto_reset = TRUE +/datum/controller/subsystem/timer/PreInit() + bucket_list.len = BUCKET_LEN + head_offset = world.time + bucket_resolution = world.tick_lag + /datum/controller/subsystem/timer/stat_entry(msg) - ..("B:[bucket_count] P:[length(processing)] H:[length(hashes)] C:[length(clienttime_timers)]") + ..("B:[bucket_count] P:[length(second_queue)] H:[length(hashes)] C:[length(clienttime_timers)] S:[length(timer_id_dict)]") /datum/controller/subsystem/timer/fire(resumed = FALSE) var/lit = last_invoke_tick var/last_check = world.time - TIMER_NO_INVOKE_WARNING var/list/bucket_list = src.bucket_list + if(!bucket_count) last_invoke_tick = world.time @@ -60,50 +67,62 @@ SUBSYSTEM_DEF(timer) bucket_node = bucket_node.next anti_loop_check-- while(bucket_node && bucket_node != bucket_head && anti_loop_check) - log_world("Active timers in the processing queue:") - for(var/I in processing) + log_world("Active timers in the second_queue queue:") + for(var/I in second_queue) log_world(get_timer_debug_string(I)) - while(length(clienttime_timers)) - var/datum/timedevent/ctime_timer = clienttime_timers[clienttime_timers.len] - if (ctime_timer.timeToRun <= REALTIMEOFDAY) - --clienttime_timers.len - var/datum/callback/callBack = ctime_timer.callBack - ctime_timer.spent = REALTIMEOFDAY - callBack.InvokeAsync() - qdel(ctime_timer) - else - break //None of the rest are ready to run + var/next_clienttime_timer_index = 0 + var/len = length(clienttime_timers) + + for (next_clienttime_timer_index in 1 to len) if (MC_TICK_CHECK) - return + next_clienttime_timer_index-- + break + var/datum/timedevent/ctime_timer = clienttime_timers[next_clienttime_timer_index] + if (ctime_timer.timeToRun > REALTIMEOFDAY) + next_clienttime_timer_index-- + break + + var/datum/callback/callBack = ctime_timer.callBack + if (!callBack) + clienttime_timers.Cut(next_clienttime_timer_index,next_clienttime_timer_index+1) + CRASH("Invalid timer: [get_timer_debug_string(ctime_timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset], REALTIMEOFDAY: [REALTIMEOFDAY]") + + ctime_timer.spent = REALTIMEOFDAY + callBack.InvokeAsync() + qdel(ctime_timer) + + + if (next_clienttime_timer_index) + clienttime_timers.Cut(1,next_clienttime_timer_index+1) + + if (MC_TICK_CHECK) + return var/static/list/spent = list() var/static/datum/timedevent/timer - var/static/datum/timedevent/head + if (practical_offset > BUCKET_LEN) + head_offset += TICKS2DS(BUCKET_LEN) + practical_offset = 1 + resumed = FALSE - if (practical_offset > BUCKET_LEN || (!resumed && length(bucket_list) != BUCKET_LEN || world.tick_lag != bucket_resolution)) - shift_buckets() + if ((length(bucket_list) != BUCKET_LEN) || (world.tick_lag != bucket_resolution)) + reset_buckets() bucket_list = src.bucket_list resumed = FALSE if (!resumed) timer = null - head = null - while (practical_offset <= BUCKET_LEN && head_offset + (practical_offset*world.tick_lag) <= world.time && !MC_TICK_CHECK) + while (practical_offset <= BUCKET_LEN && head_offset + (practical_offset*world.tick_lag) <= world.time) + var/datum/timedevent/head = bucket_list[practical_offset] if (!timer || !head || timer == head) head = bucket_list[practical_offset] - if (!head) - practical_offset++ - if (MC_TICK_CHECK) - break - continue timer = head - do + while (timer) var/datum/callback/callBack = timer.callBack if (!callBack) - qdel(timer) bucket_resolution = null //force bucket recreation CRASH("Invalid timer: [get_timer_debug_string(timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset]") @@ -113,15 +132,68 @@ SUBSYSTEM_DEF(timer) callBack.InvokeAsync() last_invoke_tick = world.time - timer = timer.next - if (MC_TICK_CHECK) return - while (timer && timer != head) - timer = null + + timer = timer.next + if (timer == head) + break + + bucket_list[practical_offset++] = null - if (MC_TICK_CHECK) - return + + //we freed up a bucket, lets see if anything in second_queue needs to be shifted to that bucket. + var/i = 0 + var/L = length(second_queue) + for (i in 1 to L) + timer = second_queue[i] + if (timer.timeToRun >= TIMER_MAX) + i-- + break + + if (timer.timeToRun < head_offset) + bucket_resolution = null //force bucket recreation + CRASH("[i] Invalid timer state: Timer in long run queue with a time to run less then head_offset. [get_timer_debug_string(timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset]") + + if (timer.callBack && !timer.spent) + timer.callBack.InvokeAsync() + spent += timer + bucket_count++ + else if(!QDELETED(timer)) + qdel(timer) + continue + + if (timer.timeToRun < head_offset + TICKS2DS(practical_offset)) + bucket_resolution = null //force bucket recreation + CRASH("[i] Invalid timer state: Timer in long run queue that would require a backtrack to transfer to short run queue. [get_timer_debug_string(timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset]") + if (timer.callBack && !timer.spent) + timer.callBack.InvokeAsync() + spent += timer + bucket_count++ + else if(!QDELETED(timer)) + qdel(timer) + continue + + bucket_count++ + var/bucket_pos = max(1, BUCKET_POS(timer)) + + var/datum/timedevent/bucket_head = bucket_list[bucket_pos] + if (!bucket_head) + bucket_list[bucket_pos] = timer + timer.next = null + timer.prev = null + continue + + if (!bucket_head.prev) + bucket_head.prev = bucket_head + timer.next = bucket_head + timer.prev = bucket_head.prev + timer.next.prev = timer + timer.prev.next = timer + if (i) + second_queue.Cut(1, i+1) + + timer = null bucket_count -= length(spent) @@ -141,7 +213,7 @@ SUBSYSTEM_DEF(timer) if(!TE.callBack) . += ", NO CALLBACK" -/datum/controller/subsystem/timer/proc/shift_buckets() +/datum/controller/subsystem/timer/proc/reset_buckets() var/list/bucket_list = src.bucket_list var/list/alltimers = list() //collect the timers currently in the bucket @@ -162,7 +234,7 @@ SUBSYSTEM_DEF(timer) head_offset = world.time bucket_resolution = world.tick_lag - alltimers += processing + alltimers += second_queue if (!length(alltimers)) return @@ -173,22 +245,26 @@ SUBSYSTEM_DEF(timer) if (head.timeToRun < head_offset) head_offset = head.timeToRun - var/list/timers_to_remove = list() - - for (var/thing in alltimers) - var/datum/timedevent/timer = thing + var/new_bucket_count + var/i = 1 + for (i in 1 to length(alltimers)) + var/datum/timedevent/timer = alltimers[1] if (!timer) - timers_to_remove += timer continue var/bucket_pos = BUCKET_POS(timer) - if (bucket_pos > BUCKET_LEN) + if (timer.timeToRun >= TIMER_MAX) + i-- break - timers_to_remove += timer //remove it from the big list once we are done + if (!timer.callBack || timer.spent) + WARNING("Invalid timer: [get_timer_debug_string(timer)] world.time: [world.time], head_offset: [head_offset], practical_offset: [practical_offset]") + if (timer.callBack) + qdel(timer) continue - bucket_count++ + + new_bucket_count++ var/datum/timedevent/bucket_head = bucket_list[bucket_pos] if (!bucket_head) bucket_list[bucket_pos] = timer @@ -202,12 +278,14 @@ SUBSYSTEM_DEF(timer) timer.prev = bucket_head.prev timer.next.prev = timer timer.prev.next = timer - - processing = (alltimers - timers_to_remove) + if (i) + alltimers.Cut(1, i+1) + second_queue = alltimers + bucket_count = new_bucket_count /datum/controller/subsystem/timer/Recover() - processing |= SStimer.processing + second_queue |= SStimer.second_queue hashes |= SStimer.hashes timer_id_dict |= SStimer.timer_id_dict bucket_list |= SStimer.bucket_list @@ -224,9 +302,8 @@ SUBSYSTEM_DEF(timer) var/datum/timedevent/next var/datum/timedevent/prev - var/static/nextid = 1 - /datum/timedevent/New(datum/callback/callBack, timeToRun, flags, hash) + var/static/nextid = 1 id = TIMER_ID_NULL src.callBack = callBack src.timeToRun = timeToRun @@ -235,56 +312,69 @@ SUBSYSTEM_DEF(timer) if (flags & TIMER_UNIQUE) SStimer.hashes[hash] = src + if (flags & TIMER_STOPPABLE) - do - if (nextid >= TIMER_ID_MAX) - nextid = 1 - id = nextid++ - while(SStimer.timer_id_dict["timerid" + num2text(id, 8)]) - SStimer.timer_id_dict["timerid" + num2text(id, 8)] = src + id = num2text(nextid, 100) + if (nextid >= SHORT_REAL_LIMIT) + nextid += min(1, 2**round(nextid/SHORT_REAL_LIMIT)) + else + nextid++ + SStimer.timer_id_dict[id] = src - name = "Timer: " + num2text(id, 8) + ", TTR: [timeToRun], Flags: [jointext(bitfield2list(flags, list("TIMER_UNIQUE", "TIMER_OVERRIDE", "TIMER_CLIENT_TIME", "TIMER_STOPPABLE", "TIMER_NO_HASH_WAIT")), ", ")], callBack: [REF(callBack)], callBack.object: [callBack.object][REF(callBack.object)]([getcallingtype()]), callBack.delegate:[callBack.delegate]([callBack.arguments ? callBack.arguments.Join(", ") : ""])" + name = "Timer: [id] (\ref[src]), TTR: [timeToRun], Flags: [jointext(bitfield2list(flags, list("TIMER_UNIQUE", "TIMER_OVERRIDE", "TIMER_CLIENT_TIME", "TIMER_STOPPABLE", "TIMER_NO_HASH_WAIT")), ", ")], callBack: \ref[callBack], callBack.object: [callBack.object]\ref[callBack.object]([getcallingtype()]), callBack.delegate:[callBack.delegate]([callBack.arguments ? callBack.arguments.Join(", ") : ""])" - if (spent) - CRASH("HOLY JESUS. WHAT IS THAT? WHAT THE FUCK IS THAT?") + if ((timeToRun < world.time || timeToRun < SStimer.head_offset) && !(flags & TIMER_CLIENT_TIME)) + CRASH("Invalid timer state: Timer created that would require a backtrack to run (addtimer would never let this happen): [SStimer.get_timer_debug_string(src)]") if (callBack.object != GLOBAL_PROC) LAZYADD(callBack.object.active_timers, src) + + var/list/L + if (flags & TIMER_CLIENT_TIME) - //sorted insert - var/list/ctts = SStimer.clienttime_timers - var/cttl = length(ctts) + L = SStimer.clienttime_timers + else if (timeToRun >= TIMER_MAX) + L = SStimer.second_queue + + + if (L) + //binary search sorted insert + var/cttl = length(L) if(cttl) - var/datum/timedevent/Last = ctts[cttl] - if(Last.timeToRun >= timeToRun) - ctts += src - else - for(var/i in cttl to 1 step -1) - var/datum/timedevent/E = ctts[i] - if(E.timeToRun <= timeToRun) - ctts.Insert(i, src) - break + var/left = 1 + var/right = cttl + var/mid = (left+right) >> 1 //rounded divide by two for hedgehogs + + var/datum/timedevent/item + while (left < right) + item = L[mid] + if (item.timeToRun <= timeToRun) + left = mid+1 + else + right = mid + mid = (left+right) >> 1 + + item = L[mid] + mid = item.timeToRun > timeToRun ? mid : mid+1 + L.Insert(mid, src) + else - ctts += src + L += src return //get the list of buckets var/list/bucket_list = SStimer.bucket_list + //calculate our place in the bucket list var/bucket_pos = BUCKET_POS(src) - //we are too far aways from needing to run to be in the bucket list, shift_buckets() will handle us. - if (bucket_pos > length(bucket_list)) - SStimer.processing += src - return + //get the bucket for our tick var/datum/timedevent/bucket_head = bucket_list[bucket_pos] SStimer.bucket_count++ //empty bucket, we will just add ourselves if (!bucket_head) bucket_list[bucket_pos] = src - if (bucket_pos < SStimer.practical_offset) - SStimer.practical_offset = bucket_pos return //other wise, lets do a simplified linked list add. if (!bucket_head.prev) @@ -296,10 +386,9 @@ SUBSYSTEM_DEF(timer) /datum/timedevent/Destroy() ..() - if (flags & TIMER_UNIQUE) + if (flags & TIMER_UNIQUE && hash) SStimer.hashes -= hash - if (callBack && callBack.object && callBack.object != GLOBAL_PROC && callBack.object.active_timers) callBack.object.active_timers -= src UNSETEMPTY(callBack.object.active_timers) @@ -307,13 +396,33 @@ SUBSYSTEM_DEF(timer) callBack = null if (flags & TIMER_STOPPABLE) - SStimer.timer_id_dict -= "timerid" + num2text(id, 8) + SStimer.timer_id_dict -= id if (flags & TIMER_CLIENT_TIME) - SStimer.clienttime_timers -= src + if (!spent) + spent = world.time + SStimer.clienttime_timers -= src return QDEL_HINT_IWILLGC if (!spent) + spent = world.time + var/bucketpos = BUCKET_POS(src) + var/datum/timedevent/buckethead + var/list/bucket_list = SStimer.bucket_list + if (bucketpos > 0) + buckethead = bucket_list[bucketpos] + + if (buckethead == src) + bucket_list[bucketpos] = next + SStimer.bucket_count-- + else if (timeToRun < TIMER_MAX || next || prev) + SStimer.bucket_count-- + else + var/l = length(SStimer.second_queue) + SStimer.second_queue -= src + if (l == length(SStimer.second_queue)) + SStimer.bucket_count-- + if (prev == next && next) next.prev = null prev.next = null @@ -322,19 +431,6 @@ SUBSYSTEM_DEF(timer) prev.next = next if (next) next.prev = prev - - var/bucketpos = BUCKET_POS(src) - var/datum/timedevent/buckethead - var/list/bucket_list = SStimer.bucket_list - - if (bucketpos > 0 && bucketpos <= length(bucket_list)) - buckethead = bucket_list[bucketpos] - SStimer.bucket_count-- - else - SStimer.processing -= src - - if (buckethead == src) - bucket_list[bucketpos] = next else if (prev && prev.next == src) prev.next = next @@ -351,7 +447,7 @@ SUBSYSTEM_DEF(timer) else . = "[callBack.object.type]" -/proc/addtimer(datum/callback/callback, wait, flags) +/proc/addtimer(datum/callback/callback, wait = 0, flags = 0) if (!callback) CRASH("addtimer called without a callback") @@ -362,7 +458,7 @@ SUBSYSTEM_DEF(timer) if (wait >= 1 && callback && callback.object && callback.object != GLOBAL_PROC && QDELETED(callback.object)) stack_trace("addtimer called with a callback assigned to a qdeleted object") - wait = max(wait, 0) + wait = max(wait, world.tick_lag) if(wait >= INFINITY) CRASH("Attempted to create timer with INFINITY delay") @@ -381,11 +477,10 @@ SUBSYSTEM_DEF(timer) var/datum/timedevent/hash_timer = SStimer.hashes[hash] if(hash_timer) if (hash_timer.spent) //it's pending deletion, pretend it doesn't exist. - hash_timer.hash = null - SStimer.hashes -= hash + hash_timer.hash = null //but keep it from accidentally deleting us else - if (flags & TIMER_OVERRIDE) + hash_timer.hash = null //no need having it delete it's hash if we are going to replace it qdel(hash_timer) else if (hash_timer.flags & TIMER_STOPPABLE) @@ -410,12 +505,17 @@ SUBSYSTEM_DEF(timer) qdel(id) return TRUE //id is string - var/datum/timedevent/timer = SStimer.timer_id_dict["timerid[id]"] + var/datum/timedevent/timer = SStimer.timer_id_dict[id] if (timer && !timer.spent) qdel(timer) return TRUE return FALSE +/datum/controller/subsystem/timer/proc/tump_buckets() + reset_buckets() + SSticker.tumpedbuckets = TRUE #undef BUCKET_LEN #undef BUCKET_POS +#undef TIMER_MAX +#undef TIMER_ID_MAX diff --git a/code/controllers/subsystem/title.dm b/code/controllers/subsystem/title.dm index 6168ca0905..94dff9b742 100644 --- a/code/controllers/subsystem/title.dm +++ b/code/controllers/subsystem/title.dm @@ -26,19 +26,12 @@ SUBSYSTEM_DEF(title) if((L.len == 1 && L[1] != "blank.png")|| (L.len > 1 && ((use_rare_screens && lowertext(L[1]) == "rare") || (lowertext(L[1]) == lowertext(SSmapping.config.map_name))))) title_screens += S - for(var/S in title_screens) - var/list/L = splittext(S,".") - if(L.len != 2) - continue - title_screens -= S - break - if(length(title_screens)) file_path = "[global.config.directory]/title_screens/images/[pick(title_screens)]" if(!file_path) file_path = "icons/default_title.dmi" - + ASSERT(fexists(file_path)) icon = new(fcopy_rsc(file_path)) diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm index 14f15a4b89..235b25b566 100644 --- a/code/controllers/subsystem/traumas.dm +++ b/code/controllers/subsystem/traumas.dm @@ -11,7 +11,7 @@ SUBSYSTEM_DEF(traumas) #define PHOBIA_FILE "phobia.json" /datum/controller/subsystem/traumas/Initialize() - phobia_types = list("spiders", "space", "security", "clowns", "greytide", "lizards", "skeletons") + phobia_types = list("spiders", "space", "security", "clowns", "greytide", "lizards", "skeletons", "snakes") phobia_words = list("spiders" = strings(PHOBIA_FILE, "spiders"), "space" = strings(PHOBIA_FILE, "space"), @@ -20,11 +20,13 @@ SUBSYSTEM_DEF(traumas) "greytide" = strings(PHOBIA_FILE, "greytide"), "lizards" = strings(PHOBIA_FILE, "lizards"), "skeletons" = strings(PHOBIA_FILE, "skeletons"), + "snakes" = strings(PHOBIA_FILE, "snakes") ) phobia_mobs = list("spiders" = typecacheof(list(/mob/living/simple_animal/hostile/poison/giant_spider)), "security" = typecacheof(list(/mob/living/simple_animal/bot/secbot)), - "lizards" = typecacheof(list(/mob/living/simple_animal/hostile/lizard)) + "lizards" = typecacheof(list(/mob/living/simple_animal/hostile/lizard)), + "snakes" = typecacheof(list(/mob/living/simple_animal/hostile/retaliate/poison/snake)) ) phobia_objs = list("spiders" = typecacheof(list(/obj/structure/spider)), diff --git a/code/datums/action.dm b/code/datums/action.dm index fb1f2fb8cb..15f62b20b7 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -104,7 +104,7 @@ return 0 return 1 -/datum/action/proc/UpdateButtonIcon(status_only = FALSE) +/datum/action/proc/UpdateButtonIcon(status_only = FALSE, force = FALSE) if(button) if(!status_only) button.name = name @@ -121,7 +121,7 @@ if(button.icon_state != background_icon_state) button.icon_state = background_icon_state - ApplyIcon(button) + ApplyIcon(button, force) if(!IsAvailable()) button.color = rgb(128,0,0,128) @@ -129,8 +129,8 @@ button.color = rgb(255,255,255,255) return 1 -/datum/action/proc/ApplyIcon(obj/screen/movable/action_button/current_button) - if(icon_icon && button_icon_state && current_button.button_icon_state != button_icon_state) +/datum/action/proc/ApplyIcon(obj/screen/movable/action_button/current_button, force = FALSE) + if(icon_icon && button_icon_state && ((current_button.button_icon_state != button_icon_state) || force)) current_button.cut_overlays(TRUE) current_button.add_overlay(mutable_appearance(icon_icon, button_icon_state)) current_button.button_icon_state = button_icon_state @@ -163,11 +163,11 @@ I.ui_action_click(owner, src) return 1 -/datum/action/item_action/ApplyIcon(obj/screen/movable/action_button/current_button) +/datum/action/item_action/ApplyIcon(obj/screen/movable/action_button/current_button, force) if(button_icon && button_icon_state) // If set, use the custom icon that we set instead // of the item appearence - ..(current_button) + ..() else if(target && current_button.appearance_cache != target.appearance) //replace with /ref comparison if this is not valid. var/obj/item/I = target var/old_layer = I.layer @@ -215,7 +215,7 @@ /datum/action/item_action/set_internals name = "Set Internals" -/datum/action/item_action/set_internals/UpdateButtonIcon(status_only = FALSE) +/datum/action/item_action/set_internals/UpdateButtonIcon(status_only = FALSE, force) if(..()) //button available if(iscarbon(owner)) var/mob/living/carbon/C = owner @@ -253,7 +253,7 @@ if(..()) UpdateButtonIcon() -/datum/action/item_action/toggle_unfriendly_fire/UpdateButtonIcon(status_only = FALSE) +/datum/action/item_action/toggle_unfriendly_fire/UpdateButtonIcon(status_only = FALSE, force) if(istype(target, /obj/item/hierophant_club)) var/obj/item/hierophant_club/H = target if(H.friendly_fire_check) @@ -454,7 +454,34 @@ name = "Use [target.name]" button.name = name +/datum/action/item_action/cult_dagger + name = "Draw Blood Rune" + desc = "Use the ritual dagger to create a powerful blood rune" + icon_icon = 'icons/mob/actions/actions_cult.dmi' + button_icon_state = "draw" + buttontooltipstyle = "cult" + background_icon_state = "bg_demon" +/datum/action/item_action/cult_dagger/Grant(mob/M) + if(iscultist(M)) + ..() + button.screen_loc = "6:157,4:-2" + button.moved = "6:157,4:-2" + else + Remove(owner) + +/datum/action/item_action/cult_dagger/Trigger() + for(var/obj/item/H in owner.held_items) //In case we were already holding another dagger + if(istype(H, /obj/item/melee/cultblade/dagger)) + H.attack_self(owner) + return + var/obj/item/I = target + if(owner.can_equip(I, slot_hands)) + owner.temporarilyRemoveItemFromInventory(I) + owner.put_in_hands(I) + I.attack_self(owner) + else + to_chat(owner, "Your hands are full!") //Preset for spells diff --git a/code/datums/antagonists/antag_datum.dm b/code/datums/antagonists/antag_datum.dm index 6140dc6797..5f12d02398 100644 --- a/code/datums/antagonists/antag_datum.dm +++ b/code/datums/antagonists/antag_datum.dm @@ -72,19 +72,18 @@ GLOBAL_LIST_EMPTY(antagonists) /datum/antagonist/proc/is_banned(mob/M) if(!M) return FALSE - . = (jobban_isbanned(M,"Syndicate") || (job_rank && jobban_isbanned(M,job_rank))) + . = (jobban_isbanned(M, ROLE_SYNDICATE) || (job_rank && jobban_isbanned(M,job_rank))) /datum/antagonist/proc/replace_banned_player() set waitfor = FALSE var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as a [name]?", "[name]", null, job_rank, 50, owner.current) - var/mob/dead/observer/theghost = null - if(candidates.len) - theghost = pick(candidates) + if(LAZYLEN(candidates)) + var/client/C = pick(candidates) to_chat(owner, "Your mob has been taken over by a ghost! Appeal your job ban if you want to avoid this in the future!") - message_admins("[key_name_admin(theghost)] has taken control of ([key_name_admin(owner.current)]) to replace a jobbaned player.") + message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(owner.current)]) to replace a jobbaned player.") owner.current.ghostize(0) - owner.current.key = theghost.key + owner.current.key = C.key /datum/antagonist/proc/on_removal() remove_innate_effects() diff --git a/code/datums/antagonists/brother.dm b/code/datums/antagonists/brother.dm index f692335ee1..d8371d3751 100644 --- a/code/datums/antagonists/brother.dm +++ b/code/datums/antagonists/brother.dm @@ -2,7 +2,7 @@ name = "Brother" antagpanel_category = "Brother" job_rank = ROLE_BROTHER - var/special_role = "blood brother" + var/special_role = ROLE_BROTHER var/datum/team/brother_team/team /datum/antagonist/brother/create_team(datum/team/brother_team/new_team) diff --git a/code/datums/antagonists/changeling.dm b/code/datums/antagonists/changeling.dm index 5d4e34cd97..2bc4900ac5 100644 --- a/code/datums/antagonists/changeling.dm +++ b/code/datums/antagonists/changeling.dm @@ -76,6 +76,13 @@ . = ..() /datum/antagonist/changeling/on_removal() + //We'll be using this from now on + var/mob/living/carbon/C = owner.current + if(istype(C)) + var/obj/item/organ/brain/B = C.getorganslot(ORGAN_SLOT_BRAIN) + if(B && (B.decoy_override != initial(B.decoy_override))) + B.vital = TRUE + B.decoy_override = FALSE remove_changeling_powers() owner.objectives -= objectives . = ..() @@ -389,7 +396,7 @@ var/datum/objective/assassinate/kill_objective = new kill_objective.owner = owner if(team_mode) //No backstabbing while in a team - kill_objective.find_target_by_role(role = "Changeling", role_type = 1, invert = 1) + kill_objective.find_target_by_role(role = ROLE_CHANGELING, role_type = 1, invert = 1) else kill_objective.find_target() objectives += kill_objective @@ -397,7 +404,7 @@ var/datum/objective/maroon/maroon_objective = new maroon_objective.owner = owner if(team_mode) - maroon_objective.find_target_by_role(role = "Changeling", role_type = 1, invert = 1) + maroon_objective.find_target_by_role(role = ROLE_CHANGELING, role_type = 1, invert = 1) else maroon_objective.find_target() objectives += maroon_objective @@ -419,7 +426,7 @@ var/datum/objective/escape/escape_with_identity/identity_theft = new identity_theft.owner = owner if(team_mode) - identity_theft.find_target_by_role(role = "Changeling", role_type = 1, invert = 1) + identity_theft.find_target_by_role(role = ROLE_CHANGELING, role_type = 1, invert = 1) else identity_theft.find_target() objectives += identity_theft diff --git a/code/datums/antagonists/clockcult.dm b/code/datums/antagonists/clockcult.dm index 2a05b14d70..067801677b 100644 --- a/code/datums/antagonists/clockcult.dm +++ b/code/datums/antagonists/clockcult.dm @@ -51,7 +51,7 @@ var/mob/living/current = owner.current SSticker.mode.servants_of_ratvar += owner SSticker.mode.update_servant_icons_added(owner) - owner.special_role = "Servant of Ratvar" + owner.special_role = ROLE_SERVANT_OF_RATVAR owner.current.log_message("Has been converted to the cult of Ratvar!", INDIVIDUAL_ATTACK_LOG) if(issilicon(current)) if(iscyborg(current) && !silent) diff --git a/code/datums/antagonists/datum_traitor.dm b/code/datums/antagonists/datum_traitor.dm index 6c55563810..da34debf95 100644 --- a/code/datums/antagonists/datum_traitor.dm +++ b/code/datums/antagonists/datum_traitor.dm @@ -6,7 +6,7 @@ var/should_specialise = TRUE //do we split into AI and human, set to true on inital assignment only var/ai_datum = /datum/antagonist/traitor/AI var/human_datum = /datum/antagonist/traitor/human - var/special_role = "traitor" + var/special_role = ROLE_TRAITOR var/employer = "The Syndicate" var/give_objectives = TRUE var/should_give_codewords = TRUE @@ -85,7 +85,9 @@ return /datum/antagonist/traitor/human/forge_traitor_objectives() - var/is_hijacker = prob(10) + var/is_hijacker = FALSE + if (GLOB.joined_player_list.len >= 30) // Less murderboning on lowpop thanks + is_hijacker = prob(10) var/martyr_chance = prob(20) var/objective_count = is_hijacker //Hijacking counts towards number of objectives if(!SSticker.mode.exchange_blue && SSticker.mode.traitors.len >= 8) //Set up an exchange if there are enough traitors diff --git a/code/datums/antagonists/ninja.dm b/code/datums/antagonists/ninja.dm index 8124b8c5b8..e8a1c140ea 100644 --- a/code/datums/antagonists/ninja.dm +++ b/code/datums/antagonists/ninja.dm @@ -135,8 +135,8 @@ adj = "objectiveless" else return - new_owner.assigned_role = "Space Ninja" - new_owner.special_role = "Space Ninja" + new_owner.assigned_role = ROLE_NINJA + new_owner.special_role = ROLE_NINJA new_owner.add_antag_datum(src) message_admins("[key_name_admin(admin)] has [adj] ninja'ed [new_owner.current].") log_admin("[key_name(admin)] has [adj] ninja'ed [new_owner.current].") diff --git a/code/datums/antagonists/nukeop.dm b/code/datums/antagonists/nukeop.dm index 843b142c08..1ec2e77f64 100644 --- a/code/datums/antagonists/nukeop.dm +++ b/code/datums/antagonists/nukeop.dm @@ -122,7 +122,7 @@ nuke_team = new_team /datum/antagonist/nukeop/admin_add(datum/mind/new_owner,mob/admin) - new_owner.assigned_role = "Syndicate" + new_owner.assigned_role = ROLE_SYNDICATE new_owner.add_antag_datum(src) message_admins("[key_name_admin(admin)] has nuke op'ed [new_owner.current].") log_admin("[key_name(admin)] has nuke op'ed [new_owner.current].") diff --git a/code/datums/antagonists/revolution.dm b/code/datums/antagonists/revolution.dm index 1e81987e92..5ac3bfe2aa 100644 --- a/code/datums/antagonists/revolution.dm +++ b/code/datums/antagonists/revolution.dm @@ -184,7 +184,7 @@ carbon_mob.flash_act(1, 1) rev_mind.current.Stun(100) rev_mind.add_antag_datum(/datum/antagonist/rev,rev_team) - rev_mind.special_role = "Revolutionary" + rev_mind.special_role = ROLE_REV return TRUE /datum/antagonist/rev/head/proc/demote() diff --git a/code/datums/antagonists/wizard.dm b/code/datums/antagonists/wizard.dm index c4f029e5e3..8aba74f70a 100644 --- a/code/datums/antagonists/wizard.dm +++ b/code/datums/antagonists/wizard.dm @@ -161,12 +161,12 @@ /datum/antagonist/wizard/apply_innate_effects(mob/living/mob_override) var/mob/living/M = mob_override || owner.current update_wiz_icons_added(M, wiz_team ? TRUE : FALSE) //Don't bother showing the icon if you're solo wizard - M.faction |= "wizard" + M.faction |= ROLE_WIZARD /datum/antagonist/wizard/remove_innate_effects(mob/living/mob_override) var/mob/living/M = mob_override || owner.current update_wiz_icons_removed(M) - M.faction -= "wizard" + M.faction -= ROLE_WIZARD /datum/antagonist/wizard/get_admin_commands() diff --git a/code/datums/armor.dm b/code/datums/armor.dm new file mode 100644 index 0000000000..cbf4b76c60 --- /dev/null +++ b/code/datums/armor.dm @@ -0,0 +1,70 @@ +#define ARMORID "armor-[melee]-[bullet]-[laser]-[energy]-[bomb]-[bio]-[rad]-[fire]-[acid]-[magic]" + +/proc/getArmor(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0, magic = 0) + . = locate(ARMORID) + if (!.) + . = new /datum/armor(melee, bullet, laser, energy, bomb, bio, rad, fire, acid, magic) + +/datum/armor + datum_flags = DF_USE_TAG + var/melee + var/bullet + var/laser + var/energy + var/bomb + var/bio + var/rad + var/fire + var/acid + var/magic + +/datum/armor/New(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0, magic = 0) + src.melee = melee + src.bullet = bullet + src.laser = laser + src.energy = energy + src.bomb = bomb + src.bio = bio + src.rad = rad + src.fire = fire + src.acid = acid + src.magic = magic + tag = ARMORID + +/datum/armor/proc/modifyRating(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0, magic = 0) + return getArmor(src.melee+melee, src.bullet+bullet, src.laser+laser, src.energy+energy, src.bomb+bomb, src.bio+bio, src.rad+rad, src.fire+fire, src.acid+acid, src.magic+magic) + +/datum/armor/proc/modifyAllRatings(modifier = 0) + return getArmor(melee+modifier, bullet+modifier, laser+modifier, energy+modifier, bomb+modifier, bio+modifier, rad+modifier, fire+modifier, acid+modifier, magic+modifier) + +/datum/armor/proc/setRating(melee, bullet, laser, energy, bomb, bio, rad, fire, acid, magic) + return getArmor((isnull(melee) ? src.melee : melee),\ + (isnull(bullet) ? src.bullet : bullet),\ + (isnull(laser) ? src.laser : laser),\ + (isnull(energy) ? src.energy : energy),\ + (isnull(bomb) ? src.bomb : bomb),\ + (isnull(bio) ? src.bio : bio),\ + (isnull(rad) ? src.rad : rad),\ + (isnull(fire) ? src.fire : fire),\ + (isnull(acid) ? src.acid : acid),\ + (isnull(magic) ? src.magic : magic)) + +/datum/armor/proc/getRating(rating) + return vars[rating] + +/datum/armor/proc/getList() + return list("melee" = melee, "bullet" = bullet, "laser" = laser, "energy" = energy, "bomb" = bomb, "bio" = bio, "rad" = rad, "fire" = fire, "acid" = acid, "magic" = magic) + +/datum/armor/proc/attachArmor(datum/armor/AA) + return getArmor(melee+AA.melee, bullet+AA.bullet, laser+AA.laser, energy+AA.energy, bomb+AA.bomb, bio+AA.bio, rad+AA.rad, fire+AA.fire, acid+AA.acid, magic+AA.magic) + +/datum/armor/proc/detachArmor(datum/armor/AA) + return getArmor(melee-AA.melee, bullet-AA.bullet, laser-AA.laser, energy-AA.energy, bomb-AA.bomb, bio-AA.bio, rad-AA.rad, fire-AA.fire, acid-AA.acid, magic-AA.magic) + +/datum/armor/vv_edit_var(var_name, var_value) + if (var_name == NAMEOF(src, tag)) + return FALSE + . = ..() + tag = ARMORID // update tag in case armor values were edited + +#undef ARMORID diff --git a/code/datums/brain_damage/mild.dm b/code/datums/brain_damage/mild.dm index a28a108365..87e0cb3457 100644 --- a/code/datums/brain_damage/mild.dm +++ b/code/datums/brain_damage/mild.dm @@ -42,7 +42,7 @@ lose_text = "You feel smart again." /datum/brain_trauma/mild/dumbness/on_gain() - owner.add_disability(DISABILITY_DUMB, TRAUMA_DISABILITY) + owner.add_trait(TRAIT_DUMB, TRAUMA_TRAIT) ..() /datum/brain_trauma/mild/dumbness/on_life() @@ -54,7 +54,7 @@ ..() /datum/brain_trauma/mild/dumbness/on_lose() - owner.remove_disability(DISABILITY_DUMB, TRAUMA_DISABILITY) + owner.remove_trait(TRAIT_DUMB, TRAUMA_TRAIT) owner.derpspeech = 0 ..() diff --git a/code/datums/brain_damage/phobia.dm b/code/datums/brain_damage/phobia.dm index a775113491..15db4a3d3e 100644 --- a/code/datums/brain_damage/phobia.dm +++ b/code/datums/brain_damage/phobia.dm @@ -68,7 +68,7 @@ return /datum/brain_trauma/mild/phobia/on_hear(message, speaker, message_language, raw_message, radio_freq) - if(owner.has_disability(DISABILITY_DEAF) || world.time < next_scare) //words can't trigger you if you can't hear them *taps head* + if(owner.has_trait(TRAIT_DEAF) || world.time < next_scare) //words can't trigger you if you can't hear them *taps head* return message for(var/word in trigger_words) if(findtext(message, word)) diff --git a/code/datums/brain_damage/severe.dm b/code/datums/brain_damage/severe.dm index ba4eaa376e..b4d1951eb5 100644 --- a/code/datums/brain_damage/severe.dm +++ b/code/datums/brain_damage/severe.dm @@ -12,11 +12,11 @@ lose_text = "You suddenly remember how to speak." /datum/brain_trauma/severe/mute/on_gain() - owner.add_disability(DISABILITY_MUTE, TRAUMA_DISABILITY) + owner.add_trait(TRAIT_MUTE, TRAUMA_TRAIT) ..() /datum/brain_trauma/severe/mute/on_lose() - owner.remove_disability(DISABILITY_MUTE, TRAUMA_DISABILITY) + owner.remove_trait(TRAIT_MUTE, TRAUMA_TRAIT) ..() /datum/brain_trauma/severe/aphasia @@ -50,11 +50,11 @@ lose_text = "Your vision returns." /datum/brain_trauma/severe/blindness/on_gain() - owner.become_blind(TRAUMA_DISABILITY) + owner.become_blind(TRAUMA_TRAIT) ..() /datum/brain_trauma/severe/blindness/on_lose() - owner.cure_blind(TRAUMA_DISABILITY) + owner.cure_blind(TRAUMA_TRAIT) ..() /datum/brain_trauma/severe/paralysis @@ -120,7 +120,7 @@ stress -= 4 /datum/brain_trauma/severe/monophobia/proc/check_alone() - if(owner.has_disability(DISABILITY_BLIND)) + if(owner.has_trait(TRAIT_BLIND)) return TRUE for(var/mob/M in oview(owner, 7)) if(!isliving(M)) //ghosts ain't people @@ -182,11 +182,11 @@ lose_text = "You feel in control of your hands again." /datum/brain_trauma/severe/discoordination/on_gain() - owner.add_disability(DISABILITY_MONKEYLIKE, TRAUMA_DISABILITY) + owner.add_trait(TRAIT_MONKEYLIKE, TRAUMA_TRAIT) ..() /datum/brain_trauma/severe/discoordination/on_lose() - owner.remove_disability(DISABILITY_MONKEYLIKE, TRAUMA_DISABILITY) + owner.remove_trait(TRAIT_MONKEYLIKE, TRAUMA_TRAIT) ..() /datum/brain_trauma/severe/pacifism @@ -197,9 +197,9 @@ lose_text = "You no longer feel compelled to not harm." /datum/brain_trauma/severe/pacifism/on_gain() - owner.add_disability(DISABILITY_PACIFISM, TRAUMA_DISABILITY) + owner.add_trait(TRAIT_PACIFISM, TRAUMA_TRAIT) ..() /datum/brain_trauma/severe/pacifism/on_lose() - owner.remove_disability(DISABILITY_PACIFISM, TRAUMA_DISABILITY) + owner.remove_trait(TRAIT_PACIFISM, TRAUMA_TRAIT) ..() \ No newline at end of file diff --git a/code/datums/brain_damage/split_personality.dm b/code/datums/brain_damage/split_personality.dm index dcb7fca3d1..9e273f19f7 100644 --- a/code/datums/brain_damage/split_personality.dm +++ b/code/datums/brain_damage/split_personality.dm @@ -192,7 +192,7 @@ return //no random switching /datum/brain_trauma/severe/split_personality/brainwashing/on_hear(message, speaker, message_language, raw_message, radio_freq) - if(owner.has_disability(DISABILITY_DEAF) || owner == speaker) + if(owner.has_trait(TRAIT_DEAF) || owner == speaker) return message if(findtext(message, codeword)) message = replacetext(message, codeword, "[codeword]") diff --git a/code/datums/browser.dm b/code/datums/browser.dm index f863a5007d..d525b52ca5 100644 --- a/code/datums/browser.dm +++ b/code/datums/browser.dm @@ -120,13 +120,7 @@ else WARNING("Browser [title] tried to close with a null ID") -/datum/browser/alert - var/selectedbutton = 0 - var/opentime = 0 - var/timeout - var/stealfocus - -/datum/browser/alert/New(User,Message,Title,Button1="Ok",Button2,Button3,StealFocus = 1,Timeout=6000) +/datum/browser/modal/alert/New(User,Message,Title,Button1="Ok",Button2,Button3,StealFocus = 1,Timeout=6000) if (!User) return @@ -142,44 +136,10 @@ output += {""} - ..(User, ckey("[User]-[Message]-[Title]-[world.time]-[rand(1,10000)]"), Title, 350, 150, src) + ..(User, ckey("[User]-[Message]-[Title]-[world.time]-[rand(1,10000)]"), Title, 350, 150, src, StealFocus, Timeout) set_content(output) - stealfocus = StealFocus - if (!StealFocus) - window_options += "focus=false;" - timeout = Timeout -/datum/browser/alert/open() - set waitfor = 0 - opentime = world.time - - if (stealfocus) - . = ..(use_onclose = 1) - else - var/focusedwindow = winget(user, null, "focus") - . = ..(use_onclose = 1) - - //waits for the window to show up client side before attempting to un-focus it - //winexists sleeps until it gets a reply from the client, so we don't need to bother sleeping - for (var/i in 1 to 10) - if (user && winexists(user, window_id)) - if (focusedwindow) - winset(user, focusedwindow, "focus=true") - else - winset(user, "mapwindow", "focus=true") - break - if (timeout) - addtimer(CALLBACK(src, .proc/close), timeout) - -/datum/browser/alert/close() - .=..() - opentime = 0 - -/datum/browser/alert/proc/wait() - while (opentime && selectedbutton <= 0 && (!timeout || opentime+timeout > world.time)) - stoplag(1) - -/datum/browser/alert/Topic(href,href_list) +/datum/browser/modal/alert/Topic(href,href_list) if (href_list["close"] || !user || !user.client) opentime = 0 return @@ -210,12 +170,141 @@ User = C.mob else return - var/datum/browser/alert/A = new(User, Message, Title, Button1, Button2, Button3, StealFocus, Timeout) + var/datum/browser/modal/alert/A = new(User, Message, Title, Button1, Button2, Button3, StealFocus, Timeout) A.open() A.wait() if (A.selectedbutton) return A.selectedbutton +/datum/browser/modal + var/opentime = 0 + var/timeout + var/selectedbutton = 0 + var/stealfocus + +/datum/browser/modal/New(nuser, nwindow_id, ntitle = 0, nwidth = 0, nheight = 0, var/atom/nref = null, StealFocus = 1, Timeout = 6000) + ..() + stealfocus = StealFocus + if (!StealFocus) + window_options += "focus=false;" + timeout = Timeout + + +/datum/browser/modal/close() + .=..() + opentime = 0 + +/datum/browser/modal/open() + set waitfor = 0 + opentime = world.time + + if (stealfocus) + . = ..(use_onclose = 1) + else + var/focusedwindow = winget(user, null, "focus") + . = ..(use_onclose = 1) + + //waits for the window to show up client side before attempting to un-focus it + //winexists sleeps until it gets a reply from the client, so we don't need to bother sleeping + for (var/i in 1 to 10) + if (user && winexists(user, window_id)) + if (focusedwindow) + winset(user, focusedwindow, "focus=true") + else + winset(user, "mapwindow", "focus=true") + break + if (timeout) + addtimer(CALLBACK(src, .proc/close), timeout) + +/datum/browser/modal/proc/wait() + while (opentime && selectedbutton <= 0 && (!timeout || opentime+timeout > world.time)) + stoplag(1) + +/datum/browser/modal/listpicker + var/valueslist = list() + +/datum/browser/modal/listpicker/New(User,Message,Title,Button1="Ok",Button2,Button3,StealFocus = 1, Timeout = FALSE,list/values,inputtype="checkbox") + if (!User) + return + + var/output = {"
+ "} + + if (Button2) + output += {""} + + if (Button3) + output += {""} + + output += {"
"} + ..(User, ckey("[User]-[Message]-[Title]-[world.time]-[rand(1,10000)]"), Title, 350, 350, src, StealFocus, Timeout) + set_content(output) + +/datum/browser/modal/listpicker/Topic(href,href_list) + if (href_list["close"] || !user || !user.client) + opentime = 0 + return + if (href_list["button"]) + var/button = text2num(href_list["button"]) + if (button <= 3 && button >= 1) + selectedbutton = button + for (var/item in href_list) + switch(item) + if ("close", "button", "src") + continue + else + valueslist[item] = href_list[item] + opentime = 0 + close() + +/proc/presentpicker(var/mob/User,Message, Title, Button1="Ok", Button2, Button3, StealFocus = 1,Timeout = 6000,list/values, inputtype = "checkbox") + if (!istype(User)) + if (istype(User, /client/)) + var/client/C = User + User = C.mob + else + return + var/datum/browser/modal/listpicker/A = new(User, Message, Title, Button1, Button2, Button3, StealFocus,Timeout, values, inputtype) + A.open() + A.wait() + if (A.selectedbutton) + return list("button" = A.selectedbutton, "values" = A.valueslist) + +/proc/input_bitfield(var/mob/User, title, bitfield, current_value) + if (!User || !(bitfield in GLOB.bitfields)) + return + var/list/pickerlist = list() + for (var/i in GLOB.bitfields[bitfield]) + if (current_value & GLOB.bitfields[bitfield][i]) + pickerlist += list(list("checked" = 1, "value" = GLOB.bitfields[bitfield][i], "name" = i)) + else + pickerlist += list(list("checked" = 0, "value" = GLOB.bitfields[bitfield][i], "name" = i)) + var/list/result = presentpicker(User, "", title, Button1="Save", Button2 = "Cancel", Timeout=FALSE, values = pickerlist) + + if (islist(result)) + if (result["button"] == 2) // If the user pressed the cancel button + return + . = 0 + for (var/flag in result["values"]) + . |= GLOB.bitfields[bitfield][flag] + else + return + // This will allow you to show an icon in the browse window // This is added to mob so that it can be used without a reference to the browser object // There is probably a better place for this... diff --git a/code/datums/components/decals/blood.dm b/code/datums/components/decals/blood.dm index ccd7dfed51..760c61f4e1 100644 --- a/code/datums/components/decals/blood.dm +++ b/code/datums/components/decals/blood.dm @@ -28,7 +28,7 @@ var/icon/blood_splatter_icon = icon(initial(I.icon), initial(I.icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent) blood_splatter_icon.Blend(icon(_icon, _icon_state), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant - pic = mutable_appearance(blood_splatter_icon, initial(I.icon_state), I.layer) + pic = mutable_appearance(blood_splatter_icon, initial(I.icon_state)) blood_splatter_appearances[index] = pic return TRUE diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index 58b0e81868..59cbf745f8 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -433,6 +433,12 @@ else item = "[VV_HTML_ENCODE(name)] = /list ([L.len])" + else if (name in GLOB.bitfields) + var/list/flags = list() + for (var/i in GLOB.bitfields[name]) + if (value & GLOB.bitfields[name][i]) + flags += i + item = "[VV_HTML_ENCODE(name)] = [VV_HTML_ENCODE(jointext(flags, ", "))]" else item = "[VV_HTML_ENCODE(name)] = [VV_HTML_ENCODE(value)]" @@ -453,7 +459,7 @@ src.debug_variables(DAT) else if(href_list["mob_player_panel"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/mob/M = locate(href_list["mob_player_panel"]) in GLOB.mob_list @@ -477,7 +483,7 @@ href_list["datumrefresh"] = href_list["godmode"] else if(href_list["mark_object"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/datum/D = locate(href_list["mark_object"]) @@ -489,7 +495,7 @@ href_list["datumrefresh"] = href_list["mark_object"] else if(href_list["proc_call"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/T = locate(href_list["proc_call"]) @@ -513,7 +519,7 @@ usr.client.object_say(locate(href_list["osay"])) else if(href_list["regenerateicons"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/mob/M = locate(href_list["regenerateicons"]) in GLOB.mob_list @@ -550,7 +556,7 @@ //~CARN: for renaming mobs (updates their name, real_name, mind.name, their ID/PDA and datacore records). if(href_list["rename"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/mob/M = locate(href_list["rename"]) in GLOB.mob_list @@ -567,7 +573,7 @@ href_list["datumrefresh"] = href_list["rename"] else if(href_list["varnameedit"] && href_list["datumedit"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/D = locate(href_list["datumedit"]) @@ -578,7 +584,7 @@ modify_variables(D, href_list["varnameedit"], 1) else if(href_list["varnamechange"] && href_list["datumchange"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/D = locate(href_list["datumchange"]) @@ -589,7 +595,7 @@ modify_variables(D, href_list["varnamechange"], 0) else if(href_list["varnamemass"] && href_list["datummass"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/datum/D = locate(href_list["datummass"]) @@ -698,7 +704,7 @@ message_admins("[key_name_admin(src)] modified list's contents: SHUFFLE") else if(href_list["give_spell"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/mob/M = locate(href_list["give_spell"]) in GLOB.mob_list @@ -710,7 +716,7 @@ href_list["datumrefresh"] = href_list["give_spell"] else if(href_list["remove_spell"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/mob/M = locate(href_list["remove_spell"]) in GLOB.mob_list @@ -722,7 +728,7 @@ href_list["datumrefresh"] = href_list["remove_spell"] else if(href_list["give_disease"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/mob/M = locate(href_list["give_disease"]) in GLOB.mob_list @@ -757,7 +763,7 @@ href_list["datumrefresh"] = href_list["build_mode"] else if(href_list["drop_everything"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/mob/M = locate(href_list["drop_everything"]) in GLOB.mob_list @@ -769,7 +775,7 @@ usr.client.cmd_admin_drop_everything(M) else if(href_list["direct_control"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/mob/M = locate(href_list["direct_control"]) in GLOB.mob_list @@ -781,7 +787,7 @@ usr.client.cmd_assume_direct_control(M) else if(href_list["offer_control"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/mob/M = locate(href_list["offer_control"]) in GLOB.mob_list @@ -790,6 +796,41 @@ return offer_control(M) + else if (href_list["modarmor"]) + if(!check_rights(NONE)) + return + + var/obj/O = locate(href_list["modarmor"]) + if(!istype(O)) + to_chat(usr, "This can only be used on instances of type /obj") + return + + var/list/pickerlist = list() + var/list/armorlist = O.armor.getList() + + for (var/i in armorlist) + pickerlist += list(list("value" = armorlist[i], "name" = i)) + + var/list/result = presentpicker(usr, "Modify armor", "Modify armor: [O]", Button1="Save", Button2 = "Cancel", Timeout=FALSE, Type = "text", values = pickerlist) + + if (islist(result)) + if (result["button"] == 2) // If the user pressed the cancel button + return + // text2num conveniently returns a null on invalid values + O.armor = O.armor.setRating(melee = text2num(result["values"]["melee"]),\ + bullet = text2num(result["values"]["bullet"]),\ + laser = text2num(result["values"]["laser"]),\ + energy = text2num(result["values"]["energy"]),\ + bomb = text2num(result["values"]["bomb"]),\ + bio = text2num(result["values"]["bio"]),\ + rad = text2num(result["values"]["rad"]),\ + fire = text2num(result["values"]["fire"]),\ + acid = text2num(result["values"]["acid"])) + log_admin("[key_name(usr)] modified the armor on [O] ([O.type]) to melee: [O.armor.melee], bullet: [O.armor.bullet], laser: [O.armor.laser], energy: [O.armor.energy], bomb: [O.armor.bomb], bio: [O.armor.bio], rad: [O.armor.rad], fire: [O.armor.fire], acid: [O.armor.acid]") + message_admins("[key_name_admin(usr)] modified the armor on [O] ([O.type]) to melee: [O.armor.melee], bullet: [O.armor.bullet], laser: [O.armor.laser], energy: [O.armor.energy], bomb: [O.armor.bomb], bio: [O.armor.bio], rad: [O.armor.rad], fire: [O.armor.fire], acid: [O.armor.acid]") + else + return + else if(href_list["delall"]) if(!check_rights(R_DEBUG|R_SERVER)) return @@ -837,7 +878,7 @@ message_admins("[key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ") else if(href_list["addreagent"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/atom/A = locate(href_list["addreagent"]) @@ -927,7 +968,7 @@ href_list["datumrefresh"] = href_list["modtransform"] else if(href_list["rotatedatum"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/atom/A = locate(href_list["rotatedatum"]) @@ -943,7 +984,7 @@ href_list["datumrefresh"] = href_list["rotatedatum"] else if(href_list["editorgans"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/mob/living/carbon/C = locate(href_list["editorgans"]) in GLOB.mob_list @@ -955,7 +996,7 @@ href_list["datumrefresh"] = href_list["editorgans"] else if(href_list["givetrauma"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/mob/living/carbon/C = locate(href_list["givetrauma"]) in GLOB.mob_list @@ -978,7 +1019,7 @@ href_list["datumrefresh"] = href_list["givetrauma"] else if(href_list["curetraumas"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/mob/living/carbon/C = locate(href_list["curetraumas"]) in GLOB.mob_list @@ -991,7 +1032,7 @@ href_list["datumrefresh"] = href_list["curetraumas"] else if(href_list["hallucinate"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/mob/living/carbon/C = locate(href_list["hallucinate"]) in GLOB.mob_list @@ -1204,7 +1245,7 @@ admin_ticket_log(H, msg) else if(href_list["adjustDamage"] && href_list["mobToDamage"]) - if(!check_rights(0)) + if(!check_rights(NONE)) return var/mob/living/L = locate(href_list["mobToDamage"]) in GLOB.mob_list @@ -1244,4 +1285,3 @@ message_admins(msg) admin_ticket_log(L, msg) href_list["datumrefresh"] = href_list["mobToDamage"] - diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index c3970baee0..d2ded9f907 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -73,6 +73,9 @@ // Randomly pick a symptom to activate. /datum/disease/advance/stage_act() ..() + if(carrier) + return + if(symptoms && symptoms.len) if(!processing) diff --git a/code/datums/diseases/advance/symptoms/genetics.dm b/code/datums/diseases/advance/symptoms/genetics.dm index af1e460024..c01fccee13 100644 --- a/code/datums/diseases/advance/symptoms/genetics.dm +++ b/code/datums/diseases/advance/symptoms/genetics.dm @@ -10,7 +10,7 @@ DNA Saboteur Fatal Level. Bonus - Cleans the DNA of a person and then randomly gives them a disability. + Cleans the DNA of a person and then randomly gives them a trait. ////////////////////////////////////// */ diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 3f95fd6482..8c884f409c 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -233,7 +233,7 @@ /datum/symptom/heal/coma/CanHeal(datum/disease/advance/A) var/mob/living/M = A.affected_mob - if(M.status_flags & FAKEDEATH) + if(M.has_trait(TRAIT_FAKEDEATH)) return power else if(M.IsUnconscious() || M.stat == UNCONSCIOUS) return power * 0.9 @@ -249,7 +249,7 @@ /datum/symptom/heal/coma/proc/coma(mob/living/M) if(deathgasp) M.emote("deathgasp") - M.status_flags |= FAKEDEATH + M.fakedeath("regenerative_coma") M.update_stat() M.update_canmove() addtimer(CALLBACK(src, .proc/uncoma, M), 300) @@ -258,7 +258,7 @@ if(!active_coma) return active_coma = FALSE - M.status_flags &= ~FAKEDEATH + M.cure_fakedeath("regenerative_coma") M.update_stat() M.update_canmove() diff --git a/code/datums/diseases/advance/symptoms/sensory.dm b/code/datums/diseases/advance/symptoms/sensory.dm index 911ffd7e26..bb1170bc58 100644 --- a/code/datums/diseases/advance/symptoms/sensory.dm +++ b/code/datums/diseases/advance/symptoms/sensory.dm @@ -86,14 +86,14 @@ if(4, 5) M.restoreEars() - if(M.has_disability(DISABILITY_BLIND, EYE_DAMAGE)) + if(M.has_trait(TRAIT_BLIND, EYE_DAMAGE)) if(prob(20)) to_chat(M, "Your vision slowly returns...") M.cure_blind(EYE_DAMAGE) M.cure_nearsighted(EYE_DAMAGE) M.blur_eyes(35) - else if(M.has_disability(DISABILITY_NEARSIGHT, EYE_DAMAGE)) + else if(M.has_trait(TRAIT_NEARSIGHT, EYE_DAMAGE)) to_chat(M, "You can finally focus your eyes on distant objects.") M.cure_nearsighted(EYE_DAMAGE) M.blur_eyes(10) diff --git a/code/datums/diseases/advance/symptoms/vision.dm b/code/datums/diseases/advance/symptoms/vision.dm index 279ce51417..0b42012f76 100644 --- a/code/datums/diseases/advance/symptoms/vision.dm +++ b/code/datums/diseases/advance/symptoms/vision.dm @@ -61,7 +61,7 @@ Bonus M.become_nearsighted(EYE_DAMAGE) if(prob(eyes.eye_damage - 10 + 1)) if(!remove_eyes) - if(!M.has_disability(DISABILITY_BLIND)) + if(!M.has_trait(TRAIT_BLIND)) to_chat(M, "You go blind!") M.become_blind(EYE_DAMAGE) else diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index c5ac11142f..17aebc4629 100644 --- a/code/datums/diseases/transformation.dm +++ b/code/datums/diseases/transformation.dm @@ -204,12 +204,13 @@ ..() switch(stage) if(1) - if(ishuman(affected_mob) && affected_mob.dna && affected_mob.dna.species.id == "slime") - stage = 5 + if(ishuman(affected_mob) && affected_mob.dna) + if(affected_mob.dna.species.id == "slime" || affected_mob.dna.species.id == "stargazer" || affected_mob.dna.species.id == "lum") + stage = 5 if(3) if(ishuman(affected_mob)) var/mob/living/carbon/human/human = affected_mob - if(human.dna.species.id != "slime") + if(human.dna.species.id != "slime" && affected_mob.dna.species.id != "stargazer" && affected_mob.dna.species.id != "lum") human.set_species(/datum/species/jelly/slime) /datum/disease/transformation/corgi diff --git a/code/datums/embedding_behavior.dm b/code/datums/embedding_behavior.dm new file mode 100644 index 0000000000..f631b9b1c4 --- /dev/null +++ b/code/datums/embedding_behavior.dm @@ -0,0 +1,53 @@ +#define EMBEDID "embed-[embed_chance]-[embedded_fall_chance]-[embedded_pain_chance]-[embedded_pain_multiplier]-[embedded_fall_pain_multiplier]-[embedded_impact_pain_multiplier]-[embedded_unsafe_removal_pain_multiplier]-[embedded_unsafe_removal_time]" + +/proc/getEmbeddingBehavior(embed_chance = EMBED_CHANCE, + embedded_fall_chance = EMBEDDED_ITEM_FALLOUT, + embedded_pain_chance = EMBEDDED_PAIN_CHANCE, + embedded_pain_multiplier = EMBEDDED_PAIN_MULTIPLIER, + embedded_fall_pain_multiplier = EMBEDDED_FALL_PAIN_MULTIPLIER, + embedded_impact_pain_multiplier = EMBEDDED_IMPACT_PAIN_MULTIPLIER, + embedded_unsafe_removal_pain_multiplier = EMBEDDED_UNSAFE_REMOVAL_PAIN_MULTIPLIER, + embedded_unsafe_removal_time = EMBEDDED_UNSAFE_REMOVAL_TIME) + . = locate(EMBEDID) + if (!.) + . = new /datum/embedding_behavior(embed_chance, embedded_fall_chance, embedded_pain_chance, embedded_pain_multiplier, embedded_fall_pain_multiplier, embedded_impact_pain_multiplier, embedded_unsafe_removal_pain_multiplier, embedded_unsafe_removal_time) + +/datum/embedding_behavior + var/embed_chance + var/embedded_fall_chance + var/embedded_pain_chance + var/embedded_pain_multiplier //The coefficient of multiplication for the damage this item does while embedded (this*w_class) + var/embedded_fall_pain_multiplier //The coefficient of multiplication for the damage this item does when falling out of a limb (this*w_class) + var/embedded_impact_pain_multiplier //The coefficient of multiplication for the damage this item does when first embedded (this*w_class) + var/embedded_unsafe_removal_pain_multiplier //The coefficient of multiplication for the damage removing this without surgery causes (this*w_class) + var/embedded_unsafe_removal_time //A time in ticks, multiplied by the w_class. + +/datum/embedding_behavior/New(embed_chance = EMBED_CHANCE, + embedded_fall_chance = EMBEDDED_ITEM_FALLOUT, + embedded_pain_chance = EMBEDDED_PAIN_CHANCE, + embedded_pain_multiplier = EMBEDDED_PAIN_MULTIPLIER, + embedded_fall_pain_multiplier = EMBEDDED_FALL_PAIN_MULTIPLIER, + embedded_impact_pain_multiplier = EMBEDDED_IMPACT_PAIN_MULTIPLIER, + embedded_unsafe_removal_pain_multiplier = EMBEDDED_UNSAFE_REMOVAL_PAIN_MULTIPLIER, + embedded_unsafe_removal_time = EMBEDDED_UNSAFE_REMOVAL_TIME) + src.embed_chance = embed_chance + src.embedded_fall_chance = embedded_fall_chance + src.embedded_pain_chance = embedded_pain_chance + src.embedded_pain_multiplier = embedded_pain_multiplier + src.embedded_fall_pain_multiplier = embedded_fall_pain_multiplier + src.embedded_impact_pain_multiplier = embedded_impact_pain_multiplier + src.embedded_unsafe_removal_pain_multiplier = embedded_unsafe_removal_pain_multiplier + src.embedded_unsafe_removal_time = embedded_unsafe_removal_time + tag = EMBEDID + +/datum/embedding_behavior/proc/setRating(embed_chance, embedded_fall_chance, embedded_pain_chance, embedded_pain_multiplier, embedded_fall_pain_multiplier, embedded_impact_pain_multiplier, embedded_unsafe_removal_pain_multiplier, embedded_unsafe_removal_time) + return getEmbeddingBehavior((isnull(embed_chance) ? src.embed_chance : embed_chance),\ + (isnull(embedded_fall_chance) ? src.embedded_fall_chance : embedded_fall_chance),\ + (isnull(embedded_pain_chance) ? src.embedded_pain_chance : embedded_pain_chance),\ + (isnull(embedded_pain_multiplier) ? src.embedded_pain_multiplier : embedded_pain_multiplier),\ + (isnull(embedded_fall_pain_multiplier) ? src.embedded_fall_pain_multiplier : embedded_fall_pain_multiplier),\ + (isnull(embedded_impact_pain_multiplier) ? src.embedded_impact_pain_multiplier : embedded_impact_pain_multiplier),\ + (isnull(embedded_unsafe_removal_pain_multiplier) ? src.embedded_unsafe_removal_pain_multiplier : embedded_unsafe_removal_pain_multiplier),\ + (isnull(embedded_unsafe_removal_time) ? src.embedded_unsafe_removal_time : embedded_unsafe_removal_time)) + +#undef EMBEDID diff --git a/code/datums/emotes.dm b/code/datums/emotes.dm index b452eff382..1f68a9ec42 100644 --- a/code/datums/emotes.dm +++ b/code/datums/emotes.dm @@ -101,7 +101,7 @@ if(is_type_in_typecache(user, mob_type_blacklist_typecache)) return FALSE if(status_check && !is_type_in_typecache(user, mob_type_ignore_stat_typecache)) - if(user.stat > stat_allowed || (user.status_flags & FAKEDEATH)) + if(user.stat > stat_allowed) to_chat(user, "You cannot [key] while unconscious.") return FALSE if(restraint_check && (user.restrained() || user.buckled)) diff --git a/code/datums/helper_datums/getrev.dm b/code/datums/helper_datums/getrev.dm index b24622df6e..9b431732aa 100644 --- a/code/datums/helper_datums/getrev.dm +++ b/code/datums/helper_datums/getrev.dm @@ -12,9 +12,9 @@ logs = splittext(logs[logs.len - 1], " ") date = unix2date(text2num(logs[5])) commit = logs[2] - log_world("[date]") + log_world("[commit]: [date]") logs = world.file2list(".git/logs/refs/remotes/origin/master") - if(logs) + if(logs.len) originmastercommit = splittext(logs[logs.len - 1], " ")[2] if(testmerge.len) @@ -24,8 +24,9 @@ var/tmcommit = testmerge[line]["commit"] log_world("Test merge active of PR #[line] commit [tmcommit]") SSblackbox.record_feedback("nested tally", "testmerged_prs", 1, list("[line]", "[tmcommit]")) - log_world("Based off origin/master commit [originmastercommit]") - else + if(originmastercommit) + log_world("Based off origin/master commit [originmastercommit]") + else if(originmastercommit) log_world(originmastercommit) /datum/getrev/proc/GetTestMergeInfo(header = TRUE) @@ -55,7 +56,8 @@ var/pc = GLOB.revdata.originmastercommit to_chat(src, "[prefix][copytext(pc, 1, min(length(pc), 7))]") else - to_chat(src, "Revision unknown") + to_chat(src, "Master revision unknown") + to_chat(src, "Revision: [GLOB.revdata.commit]") if(SERVER_TOOLS_PRESENT) to_chat(src, "Server tools version: [SERVER_TOOLS_VERSION]") to_chat(src, "Server tools API version: [SERVER_TOOLS_API_VERSION]") diff --git a/code/datums/holocall.dm b/code/datums/holocall.dm index 75abc87080..f4e0edc67d 100644 --- a/code/datums/holocall.dm +++ b/code/datums/holocall.dm @@ -206,6 +206,8 @@ name = "holorecord disk" desc = "Stores recorder holocalls." icon_state = "holodisk" + obj_flags = UNIQUE_RENAME + materials = list(MAT_METAL = 100, MAT_GLASS = 100) var/datum/holorecord/record //Preset variables var/preset_image_type @@ -220,6 +222,22 @@ QDEL_NULL(record) return ..() +/obj/item/disk/holodisk/attackby(obj/item/W, mob/user, params) + if(istype(W, /obj/item/disk/holodisk)) + var/obj/item/disk/holodisk/holodiskOriginal = W + if (holodiskOriginal.record) + if (!record) + record = new + record.caller_name = holodiskOriginal.record.caller_name + record.caller_image = holodiskOriginal.record.caller_image + record.entries = holodiskOriginal.record.entries.Copy() + record.language = holodiskOriginal.record.language + to_chat(user, "You copy the record from [holodiskOriginal] to [src] by connecting the ports!") + name = holodiskOriginal.name + else + to_chat(user, "[holodiskOriginal] has no record on it!") + ..() + /obj/item/disk/holodisk/proc/build_record() record = new var/list/lines = splittext(preset_record_text,"\n") diff --git a/code/datums/map_config.dm b/code/datums/map_config.dm index c49c851ac4..bda639892b 100644 --- a/code/datums/map_config.dm +++ b/code/datums/map_config.dm @@ -11,6 +11,12 @@ var/minetype = "lavaland" + var/shuttles = list( + "cargo" = "cargo_box", + "ferry" = "ferry_fancy", + "whiteship" = "whiteship_box", + "emergency" = "emergency_box") + //Order matters here. var/list/transition_config = list(CENTCOM = SELFLOOPING, MAIN_STATION = CROSSLINKED, @@ -69,6 +75,12 @@ map_path = json["map_path"] map_file = json["map_file"] + if(islist(json["shuttles"])) + var/list/L = json["shuttles"] + for(var/key in L) + var/value = L[key] + shuttles[key] = value + minetype = json["minetype"] || minetype allow_custom_shuttles = json["allow_custom_shuttles"] != FALSE @@ -81,12 +93,16 @@ defaulted = FALSE -#define CHECK_EXISTS(X) if(!istext(json[X])) { log_world(X + "missing from json!"); return; } +#define CHECK_EXISTS(X) if(!istext(json[X])) { log_world("[##X] missing from json!"); return; } /datum/map_config/proc/ValidateJSON(list/json) CHECK_EXISTS("map_name") CHECK_EXISTS("map_path") CHECK_EXISTS("map_file") + var/shuttles = json["shuttles"] + if(shuttles && !islist(shuttles)) + log_world("json\[shuttles\] is not a list!") + var/path = GetFullMapPath(json["map_path"], json["map_file"]) if(!fexists(path)) log_world("Map file ([path]) does not exist!") diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm index aeaf477ef1..54c0bac799 100644 --- a/code/datums/martial/sleeping_carp.dm +++ b/code/datums/martial/sleeping_carp.dm @@ -197,7 +197,7 @@ /obj/item/twohanded/bostaff/attack(mob/target, mob/living/user) add_fingerprint(user) - if((user.has_disability(DISABILITY_CLUMSY)) && prob(50)) + if((user.has_trait(TRAIT_CLUMSY)) && prob(50)) to_chat(user, "You club yourself over the head with [src].") user.Knockdown(60) if(ishuman(user)) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 147eee631c..45152ee8b4 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -693,20 +693,20 @@ var/datum/antagonist/changeling/C = has_antag_datum(/datum/antagonist/changeling) if(!C) C = add_antag_datum(/datum/antagonist/changeling) - special_role = "Changeling" + special_role = ROLE_CHANGELING return C /datum/mind/proc/make_Wizard() if(!has_antag_datum(/datum/antagonist/wizard)) - special_role = "Wizard" - assigned_role = "Wizard" + special_role = ROLE_WIZARD + assigned_role = ROLE_WIZARD add_antag_datum(/datum/antagonist/wizard) /datum/mind/proc/make_Cultist() if(!has_antag_datum(/datum/antagonist/cult,TRUE)) SSticker.mode.add_cultist(src,FALSE,equip=TRUE) - special_role = "Cultist" + special_role = ROLE_CULTIST to_chat(current, "You catch a glimpse of the Realm of Nar-Sie, The Geometer of Blood. You now see how flimsy your world is, you see that it should be open to the knowledge of Nar-Sie.") to_chat(current, "Assist your new bretheren in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back.") @@ -715,7 +715,7 @@ head.give_flash = TRUE head.give_hud = TRUE add_antag_datum(head) - special_role = "Head Revolutionary" + special_role = ROLE_REV_HEAD /datum/mind/proc/AddSpell(obj/effect/proc_holder/spell/S) spell_list += S @@ -816,7 +816,7 @@ //XENO /mob/living/carbon/alien/mind_initialize() ..() - mind.special_role = "Alien" + mind.special_role = ROLE_ALIEN //AI /mob/living/silicon/ai/mind_initialize() @@ -831,5 +831,5 @@ //PAI /mob/living/silicon/pai/mind_initialize() ..() - mind.assigned_role = "pAI" + mind.assigned_role = ROLE_PAI mind.special_role = "" diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm index ee75402e03..418b783b94 100644 --- a/code/datums/mutations/body.dm +++ b/code/datums/mutations/body.dm @@ -85,12 +85,12 @@ /datum/mutation/human/clumsy/on_acquiring(mob/living/carbon/human/owner) if(..()) return - owner.add_disability(DISABILITY_CLUMSY, GENETIC_MUTATION) + owner.add_trait(TRAIT_CLUMSY, GENETIC_MUTATION) /datum/mutation/human/clumsy/on_losing(mob/living/carbon/human/owner) if(..()) return - owner.remove_disability(DISABILITY_CLUMSY, GENETIC_MUTATION) + owner.remove_trait(TRAIT_CLUMSY, GENETIC_MUTATION) //Tourettes causes you to randomly stand in place and shout. @@ -124,12 +124,12 @@ /datum/mutation/human/deaf/on_acquiring(mob/living/carbon/human/owner) if(..()) return - owner.add_disability(DISABILITY_DEAF, GENETIC_MUTATION) + owner.add_trait(TRAIT_DEAF, GENETIC_MUTATION) /datum/mutation/human/deaf/on_losing(mob/living/carbon/human/owner) if(..()) return - owner.remove_disability(DISABILITY_DEAF, GENETIC_MUTATION) + owner.remove_trait(TRAIT_DEAF, GENETIC_MUTATION) //Monified turns you into a monkey. diff --git a/code/datums/mutations/hulk.dm b/code/datums/mutations/hulk.dm index 9340361930..8397c3b064 100644 --- a/code/datums/mutations/hulk.dm +++ b/code/datums/mutations/hulk.dm @@ -11,8 +11,8 @@ /datum/mutation/human/hulk/on_acquiring(mob/living/carbon/human/owner) if(..()) return - var/status = CANSTUN | CANKNOCKDOWN | CANUNCONSCIOUS | CANPUSH - owner.status_flags &= ~status + owner.add_trait(TRAIT_STUNIMMUNE, TRAIT_HULK) + owner.add_trait(TRAIT_PUSHIMMUNE, TRAIT_HULK) owner.update_body_parts() /datum/mutation/human/hulk/on_attack_hand(mob/living/carbon/human/owner, atom/target, proximity) @@ -27,7 +27,8 @@ /datum/mutation/human/hulk/on_losing(mob/living/carbon/human/owner) if(..()) return - owner.status_flags |= CANSTUN | CANKNOCKDOWN | CANUNCONSCIOUS | CANPUSH + owner.remove_trait(TRAIT_STUNIMMUNE, TRAIT_HULK) + owner.remove_trait(TRAIT_PUSHIMMUNE, TRAIT_HULK) owner.update_body_parts() /datum/mutation/human/hulk/say_mod(message) diff --git a/code/datums/mutations/speech.dm b/code/datums/mutations/speech.dm index 989a9221b0..3f303535ce 100644 --- a/code/datums/mutations/speech.dm +++ b/code/datums/mutations/speech.dm @@ -30,12 +30,12 @@ /datum/mutation/human/mute/on_acquiring(mob/living/carbon/human/owner) if(..()) return - owner.add_disability(DISABILITY_MUTE, GENETIC_MUTATION) + owner.add_trait(TRAIT_MUTE, GENETIC_MUTATION) /datum/mutation/human/mute/on_losing(mob/living/carbon/human/owner) if(..()) return - owner.remove_disability(DISABILITY_MUTE, GENETIC_MUTATION) + owner.remove_trait(TRAIT_MUTE, GENETIC_MUTATION) /datum/mutation/human/smile diff --git a/code/datums/position_point_vector.dm b/code/datums/position_point_vector.dm index 6fae092c9d..20ec95a516 100644 --- a/code/datums/position_point_vector.dm +++ b/code/datums/position_point_vector.dm @@ -1,9 +1,14 @@ //Designed for things that need precision trajectories like projectiles. //Don't use this for anything that you don't absolutely have to use this with (like projectiles!) because it isn't worth using a datum unless you need accuracy down to decimal places in pixels. +//You might see places where it does - 16 - 1. This is intentionally 17 instead of 16, because of how byond's tiles work and how not doing it will result in rounding errors like things getting put on the wrong turf. + #define RETURN_PRECISE_POSITION(A) new /datum/position(A) #define RETURN_PRECISE_POINT(A) new /datum/point(A) +#define RETURN_POINT_VECTOR(ATOM, ANGLE, SPEED) {new /datum/point/vector(ATOM, null, null, null, null, ANGLE, SPEED)} +#define RETURN_POINT_VECTOR_INCREMENT(ATOM, ANGLE, SPEED, AMT) {new /datum/point/vector(ATOM, null, null, null, null, ANGLE, SPEED, AMT)} + /datum/position //For positions with map x/y/z and pixel x/y so you don't have to return lists. Could use addition/subtraction in the future I guess. var/x = 0 var/y = 0 @@ -50,8 +55,8 @@ /proc/point_midpoint_points(datum/point/a, datum/point/b) //Obviously will not support multiZ calculations! Same for the two below. var/datum/point/P = new - P.x = round(a.x + (b.x - a.x) / 2, 1) - P.y = round(a.y + (b.y - a.y) / 2, 1) + P.x = a.x + (b.x - a.x) / 2 + P.y = a.y + (b.y - a.y) / 2 P.z = a.z return P @@ -94,12 +99,21 @@ /datum/point/proc/initialize_location(tile_x, tile_y, tile_z, p_x = 0, p_y = 0) if(!isnull(tile_x)) - x = ((tile_x - 1) * world.icon_size) + world.icon_size / 2 + p_x + x = ((tile_x - 1) * world.icon_size) + world.icon_size / 2 + p_x + 1 if(!isnull(tile_y)) - y = ((tile_y - 1) * world.icon_size) + world.icon_size / 2+ p_y + y = ((tile_y - 1) * world.icon_size) + world.icon_size / 2 + p_y + 1 if(!isnull(tile_z)) z = tile_z +/datum/point/proc/debug_out() + var/turf/T = return_turf() + return "\ref[src] aX [x] aY [y] aZ [z] pX [return_px()] pY [return_py()] mX [T.x] mY [T.y] mZ [T.z]" + +/datum/point/proc/move_atom_to_src(atom/movable/AM) + AM.forceMove(return_turf()) + AM.pixel_x = return_px() + AM.pixel_y = return_py() + /datum/point/proc/return_turf() return locate(CEILING(x / world.icon_size, 1), CEILING(y / world.icon_size, 1), z) @@ -110,10 +124,10 @@ return new /datum/position(src) /datum/point/proc/return_px() - return MODULUS(x, world.icon_size) - 16 + return MODULUS(x, world.icon_size) - 16 - 1 /datum/point/proc/return_py() - return MODULUS(y, world.icon_size) - 16 + return MODULUS(y, world.icon_size) - 16 - 1 /datum/point/proc/mapcheck() . = FALSE @@ -153,9 +167,11 @@ var/starting_y = 0 var/starting_z = 0 -/datum/point/vector/New(_x, _y, _z, _pixel_x = 0, _pixel_y = 0, _angle, _speed) +/datum/point/vector/New(_x, _y, _z, _pixel_x = 0, _pixel_y = 0, _angle, _speed, initial_increment = 0) ..() initialize_trajectory(_speed, _angle) + if(initial_increment) + increment(initial_increment) /datum/point/vector/initialize_location(tile_x, tile_y, tile_z, p_x = 0, p_y = 0) . = ..() @@ -236,4 +252,4 @@ var/needed_time = world.time - last_move last_process = world.time last_move = world.time - increment(needed_time) + increment(needed_time / SSprojectiles.wait) diff --git a/code/datums/ruins.dm b/code/datums/ruins.dm index aa46c08a6c..2b33a9b843 100644 --- a/code/datums/ruins.dm +++ b/code/datums/ruins.dm @@ -6,8 +6,13 @@ How is there a wooden container filled with 18th century coinage in the middle of a lavawracked hellscape? \ It is clearly a mystery." - var/cost = null //negative numbers will always be placed, with lower (negative) numbers being placed first; positive and 0 numbers will be placed randomly + var/unpickable = FALSE //If TRUE these won't be placed automatically (can still be forced or loaded with another ruin) + var/always_place = FALSE //Will skip the whole weighting process and just plop this down, ideally you want the ruins of this kind to have no cost. + var/placement_weight = 1 //How often should this ruin appear + var/cost = 0 //Cost in ruin budget placement system var/allow_duplicates = TRUE + var/list/always_spawn_with = null //These ruin types will be spawned along with it (where dependent on the flag) eg list(/datum/map_template/ruin/space/teleporter_space = SPACERUIN_Z) + var/list/never_spawn_with = null //If this ruin is spawned these will not eg list(/datum/map_template/ruin/base_alternate) var/prefix = null var/suffix = null diff --git a/code/datums/ruins/lavaland.dm b/code/datums/ruins/lavaland.dm index 5c646491c8..8817a1ff96 100644 --- a/code/datums/ruins/lavaland.dm +++ b/code/datums/ruins/lavaland.dm @@ -120,7 +120,7 @@ id = "hierophant" description = "A strange, square chunk of metal of massive size. Inside awaits only death and many, many squares." suffix = "lavaland_surface_hierophant.dmm" - cost = -1 + always_place = TRUE allow_duplicates = FALSE /datum/map_template/ruin/lavaland/blood_drunk_miner diff --git a/code/datums/saymode.dm b/code/datums/saymode.dm index 176c762e9c..93f733439c 100644 --- a/code/datums/saymode.dm +++ b/code/datums/saymode.dm @@ -18,23 +18,30 @@ switch(user.lingcheck()) if(LINGHIVE_LINK) var/msg = "[user.mind]: [message]" - for(var/_M in GLOB.mob_list) + for(var/_M in GLOB.player_list) var/mob/M = _M if(M in GLOB.dead_mob_list) var/link = FOLLOW_LINK(M, user) to_chat(M, "[link] [msg]") else switch(M.lingcheck()) - if(LINGHIVE_LINK, LINGHIVE_LING) + if (LINGHIVE_LING) + var/mob/living/L = M + if (!L.has_trait(CHANGELING_HIVEMIND_MUTE)) + to_chat(M, msg) + if(LINGHIVE_LINK) to_chat(M, msg) if(LINGHIVE_OUTSIDER) if(prob(40)) to_chat(M, "We can faintly sense an outsider trying to communicate through the hivemind...") if(LINGHIVE_LING) + if (user.has_trait(CHANGELING_HIVEMIND_MUTE)) + to_chat(user, "The poison in the air hinders our ability to interact with the hivemind.") + return FALSE var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) var/msg = "[changeling.changelingID]: [message]" log_talk(user,"[changeling.changelingID]/[user.key] : [message]",LOGSAY) - for(var/_M in GLOB.mob_list) + for(var/_M in GLOB.player_list) var/mob/M = _M if(M in GLOB.dead_mob_list) var/link = FOLLOW_LINK(M, user) @@ -44,7 +51,9 @@ if(LINGHIVE_LINK) to_chat(M, msg) if(LINGHIVE_LING) - to_chat(M, msg) + var/mob/living/L = M + if (!L.has_trait(CHANGELING_HIVEMIND_MUTE)) + to_chat(M, msg) if(LINGHIVE_OUTSIDER) if(prob(40)) to_chat(M, "We can faintly sense another of our kind trying to communicate through the hivemind...") diff --git a/code/datums/shuttles.dm b/code/datums/shuttles.dm index 1a0c19f5ab..404c584fd4 100644 --- a/code/datums/shuttles.dm +++ b/code/datums/shuttles.dm @@ -40,6 +40,28 @@ /datum/map_template/shuttle/whiteship port_id = "whiteship" +/datum/map_template/shuttle/labour + port_id = "labour" + can_be_bought = FALSE + +/datum/map_template/shuttle/mining + port_id = "mining" + can_be_bought = FALSE + +/datum/map_template/shuttle/cargo + port_id = "cargo" + can_be_bought = FALSE + +/datum/map_template/shuttle/arrival + port_id = "arrival" + can_be_bought = FALSE + +/datum/map_template/shuttle/infiltrator + port_id = "infiltrator" + can_be_bought = FALSE + + + // Shuttles start here: /datum/map_template/shuttle/emergency/airless @@ -100,7 +122,7 @@ description = "The glorious results of centuries of plasma research done by Nanotrasen employees. This is the reason why you are here. Get on and dance like you're on fire, burn baby burn!" admin_notes = "Flaming hot." credit_cost = 10000 - + /datum/map_template/shuttle/emergency/arena suffix = "arena" name = "The Arena" @@ -218,6 +240,12 @@ admin_notes = "If the crew can solve the puzzle, they will wake the wabbajack statue. It will likely not end well. There's a reason it's boarded up. Maybe they should have just left it alone." credit_cost = 15000 +/datum/map_template/shuttle/emergency/omega + suffix = "omega" + name = "Omegastation Emergency Shuttle" + description = "On the smaller size with a modern design, this shuttle is for the crew who like the cosier things, while still being able to stretch their legs." + credit_cost = 1000 + /datum/map_template/shuttle/ferry/base suffix = "base" name = "transport ferry" @@ -240,13 +268,18 @@ Fulfilling needs you didn't even know you had. We've got EVERYTHING, and something else!" admin_notes = "Currently larger than ferry docking port on Box, will not hit anything, but must be force docked. Trader and ERT bodyguards are not included." +/datum/map_template/shuttle/ferry/fancy + suffix = "fancy" + name = "fancy transport ferry" + description = "At some point, someone upgraded the ferry to have fancier flooring... and less seats." + /datum/map_template/shuttle/whiteship/box suffix = "box" name = "NT Medical Ship" /datum/map_template/shuttle/whiteship/meta suffix = "meta" - name = "NT Recovery White-ship" + name = "NT Recovery Whiteship" /datum/map_template/shuttle/whiteship/pubby suffix = "pubby" @@ -256,6 +289,11 @@ suffix = "cere" name = "NT Construction Vessel" +/datum/map_template/shuttle/whiteship/delta + suffix = "delta" + name = "Unnamed NT Vessel" + admin_notes = "The Delta whiteship doesn't have a name, apparently." + /datum/map_template/shuttle/cargo/box suffix = "box" name = "supply shuttle (Box)" @@ -277,3 +315,43 @@ description = "The CentCom Raven Battlecruiser is currently docked at the CentCom ship bay awaiting a mission, this Battlecruiser has been reassigned as an emergency escape shuttle for currently unknown reasons. The CentCom Raven Battlecruiser should comfortably fit a medium to large crew size crew and is complete with all required facitlities including a top of the range CentCom Medical Bay." admin_notes = "The long way home" credit_cost = 12500 + +/datum/map_template/shuttle/arrival/box + suffix = "box" + name = "arrival shuttle (Box)" + +/datum/map_template/shuttle/cargo/box + suffix = "box" + name = "cargo ferry (Box)" + +/datum/map_template/shuttle/mining/box + suffix = "box" + name = "mining shuttle (Box)" + +/datum/map_template/shuttle/labour/box + suffix = "box" + name = "labour shuttle (Box)" + +/datum/map_template/shuttle/infiltrator/basic + suffix = "basic" + name = "basic syndicate infiltrator" + +/datum/map_template/shuttle/cargo/delta + suffix = "delta" + name = "cargo ferry (Delta)" + +/datum/map_template/shuttle/mining/delta + suffix = "delta" + name = "mining shuttle (Delta)" + +/datum/map_template/shuttle/labour/delta + suffix = "delta" + name = "labour shuttle (Delta)" + +/datum/map_template/shuttle/arrival/delta + suffix = "delta" + name = "arrival shuttle (Delta)" + +/datum/map_template/shuttle/arrival/pubby + suffix = "pubby" + name = "arrival shuttle (Pubby)" diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index 22868f855f..600b8d9679 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -245,6 +245,10 @@ duration = -1 alert_type = null +/datum/status_effect/cultghost/on_apply() + owner.see_invisible = SEE_INVISIBLE_OBSERVER + owner.see_in_dark = 2 + /datum/status_effect/cultghost/tick() if(owner.reagents) owner.reagents.del_reagent("holywater") //can't be deconverted diff --git a/code/datums/wires/airlock.dm b/code/datums/wires/airlock.dm index 2690ae5150..5a01227b03 100644 --- a/code/datums/wires/airlock.dm +++ b/code/datums/wires/airlock.dm @@ -28,7 +28,7 @@ var/list/status = list() status += "The door bolts [A.locked ? "have fallen!" : "look up."]" status += "The test light is [A.hasPower() ? "on" : "off"]." - status += "The AI connection light is [A.aiControlDisabled || A.emagged ? "off" : "on"]." + status += "The AI connection light is [A.aiControlDisabled || (A.obj_flags & EMAGGED) ? "off" : "on"]." status += "The check wiring light is [A.safe ? "off" : "on"]." status += "The timer is powered [A.autoclose ? "on" : "off"]." status += "The speed light is [A.normalspeed ? "on" : "off"]." @@ -44,7 +44,7 @@ if(WIRE_BACKUP1, WIRE_BACKUP2) // Pulse to loose backup power. A.loseBackupPower() if(WIRE_OPEN) // Pulse to open door (only works not emagged and ID wire is cut or no access is required). - if(A.emagged) + if(A.obj_flags & EMAGGED) return if(!A.requiresID() || A.check_access(null)) if(A.density) diff --git a/code/datums/wires/wires.dm b/code/datums/wires/wires.dm index 19f7157faa..fd9c60c013 100644 --- a/code/datums/wires/wires.dm +++ b/code/datums/wires/wires.dm @@ -109,6 +109,12 @@ if(cut_wires.len == wires.len) return TRUE +/datum/wires/proc/is_dud(wire) + return dd_hasprefix(wire, WIRE_DUD_PREFIX) + +/datum/wires/proc/is_dud_color(color) + return is_dud(get_wire(color)) + /datum/wires/proc/cut(wire) if(is_cut(wire)) cut_wires -= wire @@ -208,10 +214,24 @@ /datum/wires/ui_data(mob/user) var/list/data = list() var/list/payload = list() + var/reveal_wires = FALSE + + // Admin ghost can see a purpose of each wire. + if(IsAdminGhost(user)) + reveal_wires = TRUE + + // Same for anyone with an abductor multitool. + else if(user.is_holding_item_of_type(/obj/item/device/multitool/abductor)) + reveal_wires = TRUE + + // Station blueprints do that too, but only if the wires are not randomized. + else if(user.is_holding_item_of_type(/obj/item/areaeditor/blueprints) && !randomize) + reveal_wires = TRUE + for(var/color in colors) payload.Add(list(list( "color" = color, - "wire" = (IsAdminGhost(user) || (user.is_holding_item_of_type(/obj/item/device/multitool/abductor)) ? get_wire(color) : null), + "wire" = ((reveal_wires && !is_dud_color(color)) ? get_wire(color) : null), "cut" = is_color_cut(color), "attached" = is_attached(color) ))) diff --git a/code/game/alternate_appearance.dm b/code/game/alternate_appearance.dm index 1a62a0fd5f..484f11fc09 100644 --- a/code/game/alternate_appearance.dm +++ b/code/game/alternate_appearance.dm @@ -125,6 +125,32 @@ GLOBAL_LIST_EMPTY(active_alternate_appearances) /datum/atom_hud/alternate_appearance/basic/observers/mobShouldSee(mob/M) return isobserver(M) +/datum/atom_hud/alternate_appearance/basic/noncult + +/datum/atom_hud/alternate_appearance/basic/noncult/New() + ..() + for(var/mob in GLOB.player_list) + if(mobShouldSee(mob)) + add_hud_to(mob) + +/datum/atom_hud/alternate_appearance/basic/noncult/mobShouldSee(mob/M) + if(!iscultist(M)) + return TRUE + return FALSE + +/datum/atom_hud/alternate_appearance/basic/cult + +/datum/atom_hud/alternate_appearance/basic/cult/New() + ..() + for(var/mob in GLOB.player_list) + if(mobShouldSee(mob)) + add_hud_to(mob) + +/datum/atom_hud/alternate_appearance/basic/cult/mobShouldSee(mob/M) + if(iscultist(M)) + return TRUE + return FALSE + /datum/atom_hud/alternate_appearance/basic/blessedAware /datum/atom_hud/alternate_appearance/basic/blessedAware/New() @@ -140,4 +166,4 @@ GLOBAL_LIST_EMPTY(active_alternate_appearances) return TRUE if(isrevenant(M) || iseminence(M) || iswizard(M)) return TRUE - return FALSE \ No newline at end of file + return FALSE diff --git a/code/game/area/areas/derelict.dm b/code/game/area/areas/derelict.dm deleted file mode 100644 index 5882fa0a8c..0000000000 --- a/code/game/area/areas/derelict.dm +++ /dev/null @@ -1,128 +0,0 @@ -//DERELICT - -/area/derelict - name = "Derelict Station" - icon_state = "storage" - blob_allowed = FALSE //Nope, no winning on the derelict as a blob. Gotta eat the station. - -/area/derelict/hallway/primary - name = "Derelict Primary Hallway" - icon_state = "hallP" - -/area/derelict/hallway/secondary - name = "Derelict Secondary Hallway" - icon_state = "hallS" - -/area/derelict/hallway/primary/port - name = "Derelict Port Hallway" - icon_state = "hallFP" - -/area/derelict/arrival - name = "Derelict Arrival Centre" - icon_state = "yellow" - -/area/derelict/storage/equipment - name = "Derelict Equipment Storage" - -/area/derelict/storage/storage_access - name = "Derelict Storage Access" - -/area/derelict/storage/engine_storage - name = "Derelict Engine Storage" - icon_state = "green" - -/area/derelict/bridge - name = "Derelict Control Room" - icon_state = "bridge" - -/area/derelict/secret - name = "Derelict Secret Room" - icon_state = "library" - -/area/derelict/bridge/access - name = "Derelict Control Room Access" - icon_state = "auxstorage" - -/area/derelict/bridge/ai_upload - name = "Derelict Computer Core" - icon_state = "ai" - -/area/derelict/solar_control - name = "Derelict Solar Control" - icon_state = "engine" - -/area/derelict/se_solar - name = "South East Solars" - icon_state = "engine" - -/area/derelict/crew_quarters - name = "Derelict Crew Quarters" - icon_state = "fitness" - -/area/derelict/medical - name = "Derelict Medbay" - icon_state = "medbay" - -/area/derelict/medical/morgue - name = "Derelict Morgue" - icon_state = "morgue" - -/area/derelict/medical/chapel - name = "Derelict Chapel" - icon_state = "chapel" - -/area/derelict/teleporter - name = "Derelict Teleporter" - icon_state = "teleporter" - -/area/derelict/eva - name = "Derelict EVA Storage" - icon_state = "eva" - -/area/derelict/ship - name = "Abandoned Ship" - icon_state = "yellow" - -/area/solar/derelict_starboard - name = "Derelict Starboard Solar Array" - icon_state = "panelsS" - -/area/solar/derelict_aft - name = "Derelict Aft Solar Array" - icon_state = "yellow" - -/area/derelict/singularity_engine - name = "Derelict Singularity Engine" - icon_state = "engine" - -/area/derelict/gravity_generator - name = "Derelict Gravity Generator Room" - icon_state = "red" - -/area/derelict/atmospherics - name = "Derelict Atmospherics" - icon_state = "red" - - - -//DJSTATION - -/area/djstation - name = "Ruskie DJ Station" - icon_state = "DJ" - has_gravity = TRUE - blob_allowed = FALSE //Nope, no winning on the DJ station as a blob. Gotta eat the main station. - -/area/djstation/solars - name = "DJ Station Solars" - icon_state = "DJ" - has_gravity = TRUE - - -//ABANDONED TELEPORTER - -/area/AIsattele - name = "Abandoned Teleporter" - icon_state = "teleporter" - music = "signal" - ambientsounds = list('sound/ambience/ambimalf.ogg') \ No newline at end of file diff --git a/code/game/area/areas/ruins.dm b/code/game/area/areas/ruins.dm deleted file mode 100644 index 04aacb42ef..0000000000 --- a/code/game/area/areas/ruins.dm +++ /dev/null @@ -1,342 +0,0 @@ -//Parent types - -/area/ruin - name = "\improper Unexplored Location" - icon_state = "away" - has_gravity = TRUE - hidden = TRUE - dynamic_lighting = DYNAMIC_LIGHTING_FORCED - - -/area/ruin/unpowered - always_unpowered = FALSE - -/area/ruin/unpowered/no_grav - has_gravity = FALSE - -/area/ruin/powered - requires_power = FALSE - - - - -//Areas - -/area/ruin/powered/beach - icon_state = "dk_yellow" - -/area/ruin/powered/clownplanet - icon_state = "dk_yellow" - -/area/ruin/powered/animal_hospital - icon_state = "dk_yellow" - -/area/ruin/powered/snow_biodome - icon_state = "dk_yellow" - -/area/ruin/powered/gluttony - icon_state = "dk_yellow" - -/area/ruin/powered/golem_ship - name = "Free Golem Ship" - icon_state = "dk_yellow" - -/area/ruin/powered/greed - icon_state = "dk_yellow" - -/area/ruin/unpowered/hierophant - name = "Hierophant's Arena" - icon_state = "dk_yellow" - -/area/ruin/powered/pride - icon_state = "dk_yellow" - -/area/ruin/powered/seedvault - icon_state = "dk_yellow" - -/area/ruin/powered/syndicate_lava_base - name = "Secret Base" - icon_state = "dk_yellow" - - -/area/ruin/unpowered/no_grav/way_home - name = "\improper Salvation" - icon_state = "away" - - -// Ruins of "onehalf" ship - -/area/ruin/onehalf/hallway - name = "Hallway" - icon_state = "hallC" - -/area/ruin/onehalf/drone_bay - name = "Mining Drone Bay" - icon_state = "engine" - -/area/ruin/onehalf/dorms_med - name = "Crew Quarters" - icon_state = "Sleep" - -/area/ruin/onehalf/bridge - name = "Bridge" - icon_state = "bridge" - - - -/area/ruin/powered/dinner_for_two - name = "Dinner for Two" - -/area/ruin/powered/authorship - name = "Authorship" - -/area/ruin/powered/aesthetic - name = "Aesthetic" - ambientsounds = list('sound/ambience/ambivapor1.ogg') - - -//Ruin of Hotel - -/area/ruin/hotel - name = "Hotel" - -/area/ruin/hotel/guestroom - name = "Hotel Guest Room" - icon_state = "Sleep" - -/area/ruin/hotel/security - name = "Hotel Security Post" - icon_state = "security" - -/area/ruin/hotel/pool - name = "Hotel Pool Room" - icon_state = "fitness" - -/area/ruin/hotel/bar - name = "Hotel Bar" - icon_state = "cafeteria" - -/area/ruin/hotel/power - name = "Hotel Power Room" - icon_state = "engine_smes" - -/area/ruin/hotel/custodial - name = "Hotel Custodial Closet" - icon_state = "janitor" - -/area/ruin/hotel/shuttle - name = "Hotel Shuttle" - icon_state = "shuttle" - requires_power = FALSE - -/area/ruin/hotel/dock - name = "Hotel Shuttle Dock" - icon_state = "start" - -/area/ruin/hotel/workroom - name = "Hotel Staff Room" - icon_state = "crew_quarters" - - - -/area/ruin/fakespace - icon_state = "space" - requires_power = TRUE - always_unpowered = TRUE - dynamic_lighting = DYNAMIC_LIGHTING_DISABLED - has_gravity = FALSE - power_light = FALSE - power_equip = FALSE - power_environ = FALSE - valid_territory = FALSE - outdoors = TRUE - ambientsounds = list('sound/ambience/ambispace.ogg','sound/ambience/title2.ogg') - blob_allowed = FALSE - - - -//Ruin of Derelict Oupost - -/area/ruin/derelictoutpost - name = "Derelict Outpost" - icon_state = "green" - -/area/ruin/derelictoutpost/cargostorage - name = "Derelict Outpost Cargo Storage" - icon_state = "storage" - -/area/ruin/derelictoutpost/cargobay - name = "Derelict Outpost Cargo Bay" - icon_state = "quartstorage" - -/area/ruin/derelictoutpost/powerstorage - name = "Derelict Outpost Power Storage" - icon_state = "engine_smes" - -/area/ruin/derelictoutpost/dockedship - name = "Derelict Outpost Docked Ship" - icon_state = "red" - - -//Ruin of Space Bar - -/area/ruin/powered/spacebar - name = "Space Bar" - icon_state = "yellow" - -/area/ruin/powered/spacebar/bar - icon_state = "bar" - - -//Ruin of turretedoutpost - -/area/ruin/turretedoutpost - name = "Turreted Outpost" - icon_state = "red" - - -//Ruin of old teleporter - -/area/ruin/oldteleporter - name = "Old teleporter" - icon_state = "teleporter" - has_gravity = FALSE - - -//Ruin of mech transport - -/area/ruin/powered/mechtransport - name = "Mech Transport" - icon_state = "green" - - -//Ruin of gas the lizard - -/area/ruin/gasthelizard - name = "Gas the lizard" - - -//Ruin of Deep Storage - -/area/ruin/deepstorage - name = "Deep Storage" - icon_state = "storage" - -/area/ruin/deepstorage/airlock - name = "Deep Storage Airlock" - icon_state = "quart" - -/area/ruin/deepstorage/power - name = "Deep Storage Power and Atmospherics Room" - icon_state = "engi_storage" - -/area/ruin/deepstorage/hydroponics - name = "Deep Storage Hydroponics" - icon_state = "garden" - -/area/ruin/deepstorage/armory - name = "Deep Storage Secure Storage" - icon_state = "armory" - -/area/ruin/deepstorage/storage - name = "Deep Storage Storage" - icon_state = "storage_wing" - -/area/ruin/deepstorage/dorm - name = "Deep Storage Dormory" - icon_state = "crew_quarters" - -/area/ruin/deepstorage/kitchen - name = "Deep Storage Kitchen" - icon_state = "kitchen" - -/area/ruin/deepstorage/crusher - name = "Deep Storage Recycler" - icon_state = "storage" - - -//Ruin of Abandoned Zoo - -/area/ruin/abandonedzoo - name = "Abandoned Zoo" - icon_state = "green" - - -//Xeno Nest - -/area/ruin/xenonest - name = "The Hive" - always_unpowered = TRUE - power_environ = FALSE - power_equip = FALSE - power_light = FALSE - poweralm = FALSE - -//ash walker nest -/area/ruin/unpowered/ash_walkers - icon_state = "red" - -//Ruin of ancient Space Station - -/area/ruin/ancientstation - name = "Charlie Station Main Corridor" - icon_state = "green" - -/area/ruin/ancientstation/powered - name = "Powered Tile" - icon_state = "teleporter" - requires_power = FALSE - -/area/ruin/ancientstation/space - name = "Exposed To Space" - icon_state = "teleporter" - has_gravity = FALSE - -/area/ruin/ancientstation/atmo - name = "Beta Station Atmospherics" - icon_state = "red" - has_gravity = FALSE - -/area/ruin/ancientstation/betanorth - name = "Beta Station North Corridor" - icon_state = "blue" - -/area/ruin/ancientstation/solar - name = "Station Solar Array" - icon_state = "panelsAP" - -/area/ruin/ancientstation/engi - name = "Charlie Station Engineering" - icon_state = "engine" - -/area/ruin/ancientstation/comm - name = "Charlie Station Command" - icon_state = "captain" - -/area/ruin/ancientstation/hydroponics - name = "Charlie Station Hydroponics" - icon_state = "garden" - -/area/ruin/ancientstation/kitchen - name = "Charlie Station Kitchen" - icon_state = "kitchen" - -/area/ruin/ancientstation/sec - name = "Charlie Station Security" - icon_state = "red" - -/area/ruin/ancientstation/deltacorridor - name = "Delta Station Main Corridor" - icon_state = "green" - -/area/ruin/ancientstation/proto - name = "Delta Station Prototype Lab" - icon_state = "toxlab" - -/area/ruin/ancientstation/rnd - name = "Delta Station Research and Development" - icon_state = "toxlab" - -/area/ruin/ancientstation/hivebot - name = "Hivebot Mothership" - icon_state = "teleporter" \ No newline at end of file diff --git a/code/game/area/areas/shuttles.dm b/code/game/area/areas/shuttles.dm index b0edb3b420..7d0283e104 100644 --- a/code/game/area/areas/shuttles.dm +++ b/code/game/area/areas/shuttles.dm @@ -140,3 +140,28 @@ /area/shuttle/syndicate_scout name = "Syndicate Scout" blob_allowed = FALSE + +/area/shuttle/caravan + blob_allowed = FALSE + requires_power = TRUE + +/area/shuttle/caravan/syndicate1 + name = "Syndicate Fighter" + +/area/shuttle/caravan/syndicate2 + name = "Syndicate Fighter" + +/area/shuttle/caravan/syndicate3 + name = "Syndicate Drop Ship" + +/area/shuttle/caravan/pirate + name = "Pirate Cutter" + +/area/shuttle/caravan/freighter1 + name = "Small Freighter" + +/area/shuttle/caravan/freighter2 + name = "Tiny Freighter" + +/area/shuttle/caravan/freighter3 + name = "Tiny Freighter" \ No newline at end of file diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 7100dfb439..5500c5bb6f 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -531,21 +531,41 @@ /atom/proc/return_temperature() return -// Default tool behaviors proc +// Tool behavior procedure. Redirects to tool-specific procs by default. +// You can override it to catch all tool interactions, for use in complex deconstruction procs. +// Just don't forget to return ..() in the end. +/atom/proc/tool_act(mob/living/user, obj/item/tool, tool_type) + switch(tool_type) + if(TOOL_CROWBAR) + return crowbar_act(user, tool) + if(TOOL_MULTITOOL) + return multitool_act(user, tool) + if(TOOL_SCREWDRIVER) + return screwdriver_act(user, tool) + if(TOOL_WRENCH) + return wrench_act(user, tool) + if(TOOL_WIRECUTTER) + return wirecutter_act(user, tool) + if(TOOL_WELDER) + return welder_act(user, tool) -/atom/proc/crowbar_act(mob/user, obj/item/tool) +// Tool-specific behavior procs. To be overridden in subtypes. +/atom/proc/crowbar_act(mob/living/user, obj/item/tool) return -/atom/proc/multitool_act(mob/user, obj/item/tool) +/atom/proc/multitool_act(mob/living/user, obj/item/tool) return -/atom/proc/screwdriver_act(mob/user, obj/item/tool) +/atom/proc/screwdriver_act(mob/living/user, obj/item/tool) return -/atom/proc/wrench_act(mob/user, obj/item/tool) +/atom/proc/wrench_act(mob/living/user, obj/item/tool) return -/atom/proc/wirecutter_act(mob/user, obj/item/tool) +/atom/proc/wirecutter_act(mob/living/user, obj/item/tool) + return + +/atom/proc/welder_act(mob/living/user, obj/item/tool) return /atom/proc/GenerateTag() diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 74ac93c023..1adddf7d58 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -87,7 +87,7 @@ //helper for getting the appropriate health status /proc/RoundHealth(mob/living/M) - if(M.stat == DEAD || (M.status_flags & FAKEDEATH)) + if(M.stat == DEAD || (M.has_trait(TRAIT_FAKEDEATH))) return "health-100" //what's our health? it doesn't matter, we're dead, or faking var/maxi_health = M.maxHealth if(iscarbon(M) && M.health < 0) @@ -167,7 +167,7 @@ var/image/holder = hud_list[STATUS_HUD] var/icon/I = icon(icon, icon_state, dir) holder.pixel_y = I.Height() - world.icon_size - if(stat == DEAD || (status_flags & FAKEDEATH)) + if(stat == DEAD || (has_trait(TRAIT_FAKEDEATH))) holder.icon_state = "huddead" else holder.icon_state = "hudhealthy" @@ -177,9 +177,9 @@ var/icon/I = icon(icon, icon_state, dir) var/virus_threat = check_virus() holder.pixel_y = I.Height() - world.icon_size - if(status_flags & XENO_HOST) + if(has_trait(TRAIT_XENO_HOST)) holder.icon_state = "hudxeno" - else if(stat == DEAD || (status_flags & FAKEDEATH)) + else if(stat == DEAD || (has_trait(TRAIT_FAKEDEATH))) holder.icon_state = "huddead" else switch(virus_threat) diff --git a/code/game/gamemodes/blob/blob.dm b/code/game/gamemodes/blob/blob.dm deleted file mode 100644 index ddb87e20f6..0000000000 --- a/code/game/gamemodes/blob/blob.dm +++ /dev/null @@ -1,109 +0,0 @@ -//Few global vars to track the blob -GLOBAL_LIST_EMPTY(blobs) //complete list of all blobs made. -GLOBAL_LIST_EMPTY(blob_cores) -GLOBAL_LIST_EMPTY(overminds) -GLOBAL_LIST_EMPTY(blob_nodes) -GLOBAL_LIST_EMPTY(blobs_legit) //used for win-score calculations, contains only blobs counted for win condition - -#define BLOB_NO_PLACE_TIME 1800 //time, in deciseconds, blobs are prevented from bursting in the gamemode - -/datum/game_mode/blob - name = "blob" - config_tag = "blob" - antag_flag = ROLE_BLOB - false_report_weight = 5 - - required_players = 25 - required_enemies = 1 - recommended_enemies = 1 - - round_ends_with_antag_death = 1 - - announce_span = "green" - announce_text = "Dangerous gelatinous organisms are spreading throughout the station!\n\ - Blobs: Consume the station and spread as far as you can.\n\ - Crew: Fight back the blobs and minimize station damage." - - var/message_sent = FALSE - - var/cores_to_spawn = 1 - var/players_per_core = 25 - var/blob_point_rate = 3 - var/blob_base_starting_points = 80 - - var/blobwincount = 250 - - var/messagedelay_low = 2400 //in deciseconds - var/messagedelay_high = 3600 //blob report will be sent after a random value between these (minimum 4 minutes, maximum 6 minutes) - - var/list/blob_overminds = list() - -/datum/game_mode/blob/pre_setup() - cores_to_spawn = max(round(num_players()/players_per_core, 1), 1) - - var/win_multiplier = 1 + (0.1 * cores_to_spawn) - blobwincount = initial(blobwincount) * cores_to_spawn * win_multiplier - - for(var/j = 0, j < cores_to_spawn, j++) - if (!antag_candidates.len) - break - var/datum/mind/blob = pick(antag_candidates) - blob_overminds += blob - blob.assigned_role = "Blob" - blob.special_role = "Blob" - log_game("[blob.key] (ckey) has been selected as a Blob") - antag_candidates -= blob - - if(!blob_overminds.len) - return 0 - - return 1 - -/datum/game_mode/blob/proc/get_blob_candidates() - var/list/candidates = list() - for(var/mob/living/carbon/human/player in GLOB.player_list) - if(!player.stat && player.mind && !player.mind.special_role && !jobban_isbanned(player, "Syndicate") && (ROLE_BLOB in player.client.prefs.be_special)) - if(age_check(player.client)) - candidates += player - return candidates - -/datum/game_mode/blob/proc/show_message(message) - for(var/datum/mind/blob in blob_overminds) - to_chat(blob.current, message) - -/datum/game_mode/blob/post_setup() - set waitfor = FALSE - - for(var/datum/mind/blob in blob_overminds) - var/mob/camera/blob/B = blob.current.become_overmind(TRUE, round(blob_base_starting_points/blob_overminds.len)) - B.mind.name = B.name - var/turf/T = pick(GLOB.blobstart) - B.forceMove(T) - B.base_point_rate = blob_point_rate - - SSshuttle.registerHostileEnvironment(src) - - // Disable the blob event for this round. - var/datum/round_event_control/blob/B = locate() in SSevents.control - if(B) - B.max_occurrences = 0 // disable the event - - . = ..() - - var/message_delay = rand(messagedelay_low, messagedelay_high) //between 4 and 6 minutes with 2400 low and 3600 high. - - sleep(message_delay) - - send_intercept(1) - message_sent = TRUE - addtimer(CALLBACK(src, .proc/SendSecondIntercept), 24000) - -/datum/game_mode/blob/proc/SendSecondIntercept() - if(!replacementmode) - send_intercept(2) //if the blob has been alive this long, it's time to bomb it - -/datum/game_mode/blob/generate_report() - return "A CMP scientist by the name of [pick("Griff", "Pasteur", "Chamberland", "Buist", "Rivers", "Stanley")] boasted about his corporation's \"finest creation\" - a macrobiological \ - virus capable of self-reproduction and hellbent on consuming whatever it touches. He went on to query Cybersun for permission to utilize the virus in biochemical warfare, to which \ - CMP subsequently gained. Be vigilant for any large organisms rapidly spreading across the station, as they are classified as a level 5 biohazard and critically dangerous. Note that \ - this organism seems to be weak to extreme heat; concentrated fire (such as welding tools and lasers) will be effective against it." diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 491378c5de..1f95688fa3 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -48,7 +48,7 @@ GLOBAL_VAR(changeling_team_objective_type) //If this is not null, we hand our th var/datum/mind/changeling = pick(antag_candidates) antag_candidates -= changeling changelings += changeling - changeling.special_role = "Changeling" + changeling.special_role = ROLE_CHANGELING changeling.restricted_roles = restricted_jobs return 1 else @@ -82,7 +82,7 @@ GLOBAL_VAR(changeling_team_objective_type) //If this is not null, we hand our th return if(changelings.len <= (changelingcap - 2) || prob(100 - (csc * 2))) if(ROLE_CHANGELING in character.client.prefs.be_special) - if(!jobban_isbanned(character, ROLE_CHANGELING) && !jobban_isbanned(character, "Syndicate")) + if(!jobban_isbanned(character, ROLE_CHANGELING) && !jobban_isbanned(character, ROLE_SYNDICATE)) if(age_check(character.client)) if(!(character.job in restricted_jobs)) character.mind.make_Changling() diff --git a/code/game/gamemodes/changeling/traitor_chan.dm b/code/game/gamemodes/changeling/traitor_chan.dm index 6287e707f2..e59cf40ca4 100644 --- a/code/game/gamemodes/changeling/traitor_chan.dm +++ b/code/game/gamemodes/changeling/traitor_chan.dm @@ -49,7 +49,7 @@ var/datum/mind/changeling = pick(possible_changelings) antag_candidates -= changeling possible_changelings -= changeling - changeling.special_role = "Changeling" + changeling.special_role = ROLE_CHANGELING changelings += changeling changeling.restricted_roles = restricted_jobs return ..() @@ -69,7 +69,7 @@ return if(changelings.len <= (changelingcap - 2) || prob(100 / (csc * 4))) if(ROLE_CHANGELING in character.client.prefs.be_special) - if(!jobban_isbanned(character, ROLE_CHANGELING) && !jobban_isbanned(character, "Syndicate")) + if(!jobban_isbanned(character, ROLE_CHANGELING) && !jobban_isbanned(character, ROLE_SYNDICATE)) if(age_check(character.client)) if(!(character.job in restricted_jobs)) character.mind.make_Changling() diff --git a/code/game/gamemodes/clock_cult/clock_cult.dm b/code/game/gamemodes/clock_cult/clock_cult.dm index 7790361f12..730c8bff77 100644 --- a/code/game/gamemodes/clock_cult/clock_cult.dm +++ b/code/game/gamemodes/clock_cult/clock_cult.dm @@ -158,8 +158,8 @@ Credit where due: var/datum/mind/servant = pick(antag_candidates) servants_to_serve += servant antag_candidates -= servant - servant.assigned_role = "Servant of Ratvar" - servant.special_role = "Servant of Ratvar" + servant.assigned_role = ROLE_SERVANT_OF_RATVAR + servant.special_role = ROLE_SERVANT_OF_RATVAR starter_servants-- ark_time = 30 + round((roundstart_player_count / 5)) //In minutes, how long the Ark will wait before activation ark_time = min(ark_time, 35) //35 minute maximum for the activation timer diff --git a/code/game/gamemodes/clock_cult/clock_helpers/proselytizer_helpers.dm b/code/game/gamemodes/clock_cult/clock_helpers/proselytizer_helpers.dm deleted file mode 100644 index e103bc2de4..0000000000 --- a/code/game/gamemodes/clock_cult/clock_helpers/proselytizer_helpers.dm +++ /dev/null @@ -1,393 +0,0 @@ -//For the clockwork proselytizer, this proc exists to make it easy to customize what the proselytizer does when hitting something. - -//if a valid target, returns an associated list in this format; -//list("operation_time" = 15, "new_obj_type" = /obj/structure/window/reinforced/clockwork, "power_cost" = 5, "spawn_dir" = dir, "dir_in_new" = TRUE) -//otherwise, return literally any non-list thing but preferably FALSE -//returning TRUE won't produce the "cannot be proselytized" message and will still prevent proselytizing - -/atom/proc/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return FALSE - -//Turf conversion -/turf/closed/wall/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) //four sheets of metal - return list("operation_time" = 50, "new_obj_type" = /turf/closed/wall/clockwork, "power_cost" = POWER_WALL_TOTAL - (POWER_METAL * 4), "spawn_dir" = SOUTH) - -/turf/closed/wall/mineral/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) //two sheets of metal - return list("operation_time" = 50, "new_obj_type" = /turf/closed/wall/clockwork, "power_cost" = POWER_WALL_TOTAL - (POWER_METAL * 2), "spawn_dir" = SOUTH) - -/turf/closed/wall/mineral/iron/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) //two sheets of metal, five rods - return list("operation_time" = 50, "new_obj_type" = /turf/closed/wall/clockwork, "power_cost" = POWER_WALL_TOTAL - (POWER_METAL * 2) - (POWER_ROD * 5), "spawn_dir" = SOUTH) - -/turf/closed/wall/mineral/cult/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) //no metal - return list("operation_time" = 80, "new_obj_type" = /turf/closed/wall/clockwork, "power_cost" = POWER_WALL_TOTAL, "spawn_dir" = SOUTH) - -/turf/closed/wall/shuttle/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) //two sheets of metal - return list("operation_time" = 50, "new_obj_type" = /turf/closed/wall/clockwork, "power_cost" = POWER_WALL_TOTAL - (POWER_METAL * 2), "spawn_dir" = SOUTH) - -/turf/closed/wall/r_wall/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return FALSE - -/turf/closed/wall/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return list("operation_time" = 50, "new_obj_type" = /turf/open/floor/clockwork, "power_cost" = -POWER_WALL_MINUS_FLOOR, "spawn_dir" = SOUTH) - -/turf/open/floor/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - if(floor_tile == /obj/item/stack/tile/plasteel) - new floor_tile(src) - make_plating() - playsound(src, 'sound/items/Crowbar.ogg', 10, 1) //clink - return list("operation_time" = 30, "new_obj_type" = /turf/open/floor/clockwork, "power_cost" = POWER_FLOOR, "spawn_dir" = SOUTH) - -/turf/open/floor/plating/asteroid/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return FALSE - -/turf/open/floor/plating/ashplanet/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return FALSE - -/turf/open/floor/plating/lava/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return FALSE - -/turf/open/floor/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - if(locate(/obj/structure/table) in src) - return FALSE - if(locate(/obj/structure/falsewall) in contents) - to_chat(user, "There is a false wall in the way, preventing you from proselytizing [src] into a clockwork wall.") - return - if(is_blocked_turf(src, TRUE)) - to_chat(user, "Something is in the way, preventing you from proselytizing [src] into a clockwork wall.") - return TRUE - var/operation_time = 100 - if(proselytizer.speed_multiplier > 0) - operation_time /= proselytizer.speed_multiplier - return list("operation_time" = operation_time, "new_obj_type" = /turf/closed/wall/clockwork, "power_cost" = POWER_WALL_MINUS_FLOOR, "spawn_dir" = SOUTH) - -//False wall conversion -/obj/structure/falsewall/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - var/cost = POWER_WALL_MINUS_FLOOR - if(ispath(mineral, /obj/item/stack/sheet/metal)) - cost -= (POWER_METAL * (2 + mineral_amount)) //four sheets of metal, plus an assumption that the girder is also two - else - cost -= (POWER_METAL * 2) //anything that doesn't use metal just has the girder - return list("operation_time" = 50, "new_obj_type" = /obj/structure/falsewall/brass, "power_cost" = cost, "spawn_dir" = SOUTH) - -/obj/structure/falsewall/iron/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) //two sheets of metal, two rods; special assumption - return list("operation_time" = 50, "new_obj_type" = /obj/structure/falsewall/brass, "power_cost" = POWER_WALL_MINUS_FLOOR - (POWER_METAL * 2) - (POWER_ROD * 2), "spawn_dir" = SOUTH) - -/obj/structure/falsewall/reinforced/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return FALSE - -/obj/structure/falsewall/brass/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return FALSE - -//Metal conversion -/obj/item/stack/tile/plasteel/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - if(source) - return FALSE - var/amount_temp = get_amount() - if(proselytizer.metal_to_power) - var/no_delete = FALSE - if(amount_temp < 2) - to_chat(user, "You need at least 2 floor tiles to convert into power.") - return TRUE - if(IsOdd(amount_temp)) - amount_temp-- - no_delete = TRUE - use(amount_temp) - amount_temp *= 12.5 //each tile is 12.5 power so this is 2 tiles to 25 power - return list("operation_time" = 0, "new_obj_type" = /obj/effect/temp_visual/ratvar/beam/itemconsume, "power_cost" = -amount_temp, "spawn_dir" = SOUTH, "no_target_deletion" = no_delete) - if(amount_temp >= 20) - var/sheets_to_make = round(amount_temp * 0.05) //and 20 to 1 brass - var/used = sheets_to_make * 20 - user.visible_message("[user]'s [proselytizer.name] rips into [src], converting it to brass!", \ - "You convert [get_amount() - used > 0 ? "part of ":""][src] into brass...") - playsound(src, 'sound/machines/click.ogg', 50, 1) - playsound(src, 'sound/items/Deconstruct.ogg', 50, 1) - new /obj/item/stack/tile/brass(get_turf(src), sheets_to_make) - use(used) - else - to_chat(user, "You need at least 20 floor tiles to convert into brass.") - return TRUE - -/obj/item/stack/rods/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - if(source) - return FALSE - if(proselytizer.metal_to_power) - return list("operation_time" = 0, "new_obj_type" = /obj/effect/temp_visual/ratvar/beam/itemconsume, "power_cost" = -(amount*POWER_ROD), "spawn_dir" = SOUTH) - if(get_amount() >= 10) - var/sheets_to_make = round(get_amount() * 0.1) - var/used = sheets_to_make * 10 - user.visible_message("[user]'s [proselytizer.name] rips into [src], converting it to brass!", \ - "You convert [get_amount() - used > 0 ? "part of ":""][src] into brass...") - playsound(src, 'sound/machines/click.ogg', 50, 1) - playsound(src, 'sound/items/Deconstruct.ogg', 50, 1) - new /obj/item/stack/tile/brass(get_turf(src), sheets_to_make) - use(used) - else - to_chat(user, "You need at least 10 rods to convert into brass.") - return TRUE - -/obj/item/stack/sheet/metal/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - if(source) - return FALSE - if(proselytizer.metal_to_power) - return list("operation_time" = 0, "new_obj_type" = /obj/effect/temp_visual/ratvar/beam/itemconsume, "power_cost" = -(amount*POWER_METAL), "spawn_dir" = SOUTH) - if(get_amount() >= 5) - var/sheets_to_make = round(get_amount() * 0.2) - var/used = sheets_to_make * 5 - user.visible_message("[user]'s [proselytizer.name] rips into [src], converting it to brass!", \ - "You convert [get_amount() - used > 0 ? "part of ":""][src] into brass...") - playsound(src, 'sound/machines/click.ogg', 50, 1) - playsound(src, 'sound/items/Deconstruct.ogg', 50, 1) - new /obj/item/stack/tile/brass(get_turf(src), sheets_to_make) - use(used) - else - to_chat(user, "You need at least 5 sheets of metal to convert into brass.") - return TRUE - -/obj/item/stack/sheet/plasteel/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - if(source) - return FALSE - if(proselytizer.metal_to_power) - return list("operation_time" = 0, "new_obj_type" = /obj/effect/temp_visual/ratvar/beam/itemconsume, "power_cost" = -(amount*POWER_PLASTEEL), "spawn_dir" = SOUTH) - if(get_amount() >= 2) - var/sheets_to_make = round(get_amount() * 0.5) - var/used = sheets_to_make * 2 - user.visible_message("[user]'s [proselytizer.name] rips into [src], converting it to brass!", \ - "You convert [get_amount() - used > 0 ? "part of ":""][src] into brass...") - playsound(src, 'sound/machines/click.ogg', 50, 1) - playsound(src, 'sound/items/Deconstruct.ogg', 50, 1) - new /obj/item/stack/tile/brass(get_turf(src), sheets_to_make) - use(used) - else - to_chat(user, "You need at least 2 sheets of plasteel to convert into brass.") - return TRUE - -//Brass directly to power -/obj/item/stack/tile/brass/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - if(source) - return FALSE - return list("operation_time" = 0, "new_obj_type" = /obj/effect/temp_visual/ratvar/beam/itemconsume, "power_cost" = -(amount*POWER_FLOOR), "spawn_dir" = SOUTH) - -//Airlock conversion -/obj/machinery/door/airlock/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - var/doortype = /obj/machinery/door/airlock/clockwork - if(glass) - doortype = /obj/machinery/door/airlock/clockwork/brass - return list("operation_time" = 60, "new_obj_type" = doortype, "power_cost" = POWER_WALL_TOTAL, "spawn_dir" = dir) - -/obj/machinery/door/airlock/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return FALSE - -//Table conversion -/obj/structure/table/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - var/prosel_cost = POWER_STANDARD - if(framestack == /obj/item/stack/rods) - prosel_cost -= POWER_ROD*framestackamount - else if(framestack == /obj/item/stack/tile/brass) - prosel_cost -= POWER_FLOOR*framestackamount - if(buildstack == /obj/item/stack/sheet/metal) - prosel_cost -= POWER_METAL*buildstackamount - else if(buildstack == /obj/item/stack/sheet/plasteel) - prosel_cost -= POWER_PLASTEEL*buildstackamount - return list("operation_time" = 20, "new_obj_type" = /obj/structure/table/reinforced/brass, "power_cost" = prosel_cost, "spawn_dir" = SOUTH) - -/obj/structure/table/reinforced/brass/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return FALSE - -/obj/structure/table_frame/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - var/prosel_cost = POWER_FLOOR - if(framestack == /obj/item/stack/rods) - prosel_cost -= POWER_ROD*framestackamount - else if(framestack == /obj/item/stack/tile/brass) - prosel_cost -= POWER_FLOOR*framestackamount - return list("operation_time" = 10, "new_obj_type" = /obj/structure/table_frame/brass, "power_cost" = prosel_cost, "spawn_dir" = SOUTH) - -/obj/structure/table_frame/brass/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return FALSE - -//Window conversion -/obj/structure/window/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - var/windowtype = /obj/structure/window/reinforced/clockwork - var/new_dir = TRUE - var/prosel_time = 15 - var/prosel_cost = POWER_FLOOR - if(fulltile) - windowtype = /obj/structure/window/reinforced/clockwork/fulltile - new_dir = FALSE - prosel_time = 30 - prosel_cost = POWER_STANDARD - if(reinf) - prosel_cost -= POWER_ROD - if(reinf) - prosel_cost -= POWER_ROD - for(var/obj/structure/grille/G in get_turf(src)) - INVOKE_ASYNC(proselytizer, /obj/item/clockwork/clockwork_proselytizer.proc/proselytize, G, user) - return list("operation_time" = prosel_time, "new_obj_type" = windowtype, "power_cost" = prosel_cost, "spawn_dir" = dir, "dir_in_new" = new_dir) - -/obj/structure/window/reinforced/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return FALSE - -//Windoor conversion -/obj/machinery/door/window/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return list("operation_time" = 30, "new_obj_type" = /obj/machinery/door/window/clockwork, "power_cost" = POWER_STANDARD, "spawn_dir" = dir, "dir_in_new" = TRUE) - -/obj/machinery/door/window/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return FALSE - -//Grille conversion -/obj/structure/grille/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - var/grilletype = /obj/structure/grille/ratvar - var/prosel_time = 15 - if(broken) - grilletype = /obj/structure/grille/ratvar/broken - prosel_time = 5 - return list("operation_time" = prosel_time, "new_obj_type" = grilletype, "power_cost" = 0, "spawn_dir" = dir) - -/obj/structure/grille/ratvar/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return FALSE - -//Lattice conversion -/obj/structure/lattice/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return list("operation_time" = 0, "new_obj_type" = /obj/structure/lattice/clockwork, "power_cost" = 0, "spawn_dir" = SOUTH, "no_target_deletion" = TRUE) - -/obj/structure/lattice/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - ratvar_act() //just in case we're the wrong type for some reason?? - return FALSE - -/obj/structure/lattice/catwalk/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return list("operation_time" = 0, "new_obj_type" = /obj/structure/lattice/catwalk/clockwork, "power_cost" = 0, "spawn_dir" = SOUTH, "no_target_deletion" = TRUE) - -/obj/structure/lattice/catwalk/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return FALSE - -//Girder conversion -/obj/structure/girder/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - var/prosel_cost = POWER_GEAR - (POWER_METAL * 2) - if(state == GIRDER_REINF_STRUTS || state == GIRDER_REINF) - prosel_cost -= POWER_PLASTEEL - return list("operation_time" = 20, "new_obj_type" = /obj/structure/destructible/clockwork/wall_gear, "power_cost" = prosel_cost, "spawn_dir" = SOUTH) - -//Hitting a clockwork structure will try to repair it. -/obj/structure/destructible/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - . = TRUE - var/list/repair_values = list() - if(!proselytizer.proselytizer_repair_checks(repair_values, src, user)) - return - user.visible_message("[user]'s [proselytizer.name] starts covering [src] in glowing orange energy...", \ - "You start repairing [src]...") - proselytizer.repairing = src - while(proselytizer && user && src) - if(!do_after(user, repair_values["healing_for_cycle"] * proselytizer.speed_multiplier, target = src, \ - extra_checks = CALLBACK(proselytizer, /obj/item/clockwork/clockwork_proselytizer.proc/proselytizer_repair_checks, repair_values, src, user, TRUE))) - break - obj_integrity = Clamp(obj_integrity + repair_values["healing_for_cycle"], 0, max_integrity) - proselytizer.modify_stored_power(-repair_values["power_required"]) - playsound(src, 'sound/machines/click.ogg', 50, 1) - - if(proselytizer) - proselytizer.repairing = null - if(user) - user.visible_message("[user]'s [proselytizer.name] stops covering [src] with glowing orange energy.", \ - "You finish repairing [src]. It is now at [obj_integrity]/[max_integrity] integrity.") - -//Hitting a sigil of transmission will try to charge from it. -/obj/effect/clockwork/sigil/transmission/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - . = TRUE - var/list/charge_values = list() - if(!proselytizer.sigil_charge_checks(charge_values, src, user)) - return - user.visible_message("[user]'s [proselytizer.name] starts draining glowing orange energy from [src]...", \ - "You start recharging your [proselytizer.name]...") - proselytizer.recharging = src - while(proselytizer && user && src) - if(!do_after(user, 10, target = src, extra_checks = CALLBACK(proselytizer, /obj/item/clockwork/clockwork_proselytizer.proc/sigil_charge_checks, charge_values, src, user, TRUE))) - break - modify_charge(charge_values["power_gain"]) - proselytizer.modify_stored_power(charge_values["power_gain"]) - playsound(src, 'sound/effects/light_flicker.ogg', charge_values["power_gain"] * 0.1, 1) - - if(proselytizer) - proselytizer.recharging = null - if(user) - user.visible_message("[user]'s [proselytizer.name] stops draining glowing orange energy from [src].", \ - "You finish recharging your [proselytizer.name]. It now contains [proselytizer.get_power()]W/[proselytizer.get_max_power()]W power.") - -//Proselytizer mob heal proc, to avoid as much copypaste as possible. -/mob/living/proc/proselytizer_heal(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - var/list/repair_values = list() - if(!proselytizer.proselytizer_repair_checks(repair_values, src, user)) - return - user.visible_message("[user]'s [proselytizer.name] starts coverin[src == user ? "g [user.p_them()]" : "g [src]"] in glowing orange energy...", \ - "You start repairin[src == user ? "g yourself" : "g [src]"]...") - proselytizer.repairing = src - while(proselytizer && user && src) - if(!do_after(user, repair_values["healing_for_cycle"] * proselytizer.speed_multiplier, target = src, \ - extra_checks = CALLBACK(proselytizer, /obj/item/clockwork/clockwork_proselytizer.proc/proselytizer_repair_checks, repair_values, src, user, TRUE))) - break - proselytizer_heal_tick(repair_values["healing_for_cycle"]) - proselytizer.modify_stored_power(-repair_values["power_required"]) - playsound(src, 'sound/machines/click.ogg', 50, 1) - - if(proselytizer) - proselytizer.repairing = null - - return TRUE - -/mob/living/proc/proselytizer_heal_tick(amount) - var/static/list/damage_heal_order = list(BRUTE, BURN, TOX, OXY) - heal_ordered_damage(amount, damage_heal_order) - -/mob/living/simple_animal/proselytizer_heal_tick(amount) - adjustHealth(-amount) - -//Hitting a ratvar'd silicon will also try to repair it. -/mob/living/silicon/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - . = TRUE - if(health == maxHealth) //if we're at maximum health, prosel the turf under us - return FALSE - else if(proselytizer_heal(user, proselytizer) && user) - user.visible_message("[user]'s [proselytizer.name] stops coverin[src == user ? "g [user.p_them()]" : "g [src]"] with glowing orange energy.", \ - "You finish repairin[src == user ? "g yourself. You are":"g [src]. [p_they(TRUE)] [p_are()]"] now at [abs(HEALTH_THRESHOLD_DEAD - health)]/[abs(HEALTH_THRESHOLD_DEAD - maxHealth)] health.") - -//Same with clockwork mobs. -/mob/living/simple_animal/hostile/clockwork/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - . = TRUE - if(health == maxHealth) //if we're at maximum health, prosel the turf under us - return FALSE - else if(proselytizer_heal(user, proselytizer) && user) - user.visible_message("[user]'s [proselytizer.name] stops coverin[src == user ? "g [user.p_them()]" : "g [src]"] with glowing orange energy.", \ - "You finish repairin[src == user ? "g yourself. You are":"g [src]. [p_they(TRUE)] [p_are()]"] now at [health]/[maxHealth] health.") - -//Cogscarabs get special interaction because they're drones and have innate self-heals/revives. -/mob/living/simple_animal/drone/cogscarab/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - . = TRUE - if(stat == DEAD) - try_reactivate(user) //if we're at maximum health, prosel the turf under us - return - if(health == maxHealth) - return FALSE - else if(!(flags_1 & GODMODE)) - user.visible_message("[user]'s [proselytizer.name] starts coverin[src == user ? "g [user.p_them()]" : "g [src]"] in glowing orange energy...", \ - "You start repairin[src == user ? "g yourself" : "g [src]"]...") - proselytizer.repairing = src - if(do_after(user, (maxHealth - health)*2, target=src)) - adjustHealth(-maxHealth) - user.visible_message("[user]'s [proselytizer.name] stops coverin[src == user ? "g [user.p_them()]" : "g [src]"] with glowing orange energy.", \ - "You finish repairin[src == user ? "g yourself" : "g [src]"].") - if(proselytizer) - proselytizer.repairing = null - -//Convert shards and gear bits directly to power -/obj/item/clockwork/alloy_shards/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return list("operation_time" = 0, "new_obj_type" = /obj/effect/temp_visual/ratvar/beam/itemconsume, "power_cost" = -POWER_STANDARD, "spawn_dir" = SOUTH) - -/obj/item/clockwork/alloy_shards/medium/gear_bit/large/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return list("operation_time" = 0, "new_obj_type" = /obj/effect/temp_visual/ratvar/beam/itemconsume, "power_cost" = -(CLOCKCULT_POWER_UNIT*0.08), "spawn_dir" = SOUTH) - -/obj/item/clockwork/alloy_shards/large/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return list("operation_time" = 0, "new_obj_type" = /obj/effect/temp_visual/ratvar/beam/itemconsume, "power_cost" = -(CLOCKCULT_POWER_UNIT*0.06), "spawn_dir" = SOUTH) - -/obj/item/clockwork/alloy_shards/medium/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return list("operation_time" = 0, "new_obj_type" = /obj/effect/temp_visual/ratvar/beam/itemconsume, "power_cost" = -(CLOCKCULT_POWER_UNIT*0.04), "spawn_dir" = SOUTH) - -/obj/item/clockwork/alloy_shards/small/proselytize_vals(mob/living/user, obj/item/clockwork/clockwork_proselytizer/proselytizer) - return list("operation_time" = 0, "new_obj_type" = /obj/effect/temp_visual/ratvar/beam/itemconsume, "power_cost" = -(CLOCKCULT_POWER_UNIT*0.02), "spawn_dir" = SOUTH) \ No newline at end of file diff --git a/code/game/gamemodes/clock_cult/clock_mobs/anima_fragment.dm b/code/game/gamemodes/clock_cult/clock_mobs/anima_fragment.dm deleted file mode 100644 index 2df47705a4..0000000000 --- a/code/game/gamemodes/clock_cult/clock_mobs/anima_fragment.dm +++ /dev/null @@ -1,93 +0,0 @@ -//Anima fragment: Low health and high melee damage, but slows down when struck. Created by inserting a soul vessel into an empty fragment. -/mob/living/simple_animal/hostile/clockwork/fragment - name = "anima fragment" - desc = "An ominous humanoid shell with a spinning cogwheel as its head, lifted by a jet of blazing red flame." - icon_state = "anime_fragment" - health = 90 - maxHealth = 90 - speed = -1 - melee_damage_lower = 18 - melee_damage_upper = 18 - attacktext = "crushes" - attack_sound = 'sound/magic/clockwork/anima_fragment_attack.ogg' - loot = list(/obj/item/clockwork/component/replicant_alloy/smashed_anima_fragment) - weather_immunities = list("lava") - movement_type = FLYING - light_range = 2 - light_power = 0.8 - playstyle_string = "You are an anima fragment, a clockwork creation of Ratvar. As a fragment, you have decent health that very gradually regenerates, do \ - decent damage, and move at extreme speed in addition to being immune to extreme temperatures and pressures. Taking damage, and slamming into non-Servants, will temporarily slow you down, however.\n\ - Your goal is to serve the Justiciar and his servants in any way you can. You yourself are one of these servants, and will be able to utilize anything they can, assuming it doesn't require \ - opposable thumbs." - var/movement_delay_time //how long the fragment is slowed after being hit - -/mob/living/simple_animal/hostile/clockwork/fragment/Initialize() - . = ..() - if(prob(1)) - name = "anime fragment" - desc = "I-it's not like I want to show you the light of the Justiciar or anything, B-BAKA!" - -/mob/living/simple_animal/hostile/clockwork/fragment/Life() - ..() - if(GLOB.ratvar_awakens) - adjustHealth(-5) - else if(movement_delay_time > world.time) - adjustHealth(-0.2) - else - adjustHealth(-1) - -/mob/living/simple_animal/hostile/clockwork/fragment/Stat() - ..() - if(statpanel("Status") && movement_delay_time > world.time && !GLOB.ratvar_awakens) - stat(null, "Movement delay(seconds): [max(round((movement_delay_time - world.time)*0.1, 0.1), 0)]") - -/mob/living/simple_animal/hostile/clockwork/fragment/death(gibbed) - visible_message("[src]'s flame jets cut out as it falls to the floor with a tremendous crash.", \ - "Your gears seize up. Your flame jets flicker out. Your soul vessel belches smoke as you helplessly crash down.") - ..() - -/mob/living/simple_animal/hostile/clockwork/fragment/Process_Spacemove(movement_dir = 0) - return 1 - -/mob/living/simple_animal/hostile/clockwork/fragment/Collide(atom/movable/AM) - . = ..() - if(movement_delay_time <= world.time && next_move <= world.time && isliving(AM) && !is_servant_of_ratvar(AM)) - var/mob/living/L = AM - if(L.stat) //we don't want to attack them if they're unconscious or dead because that feels REALLY BAD for the player - return - var/previousattacktext = attacktext - attacktext = "slams into" - UnarmedAttack(L) - attacktext = previousattacktext - changeNext_move(CLICK_CD_MELEE) - if(!GLOB.ratvar_awakens) - adjustHealth(4) - adjust_movement_delay(10) //with the above damage, total of 20 movement delay plus speed = 0 due to damage - -/mob/living/simple_animal/hostile/clockwork/fragment/emp_act(severity) - adjust_movement_delay(50/severity) - -/mob/living/simple_animal/hostile/clockwork/fragment/movement_delay() - . = ..() - if(movement_delay_time > world.time && !GLOB.ratvar_awakens) - . += min((movement_delay_time - world.time) * 0.1, 10) //the more delay we have, the slower we go - -/mob/living/simple_animal/hostile/clockwork/fragment/adjustHealth(amount) - . = ..() - if(amount > 0) - adjust_movement_delay(amount*2.5) - -/mob/living/simple_animal/hostile/clockwork/fragment/proc/adjust_movement_delay(amount) - if(GLOB.ratvar_awakens) //if ratvar is up we ignore movement delay - movement_delay_time = 0 - else if(movement_delay_time > world.time) - movement_delay_time = movement_delay_time + amount - else - movement_delay_time = world.time + amount - -/mob/living/simple_animal/hostile/clockwork/fragment/updatehealth() - ..() - if(health == maxHealth) - speed = initial(speed) - else - speed = 0 //slow down if damaged at all diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_revenant.dm b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_revenant.dm deleted file mode 100644 index ae54b903b6..0000000000 --- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_revenant.dm +++ /dev/null @@ -1,211 +0,0 @@ -////////////// -// REVENANT // -////////////// - -//Invoke Inath-neq, the Resonant Cogwheel: Grants invulnerability and stun immunity to everyone nearby for 15 seconds. -/datum/clockwork_scripture/invoke_inathneq - descname = "Area Invulnerability" - name = "Invoke Inath-neq, the Resonant Cogwheel" - desc = "Taps the limitless power of Inath-neq, one of Ratvar's four generals. The benevolence of Inath-Neq will grant complete invulnerability to all Servants in range for fifteen seconds." - invocations = list("I call upon you, Vanguard!!", "Let the Resonant Cogs turn once more!!", "Grant me and my allies the strength to vanquish our foes!!") - channel_time = 100 - consumed_components = list(VANGUARD_COGWHEEL = 10, GEIS_CAPACITOR = 3, REPLICANT_ALLOY = 3, HIEROPHANT_ANSIBLE = 3) - usage_tip = "Servants affected by this scripture are only weak to things that outright destroy bodies, such as bombs or the singularity." - tier = SCRIPTURE_REVENANT - primary_component = VANGUARD_COGWHEEL - sort_priority = 2 - -/datum/clockwork_scripture/invoke_inathneq/check_special_requirements() - if(!slab.no_cost && GLOB.clockwork_generals_invoked["inath-neq"] > world.time) - to_chat(invoker, "\"[text2ratvar("I cannot lend you my aid yet, champion. Please be careful.")]\"\n\ - Inath-neq has already been invoked recently! You must wait several minutes before calling upon the Resonant Cogwheel.") - return FALSE - return TRUE - -/datum/clockwork_scripture/invoke_inathneq/scripture_effects() - new/obj/effect/clockwork/general_marker/inathneq(get_turf(invoker)) - hierophant_message("[text2ratvar("Vanguard: \"I lend you my aid, champions! Let glory guide your blows!")]\"", FALSE, invoker) - GLOB.clockwork_generals_invoked["inath-neq"] = world.time + CLOCKWORK_GENERAL_COOLDOWN - playsound(invoker, 'sound/magic/clockwork/invoke_general.ogg', 50, 0) - if(invoker.real_name == "Lucio") - clockwork_say(invoker, text2ratvar("Aww, let's break it DOWN!!")) - for(var/mob/living/L in range(7, invoker)) - if(!is_servant_of_ratvar(L) || L.stat == DEAD) - continue - L.apply_status_effect(STATUS_EFFECT_INATHNEQS_ENDOWMENT) - return TRUE - - -//Invoke Sevtug, the Formless Pariah: Causes massive global hallucinations, braindamage, confusion, and dizziness to all humans on the same zlevel. -/datum/clockwork_scripture/invoke_sevtug - descname = "Global Hallucination" - name = "Invoke Sevtug, the Formless Pariah" - desc = "Taps the limitless power of Sevtug, one of Ratvar's four generals. The mental manipulation ability of the Pariah allows its wielder to cause mass hallucinations and confusion \ - for all non-servant humans on the same z-level as them. The power of this scripture falls off somewhat with distance, and certain things may reduce its effects." - invocations = list("I call upon you, Fright!!", "Let your power shatter the sanity of the weak-minded!!", "Let your tendrils hold sway over all!!") - channel_time = 150 - consumed_components = list(BELLIGERENT_EYE = 6, VANGUARD_COGWHEEL = 6, GEIS_CAPACITOR = 10, HIEROPHANT_ANSIBLE = 6) - usage_tip = "Causes brain damage, hallucinations, confusion, and dizziness in massive amounts." - tier = SCRIPTURE_REVENANT - sort_priority = 3 - primary_component = GEIS_CAPACITOR - invokers_required = 3 - multiple_invokers_used = TRUE - var/static/list/mindbreaksayings = list("\"Oh, great. I get to shatter some minds.\"", "\"More minds to crush.\"", \ - "\"Really, this is almost boring.\"", "\"None of these minds have anything interesting in them.\"", "\"Maybe I can instill a little bit of terror in this one.\"", \ - "\"What a waste of my power.\"", "\"I'm sure I could just control these minds instead, but they never ask.\"") - -/datum/clockwork_scripture/invoke_sevtug/check_special_requirements() - if(!slab.no_cost && GLOB.clockwork_generals_invoked["sevtug"] > world.time) - to_chat(invoker, "\"[text2ratvar("Is it really so hard - even for a simpleton like you - to grasp the concept of waiting?")]\"\n\ - Sevtug has already been invoked recently! You must wait several minutes before calling upon the Formless Pariah.") - return FALSE - if(!slab.no_cost && GLOB.ratvar_awakens) - to_chat(invoker, "\"[text2ratvar("Do you really think anything I can do right now will compare to Engine's power?")]\"\n\ - Sevtug will not grant his power while Ratvar's dwarfs his own!") - return FALSE - return TRUE - -/datum/clockwork_scripture/invoke_sevtug/scripture_effects() - new/obj/effect/clockwork/general_marker/sevtug(get_turf(invoker)) - hierophant_message("[text2ratvar("Fright: \"I heed your call, idiots. Get going and use this chance while it lasts!")]\"", FALSE, invoker) - GLOB.clockwork_generals_invoked["sevtug"] = world.time + GLOBAL_CLOCKWORK_GENERAL_COOLDOWN - playsound(invoker, 'sound/magic/clockwork/invoke_general.ogg', 50, 0) - var/hum = get_sfx('sound/effects/screech.ogg') //like playsound, same sound for everyone affected - var/turf/T = get_turf(invoker) - for(var/mob/living/carbon/human/H in GLOB.living_mob_list) - if(H.z == invoker.z && !is_servant_of_ratvar(H)) - var/distance = 0 - distance += get_dist(T, get_turf(H)) - var/visualsdistance = max(150 - distance, 5) - var/minordistance = max(200 - distance*2, 5) - var/majordistance = max(150 - distance*3, 5) - if(H.null_rod_check()) - to_chat(H, "[text2ratvar("Oh, a void weapon. How annoying, I may as well not bother.")]\n\ - Your holy weapon glows a faint orange, defending your mind!") - continue - else if(H.isloyal()) - visualsdistance = round(visualsdistance * 0.5) //half effect for shielded targets - minordistance = round(minordistance * 0.5) - majordistance = round(majordistance * 0.5) - to_chat(H, "[text2ratvar("Oh, look, a mindshield. Cute, I suppose I'll humor it.")]") - else if(prob(visualsdistance)) - to_chat(H, "[text2ratvar(pick(mindbreaksayings))]") - H.playsound_local(T, hum, visualsdistance, 1) - flash_color(H, flash_color="#AF0AAF", flash_time=visualsdistance*10) - H.dizziness = minordistance + H.dizziness - H.hallucination = minordistance + H.hallucination - H.confused = majordistance + H.confused - H.setBrainLoss(majordistance + H.getBrainLoss()) - return TRUE - - -//Invoke Nezbere, the Brass Eidolon: Invokes Nezbere, bolstering the strength of many clockwork items for one minute. -/datum/clockwork_scripture/invoke_nezbere - descname = "Global Structure Buff" - name = "Invoke Nezbere, the Brass Eidolon" - desc = "Taps the limitless power of Nezbere, one of Ratvar's four generals. The restless toil of the Eidolon will empower a wide variety of clockwork apparatus for a full minute - notably, \ - replica fabricators will charge very rapidly." - invocations = list("I call upon you, Armorer!!", "Let your machinations reign on this miserable station!!", "Let your power flow through the tools of your master!!") - channel_time = 150 - consumed_components = list(BELLIGERENT_EYE = 6, VANGUARD_COGWHEEL = 6, GEIS_CAPACITOR = 6, REPLICANT_ALLOY = 10) - usage_tip = "Ocular wardens will become empowered, tinkerer's daemons will produce twice as quickly, \ - and interdiction lenses, mania motors, tinkerer's daemons, and clockwork obelisks will all require no power." - tier = SCRIPTURE_REVENANT - primary_component = REPLICANT_ALLOY - sort_priority = 4 - invokers_required = 3 - multiple_invokers_used = TRUE - -/datum/clockwork_scripture/invoke_nezbere/check_special_requirements() - if(!slab.no_cost && GLOB.clockwork_generals_invoked["nezbere"] > world.time) - to_chat(invoker, "\"[text2ratvar("Not just yet, friend. Patience is a virtue.")]\"\n\ - Nezbere has already been invoked recently! You must wait several minutes before calling upon the Brass Eidolon.") - return FALSE - if(!slab.no_cost && GLOB.ratvar_awakens) - to_chat(invoker, "\"[text2ratvar("Our master is here already. You do not require my help, friend.")]\"\n\ - There is no need for Nezbere's assistance while Ratvar is risen!") - return FALSE - return TRUE - -/datum/clockwork_scripture/invoke_nezbere/scripture_effects() - new/obj/effect/clockwork/general_marker/nezbere(get_turf(invoker)) - hierophant_message("[text2ratvar("Armorer: \"I heed your call, champions. May your artifacts bring ruin upon the heathens that oppose our master!")]\"", FALSE, invoker) - GLOB.clockwork_generals_invoked["nezbere"] = world.time + GLOBAL_CLOCKWORK_GENERAL_COOLDOWN - playsound(invoker, 'sound/magic/clockwork/invoke_general.ogg', 50, 0) - GLOB.nezbere_invoked++ - for(var/obj/O in GLOB.all_clockwork_objects) - O.ratvar_act() - addtimer(CALLBACK(GLOBAL_PROC, /proc/reset_nezbere_invocation), 600) - return TRUE - -/proc/reset_nezbere_invocation() - GLOB.nezbere_invoked-- - for(var/obj/O in GLOB.all_clockwork_objects) - O.ratvar_act() - - -//Invoke Nzcrentr, the Eternal Thunderbolt: Imbues an immense amount of energy into the invoker. After several seconds, everyone near the invoker will be hit with a devastating lightning blast. -/datum/clockwork_scripture/invoke_nzcrentr - descname = "Area Lightning Blast" - name = "Invoke Nzcrentr, the Eternal Thunderbolt" - desc = "Taps the limitless power of Nzcrentr, one of Ratvar's four generals. Nzcrentr will grant you a tiny fraction of its boundless power. After several seconds, all non-Servants near you \ - will be struck by devastating lightning bolts." - invocations = list("I call upon you, Amperage!!", "Let your energy flow through me!!", "Let your boundless power shatter stars!!") - channel_time = 100 - consumed_components = list(BELLIGERENT_EYE = 3, GEIS_CAPACITOR = 3, REPLICANT_ALLOY = 3, HIEROPHANT_ANSIBLE = 10) - usage_tip = "Struck targets will also be knocked down for about sixteen seconds." - tier = SCRIPTURE_REVENANT - primary_component = HIEROPHANT_ANSIBLE - sort_priority = 5 - -/datum/clockwork_scripture/invoke_nzcrentr/check_special_requirements() - if(!slab.no_cost && GLOB.clockwork_generals_invoked["nzcrentr"] > world.time) - to_chat(invoker, "\"[text2ratvar("The boss says you have to wait. Hey, do you think he would mind if I killed you? ...He would? Ok.")]\"\n\ - Nzcrentr has already been invoked recently! You must wait several minutes before calling upon the Eternal Thunderbolt.") - return FALSE - return TRUE - -/datum/clockwork_scripture/invoke_nzcrentr/scripture_effects() - new/obj/effect/clockwork/general_marker/nzcrentr(get_turf(invoker)) - GLOB.clockwork_generals_invoked["nzcrentr"] = world.time + CLOCKWORK_GENERAL_COOLDOWN - hierophant_message("[text2ratvar("Amperage: \"[invoker.real_name] has called forth my power. Hope [invoker.p_they()] [invoker.p_do()] not shatter under it!")]\"", FALSE, invoker) - invoker.visible_message("[invoker] begins to radiate a blinding light!", \ - "\"[text2ratvar("The boss says it's okay to do this. Don't blame me if you die from it.")]\"\n\ - You feel limitless power surging through you!") - playsound(invoker, 'sound/magic/clockwork/invoke_general.ogg', 50, 0) - sleep(2) - playsound(invoker, 'sound/magic/lightning_chargeup.ogg', 100, 0) - var/oldcolor = invoker.color - animate(invoker, color = list(rgb(255, 255, 255), rgb(255, 255, 255), rgb(255, 255, 255), rgb(0,0,0)), time = 88) //Gradual advancement to extreme brightness - sleep(88) - if(invoker) - invoker.visible_message("Massive bolts of energy emerge from across [invoker]'s body!", \ - "\"[text2ratvar("I told you you wouldn't be able to handle it.")]\"\n\ - TOO... MUCH! CAN'T... TAKE IT!") - playsound(invoker, 'sound/magic/lightningbolt.ogg', 100, 0) - if(invoker.stat == CONSCIOUS) - animate(invoker, color = oldcolor, time = 10) - addtimer(CALLBACK(invoker, /atom/proc/update_atom_colour), 10) - for(var/mob/living/L in view(7, invoker)) - if(is_servant_of_ratvar(L) || L.null_rod_check()) - continue - invoker.Beam(L, icon_state = "nzcrentrs_power", time = 10) - var/randdamage = rand(40, 60) - if(iscarbon(L)) - L.electrocute_act(randdamage, "Nzcrentr's power", 1, randdamage) - else - L.adjustFireLoss(randdamage) - L.visible_message( - "[L] was shocked by Nzcrentr's power!", \ - "You feel a powerful shock coursing through your body!", \ - "You hear a heavy electrical crack." \ - ) - L.Weaken(8) - playsound(L, 'sound/magic/LightningShock.ogg', 50, 1) - else - playsound(invoker, 'sound/magic/Disintegrate.ogg', 50, 1) - invoker.gib() - return TRUE - else - return FALSE diff --git a/code/game/gamemodes/clock_cult/clock_structures/interdiction_lens.dm b/code/game/gamemodes/clock_cult/clock_structures/interdiction_lens.dm deleted file mode 100644 index 5066b2448a..0000000000 --- a/code/game/gamemodes/clock_cult/clock_structures/interdiction_lens.dm +++ /dev/null @@ -1,143 +0,0 @@ -//Interdiction Lens: A powerful artifact that constantly disrupts electronics and drains power but, if it fails to find something to disrupt, turns off. -/obj/structure/destructible/clockwork/powered/interdiction_lens - name = "interdiction lens" - desc = "An ominous, double-pronged brass totem. There's a strange gemstone clasped between the pincers." - clockwork_desc = "A powerful totem that constantly drains nearby electronics and funnels the power drained into nearby Sigils of Transmission or the area's APC." - icon_state = "interdiction_lens" - construction_value = 20 - active_icon = "interdiction_lens_active" - inactive_icon = "interdiction_lens" - unanchored_icon = "interdiction_lens_unwrenched" - break_message = "The lens flares a blinding violet before the totem beneath it shatters!" - break_sound = 'sound/effects/glassbr3.ogg' - debris = list(/obj/item/clockwork/alloy_shards/small = 2, \ - /obj/item/clockwork/alloy_shards/large = 2, \ - /obj/item/clockwork/component/belligerent_eye/lens_gem = 1) - var/recharging = 0 //world.time when the lens was last used - var/recharge_time = 1200 //if it drains no power and affects no objects, it turns off for two minutes - var/disabled = FALSE //if it's actually usable - var/interdiction_range = 14 //how large an area it drains and disables in - var/static/list/rage_messages = list("...", "Disgusting.", "Die.", "Foul.", "Worthless.", "Mortal.", "Unfit.", "Weak.", "Fragile.", "Useless.", "Leave my sight!") - -/obj/structure/destructible/clockwork/powered/interdiction_lens/Initialize() - . = ..() - update_current_glow() - -/obj/structure/destructible/clockwork/powered/interdiction_lens/examine(mob/user) - ..() - to_chat(user, "Its gemstone [recharging > world.time ? "has been breached by writhing tendrils of blackness that cover the totem" \ - : "vibrates in place and thrums with power"].") - if(is_servant_of_ratvar(user) || isobserver(user)) - to_chat(user, "If it fails to drain any electronics or has nothing to return power to, it will disable itself for [round(recharge_time/600, 1)] minutes.") - -/obj/structure/destructible/clockwork/powered/interdiction_lens/update_anchored(mob/user, do_damage) - ..() - update_current_glow() - -/obj/structure/destructible/clockwork/powered/interdiction_lens/toggle(fast_process, mob/living/user) - . = ..() - update_current_glow() - -/obj/structure/destructible/clockwork/powered/interdiction_lens/proc/update_current_glow() - if(active) - if(disabled) - set_light(2, 1.6, "#151200") - else - set_light(2, 1.6, "#EE54EE") - else - if(anchored) - set_light(1.4, 0.8, "#F42B9D") - else - set_light(0) - -/obj/structure/destructible/clockwork/powered/interdiction_lens/attack_hand(mob/living/user) - if(user.canUseTopic(src, !issilicon(user), NO_DEXTERY)) - if(disabled) - to_chat(user, "As you place your hand on the gemstone, cold tendrils of black matter crawl up your arm. You quickly pull back.") - return 0 - toggle(0, user) - -/obj/structure/destructible/clockwork/powered/interdiction_lens/forced_disable(bad_effects) - if(disabled || !anchored) - return FALSE - if(!active) - toggle(0) - visible_message("The gemstone suddenly turns horribly dark, writhing tendrils covering it!") - recharging = world.time + recharge_time - flick("interdiction_lens_discharged", src) - icon_state = "interdiction_lens_inactive" - disabled = TRUE - update_current_glow() - return TRUE - -/obj/structure/destructible/clockwork/powered/interdiction_lens/process() - . = ..() - if(recharging > world.time) - return - if(disabled) - visible_message("The writhing tendrils return to the gemstone, which begins to glow with power!") - flick("interdiction_lens_recharged", src) - disabled = FALSE - toggle(0) - else - if(!check_apc_and_sigils()) - forced_disable() - return - var/successfulprocess = FALSE - var/power_drained = 0 - var/list/atoms_to_test = list() - for(var/A in spiral_range_turfs(interdiction_range, src)) - var/turf/T = A - for(var/M in T) - atoms_to_test |= M - - CHECK_TICK - - var/unconverted_ai = FALSE - var/efficiency = get_efficiency_mod() - var/rage_modifier = get_efficiency_mod(TRUE) - - for(var/i in GLOB.ai_list) - var/mob/living/silicon/ai/AI = i - if(AI && AI.stat != DEAD && !is_servant_of_ratvar(AI)) - unconverted_ai = TRUE - - for(var/M in atoms_to_test) - var/atom/movable/A = M - if(!A || QDELETED(A) || A == target_apc) - continue - power_drained += Floor(A.power_drain(TRUE) * efficiency, MIN_CLOCKCULT_POWER) - - if(prob(1 * rage_modifier)) - to_chat(A, "\"[text2ratvar(pick(rage_messages))]\"") - - if(prob(100 * (efficiency * efficiency))) - if(istype(A, /obj/machinery/camera) && unconverted_ai) - var/obj/machinery/camera/C = A - if(C.isEmpProof() || !C.status) - continue - successfulprocess = TRUE - if(C.emped) - continue - C.emp_act(EMP_HEAVY) - else if(istype(A, /obj/item/device/radio)) - var/obj/item/device/radio/O = A - successfulprocess = TRUE - if(O.emped || !O.on) - continue - O.emp_act(EMP_HEAVY) - else if((isliving(A) && !is_servant_of_ratvar(A)) || istype(A, /obj/structure/closet) || istype(A, /obj/item/storage)) //other things may have radios in them but we don't care - for(var/obj/item/device/radio/O in A.GetAllContents()) - successfulprocess = TRUE - if(O.emped || !O.on) - continue - O.emp_act(EMP_HEAVY) - - CHECK_TICK - - if(power_drained && power_drained >= MIN_CLOCKCULT_POWER && return_power(power_drained)) - successfulprocess = TRUE - playsound(src, 'sound/items/pshoom.ogg', 50 * efficiency, 1, interdiction_range-7, 1) - - if(!successfulprocess) - forced_disable() diff --git a/code/game/gamemodes/clock_cult/clock_structures/tinkerers_cache.dm b/code/game/gamemodes/clock_cult/clock_structures/tinkerers_cache.dm deleted file mode 100644 index cd33cf7adc..0000000000 --- a/code/game/gamemodes/clock_cult/clock_structures/tinkerers_cache.dm +++ /dev/null @@ -1,116 +0,0 @@ -//Tinkerer's cache: Stores components for later use. -/obj/structure/destructible/clockwork/cache - name = "tinkerer's cache" - desc = "A large brass spire with a flaming hole in its center." - clockwork_desc = "A brass container capable of storing a large amount of components.\n\ - Shares components with all other caches and will gradually generate components if near a Clockwork Wall." - icon_state = "tinkerers_cache" - unanchored_icon = "tinkerers_cache_unwrenched" - construction_value = 10 - break_message = "The cache's fire winks out before it falls in on itself!" - max_integrity = 80 - light_color = "#C2852F" - var/wall_generation_cooldown - var/turf/closed/wall/clockwork/linkedwall //if we've got a linked wall and are producing - var/static/linked_caches = 0 //how many caches are linked to walls; affects how fast components are produced - -/obj/structure/destructible/clockwork/cache/Initialize() - . = ..() - START_PROCESSING(SSobj, src) - GLOB.clockwork_caches++ - update_slab_info() - set_light(2, 0.7) - -/obj/structure/destructible/clockwork/cache/Destroy() - GLOB.clockwork_caches-- - update_slab_info() - STOP_PROCESSING(SSobj, src) - if(linkedwall) - linked_caches-- - linkedwall.linkedcache = null - linkedwall = null - return ..() - -/obj/structure/destructible/clockwork/cache/process() - if(!anchored) - if(linkedwall) - linked_caches-- - linkedwall.linkedcache = null - linkedwall = null - return - for(var/turf/closed/wall/clockwork/C in range(4, src)) - if(!C.linkedcache && !linkedwall) - linked_caches++ - C.linkedcache = src - linkedwall = C - wall_generation_cooldown = world.time + get_production_time() - visible_message("[src] starts to whirr in the presence of [C]...") - break - if(linkedwall && wall_generation_cooldown <= world.time) - wall_generation_cooldown = world.time + get_production_time() - var/component_id = generate_cache_component(null, src) - playsound(linkedwall, 'sound/magic/clockwork/fellowship_armory.ogg', rand(15, 20), 1, -3, 1, 1) - visible_message("Something cl[pick("ank", "ink", "unk", "ang")]s around inside of [src]...") - -/obj/structure/destructible/clockwork/cache/attackby(obj/item/I, mob/living/user, params) - if(!is_servant_of_ratvar(user)) - return ..() - if(istype(I, /obj/item/clockwork/component)) - var/obj/item/clockwork/component/C = I - if(!anchored) - to_chat(user, "[src] needs to be secured to place [C] into it!") - else - GLOB.clockwork_component_cache[C.component_id]++ - update_slab_info() - to_chat(user, "You add [C] to [src].") - user.drop_item() - qdel(C) - return 1 - else if(istype(I, /obj/item/clockwork/slab)) - var/obj/item/clockwork/slab/S = I - if(!anchored) - to_chat(user, "[src] needs to be secured to offload your slab's components into it!") - else - for(var/i in S.stored_components) - GLOB.clockwork_component_cache[i] += S.stored_components[i] - S.stored_components[i] = 0 - update_slab_info() - user.visible_message("[user] empties [S] into [src].", "You offload your slab's components into [src].") - return 1 - else - return ..() - -/obj/structure/destructible/clockwork/cache/update_anchored(mob/user, do_damage) - ..() - if(anchored) - set_light(2, 0.7) - else - set_light(0) - -/obj/structure/destructible/clockwork/cache/attack_hand(mob/living/user) - ..() - if(is_servant_of_ratvar(user)) - if(linkedwall) - if(wall_generation_cooldown > world.time) - var/temp_time = (wall_generation_cooldown - world.time) * 0.1 - to_chat(user, "[src] will produce a component in [temp_time] second[temp_time == 1 ? "":"s"].") - else - to_chat(user, "[src] is about to produce a component!") - else if(anchored) - to_chat(user, "[src] is unlinked! Construct a Clockwork Wall nearby to generate components!") - else - to_chat(user, "[src] needs to be secured to generate components!") - -/obj/structure/destructible/clockwork/cache/examine(mob/user) - ..() - if(is_servant_of_ratvar(user) || isobserver(user)) - if(linkedwall) - to_chat(user, "It is linked to a Clockwork Wall and will generate a component every [DisplayTimeText(get_production_time())]!") - else - to_chat(user, "It is unlinked! Construct a Clockwork Wall nearby to generate components!") - to_chat(user, "Stored components:") - for(var/i in GLOB.clockwork_component_cache) - to_chat(user, "[get_component_icon(i)] [get_component_name(i)][i != REPLICANT_ALLOY ? "s":""]: [GLOB.clockwork_component_cache[i]]") - -/obj/structure/destructible/clockwork/cache/proc/get_production_time() - return (CACHE_PRODUCTION_TIME + (ACTIVE_CACHE_SLOWDOWN * linked_caches)) * get_efficiency_mod(TRUE) diff --git a/code/game/gamemodes/cult/blood_magic.dm b/code/game/gamemodes/cult/blood_magic.dm new file mode 100644 index 0000000000..04b56c9f7d --- /dev/null +++ b/code/game/gamemodes/cult/blood_magic.dm @@ -0,0 +1,767 @@ +/datum/action/innate/cult/blood_magic //Blood magic handles the creation of blood spells (formerly talismans) + name = "Prepare Blood Magic" + button_icon_state = "carve" + desc = "Prepare blood magic by carving runes into your flesh. This rite is most effective with an empowering rune" + var/list/spells = list() + var/channeling = FALSE + +/datum/action/innate/cult/blood_magic/Grant() + ..() + button.screen_loc = "6:-29,4:-2" + button.moved = "6:-29,4:-2" + button.locked = TRUE + +/datum/action/innate/cult/blood_magic/Remove() + for(var/X in spells) + qdel(X) + ..() + +/datum/action/innate/cult/blood_magic/IsAvailable() + if(!iscultist(owner)) + return FALSE + return ..() + +/datum/action/innate/cult/blood_magic/proc/Positioning() + for(var/datum/action/innate/cult/blood_spell/B in spells) + var/pos = -29+spells.Find(B)*31 + B.button.screen_loc = "6:[pos],4:-2" + B.button.moved = B.button.screen_loc + B.button.locked = TRUE + +/datum/action/innate/cult/blood_magic/Activate() + var/rune = FALSE + var/limit = RUNELESS_MAX_BLOODCHARGE + for(var/obj/effect/rune/empower/R in range(1, owner)) + rune = TRUE + break + if(rune) + limit = MAX_BLOODCHARGE + if(spells.len >= limit) + if(rune) + to_chat(owner, "Your body has reached its limit, you cannot store more than [MAX_BLOODCHARGE] spells at once. Pick a spell to nullify.") + else + to_chat(owner, "Your body has reached its limit, you cannot have more than [RUNELESS_MAX_BLOODCHARGE] spells at once without an empowering rune! Pick a spell to nullify.") + var/nullify_spell = input(owner, "Choose a spell to remove.", "Current Spells") as null|anything in spells + if(nullify_spell) + qdel(nullify_spell) + return + var/entered_spell_name + var/datum/action/innate/cult/blood_spell/BS + var/list/possible_spells = list() + for(var/I in subtypesof(/datum/action/innate/cult/blood_spell)) + var/datum/action/innate/cult/blood_spell/J = I + var/cult_name = initial(J.name) + possible_spells[cult_name] = J + possible_spells += "(REMOVE SPELL)" + entered_spell_name = input(owner, "Pick a blood spell to prepare...", "Spell Choices") as null|anything in possible_spells + if(entered_spell_name == "(REMOVE SPELL)") + var/nullify_spell = input(owner, "Choose a spell to remove.", "Current Spells") as null|anything in spells + if(nullify_spell) + qdel(nullify_spell) + return + BS = possible_spells[entered_spell_name] + if(QDELETED(src) || owner.incapacitated() || !BS) + return + to_chat(owner,"You begin to carve unnatural symbols into your flesh!") + SEND_SOUND(owner, sound('sound/weapons/slice.ogg',0,1,10)) + if(!channeling) + channeling = TRUE + else + to_chat(owner, "You are already invoking blood magic!") + return + if(do_after(owner, 100 - rune*65, target = owner)) + if(ishuman(owner)) + var/mob/living/carbon/human/H = owner + H.bleed(30 - rune*25) + var/datum/action/innate/cult/blood_spell/new_spell = new BS(owner) + new_spell.Grant(owner, src) + spells += new_spell + Positioning() + to_chat(owner, "Your wounds glows with power, you have prepared a [new_spell.name] invocation!") + channeling = FALSE + +/datum/action/innate/cult/blood_spell //The next generation of talismans + name = "Blood Magic" + button_icon_state = "telerune" + desc = "Fear the Old Blood." + var/charges = 1 + var/magic_path = null + var/obj/item/melee/blood_magic/hand_magic + var/datum/action/innate/cult/blood_magic/all_magic + var/base_desc //To allow for updating tooltips + var/invocation + var/health_cost = 0 + +/datum/action/innate/cult/blood_spell/Grant(mob/living/owner, datum/action/innate/cult/blood_magic/BM) + if(health_cost) + desc += "
Deals [health_cost] damage to your arm per use." + base_desc = desc + desc += "
Has [charges] use\s remaining." + all_magic = BM + ..() + +/datum/action/innate/cult/blood_spell/Remove() + if(all_magic) + all_magic.spells -= src + if(hand_magic) + qdel(hand_magic) + hand_magic = null + ..() + +/datum/action/innate/cult/blood_spell/IsAvailable() + if(!iscultist(owner) || owner.incapacitated() || !charges) + return FALSE + return ..() + +/datum/action/innate/cult/blood_spell/Activate() + if(magic_path) //If this spell flows from the hand + if(!hand_magic) + hand_magic = new magic_path(owner, src) + if(!owner.put_in_hands(hand_magic)) + qdel(hand_magic) + hand_magic = null + to_chat(owner, "You have no empty hand for invoking blood magic!") + return + to_chat(owner, "Your old wounds glow again as you invoke the [name].") + return + if(hand_magic) + qdel(hand_magic) + hand_magic = null + to_chat(owner, "You snuff out the spell with your hand, saving its power for another time.") + + +//Cult Blood Spells +/datum/action/innate/cult/blood_spell/stun + name = "Stun" + desc = "A potent spell that will stun and mute victims upon contact." + button_icon_state = "hand" + magic_path = "/obj/item/melee/blood_magic/stun" + health_cost = 10 + +/datum/action/innate/cult/blood_spell/teleport + name = "Teleport" + desc = "A useful spell that teleport cultists to a chosen destination on contact." + button_icon_state = "tele" + magic_path = "/obj/item/melee/blood_magic/teleport" + health_cost = 7 + +/datum/action/innate/cult/blood_spell/emp + name = "Electromagnetic Pulse" + desc = "A large spell that immediately disables all electronics in the area." + button_icon_state = "emp" + health_cost = 10 + invocation = "Ta'gh fara'qha fel d'amar det!" + +/datum/action/innate/cult/blood_spell/emp/Activate() + owner.visible_message("[owner]'s hand flashes a bright blue!", \ + "You speak the cursed words, emitting an EMP blast from your hand.") + empulse(owner, 3, 6) + owner.whisper(invocation, language = /datum/language/common) + charges-- + if(charges<=0) + qdel(src) + +/datum/action/innate/cult/blood_spell/shackles + name = "Shadow Shackles" + desc = "A stealthy spell that will handcuff and temporarily silence your victim." + button_icon_state = "cuff" + charges = 4 + magic_path = "/obj/item/melee/blood_magic/shackles" + +/datum/action/innate/cult/blood_spell/construction + name = "Twisted Construction" + desc = "A sinister spell used to convert:
Plasteel into runed metal
25 metal into a construct shell
Cyborgs directly into constructs
Cyborg shells into construct shells
Airlocks into runed airlocks (harm intent)" + button_icon_state = "transmute" + charges = 50 + magic_path = "/obj/item/melee/blood_magic/construction" + +/datum/action/innate/cult/blood_spell/equipment + name = "Summon Equipment" + desc = "A crucial spell that enables you to summon either a ritual dagger or combat gear including armored robes, the nar'sien bola, and an eldritch longsword." + button_icon_state = "equip" + magic_path = "/obj/item/melee/blood_magic/armor" + charges = 1 + +/datum/action/innate/cult/blood_spell/equipment/Activate() + var/choice = alert(owner,"Choose your equipment type",,"Combat Equipment","Ritual Dagger","Cancel") + if(choice == "Ritual Dagger") + var/turf/T = get_turf(owner) + owner.visible_message("[owner]'s hand glows red for a moment.", \ + "Red light begins to shimmer and take form within your hand!") + var/obj/O = new /obj/item/melee/cultblade/dagger(T) + if(owner.put_in_hands(O)) + to_chat(owner, "A ritual dagger appears in your hand!") + else + owner.visible_message("A ritual dagger appears at [owner]'s feet!", \ + "A ritual dagger materializes at your feet.") + SEND_SOUND(owner, sound('sound/effects/magic.ogg',0,1,25)) + charges-- + desc = base_desc + desc += "
Has [charges] use\s remaining." + if(charges<=0) + qdel(src) + else if(choice == "Combat Equipment") + ..() + +/datum/action/innate/cult/blood_spell/horror + name = "Hallucinations" + desc = "A ranged yet stealthy spell that will break the mind of the victim with nightmarish hallucinations." + button_icon_state = "horror" + var/obj/effect/proc_holder/horror/PH + charges = 4 + +/datum/action/innate/cult/blood_spell/horror/New() + PH = new() + PH.attached_action = src + ..() + +/datum/action/innate/cult/blood_spell/horror/Destroy() + var/obj/effect/proc_holder/horror/destroy = PH + . = ..() + if(destroy && !QDELETED(destroy)) + QDEL_NULL(destroy) + +/datum/action/innate/cult/blood_spell/horror/Activate() + PH.toggle(owner) //the important bit + return TRUE + +/obj/effect/proc_holder/horror + active = FALSE + ranged_mousepointer = 'icons/effects/cult_target.dmi' + var/datum/action/innate/cult/blood_spell/attached_action + +/obj/effect/proc_holder/horror/Destroy() + var/datum/action/innate/cult/blood_spell/AA = attached_action + . = ..() + if(AA && !QDELETED(AA)) + QDEL_NULL(AA) + +/obj/effect/proc_holder/horror/proc/toggle(mob/user) + if(active) + remove_ranged_ability("You dispel the magic...") + else + add_ranged_ability(user, "You prepare to horrify a target...") + +/obj/effect/proc_holder/horror/InterceptClickOn(mob/living/caller, params, atom/target) + if(..()) + return + if(ranged_ability_user.incapacitated() || !iscultist(caller)) + remove_ranged_ability() + return + var/turf/T = get_turf(ranged_ability_user) + if(!isturf(T)) + return FALSE + if(target in view(7, get_turf(ranged_ability_user))) + if(!ishuman(target) || iscultist(target)) + return + var/mob/living/carbon/human/H = target + H.hallucination = max(H.hallucination, 240) + SEND_SOUND(ranged_ability_user, sound('sound/effects/ghost.ogg',0,1,50)) + var/image/C = image('icons/effects/cult_effects.dmi',H,"bloodsparkles", ABOVE_MOB_LAYER) + add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/cult, "cult_apoc", C, FALSE) + addtimer(CALLBACK(H,/atom/.proc/remove_alt_appearance,"cult_apoc",TRUE), 2400, TIMER_OVERRIDE|TIMER_UNIQUE) + to_chat(ranged_ability_user,"[H] has been cursed with living nightmares!") + attached_action.charges-- + attached_action.desc = attached_action.base_desc + attached_action.desc += "
Has [attached_action.charges] use\s remaining." + attached_action.UpdateButtonIcon() + if(attached_action.charges <= 0) + remove_mousepointer(ranged_ability_user.client) + remove_ranged_ability("You have exhausted the spell's power!") + qdel(src) + +/datum/action/innate/cult/blood_spell/veiling + name = "Conceal Runes" + desc = "A multi-function spell that alternates between hiding and revealing nearby runes." + invocation = "Kla'atu barada nikt'o!" + button_icon_state = "gone" + charges = 10 + var/revealing = FALSE //if it reveals or not + +/datum/action/innate/cult/blood_spell/veiling/Activate() + if(!revealing) + owner.visible_message("Thin grey dust falls from [owner]'s hand!", \ + "You invoke the veiling spell, hiding nearby runes.") + charges-- + SEND_SOUND(owner, sound('sound/magic/smoke.ogg',0,1,25)) + owner.whisper(invocation, language = /datum/language/common) + for(var/obj/effect/rune/R in range(5,owner)) + R.conceal() + for(var/obj/structure/destructible/cult/S in range(5,owner)) + S.conceal() + for(var/turf/open/floor/engine/cult/T in range(5,owner)) + T.realappearance.alpha = 0 + revealing = TRUE + name = "Reveal Runes" + button_icon_state = "back" + else + owner.visible_message("A flash of light shines from [owner]'s hand!", \ + "You invoke the counterspell, revealing nearby runes.") + charges-- + owner.whisper(invocation, language = /datum/language/common) + SEND_SOUND(owner, sound('sound/magic/enter_blood.ogg',0,1,25)) + for(var/obj/effect/rune/R in range(7,owner)) //More range in case you weren't standing in exactly the same spot + R.reveal() + for(var/obj/structure/destructible/cult/S in range(7,owner)) + S.reveal() + for(var/turf/open/floor/engine/cult/T in range(7,owner)) + T.realappearance.alpha = initial(T.realappearance.alpha) + revealing = FALSE + name = "Conceal Runes" + button_icon_state = "gone" + if(charges<= 0) + qdel(src) + desc = base_desc + desc += "
Has [charges] use\s remaining." + UpdateButtonIcon() + +/datum/action/innate/cult/blood_spell/manipulation + name = "Blood Rites" + desc = "A complex spell that allows you to gather blood and use it for healing or other powerful spells." + invocation = "Fel'th Dol Ab'orod!" + button_icon_state = "manip" + charges = 5 + magic_path = "/obj/item/melee/blood_magic/manipulator" + + +// The "magic hand" items +/obj/item/melee/blood_magic + name = "\improper magical aura" + desc = "Sinister looking aura that distorts the flow of reality around it." + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "disintegrate" + item_state = null + flags_1 = ABSTRACT_1 | NODROP_1 | DROPDEL_1 + w_class = WEIGHT_CLASS_HUGE + throwforce = 0 + throw_range = 0 + throw_speed = 0 + var/invocation + var/uses = 1 + var/health_cost = 0 //The amount of health taken from the user when invoking the spell + var/datum/action/innate/cult/blood_spell/source + +/obj/item/melee/blood_magic/New(loc, spell) + source = spell + uses = source.charges + health_cost = source.health_cost + ..() + +/obj/item/melee/blood_magic/Destroy() + if(!QDELETED(source)) + if(uses <= 0) + source.hand_magic = null + qdel(source) + source = null + else + source.hand_magic = null + source.charges = uses + source.desc = source.base_desc + source.desc += "
Has [uses] use\s remaining." + source.UpdateButtonIcon() + ..() + +/obj/item/melee/blood_magic/attack_self(mob/living/user) + afterattack(user, user, TRUE) + +/obj/item/melee/blood_magic/attack(mob/living/M, mob/living/carbon/user) + if(!iscarbon(user) || !iscultist(user)) + uses = 0 + qdel(src) + return + add_logs(user, M, "used a cult spell on", source.name, "") + M.lastattacker = user.real_name + M.lastattackerckey = user.ckey + +/obj/item/melee/blood_magic/afterattack(atom/target, mob/living/carbon/user, proximity) + if(invocation) + user.whisper(invocation, language = /datum/language/common) + if(health_cost) + if(user.active_hand_index == 1) + user.apply_damage(health_cost, BRUTE, "l_arm") + else + user.apply_damage(health_cost, BRUTE, "r_arm") + if(uses <= 0) + qdel(src) + else if(source) + source.desc = source.base_desc + source.desc += "
Has [uses] use\s remaining." + source.UpdateButtonIcon() + +//Stun +/obj/item/melee/blood_magic/stun + color = "#ff0000" // red + invocation = "Fuu ma'jin!" + +/obj/item/melee/blood_magic/stun/afterattack(atom/target, mob/living/carbon/user, proximity) + if(!isliving(target) || !proximity) + return + var/mob/living/L = target + if(iscultist(target)) + return + if(iscultist(user)) + user.visible_message("[user] holds up their hand, which explodes in a flash of red light!", \ + "You stun [L] with the spell!") + var/obj/item/nullrod/N = locate() in L + if(N) + target.visible_message("[L]'s holy weapon absorbs the light!", \ + "Your holy weapon absorbs the blinding light!") + else + L.Knockdown(180) + L.flash_act(1,1) + if(issilicon(target)) + var/mob/living/silicon/S = L + S.emp_act(EMP_HEAVY) + else if(iscarbon(target)) + var/mob/living/carbon/C = L + C.silent += 6 + C.stuttering += 15 + C.cultslurring += 15 + C.Jitter(15) + if(is_servant_of_ratvar(L)) + L.adjustBruteLoss(15) + uses-- + ..() + +//Teleportation +/obj/item/melee/blood_magic/teleport + color = RUNE_COLOR_TELEPORT + desc = "A potent spell that teleport cultists on contact." + invocation = "Sas'so c'arta forbici!" + +/obj/item/melee/blood_magic/teleport/afterattack(atom/target, mob/living/carbon/user, proximity) + if(!iscultist(target) || !proximity) + to_chat(user, "You can only teleport adjacent cultists with this spell!") + return + if(iscultist(user)) + var/list/potential_runes = list() + var/list/teleportnames = list() + for(var/R in GLOB.teleport_runes) + var/obj/effect/rune/teleport/T = R + potential_runes[avoid_assoc_duplicate_keys(T.listkey, teleportnames)] = T + + if(!potential_runes.len) + to_chat(user, "There are no valid runes to teleport to!") + log_game("Teleport talisman failed - no other teleport runes") + return + + var/turf/T = get_turf(src) + if(is_away_level(T.z)) + to_chat(user, "You are not in the right dimension!") + log_game("Teleport spell failed - user in away mission") + return + + var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes //we know what key they picked + var/obj/effect/rune/teleport/actual_selected_rune = potential_runes[input_rune_key] //what rune does that key correspond to? + if(QDELETED(src) || !user || !user.is_holding(src) || user.incapacitated() || !actual_selected_rune || !proximity) + return + var/turf/dest = get_turf(actual_selected_rune) + if(is_blocked_turf(dest, TRUE)) + to_chat(user, "The target rune is blocked. Attempting to teleport to it would be massively unwise.") + return + uses-- + user.visible_message("Dust flows from [user]'s hand, and [user.p_they()] disappear[user.p_s()] with a sharp crack!", \ + "You speak the words of the talisman and find yourself somewhere else!", "You hear a sharp crack.") + var/mob/living/L = target + L.forceMove(dest) + dest.visible_message("There is a boom of outrushing air as something appears above the rune!", null, "You hear a boom.") + ..() + +//Shackles +/obj/item/melee/blood_magic/shackles + name = "Shadow Shackles" + desc = "Allows you to bind a victim and temporarily silence them." + invocation = "In'totum Lig'abis!" + color = "#000000" // black + +/obj/item/melee/blood_magic/shackles/afterattack(atom/target, mob/living/carbon/user, proximity) + if(iscultist(user) && iscarbon(target) && proximity) + var/mob/living/carbon/C = target + if(C.get_num_arms() >= 2 || C.get_arm_ignore()) + CuffAttack(C, user) + else + user.visible_message("This victim doesn't have enough arms to complete the restraint!") + return + ..() + +/obj/item/melee/blood_magic/shackles/proc/CuffAttack(mob/living/carbon/C, mob/living/user) + if(!C.handcuffed) + playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2) + C.visible_message("[user] begins restraining [C] with dark magic!", \ + "[user] begins shaping a dark magic around your wrists!") + if(do_mob(user, C, 30)) + if(!C.handcuffed) + C.handcuffed = new /obj/item/restraints/handcuffs/energy/cult/used(C) + C.update_handcuffed() + C.silent += 5 + to_chat(user, "You shackle [C].") + add_logs(user, C, "shackled") + uses-- + else + to_chat(user, "[C] is already bound.") + else + to_chat(user, "You fail to shackle [C].") + else + to_chat(user, "[C] is already bound.") + + +/obj/item/restraints/handcuffs/energy/cult //For the shackling spell + name = "shadow shackles" + desc = "Shackles that bind the wrists with sinister magic." + trashtype = /obj/item/restraints/handcuffs/energy/used + flags_1 = DROPDEL_1 + +/obj/item/restraints/handcuffs/energy/cult/used/dropped(mob/user) + user.visible_message("[user]'s shackles shatter in a discharge of dark magic!", \ + "Your [src] shatters in a discharge of dark magic!") + . = ..() + + +//Construction: Creates a construct shell out of 25 metal sheets, or converts plasteel into runed metal +/obj/item/melee/blood_magic/construction + name = "Twisted Construction" + desc = "Corrupts metal and plasteel into more sinister forms." + invocation = "Ethra p'ni dedol!" + color = "#000000" // black + +/obj/item/melee/blood_magic/construction/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + if(proximity_flag && iscultist(user)) + var/turf/T = get_turf(target) + if(istype(target, /obj/item/stack/sheet/metal)) + var/obj/item/stack/sheet/candidate = target + if(candidate.use(25)) + uses-=25 + to_chat(user, "A dark cloud eminates from your hand and swirls around the metal, twisting it into a construct shell!") + new /obj/structure/constructshell(T) + SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25)) + else + to_chat(user, "You need more metal to produce a construct shell!") + else if(istype(target, /obj/item/stack/sheet/plasteel)) + var/obj/item/stack/sheet/plasteel/candidate = target + var/quantity = min(candidate.amount, uses) + uses -= quantity + new /obj/item/stack/sheet/runed_metal(T,quantity) + candidate.use(quantity) + to_chat(user, "A dark cloud eminates from you hand and swirls around the plasteel, transforming it into runed metal!") + SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25)) + else if(istype(target,/mob/living/silicon/robot)) + var/mob/living/silicon/robot/candidate = target + if(candidate.mmi) + user.visible_message("A dark cloud eminates from [user]'s hand and swirls around [candidate]!") + playsound(T, 'sound/machines/airlock_alien_prying.ogg', 80, 1) + var/prev_color = candidate.color + candidate.color = "black" + if(do_after(user, 90, target = candidate)) + candidate.emp_act(EMP_HEAVY) + var/construct_class = alert(user, "Please choose which type of construct you wish to create.",,"Juggernaut","Wraith","Artificer") + user.visible_message("The dark cloud receedes from what was formerly [candidate], revealing a\n [construct_class]!") + switch(construct_class) + if("Juggernaut") + makeNewConstruct(/mob/living/simple_animal/hostile/construct/armored, candidate, user, 0, T) + if("Wraith") + makeNewConstruct(/mob/living/simple_animal/hostile/construct/wraith, candidate, user, 0, T) + if("Artificer") + makeNewConstruct(/mob/living/simple_animal/hostile/construct/builder, candidate, user, 0, T) + SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25)) + uses -= 50 + candidate.mmi = null + qdel(candidate) + else + candidate.color = prev_color + else + uses -= 50 + to_chat(user, "A dark cloud eminates from you hand and swirls around [candidate] - twisting it into a construct shell!") + new /obj/structure/constructshell(T) + SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25)) + else if(istype(target,/obj/machinery/door/airlock)) + target.narsie_act() + uses -= 50 + user.visible_message("Black ribbons suddenly eminate from [user]'s hand and cling to the airlock - twisting and corrupting it!") + SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25)) + else + to_chat(user, "The spell will not work on [target]!") + ..() + +//Armor: Gives the target a basic cultist combat loadout +/obj/item/melee/blood_magic/armor + name = "Sinister Armaments" + desc = "A spell that will equip the target with cultist equipment if there is a slot to equip it to." + color = "#33cc33" // green + +/obj/item/melee/blood_magic/armor/afterattack(atom/target, mob/living/carbon/user, proximity) + if(iscarbon(target) && proximity) + uses-- + var/mob/living/carbon/C = target + C.visible_message("Otherworldly armor suddenly appears on [C]!") + C.equip_to_slot_or_del(new /obj/item/clothing/under/color/black,slot_w_uniform) + C.equip_to_slot_or_del(new /obj/item/clothing/head/culthood/alt(user), slot_head) + C.equip_to_slot_or_del(new /obj/item/clothing/suit/cultrobes/alt(user), slot_wear_suit) + C.equip_to_slot_or_del(new /obj/item/clothing/shoes/cult/alt(user), slot_shoes) + C.equip_to_slot_or_del(new /obj/item/storage/backpack/cultpack(user), slot_back) + if(C == user) + qdel(src) //Clears the hands + C.put_in_hands(new /obj/item/melee/cultblade(user)) + C.put_in_hands(new /obj/item/restraints/legcuffs/bola/cult(user)) + ..() + +/obj/item/melee/blood_magic/manipulator + name = "Blood Rite" + desc = "A spell that will absorb blood from anything you touch.
Touching cultists and constructs can heal them.
Clicking the hand will potentially let you focus the spell into something stronger." + color = "#7D1717" + +/obj/item/melee/blood_magic/manipulator/afterattack(atom/target, mob/living/carbon/human/user, proximity) + if(proximity) + if(ishuman(target)) + var/mob/living/carbon/human/H = target + if(NOBLOOD in H.dna.species.species_traits) + to_chat(user,"Blood rites do not work on species with no blood!") + return + if(iscultist(H)) + if(H.stat == DEAD) + to_chat(user,"Only a revive rune can bring back the dead!") + return + if(H.blood_volume < BLOOD_VOLUME_SAFE) + var/restore_blood = BLOOD_VOLUME_SAFE - H.blood_volume + if(uses*2 < restore_blood) + H.blood_volume += uses*2 + to_chat(user,"You use the last of your blood rites to restore what blood you could!") + uses = 0 + return ..() + else + H.blood_volume = BLOOD_VOLUME_SAFE + uses -= round(restore_blood/2) + to_chat(user,"Your blood rites have restored [H == user ? "your" : "their"] blood to safe levels!") + var/overall_damage = H.getBruteLoss() + H.getFireLoss() + H.getToxLoss() + H.getOxyLoss() + if(overall_damage == 0) + to_chat(user,"That cultist doesn't require healing!") + else + var/ratio = uses/overall_damage + if(H == user) + to_chat(user,"Your blood healing is far less efficient when used on yourself!") + ratio *= 0.35 // Healing is half as effective if you can't perform a full heal + uses -= round(overall_damage) // Healing is 65% more "expensive" even if you can still perform the full heal + if(ratio>1) + ratio = 1 + uses -= round(overall_damage) + H.visible_message("[H] is fully healed by [H==user ? "their":"[H]'s"]'s blood magic!") + else + H.visible_message("[H] is partially healed by [H==user ? "their":"[H]'s"] blood magic.") + uses = 0 + ratio *= -1 + H.adjustOxyLoss((overall_damage*ratio) * (H.getOxyLoss() / overall_damage), 0) + H.adjustToxLoss((overall_damage*ratio) * (H.getToxLoss() / overall_damage), 0) + H.adjustFireLoss((overall_damage*ratio) * (H.getFireLoss() / overall_damage), 0) + H.adjustBruteLoss((overall_damage*ratio) * (H.getBruteLoss() / overall_damage), 0) + H.updatehealth() + playsound(get_turf(H), 'sound/magic/staff_healing.ogg', 25) + new /obj/effect/temp_visual/cult/sparks(get_turf(H)) + user.Beam(H,icon_state="sendbeam",time=15) + else + if(H.stat == DEAD) + to_chat(user,"Their blood has stopped flowing, you'll have to find another way to extract it.") + return + if(H.cultslurring) + to_chat(user,"Their blood has been tainted by an even stronger form of blood magic, it's no use to us like this!") + return + if(H.blood_volume > BLOOD_VOLUME_SAFE) + H.blood_volume -= 100 + uses += 50 + user.Beam(H,icon_state="drainbeam",time=10) + playsound(get_turf(H), 'sound/magic/enter_blood.ogg', 50) + H.visible_message("[user] has drained some of [H]'s blood!") + to_chat(user,"Your blood rite gains 50 charges from draining [H]'s blood.") + new /obj/effect/temp_visual/cult/sparks(get_turf(H)) + else + to_chat(user,"They're missing too much blood - you cannot drain them further!") + return + if(isconstruct(target)) + var/mob/living/simple_animal/M = target + var/missing = M.maxHealth - M.health + if(missing) + if(uses > missing) + M.adjustHealth(-missing) + M.visible_message("[M] is fully-healed by [user]'s blood magic!") + uses -= missing + else + M.adjustHealth(-uses) + M.visible_message("[M] is healed by [user]'sblood magic!") + uses = 0 + playsound(get_turf(M), 'sound/magic/staff_healing.ogg', 25) + user.Beam(M,icon_state="sendbeam",time=10) + if(istype(target, /obj/effect/decal/cleanable/blood)) + blood_draw(target, user) + ..() + +/obj/item/melee/blood_magic/manipulator/proc/blood_draw(atom/target, mob/living/carbon/human/user) + var/temp = 0 + var/turf/T = get_turf(target) + if(T) + for(var/obj/effect/decal/cleanable/blood/B in view(T, 2)) + if(B.blood_state == "blood") + if(B.bloodiness == 100) //Bonus for "pristine" bloodpools, also to prevent cheese with footprint spam + temp += 30 + else + temp += max((B.bloodiness**2)/800,0.5) + new /obj/effect/temp_visual/cult/turf/floor(get_turf(B)) + qdel(B) + for(var/obj/effect/decal/cleanable/trail_holder/TH in view(T, 2)) + qdel(TH) + var/obj/item/clothing/shoes/shoecheck = user.shoes + if(shoecheck && shoecheck.bloody_shoes["blood"]) + temp += shoecheck.bloody_shoes["blood"]/20 + shoecheck.bloody_shoes["blood"] = 0 + if(temp) + user.Beam(T,icon_state="drainbeam",time=15) + new /obj/effect/temp_visual/cult/sparks(get_turf(user)) + playsound(T, 'sound/magic/enter_blood.ogg', 50) + to_chat(user, "Your blood rite has gained [round(temp)] charge\s from blood sources around you!") + uses += round(temp) + +/obj/item/melee/blood_magic/manipulator/attack_self(mob/living/user) + if(iscultist(user)) + var/list/options = list("Blood Spear (200)", "Blood Bolt Barrage (400)", "Blood Beam (600)") + var/choice = input(user, "Choose a greater blood rite...", "Greater Blood Rites") as null|anything in options + if(!choice) + to_chat(user, "You decide against conducting a greater blood rite.") + return + switch(choice) + if("Blood Spear (200)") + if(uses < 200) + to_chat(user, "You need 200 charges to perform this rite.") + else + uses -= 200 + var/turf/T = get_turf(user) + qdel(src) + var/datum/action/innate/cult/spear/S = new(user) + var/obj/item/twohanded/cult_spear/rite = new(T) + S.Grant(user, rite) + rite.spear_act = S + if(user.put_in_hands(rite)) + to_chat(user, "A [rite.name] appears in your hand!") + else + user.visible_message("A [rite.name] appears at [user]'s feet!", \ + "A [rite.name] materializes at your feet.") + if("Blood Bolt Barrage (400)") + if(uses < 400) + to_chat(user, "You need 400 charges to perform this rite.") + else + var/obj/rite = new /obj/item/gun/ballistic/shotgun/boltaction/enchanted/arcane_barrage/blood() + uses -= 400 + qdel(src) + if(user.put_in_hands(rite)) + to_chat(user, "Your hands glow with power!") + else + to_chat(user, "You need a free hand for this rite!") + qdel(rite) + if("Blood Beam (600)") + if(uses < 600) + to_chat(user, "You need 600 charges to perform this rite.") + else + var/obj/rite = new /obj/item/blood_beam() + uses -= 600 + qdel(src) + if(user.put_in_hands(rite)) + to_chat(user, "Your hands glow with POWER OVERWHELMING!!!") + else + to_chat(user, "You need a free hand for this rite!") + qdel(rite) diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index 873fc96afe..fde8a16b13 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -77,7 +77,7 @@ var/datum/mind/cultist = pick(antag_candidates) antag_candidates -= cultist cultists_to_cult += cultist - cultist.special_role = "Cultist" + cultist.special_role = ROLE_CULTIST cultist.restricted_roles = restricted_jobs log_game("[cultist.key] (ckey) has been selected as a cultist") diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm deleted file mode 100644 index 93ed9bfdd1..0000000000 --- a/code/game/gamemodes/cult/ritual.dm +++ /dev/null @@ -1,279 +0,0 @@ -/* - -This file contains the arcane tome files. - -*/ - - -/obj/item/tome - name = "arcane tome" - desc = "An old, dusty tome with frayed edges and a sinister-looking cover." - icon_state ="tome" - throw_speed = 2 - throw_range = 5 - w_class = WEIGHT_CLASS_SMALL - -/obj/item/tome/Initialize() - . = ..() - if(!LAZYLEN(GLOB.rune_types)) - GLOB.rune_types = list() - var/static/list/non_revealed_runes = (subtypesof(/obj/effect/rune) - /obj/effect/rune/malformed) - for(var/i_can_do_loops_now_thanks_remie in non_revealed_runes) - var/obj/effect/rune/R = i_can_do_loops_now_thanks_remie - GLOB.rune_types[initial(R.cultist_name)] = R //Uses the cultist name for displaying purposes - -/obj/item/tome/examine(mob/user) - ..() - if(iscultist(user) || isobserver(user)) - to_chat(user, "The scriptures of the Geometer. Allows the scribing of runes and access to the knowledge archives of the cult of Nar-Sie.") - to_chat(user, "Striking a cult structure will unanchor or reanchor it.") - to_chat(user, "Striking another cultist with it will purge holy water from them.") - to_chat(user, "Striking a noncultist, however, will sear their flesh.") - -/obj/item/tome/attack(mob/living/M, mob/living/user) - if(!istype(M)) - return - if(!iscultist(user)) - return ..() - if(iscultist(M)) - if(M.reagents && M.reagents.has_reagent("holywater")) //allows cultists to be rescued from the clutches of ordained religion - to_chat(user, "You remove the taint from [M]." ) - var/holy2unholy = M.reagents.get_reagent_amount("holywater") - M.reagents.del_reagent("holywater") - M.reagents.add_reagent("unholywater",holy2unholy) - add_logs(user, M, "smacked", src, " removing the holy water from them") - return - M.take_bodypart_damage(0, 15) //Used to be a random between 5 and 20 - playsound(M, 'sound/weapons/sear.ogg', 50, 1) - M.visible_message("[user] strikes [M] with the arcane tome!", \ - "[user] strikes you with the tome, searing your flesh!") - flick("tome_attack", src) - user.do_attack_animation(M) - add_logs(user, M, "smacked", src) - -/obj/item/tome/attack_self(mob/user) - if(!iscultist(user)) - to_chat(user, "[src] seems full of unintelligible shapes, scribbles, and notes. Is this some sort of joke?") - return - open_tome(user) - -/obj/item/tome/proc/open_tome(mob/user) - var/choice = alert(user,"You open the tome...",,"Scribe Rune","More Information","Cancel") - switch(choice) - if("More Information") - read_tome(user) - if("Scribe Rune") - scribe_rune(user) - if("Cancel") - return - -/obj/item/tome/proc/read_tome(mob/user) - var/text = "" - text += "
Archives of the Dark One



" - text += "A rune's name and effects can be revealed by examining the rune.

" - - text += "Create Talisman
This rune is one of the most important runes the cult has, being the only way to create new talismans. A blank sheet of paper must be on top of the rune. After \ - invoking it and choosing which talisman you desire, the paper will be converted, after some delay into a talisman.

" - - text += "Teleport
This rune is unique in that it requires a keyword before the scribing can begin. When invoked, it will find any other Teleport runes; \ - If any are found, the user can choose which rune to send to. Upon activation, the rune teleports everything above it to the selected rune, provided the selected rune is unblocked.

" - - text += "Offer
This rune is necessary to achieve your goals. Placing a noncultist above it will convert them if it can and sacrifice them otherwise. \ - It requires two invokers to convert a target and three to sacrifice a living target or the sacrifice target.
\ - Successful conversions will produce a tome for the new cultist, in addition to healing them.
\ - Successful sacrifices will please the Geometer, can complete your objective if it sacrificed the sacrifice target, and will attempt to place the target into a soulstone.

" - - text += "Raise Dead
This rune requires the corpse of a cultist placed upon the rune, and one person sacrificed for each revival you wish to do.\ - Provided there are remaining revivals from those sacrificed, invoking the rune will revive the cultist placed upon it.

" - - text += "Electromagnetic Disruption
Robotic lifeforms have time and time again been the downfall of fledgling cults. This rune may allow you to gain the upper \ - hand against these pests. By using the rune, a large electromagnetic pulse will be emitted from the rune's location. The size of the EMP will grow significantly for each additional adjacent cultist when the \ - rune is activated.

" - - text += "Astral Communion
This rune is perhaps the most ingenious rune that is usable by a single person. Upon invoking the rune, the \ - user's spirit will be ripped from their body. In this state, the user's physical body will be locked in place to the rune itself - any attempts to move it will result in the rune pulling it back. \ - The body will also take constant damage while in this form, and may even die. The user's spirit will contain their consciousness, and will allow them to freely wander the station as a ghost. This may \ - also be used to commune with the dead.

" - - text += "Form Barrier
While simple, this rune serves an important purpose in defense and hindering passage. When invoked, the rune will draw a small amount of blood from the user \ - and make the space above the rune completely dense, rendering it impassable for about a minute and a half. This effect will spread to other nearby Barrier Runes. \ - The rune may be invoked again to undo this effect and allow passage again.

" - - text += "Summon Cultist
This rune allows the cult to free other cultists with ease. When invoked, it will allow the user to summon a single cultist to the rune from \ - any location. It requires two invokers, and will damage each invoker slightly.

" - - text += "Blood Boil
When invoked, this rune will rapidly do a massive amount of damage to all non-cultist viewers, but it will also emit a burst of flame once it finishes. \ - It requires three invokers.

" - - text += "Drain Life
This rune will drain the life of every living creature above the rune, healing the invoker for each creature drained by it.

" - - text += "Manifest Spirit
This rune allows you to summon spirits as humanoid fighters. When invoked, a spirit above the rune will be brought to life as a human, wearing nothing, that seeks only to serve you and the Geometer. \ - However, the spirit's link to reality is fragile - you must remain on top of the rune, and you will slowly take damage. Upon stepping off the rune, all summoned spirits will dissipate, dropping their items to the ground. You may manifest \ - multiple spirits with one rune, but you will rapidly take damage in doing so.

" - - text += "Summon Nar-Sie
This rune is necessary to achieve your goals. On attempting to scribe it, it will produce shields around you and alert everyone you are attempting to scribe it; it takes a very long time to scribe, \ - and does massive damage to the one attempting to scribe it.
Invoking it requires 9 invokers and the sacrifice of a specific crewmember, and once invoked, will summon the Geometer, Nar-Sie herself. \ - This will complete your objectives.


" - - text += "Talisman of Teleportation
The talisman form of the Teleport rune will transport the invoker to a selected Teleport rune once.

" - - text += "Talisman of Construction
This talisman is the main way of creating construct shells. To use it, one must strike 25 sheets of metal with the talisman. The sheets will then be twisted into a construct shell, ready to receive a soul to occupy it.

" - - text += "Talisman of Tome Summoning
This talisman will produce a single tome at your feet.

" - - text += "Talisman of Veiling/Revealing
This talisman will hide runes on its first use, and on the second, will reveal runes.

" - - text += "Talisman of Disguising
This talisman will permanently disguise all nearby runes as crayon runes.

" - - text += "Talisman of Electromagnetic Pulse
This talisman will EMP anything else nearby. It disappears after one use.

" - - text += "Talisman of Stunning
Attacking a target will knock them down for a long duration in addition to inhibiting their speech. \ - Robotic lifeforms will suffer the effects of a heavy electromagnetic pulse instead.

" - - text += "Talisman of Armaments
The Talisman of Arming will equip the user with armored robes, a backpack, an eldritch longsword, an empowered bola, and a pair of boots. Any items that cannot \ - be equipped will not be summoned. Attacking a fellow cultist with it will instead equip them.

" - - text += "Talisman of Horrors
The Talisman of Horror, unlike other talismans, can be applied at range, without the victim noticing. It will cause the victim to have severe hallucinations after a short while.

" - - text += "Talisman of Shackling
The Talisman of Shackling must be applied directly to the victim, it has 4 uses and cuffs victims with magic shackles that disappear when removed.

" - - text += "In addition to these runes, the cult has a small selection of equipment and constructs.

" - - text += "Equipment:

" - - text += "Cult Blade
Cult blades are sharp weapons that, notably, cannot be used by noncultists. These blades are produced by the Talisman of Arming.

" - - text += "Cult Bola
Cult bolas are strong bolas, useful for snaring targets. These bolas are produced by the Talisman of Arming.

" - - text += "Cult Robes
Cult robes are heavily armored robes. These robes are produced by the Talisman of Arming.

" - - text += "Soulstone
A soulstone is a simple piece of magic, produced either via the starter talisman or by sacrificing humans. Using it on an unconscious or dead human, or on a Shade, will trap their soul in the stone, allowing its use in construct shells. \ -
The soul within can also be released as a Shade by using it in-hand.

" - - text += "Construct Shell
A construct shell is useless on its own, but placing a filled soulstone within it allows you to produce your choice of a Wraith, a Juggernaut, or an Artificer. \ -
Each construct has uses, detailed below in Constructs. Construct shells can be produced via the starter talisman or the Rite of Fabrication.

" - - text += "Constructs:

" - - text += "Shade
While technically not a construct, the Shade is produced when released from a soulstone. It is quite fragile and has weak melee attacks, but is fully healed when recaptured by a soulstone.

" - - text += "Wraith
The Wraith is a fast, lethal melee attacker which can jaunt through walls. However, it is only slightly more durable than a shade.

" - - text += "Juggernaut
The Juggernaut is a slow, but durable, melee attacker which can produce temporary forcewalls. It will also reflect most lethal energy weapons.

" - - text += "Artificer
The Artificer is a weak and fragile construct, able to heal other constructs, shades, or itself, produce more soulstones and construct shells, \ - construct fortifying cult walls and flooring, and finally, it can release a few indiscriminate stunning missiles.

" - - text += "Harvester
If you see one, know that you have done all you can and your life is void.

" - - var/datum/browser/popup = new(user, "tome", "", 800, 600) - popup.set_content(text) - popup.open() - return 1 - -/obj/item/tome/proc/scribe_rune(mob/living/user) - var/turf/Turf = get_turf(user) - var/chosen_keyword - var/obj/effect/rune/rune_to_scribe - var/entered_rune_name - var/list/shields = list() - var/area/A = get_area(src) - - var/datum/antagonist/cult/user_antag = user.mind.has_antag_datum(/datum/antagonist/cult,TRUE) - if(!user_antag) - return - - var/datum/objective/eldergod/summon_objective = locate() in user_antag.cult_team.objectives - var/datum/objective/sacrifice/sac_objective = locate() in user_antag.cult_team.objectives - - if(!check_rune_turf(Turf, user)) - return - entered_rune_name = input(user, "Choose a rite to scribe.", "Sigils of Power") as null|anything in GLOB.rune_types - if(!src || QDELETED(src) || !Adjacent(user) || user.incapacitated() || !check_rune_turf(Turf, user)) - return - rune_to_scribe = GLOB.rune_types[entered_rune_name] - if(!rune_to_scribe) - return - if(initial(rune_to_scribe.req_keyword)) - chosen_keyword = stripped_input(user, "Enter a keyword for the new rune.", "Words of Power") - if(!chosen_keyword) - scribe_rune(user) //Go back a menu! - return - Turf = get_turf(user) //we may have moved. adjust as needed... - A = get_area(src) - if(!src || QDELETED(src) || !Adjacent(user) || user.incapacitated() || !check_rune_turf(Turf, user)) - return - - //AAAAAAAAAAAAAAAH, i'm rewriting enough for now so TODO: remove this shit - if(ispath(rune_to_scribe, /obj/effect/rune/narsie)) - if(!summon_objective) - to_chat(user, "Nar-Sie does not wish to be summoned!") - return - if(sac_objective && !sac_objective.check_completion()) - to_chat(user, "The sacrifice is not complete. The portal would lack the power to open if you tried!") - return - if(summon_objective.check_completion()) - to_chat(user, "\"I am already here. There is no need to try to summon me now.\"") - return - if(!(A in summon_objective.summon_spots)) - to_chat(user, "The Geometer can only be summoned where the veil is weak - in [english_list(summon_objective.summon_spots)]!") - return - var/confirm_final = alert(user, "This is the FINAL step to summon Nar-Sie; it is a long, painful ritual and the crew will be alerted to your presence", "Are you prepared for the final battle?", "My life for Nar-Sie!", "No") - if(confirm_final == "No") - to_chat(user, "You decide to prepare further before scribing the rune.") - return - Turf = get_turf(user) - A = get_area(src) - if(!(A in summon_objective.summon_spots)) // Check again to make sure they didn't move - to_chat(user, "The Geometer can only be summoned where the veil is weak - in [english_list(summon_objective.summon_spots)]!") - return - priority_announce("Figments from an eldritch god are being summoned by [user] into [A.map_name] from an unknown dimension. Disrupt the ritual at all costs!","Central Command Higher Dimensional Affairs", 'sound/ai/spanomalies.ogg') - for(var/B in spiral_range_turfs(1, user, 1)) - var/obj/structure/emergency_shield/sanguine/N = new(B) - shields += N - user.visible_message("[user] [user.blood_volume ? "cuts open their arm and begins writing in their own blood":"begins sketching out a strange design"]!", \ - "You [user.blood_volume ? "slice open your arm and ":""]begin drawing a sigil of the Geometer.") - if(user.blood_volume) - user.apply_damage(initial(rune_to_scribe.scribe_damage), BRUTE, pick("l_arm", "r_arm")) - var/scribe_mod = initial(rune_to_scribe.scribe_delay) - if(istype(get_turf(user), /turf/open/floor/engine/cult)) - scribe_mod *= 0.5 - if(!do_after(user, scribe_mod, target = get_turf(user))) - for(var/V in shields) - var/obj/structure/emergency_shield/sanguine/S = V - if(S && !QDELETED(S)) - qdel(S) - return - if(!check_rune_turf(Turf, user)) - return - user.visible_message("[user] creates a strange circle[user.blood_volume ? " in their own blood":""].", \ - "You finish drawing the arcane markings of the Geometer.") - for(var/V in shields) - var/obj/structure/emergency_shield/S = V - if(S && !QDELETED(S)) - qdel(S) - var/obj/effect/rune/R = new rune_to_scribe(Turf, chosen_keyword) - R.add_mob_blood(user) - to_chat(user, "The [lowertext(R.cultist_name)] rune [R.cultist_desc]") - SSblackbox.record_feedback("tally", "cult_runes_scribed", 1, R.cultist_name) - -/obj/item/tome/proc/check_rune_turf(turf/T, mob/user) - if(isspaceturf(T)) - to_chat(user, "You cannot scribe runes in space!") - return FALSE - - if(locate(/obj/effect/rune) in T) - to_chat(user, "There is already a rune here.") - return FALSE - - if(!is_station_level(T.z) && !is_mining_level(T.z)) - to_chat(user, "The veil is not weak enough here.") - return FALSE - - var/area/A = get_area(T) - if(A && !A.blob_allowed) - to_chat(user, "There's a passage in [src] specifically forbidding oyster consumption, triple-frying, and building outside of designated cult zones.") - return FALSE - - - return TRUE diff --git a/code/game/gamemodes/cult/rune_spawn_action.dm b/code/game/gamemodes/cult/rune_spawn_action.dm deleted file mode 100644 index 119d507a5e..0000000000 --- a/code/game/gamemodes/cult/rune_spawn_action.dm +++ /dev/null @@ -1,73 +0,0 @@ -//after a delay, creates a rune below you. for constructs creating runes. -/datum/action/innate/cult/create_rune - background_icon_state = "bg_cult" - var/obj/effect/rune/rune_type - var/cooldown = 0 - var/base_cooldown = 900 - var/scribe_time = 100 - var/damage_interrupt = TRUE - var/action_interrupt = TRUE - var/obj/effect/temp_visual/cult/rune_spawn/rune_word_type - var/obj/effect/temp_visual/cult/rune_spawn/rune_innerring_type - var/obj/effect/temp_visual/cult/rune_spawn/rune_center_type - var/rune_color - -/datum/action/innate/cult/create_rune/IsAvailable() - if(!rune_type || cooldown > world.time) - return FALSE - return ..() - -/datum/action/innate/cult/create_rune/Activate() - var/chosen_keyword - if(!isturf(owner.loc)) - to_chat(owner, "The fabric of reality quivers in agony.") - return - - var/turf/T = get_turf(src) - var/summon_type = initial(match.summon_type) - - - var/atom/movable/AM = new summon_type(T) - if(istype(AM, /obj/item)) - usr.put_in_hands(AM) - - uses-- - if(uses <= 0) - to_chat(usr, "[src] crumbles to dust.") - burn() - -/obj/item/paper/talisman/supply/weak - cultist_name = "Lesser Supply Talisman" - uses = 2 - -/obj/item/paper/talisman/supply/weak/Initialize(mapload) - . = ..() - // no runed metal from lesser talismans. - possible_summons -= /datum/cult_supply/metal - -/datum/cult_supply - var/id = "used_popcorn" - var/invocation = "Pla'ceho'lder." - var/desc = "Summons a generic supply item, to aid the cult." - var/summon_type = /obj/item/trash/popcorn // wait this isn't useful - -/datum/cult_supply/tome - id = "arcane_tome" - invocation = "N'ath reth sh'yro eth d'raggathnor!" - desc = "Summons an arcane tome, used to scribe runes." - summon_type = /obj/item/tome - -/datum/cult_supply/metal - id = "runed_metal" - invocation = "Bar'tea eas!" - desc = "Provides 5 runed metal, which can build a variety of cult structures." - summon_type = /obj/item/stack/sheet/runed_metal/five - -/datum/cult_supply/talisman/teleport - id = "teleport_talisman" - invocation = "Sas'so c'arta forbici!" - desc = "Allows you to move to a selected teleportation rune." - summon_type = /obj/item/paper/talisman/teleport - -/datum/cult_supply/talisman/emp - id = "emp_talisman" - invocation = "Ta'gh fara'qha fel d'amar det!" - desc = "Allows you to destroy technology in a short range." - summon_type = /obj/item/paper/talisman/emp - -/datum/cult_supply/talisman/stun - id = "stun_talisman" - invocation = "Fuu ma'jin!" - desc = "Allows you to stun a person by attacking them with the talisman. Does not work on people holding a holy weapon!" - summon_type = /obj/item/paper/talisman/stun - -/datum/cult_supply/talisman/veil - id = "veil_talisman" - invocation = "Kla'atu barada nikt'o!" - desc = "Two use talisman, first use makes all nearby runes invisible, secnd use reveals nearby hidden runes." - summon_type = /obj/item/paper/talisman/true_sight - -/datum/cult_supply/soulstone - id = "soulstone" - invocation = "Kal'om neth!" - desc = "Summons a soul stone, used to capture the spirits of dead or dying humans." - summon_type = /obj/item/device/soulstone - -/datum/cult_supply/construct_shell - id = "construct_shell" - invocation = "Daa'ig osk!" - desc = "Summons a construct shell for use with soulstone-captured souls. It is too large to carry on your person." - summon_type = /obj/structure/constructshell - diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm deleted file mode 100644 index 588b45d5f6..0000000000 --- a/code/game/gamemodes/cult/talisman.dm +++ /dev/null @@ -1,346 +0,0 @@ -/obj/item/paper/talisman - var/cultist_name = "talisman" - var/cultist_desc = "A basic talisman. It serves no purpose." - var/invocation = "Naise meam!" - var/uses = 1 - var/health_cost = 0 //The amount of health taken from the user when invoking the talisman - var/creation_time = 100 //how long it takes an imbue rune to make this type of talisman - -/obj/item/paper/talisman/examine(mob/user) - if(iscultist(user) || user.stat == DEAD) - to_chat(user, "Name: [cultist_name]") - to_chat(user, "Effect: [cultist_desc]") - to_chat(user, "Uses Remaining: [uses]") - else - to_chat(user, "There are indecipherable images scrawled on the paper in what looks to be... blood?") - -/obj/item/paper/talisman/attack_self(mob/living/user) - if(!iscultist(user)) - to_chat(user, "There are indecipherable images scrawled on the paper in what looks to be... blood?") - return - if(invoke(user)) - uses-- - if(uses <= 0) - qdel(src) - -/obj/item/paper/talisman/proc/invoke(mob/living/user, successfuluse = 1) - . = successfuluse - if(successfuluse) //if the calling whatever says we succeed, do the fancy stuff - if(invocation) - user.whisper(invocation, language = /datum/language/common) - if(health_cost && iscarbon(user)) - var/mob/living/carbon/C = user - C.apply_damage(health_cost, BRUTE, pick("l_arm", "r_arm")) - -//Malformed Talisman: If something goes wrong. -/obj/item/paper/talisman/malformed - cultist_name = "malformed talisman" - cultist_desc = "A talisman with gibberish scrawlings. No good can come from invoking this." - invocation = "Ra'sha yoka!" - -/obj/item/paper/talisman/malformed/invoke(mob/living/user, successfuluse = 1) - to_chat(user, "You feel a pain in your head. The Geometer is displeased.") - if(iscarbon(user)) - var/mob/living/carbon/C = user - C.apply_damage(10, BRUTE, "head") - -//Rite of Translocation: Same as rune -/obj/item/paper/talisman/teleport - cultist_name = "Talisman of Teleportation" - cultist_desc = "A single-use talisman that will teleport a user to a random rune of the same keyword." - color = RUNE_COLOR_TELEPORT - invocation = "Sas'so c'arta forbici!" - health_cost = 5 - creation_time = 80 - -/obj/item/paper/talisman/teleport/invoke(mob/living/user, successfuluse = 1) - var/list/potential_runes = list() - var/list/teleportnames = list() - for(var/R in GLOB.teleport_runes) - var/obj/effect/rune/teleport/T = R - potential_runes[avoid_assoc_duplicate_keys(T.listkey, teleportnames)] = T - - if(!potential_runes.len) - to_chat(user, "There are no valid runes to teleport to!") - log_game("Teleport talisman failed - no other teleport runes") - return ..(user, 0) - - if(is_away_level(user.z)) - to_chat(user, "You are not in the right dimension!") - log_game("Teleport talisman failed - user in away mission") - return ..(user, 0) - - var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes //we know what key they picked - var/obj/effect/rune/teleport/actual_selected_rune = potential_runes[input_rune_key] //what rune does that key correspond to? - if(!src || QDELETED(src) || !user || !user.is_holding(src) || user.incapacitated() || !actual_selected_rune) - return ..(user, 0) - var/turf/target = get_turf(actual_selected_rune) - if(is_blocked_turf(target, TRUE)) - to_chat(user, "The target rune is blocked. Attempting to teleport to it would be massively unwise.") - return ..(user, 0) - user.visible_message("Dust flows from [user]'s hand, and [user.p_they()] disappear[user.p_s()] with a sharp crack!", \ - "You speak the words of the talisman and find yourself somewhere else!", "You hear a sharp crack.") - user.forceMove(target) - target.visible_message("There is a boom of outrushing air as something appears above the rune!", null, "You hear a boom.") - return ..() - - -/obj/item/paper/talisman/summon_tome - cultist_name = "Talisman of Tome Summoning" - cultist_desc = "A one-use talisman that will call an untranslated tome from the archives of the Geometer." - color = "#512727" // red-black - invocation = "N'ath reth sh'yro eth d'raggathnor!" - health_cost = 1 - creation_time = 30 - -/obj/item/paper/talisman/summon_tome/invoke(mob/living/user, successfuluse = 1) - . = ..() - user.visible_message("[user]'s hand glows red for a moment.", \ - "You speak the words of the talisman!") - new /obj/item/tome(get_turf(user)) - user.visible_message("A tome appears at [user]'s feet!", \ - "An arcane tome materializes at your feet.") - -/obj/item/paper/talisman/true_sight - cultist_name = "Talisman of Veiling" - cultist_desc = "A multi-use talisman that hides nearby runes. On its second use, will reveal nearby runes." - color = "#9c9c9c" // grey - invocation = "Kla'atu barada nikt'o!" - health_cost = 1 - creation_time = 30 - uses = 6 - var/revealing = FALSE //if it reveals or not - -/obj/item/paper/talisman/true_sight/invoke(mob/living/user, successfuluse = 1) - . = ..() - if(!revealing) - user.visible_message("Thin grey dust falls from [user]'s hand!", \ - "You speak the words of the talisman, hiding nearby runes.") - invocation = "Nikt'o barada kla'atu!" - revealing = TRUE - for(var/obj/effect/rune/R in range(4,user)) - R.talismanhide() - else - user.visible_message("A flash of light shines from [user]'s hand!", \ - "You speak the words of the talisman, revealing nearby runes.") - for(var/obj/effect/rune/R in range(3,user)) - R.talismanreveal() - -//Rite of Disruption: Weaker than rune -/obj/item/paper/talisman/emp - cultist_name = "Talisman of Electromagnetic Pulse" - cultist_desc = "A talisman that will cause a moderately-sized electromagnetic pulse." - color = "#4d94ff" // light blue - invocation = "Ta'gh fara'qha fel d'amar det!" - health_cost = 5 - -/obj/item/paper/talisman/emp/invoke(mob/living/user, successfuluse = 1) - . = ..() - user.visible_message("[user]'s hand flashes a bright blue!", \ - "You speak the words of the talisman, emitting an EMP blast.") - empulse(src, 4, 8) - - -//Rite of Disorientation: Stuns and inhibit speech on a single target for quite some time -/obj/item/paper/talisman/stun - cultist_name = "Talisman of Stunning" - cultist_desc = "A talisman that will stun and inhibit speech on a single target. To use, attack target directly." - color = "#ff0000" // red - invocation = "Fuu ma'jin!" - health_cost = 10 - -/obj/item/paper/talisman/stun/invoke(mob/living/user, successfuluse = 0) - if(successfuluse) //if we're forced to be successful(we normally aren't) then do the normal stuff - return ..() - if(iscultist(user)) - to_chat(user, "To use this talisman, attack the target directly.") - else - to_chat(user, "There are indecipherable images scrawled on the paper in what looks to be... blood?") - return 0 - -/obj/item/paper/talisman/stun/attack(mob/living/target, mob/living/user, successfuluse = 1) - if(iscultist(user)) - invoke(user, 1) - user.visible_message("[user] holds up [src], which explodes in a flash of red light!", \ - "You stun [target] with the talisman!") - var/obj/item/nullrod/N = locate() in target - if(N) - target.visible_message("[target]'s holy weapon absorbs the talisman's light!", \ - "Your holy weapon absorbs the blinding light!") - else - target.Knockdown(200) - target.flash_act(1,1) - if(issilicon(target)) - var/mob/living/silicon/S = target - S.emp_act(EMP_HEAVY) - else if(iscarbon(target)) - var/mob/living/carbon/C = target - C.silent += 5 - C.stuttering += 15 - C.cultslurring += 15 - C.Jitter(15) - if(is_servant_of_ratvar(target)) - target.adjustBruteLoss(15) - qdel(src) - return - ..() - - -//Rite of Arming: Equips cultist armor on the user, where available -/obj/item/paper/talisman/armor - cultist_name = "Talisman of Arming" - cultist_desc = "A talisman that will equip the invoker with cultist equipment if there is a slot to equip it to." - color = "#33cc33" // green - invocation = "N'ath reth sh'yro eth draggathnor!" - creation_time = 80 - -/obj/item/paper/talisman/armor/invoke(mob/living/user, successfuluse = 1) - . = ..() - user.visible_message("Otherworldly armor suddenly appears on [user]!", \ - "You speak the words of the talisman, arming yourself!") - user.equip_to_slot_or_del(new /obj/item/clothing/head/culthood/alt(user), slot_head) - user.equip_to_slot_or_del(new /obj/item/clothing/suit/cultrobes/alt(user), slot_wear_suit) - user.equip_to_slot_or_del(new /obj/item/clothing/shoes/cult/alt(user), slot_shoes) - user.equip_to_slot_or_del(new /obj/item/storage/backpack/cultpack(user), slot_back) - user.dropItemToGround(src) - user.put_in_hands(new /obj/item/melee/cultblade(user)) - user.put_in_hands(new /obj/item/restraints/legcuffs/bola/cult(user)) - -/obj/item/paper/talisman/armor/attack(mob/living/target, mob/living/user) - if(iscultist(user) && iscultist(target)) - user.temporarilyRemoveItemFromInventory(src) - invoke(target) - qdel(src) - return - ..() - - -//Talisman of Horrors: Breaks the mind of the victim with nightmarish hallucinations -/obj/item/paper/talisman/horror - cultist_name = "Talisman of Horrors" - cultist_desc = "A talisman that will break the mind of the victim with nightmarish hallucinations." - color = "#ffb366" // light orange - invocation = "Lo'Nab Na'Dm!" - creation_time = 80 - -/obj/item/paper/talisman/horror/afterattack(mob/living/target, mob/living/user) - if(iscultist(user) && (get_dist(user, target) < 7)) - if(iscarbon(target)) - to_chat(user, "You disturb [target] with visions of madness!") - var/mob/living/carbon/H = target - H.reagents.add_reagent("mindbreaker", 12) - if(is_servant_of_ratvar(target)) - to_chat(target, "You see a brief but horrible vision of Ratvar, rusted and scrapped, being torn apart.") - target.emote("scream") - target.confused = max(0, target.confused + 3) - target.flash_act() - qdel(src) - -//Talisman of Fabrication: Creates a construct shell out of 25 metal sheets, or converts plasteel into runed metal up to 25 times -/obj/item/paper/talisman/construction - cultist_name = "Talisman of Construction" - cultist_desc = "Use this talisman on at least twenty-five metal sheets to create an empty construct shell" - invocation = "Ethra p'ni dedol!" - color = "#000000" // black - uses = 25 - creation_time = 80 - -/obj/item/paper/talisman/construction/attack_self(mob/living/user) - if(iscultist(user)) - to_chat(user, "To use this talisman, place it upon a stack of metal sheets.") - else - to_chat(user, "There are indecipherable images scrawled on the paper in what looks to be... blood?") - - -/obj/item/paper/talisman/construction/attack(obj/M,mob/living/user) - if(iscultist(user)) - to_chat(user, "This talisman will only work on a stack of metal or plasteel sheets!") - log_game("Construct talisman failed - not a valid target") - else - ..() - -/obj/item/paper/talisman/construction/afterattack(obj/item/stack/sheet/target, mob/user, proximity_flag, click_parameters) - ..() - if(proximity_flag && iscultist(user)) - var/turf/T = get_turf(target) - if(istype(target, /obj/item/stack/sheet/metal)) - if(target.use(25)) - new /obj/structure/constructshell(T) - to_chat(user, "The talisman clings to the metal and twists it into a construct shell!") - SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25)) - invoke(user, 1) - qdel(src) - else - to_chat(user, "You need more metal to produce a construct shell!") - else if(istype(target, /obj/item/stack/sheet/plasteel)) - var/quantity = min(target.amount, uses) - uses -= quantity - new /obj/item/stack/sheet/runed_metal(T,quantity) - target.use(quantity) - to_chat(user, "The talisman clings to the plasteel, transforming it into runed metal!") - SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25)) - invoke(user, 1) - if(uses <= 0) - qdel(src) - else - to_chat(user, "The talisman must be used on metal or plasteel!") - - -//Talisman of Shackling: Applies special cuffs directly from the talisman -/obj/item/paper/talisman/shackle - cultist_name = "Talisman of Shackling" - cultist_desc = "Use this talisman on a victim to handcuff them with dark bindings." - invocation = "In'totum Lig'abis!" - color = "#B27300" // burnt-orange - uses = 6 - -/obj/item/paper/talisman/shackle/invoke(mob/living/user, successfuluse = 0) - if(successfuluse) //if we're forced to be successful(we normally aren't) then do the normal stuff - return ..() - if(iscultist(user)) - to_chat(user, "To use this talisman, attack the target directly.") - else - to_chat(user, "There are indecipherable images scrawled on the paper in what looks to be... blood?") - return 0 - -/obj/item/paper/talisman/shackle/attack(mob/living/carbon/target, mob/living/user) - if(iscultist(user) && istype(target)) - if(target.stat == DEAD) - user.visible_message("This talisman's magic does not affect the dead!") - return - CuffAttack(target, user) - return - ..() - -/obj/item/paper/talisman/shackle/proc/CuffAttack(mob/living/carbon/C, mob/living/user) - if(!C.handcuffed) - invoke(user, 1) - playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2) - C.visible_message("[user] begins restraining [C] with dark magic!", \ - "[user] begins shaping a dark magic around your wrists!") - if(do_mob(user, C, 30)) - if(!C.handcuffed) - C.handcuffed = new /obj/item/restraints/handcuffs/energy/cult/used(C) - C.update_handcuffed() - to_chat(user, "You shackle [C].") - add_logs(user, C, "handcuffed") - uses-- - else - to_chat(user, "[C] is already bound.") - else - to_chat(user, "You fail to shackle [C].") - else - to_chat(user, "[C] is already bound.") - if(uses <= 0) - qdel(src) - -/obj/item/restraints/handcuffs/energy/cult //For the talisman of shackling - name = "cult shackles" - desc = "Shackles that bind the wrists with sinister magic." - trashtype = /obj/item/restraints/handcuffs/energy/used - flags_1 = DROPDEL_1 - -/obj/item/restraints/handcuffs/energy/cult/used/dropped(mob/user) - user.visible_message("[user]'s shackles shatter in a discharge of dark magic!", \ - "Your [src] shatters in a discharge of dark magic!") - . = ..() diff --git a/code/game/gamemodes/extended/extended.dm b/code/game/gamemodes/extended/extended.dm index 72e8b472ed..ac55cb526d 100644 --- a/code/game/gamemodes/extended/extended.dm +++ b/code/game/gamemodes/extended/extended.dm @@ -10,9 +10,6 @@ /datum/game_mode/extended/pre_setup() return 1 -/datum/game_mode/extended/post_setup() - ..() - /datum/game_mode/extended/generate_report() return "The transmission mostly failed to mention your sector. It is possible that there is nothing in the Syndicate that could threaten your station during this shift." diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index a0e5a9f147..06c1b4fb18 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -46,6 +46,8 @@ var/allow_persistence_save = TRUE + var/gamemode_ready = FALSE //Is the gamemode all set up and ready to start checking for ending conditions. + /datum/game_mode/proc/announce() //Shows the gamemode's name and a fast description. to_chat(world, "The gamemode is: [name]!") to_chat(world, "[announce_text]") @@ -94,6 +96,7 @@ if(report) addtimer(CALLBACK(src, .proc/send_intercept, 0), rand(waittime_l, waittime_h)) generate_station_goals() + gamemode_ready = TRUE return 1 @@ -161,8 +164,10 @@ replacementmode.restricted_jobs += "Assistant" message_admins("The roundtype will be converted. If you have other plans for the station or feel the station is too messed up to inhabit stop the creation of antags or end the round now.") - + log_game("Roundtype converted to [replacementmode.name]") + . = 1 + sleep(rand(600,1800)) if(!SSticker.IsRoundInProgress()) message_admins("Roundtype conversion cancelled, the game appears to have finished!") @@ -189,7 +194,7 @@ /datum/game_mode/proc/check_finished(force_ending) //to be called by SSticker - if(!SSticker.setup_done) + if(!SSticker.setup_done || !gamemode_ready) return FALSE if(replacementmode && round_converted == 2) return replacementmode.check_finished() @@ -251,11 +256,15 @@ var/list/report_weights = config.mode_false_report_weight.Copy() report_weights[config_tag] = 0 //Prevent the current mode from being falsely selected. var/list/reports = list() - for(var/i in 1 to rand(3,5)) //Between three and five wrong entries on the list. + var/Count = 0 //To compensate for missing correct report + if(prob(65)) // 65% chance the actual mode will appear on the list + reports += config.mode_reports[config_tag] + Count++ + for(var/i in Count to rand(3,5)) //Between three and five wrong entries on the list. var/false_report_type = pickweightAllowZero(report_weights) report_weights[false_report_type] = 0 //Make it so the same false report won't be selected twice reports += config.mode_reports[false_report_type] - reports += config.mode_reports[config_tag] + reports = shuffle(reports) //Randomize the order, so the real one is at a random position. for(var/report in reports) @@ -292,7 +301,7 @@ for(var/mob/dead/new_player/player in players) if(player.client && player.ready == PLAYER_READY_TO_PLAY) if(role in player.client.prefs.be_special) - if(!jobban_isbanned(player, "Syndicate") && !jobban_isbanned(player, role)) //Nodrak/Carn: Antag Job-bans + if(!jobban_isbanned(player, ROLE_SYNDICATE) && !jobban_isbanned(player, role)) //Nodrak/Carn: Antag Job-bans if(age_check(player.client)) //Must be older than the minimum age candidates += player.mind // Get a list of all the people who want to be the antagonist for this round @@ -306,7 +315,7 @@ for(var/mob/dead/new_player/player in players) if(player.client && player.ready == PLAYER_READY_TO_PLAY) if(!(role in player.client.prefs.be_special)) // We don't have enough people who want to be antagonist, make a separate list of people who don't want to be one - if(!jobban_isbanned(player, "Syndicate") && !jobban_isbanned(player, role)) //Nodrak/Carn: Antag Job-bans + if(!jobban_isbanned(player, ROLE_SYNDICATE) && !jobban_isbanned(player, role)) //Nodrak/Carn: Antag Job-bans drafted += player.mind if(restricted_jobs) diff --git a/code/game/gamemodes/gang/dominator.dm b/code/game/gamemodes/gang/dominator.dm deleted file mode 100644 index 7f707fbb4d..0000000000 --- a/code/game/gamemodes/gang/dominator.dm +++ /dev/null @@ -1,230 +0,0 @@ -#define DOM_BLOCKED_SPAM_CAP 6 -#define DOM_REQUIRED_TURFS 30 -#define DOM_HULK_HITS_REQUIRED 10 - -/obj/machinery/dominator - name = "dominator" - desc = "A visibly sinister device. Looks like you can break it if you hit it enough." - icon = 'icons/obj/machines/dominator.dmi' - icon_state = "dominator" - density = TRUE - anchored = TRUE - layer = HIGH_OBJ_LAYER - max_integrity = 300 - integrity_failure = 100 - armor = list(melee = 20, bullet = 50, laser = 50, energy = 50, bomb = 10, bio = 100, rad = 100, fire = 10, acid = 70) - var/datum/gang/gang - var/operating = FALSE //false=standby or broken, true=takeover - var/warned = FALSE //if this device has set off the warning at <3 minutes yet - var/spam_prevention = DOM_BLOCKED_SPAM_CAP //first message is immediate - var/datum/effect_system/spark_spread/spark_system - var/obj/effect/countdown/dominator/countdown - -/obj/machinery/dominator/hulk_damage() - return (max_integrity - integrity_failure) / DOM_HULK_HITS_REQUIRED - -/proc/dominator_excessive_walls(atom/A) - var/open = FALSE - for(var/turf/T in view(3, A)) - if(!isclosedturf(T)) - open++ - if(open < DOM_REQUIRED_TURFS) - return TRUE - else - return FALSE - -/obj/machinery/dominator/tesla_act() - qdel(src) - -/obj/machinery/dominator/Initialize() - . = ..() - set_light(2) - GLOB.poi_list |= src - spark_system = new - spark_system.set_up(5, TRUE, src) - countdown = new(src) - update_icon() - -/obj/machinery/dominator/examine(mob/user) - ..() - if(stat & BROKEN) - return - - var/time - if(gang && gang.is_dominating) - time = gang.domination_time_remaining() - if(time > 0) - to_chat(user, "Hostile Takeover in progress. Estimated [time] seconds remain.") - else - to_chat(user, "Hostile Takeover of [station_name()] successful. Have a great day.") - else - to_chat(user, "System on standby.") - to_chat(user, "System Integrity: [round((obj_integrity/max_integrity)*100,1)]%") - -/obj/machinery/dominator/process() - ..() - if(gang && gang.is_dominating) - var/time_remaining = gang.domination_time_remaining() - if(time_remaining > 0) - if(dominator_excessive_walls(src)) - gang.domination_timer += 20 - playsound(loc, 'sound/machines/buzz-two.ogg', 50, 0) - if(spam_prevention < DOM_BLOCKED_SPAM_CAP) - spam_prevention++ - else - gang.message_gangtools("Warning: There are too many walls around your gang's dominator, its signal is being blocked!") - say("Error: Takeover signal is currently blocked! There are too many walls within 3 standard units of this device.") - spam_prevention = 0 - return - . = TRUE - playsound(loc, 'sound/items/timer.ogg', 10, 0) - if(!warned && (time_remaining < 180)) - warned = TRUE - var/area/domloc = get_area(loc) - gang.message_gangtools("Less than 3 minutes remains in hostile takeover. Defend your dominator at [domloc.map_name]!") - for(var/datum/gang/G in SSticker.mode.gangs) - if(G != gang) - G.message_gangtools("WARNING: [gang.name] Gang takeover imminent. Their dominator at [domloc.map_name] must be destroyed!",1,1) - - if(!.) - STOP_PROCESSING(SSmachines, src) - -/obj/machinery/dominator/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) - switch(damage_type) - if(BRUTE) - if(damage_amount) - playsound(src, 'sound/effects/bang.ogg', 50, 1) - else - playsound(loc, 'sound/weapons/tap.ogg', 50, 1) - if(BURN) - playsound(src.loc, 'sound/items/welder.ogg', 100, 1) - -/obj/machinery/dominator/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1) - . = ..() - if(.) - if(obj_integrity/max_integrity > 0.66) - if(prob(damage_amount*2)) - spark_system.start() - else if(!(stat & BROKEN)) - spark_system.start() - update_icon() - -/obj/machinery/dominator/update_icon() - cut_overlays() - if(!(stat & BROKEN)) - icon_state = "dominator-active" - if(operating) - var/mutable_appearance/dominator_overlay = mutable_appearance('icons/obj/machines/dominator.dmi', "dominator-overlay") - if(gang) - dominator_overlay.color = gang.color_hex - add_overlay(dominator_overlay) - else - icon_state = "dominator" - if(obj_integrity/max_integrity < 0.66) - add_overlay("damage") - else - icon_state = "dominator-broken" - -/obj/machinery/dominator/obj_break(damage_flag) - if(!(stat & BROKEN) && !(flags_1 & NODECONSTRUCT_1)) - set_broken() - -/obj/machinery/dominator/deconstruct(disassembled = TRUE) - if(!(flags_1 & NODECONSTRUCT_1)) - if(!(stat & BROKEN)) - set_broken() - new /obj/item/stack/sheet/plasteel(src.loc) - qdel(src) - -/obj/machinery/dominator/attacked_by(obj/item/I, mob/living/user) - add_fingerprint(user) - ..() - -/obj/machinery/dominator/proc/set_broken() - if(gang) - gang.is_dominating = FALSE - - var/takeover_in_progress = 0 - for(var/datum/gang/G in SSticker.mode.gangs) - if(G.is_dominating) - takeover_in_progress = 1 - break - if(!takeover_in_progress) - var/was_stranded = SSshuttle.emergency.mode == SHUTTLE_STRANDED - SSshuttle.clearHostileEnvironment(src) - if(!was_stranded) - priority_announce("All hostile activity within station systems has ceased.","Network Alert") - - if(get_security_level() == "delta") - set_security_level("red") - - gang.message_gangtools("Hostile takeover cancelled: Dominator is no longer operational.[gang.dom_attempts ? " You have [gang.dom_attempts] attempt remaining." : " The station network will have likely blocked any more attempts by us."]",1,1) - - set_light(0) - operating = FALSE - stat |= BROKEN - update_icon() - STOP_PROCESSING(SSmachines, src) - -/obj/machinery/dominator/Destroy() - if(!(stat & BROKEN)) - set_broken() - GLOB.poi_list.Remove(src) - gang = null - QDEL_NULL(spark_system) - QDEL_NULL(countdown) - STOP_PROCESSING(SSmachines, src) - return ..() - -/obj/machinery/dominator/emp_act(severity) - take_damage(100, BURN, "energy", 0) - ..() - -/obj/machinery/dominator/attack_hand(mob/user) - if(operating || (stat & BROKEN)) - examine(user) - return - - var/datum/gang/tempgang - - if(user.mind in SSticker.mode.get_all_gangsters()) - tempgang = user.mind.gang_datum - else - examine(user) - return - - if(tempgang.is_dominating) - to_chat(user, "Error: Hostile Takeover is already in progress.") - return - - if(!tempgang.dom_attempts) - to_chat(user, "Error: Unable to breach station network. Firewall has logged our signature and is blocking all further attempts.") - return - - var/time = round(determine_domination_time(tempgang)/60,0.1) - if(alert(user,"With [round((tempgang.territory.len/GLOB.start_state.num_territories)*100, 1)]% station control, a takeover will require [time] minutes.\nYour gang will be unable to gain influence while it is active.\nThe entire station will likely be alerted to it once it starts.\nYou have [tempgang.dom_attempts] attempt(s) remaining. Are you ready?","Confirm","Ready","Later") == "Ready") - if((tempgang.is_dominating) || !tempgang.dom_attempts || !in_range(src, user) || !isturf(loc)) - return 0 - - var/area/A = get_area(loc) - var/locname = A.map_name - - gang = tempgang - gang.dom_attempts -- - priority_announce("Network breach detected in [locname]. The [gang.name] Gang is attempting to seize control of the station!","Network Alert") - gang.domination() - SSshuttle.registerHostileEnvironment(src) - name = "[gang.name] Gang [name]" - operating = TRUE - update_icon() - - countdown.color = gang.color_hex - countdown.start() - - set_light(3) - START_PROCESSING(SSmachines, src) - - gang.message_gangtools("Hostile takeover in progress: Estimated [time] minutes until victory.[gang.dom_attempts ? "" : " This is your final attempt."]") - for(var/datum/gang/G in SSticker.mode.gangs) - if(G != gang) - G.message_gangtools("Enemy takeover attempt detected in [locname]: Estimated [time] minutes until our defeat.",1,1) diff --git a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm deleted file mode 100644 index f18a473d72..0000000000 --- a/code/game/gamemodes/gang/gang.dm +++ /dev/null @@ -1,359 +0,0 @@ -//gang.dm -//Gang War Game Mode - -GLOBAL_LIST_INIT(gang_name_pool, list("Clandestine", "Prima", "Zero-G", "Max", "Blasto", "Waffle", "North", "Omni", "Newton", "Cyber", "Donk", "Gene", "Gib", "Tunnel", "Diablo", "Psyke", "Osiron", "Sirius", "Sleeping Carp")) -GLOBAL_LIST_INIT(gang_colors_pool, list("red","orange","yellow","green","blue","purple", "white")) -GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather, /obj/item/clothing/suit/jacket/leather/overcoat, /obj/item/clothing/suit/jacket/puffer, /obj/item/clothing/suit/jacket/miljacket, /obj/item/clothing/suit/jacket/puffer, /obj/item/clothing/suit/pirate, /obj/item/clothing/suit/poncho, /obj/item/clothing/suit/apron/overalls, /obj/item/clothing/suit/jacket/letterman)) - -/datum/game_mode - var/list/datum/gang/gangs = list() - var/datum/gang_points/gang_points - -/proc/is_gangster(var/mob/living/M) - return istype(M) && M.mind && M.mind.gang_datum - -/proc/is_in_gang(var/mob/living/M, var/gang_type) - if(!is_gangster(M) || !gang_type) - return 0 - var/datum/gang/G = M.mind.gang_datum - if(G.name == gang_type) - return 1 - return 0 - -/datum/game_mode/gang - name = "gang war" - config_tag = "gang" - antag_flag = ROLE_GANG - restricted_jobs = list("Security Officer", "Warden", "Detective", "AI", "Cyborg","Captain", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer") - required_players = 20 - required_enemies = 2 - recommended_enemies = 2 - enemy_minimum_age = 14 - - announce_span = "danger" - announce_text = "A violent turf war has erupted on the station!\n\ - Gangsters: Take over the station with a dominator.\n\ - Crew: Prevent the gangs from expanding and initiating takeover." - -/////////////////////////////////////////////////////////////////////////////// -//Gets the round setup, cancelling if there's not enough players at the start// -/////////////////////////////////////////////////////////////////////////////// -/datum/game_mode/gang/pre_setup() - if(config.protect_roles_from_antagonist) - restricted_jobs += protected_jobs - - if(config.protect_assistant_from_antagonist) - restricted_jobs += "Assistant" - - //Spawn more bosses depending on server population - var/gangs_to_create = 2 - if(prob(num_players() * 2)) - gangs_to_create ++ - - for(var/i=1 to gangs_to_create) - if(!antag_candidates.len) - break - - //Create the gang - var/datum/gang/G = new() - gangs += G - - //Now assign a boss for the gang - for(var/n in 1 to 3) - var/datum/mind/boss = pick(antag_candidates) - antag_candidates -= boss - G.bosses[boss] = GANGSTER_BOSS_STARTING_INFLUENCE - boss.gang_datum = G - var/title - if(n == 1) - title = "Boss" - else - title = "Lieutenant" - boss.special_role = "[G.name] Gang [title]" - boss.restricted_roles = restricted_jobs - log_game("[boss.key] has been selected as the [title] for the [G.name] Gang") - - if(gangs.len < 2) //Need at least two gangs - return 0 - - return 1 - - -/datum/game_mode/gang/post_setup() - set waitfor = FALSE - ..() - sleep(rand(10,100)) - for(var/datum/gang/G in gangs) - for(var/datum/mind/boss_mind in G.bosses) - G.bosses[boss_mind] = GANGSTER_BOSS_STARTING_INFLUENCE //Force influence to be put on it. - G.add_gang_hud(boss_mind) - forge_gang_objectives(boss_mind) - greet_gang(boss_mind) - equip_gang(boss_mind.current,G) - modePlayer += boss_mind - - -/datum/game_mode/proc/forge_gang_objectives(datum/mind/boss_mind) - var/datum/objective/rival_obj = new - rival_obj.owner = boss_mind - rival_obj.explanation_text = "Be the first gang to successfully takeover the station with a Dominator." - boss_mind.objectives += rival_obj - -/datum/game_mode/proc/greet_gang(datum/mind/boss_mind, you_are=1) - if (you_are) - to_chat(boss_mind.current, "You are the Boss of the [boss_mind.gang_datum.name] Gang!") - boss_mind.announce_objectives() - -/////////////////////////////////////////////////////////////////////////// -//This equips the bosses with their gear, and makes the clown not clumsy// -/////////////////////////////////////////////////////////////////////////// -/datum/game_mode/proc/equip_gang(mob/living/carbon/human/mob, gang) - if(!istype(mob)) - return - - if (mob.mind) - if (mob.mind.assigned_role == "Clown") - to_chat(mob, "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself.") - mob.dna.remove_mutation(CLOWNMUT) - - var/obj/item/device/gangtool/gangtool = new(mob) - var/obj/item/pen/gang/T = new(mob) - var/obj/item/toy/crayon/spraycan/gang/SC = new(mob,gang) - var/obj/item/clothing/glasses/hud/security/chameleon/C = new(mob,gang) - - var/list/slots = list ( - "backpack" = slot_in_backpack, - "left pocket" = slot_l_store, - "right pocket" = slot_r_store - ) - - . = 0 - - var/where = mob.equip_in_one_of_slots(gangtool, slots) - if (!where) - to_chat(mob, "Your Syndicate benefactors were unfortunately unable to get you a Gangtool.") - . += 1 - else - gangtool.register_device(mob) - to_chat(mob, "The Gangtool in your [where] will allow you to purchase weapons and equipment, send messages to your gang, and recall the emergency shuttle from anywhere on the station.") - to_chat(mob, "As the gang boss, you can also promote your gang members to lieutenant. Unlike regular gangsters, Lieutenants cannot be deconverted and are able to use recruitment pens and gangtools.") - - var/where2 = mob.equip_in_one_of_slots(T, slots) - if (!where2) - to_chat(mob, "Your Syndicate benefactors were unfortunately unable to get you a recruitment pen to start.") - . += 1 - else - to_chat(mob, "The recruitment pen in your [where2] will help you get your gang started. Stab unsuspecting crew members with it to recruit them.") - - var/where3 = mob.equip_in_one_of_slots(SC, slots) - if (!where3) - to_chat(mob, "Your Syndicate benefactors were unfortunately unable to get you a territory spraycan to start.") - . += 1 - else - to_chat(mob, "The territory spraycan in your [where3] can be used to claim areas of the station for your gang. The more territory your gang controls, the more influence you get. All gangsters can use these, so distribute them to grow your influence faster.") - - var/where4 = mob.equip_in_one_of_slots(C, slots) - if (!where4) - to_chat(mob, "Your Syndicate benefactors were unfortunately unable to get you a chameleon security HUD.") - . += 1 - else - to_chat(mob, "The chameleon security HUD in your [where4] will help you keep track of who is mindshield-implanted, and unable to be recruited.") - return . - - -/////////////////////////////////////////// -//Deals with converting players to a gang// -/////////////////////////////////////////// -/datum/game_mode/proc/add_gangster(datum/mind/gangster_mind, datum/gang/G, check = 1) - if(!G || (gangster_mind in get_all_gangsters()) || (gangster_mind.enslaved_to && !is_gangster(gangster_mind.enslaved_to))) - if(is_in_gang(gangster_mind.current, G.name) && !(gangster_mind in get_gang_bosses())) - return 3 - return 0 - if(check && gangster_mind.current.isloyal()) //Check to see if the potential gangster is implanted - return 1 - G.gangsters[gangster_mind] = GANGSTER_SOLDIER_STARTING_INFLUENCE - gangster_mind.gang_datum = G - if(check) - if(iscarbon(gangster_mind.current)) - var/mob/living/carbon/carbon_mob = gangster_mind.current - carbon_mob.silent = max(carbon_mob.silent, 5) - carbon_mob.flash_act(1, 1) - gangster_mind.current.Stun(100) - if(G.is_deconvertible) - to_chat(gangster_mind.current, "You are now a member of the [G.name] Gang!") - to_chat(gangster_mind.current, "Help your bosses take over the station by claiming territory with special spraycans only they can provide. Simply spray on any unclaimed area of the station.") - to_chat(gangster_mind.current, "Their ultimate objective is to take over the station with a Dominator machine.") - to_chat(gangster_mind.current, "You can identify your bosses by their large, bright [G.color] \[G\] icon.") - gangster_mind.store_memory("You are a member of the [G.name] Gang!") - gangster_mind.current.log_message("Has been converted to the [G.name] Gang!", INDIVIDUAL_ATTACK_LOG) - gangster_mind.special_role = "[G.name] Gangster" - - G.add_gang_hud(gangster_mind) - if(jobban_isbanned(gangster_mind.current, ROLE_GANG)) - INVOKE_ASYNC(src, /datum/game_mode.proc/replace_jobbaned_player, gangster_mind.current, ROLE_GANG, ROLE_GANG) - return 2 -//////////////////////////////////////////////////////////////////// -//Deals with players reverting to neutral (Not a gangster anymore)// -//////////////////////////////////////////////////////////////////// -/datum/game_mode/proc/remove_gangster(datum/mind/gangster_mind, beingborged, silent, remove_bosses=0) - var/datum/gang/gang = gangster_mind.gang_datum - for(var/obj/O in gangster_mind.current.contents) - if(istype(O, /obj/item/device/gangtool/soldier)) - qdel(O) - - if(!gang) - return 0 - - var/removed - - for(var/datum/gang/G in gangs) - if(!G.is_deconvertible && !remove_bosses) - return 0 - if(gangster_mind in G.gangsters) - G.reclaim_points(G.gangsters[gangster_mind]) - G.gangsters -= gangster_mind - removed = 1 - if(remove_bosses && (gangster_mind in G.bosses)) - G.reclaim_points(G.bosses[gangster_mind]) - G.bosses -= gangster_mind - removed = 1 - if(G.tags_by_mind[gangster_mind] && islist(G.tags_by_mind[gangster_mind])) - var/list/tags_cache = G.tags_by_mind[gangster_mind] - for(var/v in tags_cache) - var/obj/effect/decal/cleanable/crayon/gang/c = v - c.set_mind_owner(null) - G.tags_by_mind -= gangster_mind - - if(!removed) - return 0 - - - gangster_mind.special_role = null - gangster_mind.gang_datum = null - - if(silent < 2) - gangster_mind.current.log_message("Has reformed and defected from the [gang.name] Gang!", INDIVIDUAL_ATTACK_LOG) - - if(beingborged) - if(!silent) - gangster_mind.current.visible_message("The frame beeps contentedly from the MMI before initalizing it.") - to_chat(gangster_mind.current, "The frame's firmware detects and deletes your criminal behavior! You are no longer a gangster!") - message_admins("[ADMIN_LOOKUPFLW(gangster_mind.current)] has been borged while being a member of the [gang.name] Gang. They are no longer a gangster.") - else - if(!silent) - gangster_mind.current.Unconscious(100) - gangster_mind.current.visible_message("[gangster_mind.current] looks like they've given up the life of crime!") - to_chat(gangster_mind.current, "You have been reformed! You are no longer a gangster!
You try as hard as you can, but you can't seem to recall any of the identities of your former gangsters...
") - gangster_mind.memory = "" - - gang.remove_gang_hud(gangster_mind) - return 1 - -//////////////// -//Helper Procs// -//////////////// - -/datum/game_mode/proc/get_all_gangsters() - var/list/all_gangsters = list() - all_gangsters += get_gangsters() - all_gangsters += get_gang_bosses() - return all_gangsters - -/datum/game_mode/proc/get_gangsters() - var/list/gangsters = list() - for(var/datum/gang/G in gangs) - gangsters += G.gangsters - return gangsters - -/datum/game_mode/proc/get_gang_bosses() - var/list/gang_bosses = list() - for(var/datum/gang/G in gangs) - gang_bosses += G.bosses - return gang_bosses - -/datum/game_mode/proc/shuttle_check() - if(SSshuttle.emergencyNoRecall) - return - var/alive = 0 - for(var/mob/living/L in GLOB.player_list) - if(L.stat != DEAD) - alive++ - - if((alive < (GLOB.joined_player_list.len * 0.4)) && ((SSshuttle.emergency.timeLeft(1) > (SSshuttle.emergencyCallTime * 0.4)))) - - SSshuttle.emergencyNoRecall = TRUE - SSshuttle.emergency.request(null, set_coefficient = 0.4) - priority_announce("Catastrophic casualties detected: crisis shuttle protocols activated - jamming recall signals across all frequencies.") - -/proc/determine_domination_time(var/datum/gang/G) - return max(180,480 - (round((G.territory.len/GLOB.start_state.num_territories)*100, 1) * 9)) - - -////////////////////////////////////////////////////////////////////// -//Announces the end of the game with all relavent information stated// -////////////////////////////////////////////////////////////////////// - -/datum/game_mode/proc/auto_declare_completion_gang(datum/gang/winner) - if(!gangs.len) - return - if(!winner) - to_chat(world, "The station was [station_was_nuked ? "destroyed!" : "evacuated before a gang could claim it! The station wins!"]
") - SSticker.mode_result = "loss - gangs failed takeover" - - SSticker.news_report = GANG_LOSS - else - to_chat(world, "The [winner.name] Gang successfully performed a hostile takeover of the station!
") - SSticker.mode_result = "win - gang domination complete" - - SSticker.news_report = GANG_TAKEOVER - - for(var/datum/gang/G in gangs) - var/text = "The [G.name] Gang was [winner==G ? "victorious" : "defeated"] with [round((G.territory.len/GLOB.start_state.num_territories)*100, 1)]% control of the station!" - text += "
The [G.name] Gang Bosses were:" - for(var/datum/mind/boss in G.bosses) - text += printplayer(boss, 1) - text += "
The [G.name] Gangsters were:" - for(var/datum/mind/gangster in G.gangsters) - text += printplayer(gangster, 1) - text += "
" - to_chat(world, text) - -////////////////////////////////////////////////////////// -//Handles influence, territories, and the victory checks// -////////////////////////////////////////////////////////// - -/datum/gang_points - var/next_point_interval = 1800 - var/next_point_time - -/datum/gang_points/New() - next_point_time = world.time + next_point_interval - START_PROCESSING(SSobj, src) - -/datum/gang_points/process(seconds) - var/list/winners = list() //stores the winners if there are any - - for(var/datum/gang/G in SSticker.mode.gangs) - if(world.time > next_point_time) - G.income() - - if(G.is_dominating) - if(G.domination_time_remaining() < 0) - winners += G - - if(world.time > next_point_time) - next_point_time = world.time + next_point_interval - - if(winners.len) - if(winners.len > 1) //Edge Case: If more than one dominator complete at the same time - for(var/datum/gang/G in winners) - G.domination(0.5) - priority_announce("Multiple station takeover attempts have made simultaneously. Conflicting takeover attempts appears to have restarted.","Network Alert") - else - var/datum/gang/G = winners[1] - G.is_dominating = FALSE - SSticker.mode.explosion_in_progress = 1 - SSticker.station_explosion_cinematic(1,"gang war", null) - SSticker.mode.explosion_in_progress = 0 - SSticker.force_ending = TRUE - diff --git a/code/game/gamemodes/gang/gang_datum.dm b/code/game/gamemodes/gang/gang_datum.dm deleted file mode 100644 index 510883ada5..0000000000 --- a/code/game/gamemodes/gang/gang_datum.dm +++ /dev/null @@ -1,333 +0,0 @@ -//gang_datum.dm -//Datum-based gangs - -/datum/gang - var/name = "ERROR" - var/color = "white" - var/color_hex = "#FFFFFF" - var/list/datum/mind/gangsters = list() //gang B Members - var/list/datum/mind/bosses = list() //gang A Bosses - var/list/obj/item/device/gangtool/gangtools = list() - var/list/tags_by_mind = list() //Assoc list in format of tags_by_mind[mind_of_gangster] = list(tag1, tag2, tag3) where tags are the actual object decals. - var/style - var/fighting_style = "normal" - var/list/territory = list() - var/list/territory_new = list() - var/list/territory_lost = list() - var/recalls = 1 - var/dom_attempts = 2 - var/inner_outfit - var/outer_outfit - var/datum/atom_hud/antag/gang/ganghud - var/is_deconvertible = TRUE //Can you deconvert normal gangsters from the gang - - var/domination_timer - var/is_dominating - - var/boss_item_list - var/boss_category_list - var/static/list/boss_items = list( - /datum/gang_item/function/gang_ping, - /datum/gang_item/function/recall, - - /datum/gang_item/clothing/under, - /datum/gang_item/clothing/suit, - /datum/gang_item/clothing/hat, - /datum/gang_item/clothing/neck, - /datum/gang_item/clothing/shoes, - /datum/gang_item/clothing/mask, - /datum/gang_item/clothing/hands, - /datum/gang_item/clothing/belt, - - /datum/gang_item/weapon/shuriken, - /datum/gang_item/weapon/switchblade, - /datum/gang_item/weapon/improvised, - /datum/gang_item/weapon/ammo/improvised_ammo, - /datum/gang_item/weapon/surplus, - /datum/gang_item/weapon/ammo/surplus_ammo, - /datum/gang_item/weapon/pistol, - /datum/gang_item/weapon/ammo/pistol_ammo, - /datum/gang_item/weapon/sniper, - /datum/gang_item/weapon/ammo/sniper_ammo, - /datum/gang_item/weapon/machinegun, - /datum/gang_item/weapon/uzi, - /datum/gang_item/weapon/ammo/uzi_ammo, - /datum/gang_item/equipment/sharpener, - /datum/gang_item/equipment/spraycan, - /datum/gang_item/equipment/emp, - /datum/gang_item/equipment/c4, - /datum/gang_item/equipment/frag, - /datum/gang_item/equipment/stimpack, - /datum/gang_item/equipment/implant_breaker, - /datum/gang_item/equipment/wetwork_boots, - /datum/gang_item/equipment/pen, - /datum/gang_item/equipment/dominator - ) - - var/reg_item_list - var/reg_category_list - var/static/list/soldier_items = list( - /datum/gang_item/clothing/under, - /datum/gang_item/clothing/suit, - /datum/gang_item/clothing/hat, - /datum/gang_item/clothing/neck, - /datum/gang_item/clothing/shoes, - /datum/gang_item/clothing/mask, - /datum/gang_item/clothing/hands, - /datum/gang_item/clothing/belt, - - /datum/gang_item/weapon/shuriken, - /datum/gang_item/weapon/switchblade, - /datum/gang_item/weapon/improvised, - /datum/gang_item/weapon/ammo/improvised_ammo, - /datum/gang_item/weapon/surplus, - /datum/gang_item/weapon/ammo/surplus_ammo, - /datum/gang_item/weapon/pistol, - /datum/gang_item/weapon/ammo/pistol_ammo, - /datum/gang_item/weapon/sniper, - /datum/gang_item/weapon/ammo/sniper_ammo, - /datum/gang_item/weapon/machinegun, - /datum/gang_item/weapon/uzi, - /datum/gang_item/weapon/ammo/uzi_ammo, - /datum/gang_item/equipment/sharpener, - /datum/gang_item/equipment/spraycan, - /datum/gang_item/equipment/emp, - /datum/gang_item/equipment/c4, - /datum/gang_item/equipment/frag, - /datum/gang_item/equipment/stimpack, - /datum/gang_item/equipment/implant_breaker, - /datum/gang_item/equipment/wetwork_boots, - ) - -/datum/gang/New(loc,gangname) - if(!GLOB.gang_colors_pool.len) - message_admins("WARNING: Maximum number of gangs have been exceeded!") - throw EXCEPTION("Maximum number of gangs has been exceeded") - return - else - color = pick(GLOB.gang_colors_pool) - GLOB.gang_colors_pool -= color - switch(color) - if("red") - color_hex = "#DA0000" - inner_outfit = pick(/obj/item/clothing/under/color/red, /obj/item/clothing/under/lawyer/red) - if("orange") - color_hex = "#FF9300" - inner_outfit = pick(/obj/item/clothing/under/color/orange, /obj/item/clothing/under/geisha) - if("yellow") - color_hex = "#FFF200" - inner_outfit = pick(/obj/item/clothing/under/color/yellow, /obj/item/clothing/under/burial, /obj/item/clothing/under/suit_jacket/tan) - if("green") - color_hex = "#A8E61D" - inner_outfit = pick(/obj/item/clothing/under/color/green, /obj/item/clothing/under/syndicate/camo, /obj/item/clothing/under/suit_jacket/green) - if("blue") - color_hex = "#00B7EF" - inner_outfit = pick(/obj/item/clothing/under/color/blue, /obj/item/clothing/under/suit_jacket/navy) - if("purple") - color_hex = "#DA00FF" - inner_outfit = pick(/obj/item/clothing/under/color/lightpurple, /obj/item/clothing/under/lawyer/purpsuit) - if("white") - color_hex = "#FFFFFF" - inner_outfit = pick(/obj/item/clothing/under/color/white, /obj/item/clothing/under/suit_jacket/white) - - name = (gangname ? gangname : pick(GLOB.gang_name_pool)) - GLOB.gang_name_pool -= name - outer_outfit = pick(GLOB.gang_outfit_pool) - ganghud = new() - ganghud.color = color_hex - log_game("The [name] Gang has been created. Their gang color is [color].") - build_item_list() - -/datum/gang/proc/build_item_list() - boss_item_list = list() - boss_category_list = list() - for(var/B in boss_items) - var/datum/gang_item/G = new B() - boss_item_list[G.id] = G - var/list/Cat = boss_category_list[G.category] - if(Cat) - Cat += G - else - boss_category_list[G.category] = list(G) - - reg_item_list = list() - reg_category_list = list() - for(var/S in soldier_items) - var/datum/gang_item/G = new S() - reg_item_list[G.id] = G - var/list/Cat = reg_category_list[G.category] - if(Cat) - Cat += G - else - reg_category_list[G.category] = list(G) - -/datum/gang/proc/add_gang_hud(datum/mind/recruit_mind) - ganghud.join_hud(recruit_mind.current) - SSticker.mode.set_antag_hud(recruit_mind.current, ((recruit_mind in bosses) ? "gang_boss" : "gangster")) - -/datum/gang/proc/remove_gang_hud(datum/mind/defector_mind) - ganghud.leave_hud(defector_mind.current) - SSticker.mode.set_antag_hud(defector_mind.current, null) - -/datum/gang/proc/domination(modifier=1) - set_domination_time(determine_domination_time(src) * modifier) - is_dominating = TRUE - set_security_level("delta") - -/datum/gang/proc/set_domination_time(d) - domination_timer = world.time + (10 * d) - -/datum/gang/proc/domination_time_remaining() - var/diff = domination_timer - world.time - return diff / 10 - -//////////////////////////////////////////// MESSAGING - - -/datum/gang/proc/message_gangtools(message,beep=1,warning) - if(!gangtools.len || !message) - return - for(var/obj/item/device/gangtool/tool in gangtools) - var/mob/living/mob = get(tool.loc, /mob/living) - if(mob && mob.mind && mob.stat == CONSCIOUS) - if(mob.mind.gang_datum == src) - to_chat(mob, "[icon2html(tool, mob)] [message]") - return - - -//////////////////////////////////////////// INCOME - - -/datum/gang/proc/income() - if(!bosses.len) - return - var/added_names = "" - var/lost_names = "" - - SSticker.mode.shuttle_check() // See if its time to start wrapping things up - - //Re-add territories that were reclaimed, so if they got tagged over, they can still earn income if they tag it back before the next status report - var/list/reclaimed_territories = territory_new & territory_lost - territory |= reclaimed_territories - territory_new -= reclaimed_territories - territory_lost -= reclaimed_territories - - //Process lost territories - for(var/area in territory_lost) - if(lost_names != "") - lost_names += ", " - lost_names += "[territory_lost[area]]" - territory -= area - - //Calculate and report influence growth - - //Process new territories - for(var/area in territory_new) - if(added_names != "") - added_names += ", " - added_names += "[territory_new[area]]" - territory += area - - //Report territory changes - var/message = "[src] Gang Status Report:.
*---------*
" - message += "[territory_new.len] new territories:
[added_names]
" - message += "[territory_lost.len] territories lost:
[lost_names]
" - //Clear the lists - territory_new = list() - territory_lost = list() - var/control = round((territory.len/GLOB.start_state.num_territories)*100, 1) - var/sbonus = sqrt(LAZYLEN(territory)) // Bonus given to soldier's for the gang's total territory - message += "Your gang now has [control]% control of the station.
*---------*
" - if(is_dominating) - var/seconds_remaining = domination_time_remaining() - var/new_time = max(180, seconds_remaining - (territory.len * 2)) - if(new_time < seconds_remaining) - message += "Takeover shortened by [seconds_remaining - new_time] seconds for defending [territory.len] territories.
" - set_domination_time(new_time) - message += "[seconds_remaining] seconds remain in hostile takeover.
" - else - pay_territory_income_to_bosses() - pay_territory_income_to_soldiers(sbonus) - pay_all_clothing_bonuses() - announce_all_influence() - -/datum/gang/proc/pay_all_clothing_bonuses() - for(var/datum/mind/mind in gangsters|bosses) - pay_clothing_bonus(mind) - -/datum/gang/proc/pay_clothing_bonus(var/datum/mind/gangsta) - var/mob/living/carbon/human/gangbanger = gangsta.current - . = 0 - if(!istype(gangbanger) || gangbanger.stat == DEAD) //Dead gangsters aren't influential at all! - return 0 - var/static/inner = inner_outfit - var/static/outer = outer_outfit - for(var/obj/item/C in gangbanger.contents) - if(C.type == inner_outfit) - . += 2 - continue - else if(C.type == outer_outfit) - . += 2 - continue - . += C.gang_contraband_value() - adjust_influence(gangsta, .) - if(.) - announce_to_mind(gangsta, "Your influential choice of clothing has increased your influence by [.] points!") - else - announce_to_mind(gangsta, "Unfortunately, you have not gained any additional influence from your drab, old, boring clothing. Learn to dress like a gangsta, bro!") //Kek - -/datum/gang/proc/pay_soldier_territory_income(datum/mind/soldier, sbonus = 0) - . = 0 - . = max(0,round(3 - gangsters[soldier]/10)) + (sbonus) + (get_soldier_territories(soldier)/2) - adjust_influence(soldier, .) - -/datum/gang/proc/get_soldier_territories(datum/mind/soldier) - if(!islist(tags_by_mind[soldier])) //They have no tagged territories! - return 0 - var/list/tags = tags_by_mind[soldier] - return tags.len - -/datum/gang/proc/pay_territory_income_to_soldiers(sbonus = 0) - for(var/datum/mind/soldier in gangsters) - var/returned = pay_soldier_territory_income(soldier) - if(!returned) - announce_to_mind(soldier, "You have not gained any influence from territories you personally tagged. Get to work, soldier!") - else - announce_to_mind(soldier, "You have gained [returned] influence from [get_soldier_territories(soldier)] territories you have personally tagged.") - -/datum/gang/proc/announce_all_influence() - for(var/datum/mind/MG in bosses|gangsters) - announce_total_influence(MG) - -/datum/gang/proc/pay_territory_income_to_bosses() - . = 0 - for(var/datum/mind/boss_mind in bosses) - var/inc = max(0,round(5 - bosses[boss_mind]/10)) + LAZYLEN(territory) - . += inc - adjust_influence(boss_mind, inc) - announce_to_mind(boss_mind, "Your influence has increased by [inc] from your gang holding [LAZYLEN(territory)] territories!") - -/datum/gang/proc/get_influence(datum/mind/gangster_mind) - if(gangster_mind in gangsters) - return gangsters[gangster_mind] - if(gangster_mind in bosses) - return bosses[gangster_mind] - -/datum/gang/proc/adjust_influence(datum/mind/gangster_mind, amount) - if(gangster_mind in gangsters) - gangsters[gangster_mind] += amount - if(gangster_mind in bosses) - bosses[gangster_mind] += amount - -/datum/gang/proc/announce_to_mind(datum/mind/gangster_mind, message) - if(gangster_mind.current && gangster_mind.current.stat != DEAD) - to_chat(gangster_mind.current, message) - -/datum/gang/proc/announce_total_influence(datum/mind/gangster_mind) - announce_to_mind(gangster_mind, "[name] Gang: You now have a total of [get_influence(gangster_mind)] influence!") - -/datum/gang/proc/reclaim_points(amount) - for(var/datum/mind/bawss in bosses) - adjust_influence(bawss, amount/bosses.len) - announce_to_mind(bawss, "[name] Gang: [amount/bosses.len] influence given from internal automatic restructuring.") - diff --git a/code/game/gamemodes/gang/gang_items.dm b/code/game/gamemodes/gang/gang_items.dm deleted file mode 100644 index 2c36d1c345..0000000000 --- a/code/game/gamemodes/gang/gang_items.dm +++ /dev/null @@ -1,453 +0,0 @@ -/datum/gang_item - var/name - var/item_path - var/cost - var/spawn_msg - var/category - var/id - - -/datum/gang_item/proc/purchase(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool, check_canbuy = TRUE) - if(check_canbuy && !can_buy(user, gang, gangtool)) - return FALSE - var/real_cost = get_cost(user, gang, gangtool) - gang.adjust_influence(user.mind, -real_cost) - spawn_item(user, gang, gangtool) - return TRUE - -/datum/gang_item/proc/spawn_item(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(item_path) - var/obj/item/O = new item_path(user.loc) - user.put_in_hands(O) - if(spawn_msg) - to_chat(user, spawn_msg) - -/datum/gang_item/proc/can_buy(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - return gang && (gang.get_influence(user.mind) >= get_cost(user, gang, gangtool)) && can_see(user, gang, gangtool) - -/datum/gang_item/proc/can_see(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - return TRUE - -/datum/gang_item/proc/get_cost(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - return cost - -/datum/gang_item/proc/get_cost_display(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - return "([get_cost(user, gang, gangtool)] Influence)" - -/datum/gang_item/proc/get_name_display(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - return name - -/datum/gang_item/proc/isboss(mob/living/carbon/user, datum/gang/gang) - return user && gang && (user.mind == gang.bosses[1]) - -/datum/gang_item/proc/get_extra_info(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - return - -/////////////////// -//FUNCTIONS -/////////////////// - -/datum/gang_item/function - category = "Gangtool Functions:" - cost = 0 - -/datum/gang_item/function/get_cost_display(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - return "" - - -/datum/gang_item/function/gang_ping - name = "Send Message to Gang" - id = "gang_ping" - -/datum/gang_item/function/gang_ping/spawn_item(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(gangtool) - gangtool.ping_gang(user) - - -/datum/gang_item/function/recall - name = "Recall Emergency Shuttle" - id = "recall" - -/datum/gang_item/function/recall/can_see(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - return isboss(user, gang) - -/datum/gang_item/function/recall/spawn_item(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(gangtool) - gangtool.recall(user) - - -/////////////////// -//CLOTHING -/////////////////// - -/datum/gang_item/clothing - category = "Purchase Influence-Enhancing Clothes:" - -/datum/gang_item/clothing/under - name = "Gang Uniform" - id = "under" - cost = 1 - -/datum/gang_item/clothing/under/spawn_item(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(gang.inner_outfit) - var/obj/item/O = new gang.inner_outfit(user.loc) - user.put_in_hands(O) - to_chat(user, " This is your gang's official uniform, wearing it will increase your influence") - -/datum/gang_item/clothing/suit - name = "Gang Armored Outerwear" - id = "suit" - cost = 1 - -/datum/gang_item/clothing/suit/spawn_item(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(gang.outer_outfit) - var/obj/item/O = new gang.outer_outfit(user.loc) - O.armor = list(melee = 20, bullet = 35, laser = 10, energy = 10, bomb = 30, bio = 0, rad = 0, fire = 30, acid = 30) - O.desc += " Tailored for the [gang.name] Gang to offer the wearer moderate protection against ballistics and physical trauma." - user.put_in_hands(O) - to_chat(user, " This is your gang's official outerwear, wearing it will increase your influence") - - -/datum/gang_item/clothing/hat - name = "Pimp Hat" - id = "hat" - cost = 16 - item_path = /obj/item/clothing/head/collectable/petehat/gang - -/obj/item/clothing/head/collectable/petehat/gang - name = "pimpin' hat" - desc = "The undisputed king of style." - -/obj/item/clothing/head/collectable/petehat/gang/gang_contraband_value() - return 4 - -/datum/gang_item/clothing/mask - name = "Golden Death Mask" - id = "mask" - cost = 18 - item_path = /obj/item/clothing/mask/gskull - -/obj/item/clothing/mask/gskull - name = "golden death mask" - icon_state = "gskull" - desc = "Strike terror, and envy, into the hearts of your enemies." - -/obj/item/clothing/mask/gskull/gang_contraband_value() - return 5 - -/datum/gang_item/clothing/shoes - name = "Bling Boots" - id = "boots" - cost = 22 - item_path = /obj/item/clothing/shoes/gang - -/obj/item/clothing/shoes/gang - name = "blinged-out boots" - desc = "Stand aside peasants." - icon_state = "bling" - -/obj/item/clothing/shoes/gang/gang_contraband_value() - return 6 - -/datum/gang_item/clothing/neck - name = "Gold Necklace" - id = "necklace" - cost = 9 - item_path = /obj/item/clothing/neck/necklace/dope - -/datum/gang_item/clothing/hands - name = "Decorative Brass Knuckles" - id = "hand" - cost = 11 - item_path = /obj/item/clothing/gloves/gang - -/obj/item/clothing/gloves/gang - name = "braggadocio's brass knuckles" - desc = "Purely decorative, don't find out the hard way." - icon_state = "knuckles" - w_class = 3 - -/obj/item/clothing/gloves/gang/gang_contraband_value() - return 3 - -/datum/gang_item/clothing/belt - name = "Badass Belt" - id = "belt" - cost = 13 - item_path = /obj/item/storage/belt/military/gang - -/obj/item/storage/belt/military/gang - name = "badass belt" - icon_state = "gangbelt" - item_state = "gang" - desc = "The belt buckle simply reads 'BAMF'." - storage_slots = 1 - -/obj/item/storage/belt/military/gang/gang_contraband_value() - return 4 - -/////////////////// -//WEAPONS -/////////////////// - -/datum/gang_item/weapon - category = "Purchase Weapons:" - -/datum/gang_item/weapon/ammo - -/datum/gang_item/weapon/ammo/get_cost_display(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - return " ↳" + ..() //this is pretty hacky but it looks nice on the popup - -/datum/gang_item/weapon/shuriken - name = "Shuriken" - id = "shuriken" - cost = 3 - item_path = /obj/item/throwing_star - -/datum/gang_item/weapon/switchblade - name = "Switchblade" - id = "switchblade" - cost = 5 - item_path = /obj/item/switchblade - -/datum/gang_item/weapon/surplus - name = "Surplus Rifle" - id = "surplus" - cost = 8 - item_path = /obj/item/gun/ballistic/automatic/surplus - -/datum/gang_item/weapon/ammo/surplus_ammo - name = "Surplus Rifle Ammo" - id = "surplus_ammo" - cost = 5 - item_path = /obj/item/ammo_box/magazine/m10mm/rifle - -/datum/gang_item/weapon/improvised - name = "Sawn-Off Improvised Shotgun" - id = "sawn" - cost = 6 - item_path = /obj/item/gun/ballistic/revolver/doublebarrel/improvised/sawn - -/datum/gang_item/weapon/ammo/improvised_ammo - name = "Box of Buckshot" - id = "buckshot" - cost = 5 - item_path = /obj/item/storage/box/lethalshot - -/datum/gang_item/weapon/pistol - name = "10mm Pistol" - id = "pistol" - cost = 30 - item_path = /obj/item/gun/ballistic/automatic/pistol - -/datum/gang_item/weapon/ammo/pistol_ammo - name = "10mm Ammo" - id = "pistol_ammo" - cost = 10 - item_path = /obj/item/ammo_box/magazine/m10mm - -/datum/gang_item/weapon/sniper - name = "Black Market .50cal Sniper Rifle" - id = "sniper" - cost = 40 - item_path = /obj/item/gun/ballistic/automatic/sniper_rifle/gang - -/datum/gang_item/weapon/ammo/sniper_ammo - name = "Smuggled .50cal Sniper Rounds" - id = "sniper_ammo" - cost = 15 - item_path = /obj/item/ammo_box/magazine/sniper_rounds/gang - - -/datum/gang_item/weapon/ammo/sleeper_ammo - name = "Illicit Tranquilizer Cartridges" - id = "sniper_ammo" - cost = 15 - item_path = /obj/item/ammo_box/magazine/sniper_rounds/gang/sleeper - - -/datum/gang_item/weapon/machinegun - name = "Mounted Machine Gun" - id = "MG" - cost = 50 - item_path = /obj/machinery/manned_turret - spawn_msg = "The mounted machine gun features enhanced responsiveness. Hold down on the trigger while firing to control where you're shooting." - -/datum/gang_item/weapon/uzi - name = "Uzi SMG" - id = "uzi" - cost = 60 - item_path = /obj/item/gun/ballistic/automatic/mini_uzi - - -/datum/gang_item/weapon/ammo/uzi_ammo - name = "Uzi Ammo" - id = "uzi_ammo" - cost = 40 - item_path = /obj/item/ammo_box/magazine/uzim9mm - -/////////////////// -//EQUIPMENT -/////////////////// - -/datum/gang_item/equipment - category = "Purchase Equipment:" - - -/datum/gang_item/equipment/spraycan - name = "Territory Spraycan" - id = "spraycan" - cost = 5 - item_path = /obj/item/toy/crayon/spraycan/gang - -/datum/gang_item/equipment/sharpener - name = "Sharpener" - id = "whetstone" - cost = 3 - item_path = /obj/item/sharpener - - -/datum/gang_item/equipment/emp - name = "EMP Grenade" - id = "EMP" - cost = 5 - item_path = /obj/item/grenade/empgrenade - -/datum/gang_item/equipment/c4 - name = "C4 Explosive" - id = "c4" - cost = 7 - item_path = /obj/item/grenade/plastic/c4 - -/datum/gang_item/equipment/frag - name = "Fragmentation Grenade" - id = "frag nade" - cost = 18 - item_path = /obj/item/grenade/syndieminibomb/concussion/frag - -/datum/gang_item/equipment/stimpack - name = "Black Market Stimulants" - id = "stimpack" - cost = 12 - item_path = /obj/item/reagent_containers/syringe/stimulants - -/datum/gang_item/equipment/implant_breaker - name = "Implant Breaker" - id = "implant_breaker" - cost = 10 - item_path = /obj/item/implanter/gang - spawn_msg = "The implant breaker is a single-use device that destroys all implants within the target before trying to recruit them to your gang. Also works on enemy gangsters." - -/datum/gang_item/equipment/implant_breaker/spawn_item(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(item_path) - var/obj/item/O = new item_path(user.loc, gang) //we need to override this whole proc for this one argument - user.put_in_hands(O) - if(spawn_msg) - to_chat(user, spawn_msg) - -/datum/gang_item/equipment/wetwork_boots - name = "Wetwork boots" - id = "wetwork" - cost = 20 - item_path = /obj/item/clothing/shoes/combat/gang - -/obj/item/clothing/shoes/combat/gang - name = "Wetwork boots" - desc = "A gang's best hitmen are prepared for anything." - permeability_coefficient = 0.01 - flags_1 = NOSLIP_1 - -/datum/gang_item/equipment/pen - name = "Recruitment Pen" - id = "pen" - cost = 50 - item_path = /obj/item/pen/gang - spawn_msg = "More recruitment pens will allow you to recruit gangsters faster. Only gang leaders can recruit with pens." - -/datum/gang_item/equipment/pen/purchase(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(..()) - gangtool.free_pen = FALSE - return TRUE - return FALSE - -/datum/gang_item/equipment/pen/get_cost(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(gangtool && gangtool.free_pen) - return 0 - return ..() - -/datum/gang_item/equipment/pen/get_cost_display(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(gangtool && gangtool.free_pen) - return "(GET ONE FREE)" - return ..() - - -/datum/gang_item/equipment/gangtool - id = "gangtool" - cost = 10 - -/datum/gang_item/equipment/gangtool/spawn_item(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - var/item_type - if(gang && isboss(user, gang)) - item_type = /obj/item/device/gangtool/spare/lt - if(gang.bosses.len < 3) - to_chat(user, "Gangtools allow you to promote a gangster to be your Lieutenant, enabling them to recruit and purchase items like you. Simply have them register the gangtool. You may promote up to [3-gang.bosses.len] more Lieutenants") - else - item_type = /obj/item/device/gangtool/spare - var/obj/item/device/gangtool/spare/tool = new item_type(user.loc) - user.put_in_hands(tool) - -/datum/gang_item/equipment/gangtool/get_name_display(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(gang && isboss(user, gang) && (gang.bosses.len < 3)) - return "Promote a Gangster" - return "Spare Gangtool" - - -/datum/gang_item/equipment/dominator - name = "Station Dominator" - id = "dominator" - cost = 30 - item_path = /obj/machinery/dominator - spawn_msg = "The dominator will secure your gang's dominance over the station. Turn it on when you are ready to defend it." - -/datum/gang_item/equipment/dominator/can_buy(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(!gang || !gang.dom_attempts) - return FALSE - return ..() - -/datum/gang_item/equipment/dominator/get_name_display(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(!gang || !gang.dom_attempts) - return ..() - return "[..()]" - -/datum/gang_item/equipment/dominator/get_cost_display(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(!gang || !gang.dom_attempts) - return "(Out of stock)" - return ..() - -/datum/gang_item/equipment/dominator/get_extra_info(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - if(gang) - return "(Estimated Takeover Time: [round(determine_domination_time(gang)/60,0.1)] minutes)" - -/datum/gang_item/equipment/dominator/purchase(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - var/area/usrarea = get_area(user.loc) - var/usrturf = get_turf(user.loc) - if(initial(usrarea.name) == "Space" || isspaceturf(usrturf) || usr.z != ZLEVEL_STATION || !usrarea.valid_territory) - to_chat(user, "You can only use this on the station!") - return FALSE - - for(var/obj/obj in usrturf) - if(obj.density) - to_chat(user, "There's not enough room here!") - return FALSE - - if(dominator_excessive_walls(user)) - to_chat(user, "The dominator will not function here! The dominator requires a sizable open space within three standard units so that walls do not interfere with the signal.") - return FALSE - - if(!(usrarea.type in gang.territory|gang.territory_new)) - to_chat(user, "The dominator can be spawned only on territory controlled by your gang!") - return FALSE - return ..() - -/datum/gang_item/equipment/dominator/spawn_item(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - new item_path(user.loc) diff --git a/code/game/gamemodes/gang/gang_pen.dm b/code/game/gamemodes/gang/gang_pen.dm deleted file mode 100644 index c410d7d7da..0000000000 --- a/code/game/gamemodes/gang/gang_pen.dm +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Gang Boss Pens - */ -/obj/item/pen/gang - var/cooldown - var/last_used = 0 - var/charges = 1 - -/obj/item/pen/gang/New() - ..() - last_used = world.time - -/obj/item/pen/gang/attack(mob/living/M, mob/user, stealth = TRUE) - if(!istype(M)) - return - if(ishuman(M) && ishuman(user) && M.stat != DEAD) - if(user.mind && (user.mind in SSticker.mode.get_gang_bosses())) - if(..(M,user,1)) - if(cooldown) - to_chat(user, "[src] needs more time to recharge before it can be used.") - return - if(M.client) - M.mind_initialize() //give them a mind datum if they don't have one. - var/datum/gang/G = user.mind.gang_datum - var/recruitable = SSticker.mode.add_gangster(M.mind,G) - switch(recruitable) - if(3) - for(var/obj/O in M.contents) - if(istype(O, /obj/item/device/gangtool/soldier)) - to_chat(user, "This gangster already has an uplink!") - return - new /obj/item/device/gangtool/soldier(M) - to_chat(user, "You inject [M] with a new gangtool!") - cooldown(G) - if(2) - new /obj/item/device/gangtool/soldier(M) - M.Unconscious(100) - cooldown(G) - if(1) - to_chat(user, "This mind is resistant to recruitment!") - else - to_chat(user, "This mind has already been recruited into a gang!") - return - ..() - -/obj/item/pen/gang/proc/cooldown(datum/gang/gang) - set waitfor = FALSE - var/cooldown_time = 600+(600*gang.bosses.len) // 1recruiter=2mins, 2recruiters=3mins, 3recruiters=4mins - - cooldown = 1 - icon_state = "pen_blink" - - var/time_passed = world.time - last_used - var/time - for(time=time_passed, time>=cooldown_time, time-=cooldown_time) //get 1 charge every cooldown interval - charges++ - - charges = max(0,charges-1) - - last_used = world.time - time - - if(charges) - cooldown_time = 50 - sleep(cooldown_time) - cooldown = 0 - icon_state = "pen" - var/mob/M = get(src, /mob) - to_chat(M, "[icon2html(src, M)] [src][(src.loc == M)?(""):(" in your [src.loc]")] vibrates softly. It is ready to be used again.") diff --git a/code/game/gamemodes/gang/recaller.dm b/code/game/gamemodes/gang/recaller.dm deleted file mode 100644 index f578ac3d3d..0000000000 --- a/code/game/gamemodes/gang/recaller.dm +++ /dev/null @@ -1,332 +0,0 @@ -//gangtool device -/obj/item/device/gangtool - name = "suspicious device" - desc = "A strange device of sorts. Hard to really make out what it actually does if you don't know how to operate it." - icon_state = "gangtool-white" - item_state = "radio" - lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - throwforce = 0 - w_class = WEIGHT_CLASS_TINY - throw_speed = 3 - throw_range = 7 - flags_1 = CONDUCT_1 - var/datum/gang/gang //Which gang uses this? - var/recalling = 0 - var/outfits = 2 - var/free_pen = 0 - var/promotable = 0 - var/list/tags = list() - -/obj/item/device/gangtool/Initialize() //Initialize supply point income if it hasn't already been started - ..() - if(!SSticker.mode.gang_points) - SSticker.mode.gang_points = new /datum/gang_points(SSticker.mode) - -/obj/item/device/gangtool/attack_self(mob/user) - if (!can_use(user)) - return - - var/dat - if(!gang) - dat += "This device is not registered.

" - if(user.mind in SSticker.mode.get_gang_bosses()) - if(promotable && user.mind.gang_datum.bosses.len < 3) - dat += "Give this device to another member of your organization to use to promote them to Lieutenant.

" - dat += "If this is meant as a spare device for yourself:
" - dat += "Register Device as Spare
" - else if (promotable) - if(user.mind.gang_datum.bosses.len < 3) - dat += "You have been selected for a promotion!
" - dat += "Accept Promotion
" - else - dat += "No promotions available: All positions filled.
" - else - dat += "This device is not authorized to promote.
" - else - if(gang.is_dominating) - dat += "
Takeover In Progress:
[gang.domination_time_remaining()] seconds remain
" - - var/isboss = (user.mind == gang.bosses[1]) - dat += "Registration: [gang.name] Gang [isboss ? "Boss" : "Lieutenant"]
" - dat += "Organization Size: [gang.gangsters.len + gang.bosses.len] | Station Control: [round((gang.territory.len/GLOB.start_state.num_territories)*100, 1)]%
" - dat += "Your Influence: [gang.get_influence(user.mind)]
" - dat += "Time until Influence grows: [time2text(SSticker.mode.gang_points.next_point_time - world.time, "mm:ss")]
" - dat += "
" - - - for(var/cat in gang.boss_category_list) - dat += "[cat]
" - for(var/V in gang.boss_category_list[cat]) - var/datum/gang_item/G = V - if(!G.can_see(user, gang, src)) - continue - - var/cost = G.get_cost_display(user, gang, src) - if(cost) - dat += cost + " " - - var/toAdd = G.get_name_display(user, gang, src) - if(G.can_buy(user, gang, src)) - toAdd = "[toAdd]" - dat += toAdd - var/extra = G.get_extra_info(user, gang, src) - if(extra) - dat += "
[extra]" - dat += "
" - dat += "
" - - dat += "Refresh
" - - var/datum/browser/popup = new(user, "gangtool", "Welcome to GangTool v3.5", 340, 625) - popup.set_content(dat) - popup.open() - - - -/obj/item/device/gangtool/Topic(href, href_list) - if(!can_use(usr)) - return - - add_fingerprint(usr) - - if(href_list["register"]) - register_device(usr) - - else if(!gang) //Gangtool must be registered before you can use the functions below - return - - if(href_list["purchase"]) - var/datum/gang_item/G = gang.boss_item_list[href_list["purchase"]] - if(G && G.can_buy(usr, gang, src)) - G.purchase(usr, gang, src, FALSE) - - attack_self(usr) - - -/obj/item/device/gangtool/proc/ping_gang(mob/user) - if(!user) - return - var/message = stripped_input(user,"Discreetly send a gang-wide message.","Send Message") as null|text - if(!message || !can_use(user)) - return - if(user.z > 2) - to_chat(user, "[icon2html(src, user)]Error: Station out of range.") - return - var/list/members = list() - members += gang.gangsters - members += gang.bosses - if(members.len) - var/gang_rank = gang.bosses.Find(user.mind) - switch(gang_rank) - if(1) - gang_rank = "Gang Boss" - if(2) - gang_rank = "1st Lieutenant" - if(3) - gang_rank = "2nd Lieutenant" - if(4) - gang_rank = "3rd Lieutenant" - else - gang_rank = "[gang_rank - 1]th Lieutenant" - var/ping = "[gang.name] [gang_rank]: [message]" - for(var/datum/mind/ganger in members) - if(ganger.current && (ganger.current.z <= 2) && (ganger.current.stat == CONSCIOUS)) - to_chat(ganger.current, ping) - for(var/mob/M in GLOB.dead_mob_list) - var/link = FOLLOW_LINK(M, user) - to_chat(M, "[link] [ping]") - log_talk(user,"GANG: [key_name(user)] Messaged [gang.name] Gang: [message].",LOGSAY) - - -/obj/item/device/gangtool/proc/register_device(mob/user) - if(gang) //It's already been registered! - return - if((promotable && (user.mind in SSticker.mode.get_gangsters())) || (user.mind in SSticker.mode.get_gang_bosses())) - gang = user.mind.gang_datum - gang.gangtools += src - icon_state = "gangtool-[gang.color]" - if(!(user.mind in gang.bosses)) - var/cached_influence = gang.gangsters[user.mind] - SSticker.mode.remove_gangster(user.mind, 0, 2) - gang.bosses[user.mind] = cached_influence - user.mind.gang_datum = gang - user.mind.special_role = "[gang.name] Gang Lieutenant" - gang.add_gang_hud(user.mind) - log_game("[key_name(user)] has been promoted to Lieutenant in the [gang.name] Gang") - free_pen = 1 - gang.message_gangtools("[user] has been promoted to Lieutenant.") - to_chat(user, "You have been promoted to Lieutenant!") - SSticker.mode.forge_gang_objectives(user.mind) - SSticker.mode.greet_gang(user.mind,0) - to_chat(user, "The Gangtool you registered will allow you to purchase weapons and equipment, and send messages to your gang.") - to_chat(user, "Unlike regular gangsters, you may use recruitment pens to add recruits to your gang. Use them on unsuspecting crew members to recruit them. Don't forget to get your one free pen from the gangtool.") - else - to_chat(usr, "ACCESS DENIED: Unauthorized user.") - -/obj/item/device/gangtool/proc/recall(mob/user) - if(!can_use(user)) - return 0 - - if(SSshuttle.emergencyNoRecall) - return 0 - - if(recalling) - to_chat(usr, "Error: Recall already in progress.") - return 0 - - if(!gang.recalls) - to_chat(usr, "Error: Unable to access communication arrays. Firewall has logged our signature and is blocking all further attempts.") - - gang.message_gangtools("[usr] is attempting to recall the emergency shuttle.") - recalling = 1 - to_chat(loc, "[icon2html(src, loc)]Generating shuttle recall order with codes retrieved from last call signal...") - - sleep(rand(100,300)) - - if(SSshuttle.emergency.mode != SHUTTLE_CALL) //Shuttle can only be recalled when it's moving to the station - to_chat(user, "[icon2html(src, user)]Emergency shuttle cannot be recalled at this time.") - recalling = 0 - return 0 - to_chat(loc, "[icon2html(src, loc)]Shuttle recall order generated. Accessing station long-range communication arrays...") - - sleep(rand(100,300)) - - if(!gang.dom_attempts) - to_chat(user, "[icon2html(src, user)]Error: Unable to access communication arrays. Firewall has logged our signature and is blocking all further attempts.") - recalling = 0 - return 0 - - var/turf/userturf = get_turf(user) - if(userturf.z != ZLEVEL_STATION) //Shuttle can only be recalled while on station - to_chat(user, "[icon2html(src, user)]Error: Device out of range of station communication arrays.") - recalling = 0 - return 0 - var/datum/station_state/end_state = new /datum/station_state() - end_state.count() - if((100 * GLOB.start_state.score(end_state)) < 80) //Shuttle cannot be recalled if the station is too damaged - to_chat(user, "[icon2html(src, user)]Error: Station communication systems compromised. Unable to establish connection.") - recalling = 0 - return 0 - to_chat(loc, "[icon2html(src, loc)]Comm arrays accessed. Broadcasting recall signal...") - - sleep(rand(100,300)) - - recalling = 0 - log_game("[key_name(user)] has tried to recall the shuttle with a gangtool.") - message_admins("[key_name_admin(user)] has tried to recall the shuttle with a gangtool.", 1) - userturf = get_turf(user) - if(userturf.z == ZLEVEL_STATION) //Check one more time that they are on station. - if(SSshuttle.cancelEvac(user)) - gang.recalls -= 1 - return 1 - - to_chat(loc, "[icon2html(src, loc)]No response recieved. Emergency shuttle cannot be recalled at this time.") - return 0 - -/obj/item/device/gangtool/proc/can_use(mob/living/carbon/human/user) - if(!istype(user)) - return 0 - if(user.incapacitated()) - return 0 - if(!(src in user.contents)) - return 0 - if(!user.mind) - return 0 - if(gang && (user.mind in gang.bosses)) //If it's already registered, only let the gang's bosses use this - return 1 - else if(user.mind in SSticker.mode.get_all_gangsters()) // For soldiers and potential LT's - return 1 - return 0 - -/obj/item/device/gangtool/spare - outfits = 1 - -/obj/item/device/gangtool/spare/lt - promotable = 1 - -///////////// Internal tool used by gang regulars /////////// - -/obj/item/device/gangtool/soldier/New(mob/user) - . = ..() - gang = user.mind.gang_datum - gang.gangtools += src - var/datum/action/innate/gang/tool/GT = new - GT.Grant(user, src, gang) - -/obj/item/device/gangtool/soldier/attack_self(mob/user) - if (!can_use(user)) - return - var/dat - if(gang.is_dominating) - dat += "
Takeover In Progress:
[gang.domination_time_remaining()] seconds remain
" - dat += "Registration: [gang.name] - Foot Soldier
" - dat += "Organization Size: [gang.gangsters.len + gang.bosses.len] | Station Control: [round((gang.territory.len/GLOB.start_state.num_territories)*100, 1)]%
" - dat += "Your Influence: [gang.get_influence(user.mind)]
" - if(LAZYLEN(tags)) - dat += "Your tags generate bonus influence for you.
You have tagged the following territories:" - for(var/obj/effect/decal/cleanable/crayon/gang/T in tags) - dat += " [T.territory] -" - else - dat += "You have not personally tagged any territory for your gang. Use a spray can to mark your territory and receive bonus influence." - dat += "
Time until Influence grows: [time2text(SSticker.mode.gang_points.next_point_time - world.time, "mm:ss")]
" - dat += "
" - for(var/cat in gang.reg_category_list) - dat += "[cat]
" - for(var/V in gang.reg_category_list[cat]) - var/datum/gang_item/G = V - if(!G.can_see(user, gang, src)) - continue - - var/cost = G.get_cost_display(user, gang, src) - if(cost) - dat += cost + " " - - var/toAdd = G.get_name_display(user, gang, src) - if(G.can_buy(user, gang, src)) - toAdd = "[toAdd]" - dat += toAdd - var/extra = G.get_extra_info(user, gang, src) - if(extra) - dat += "
[extra]" - dat += "
" - dat += "
" - - dat += "Refresh
" - - var/datum/browser/popup = new(user, "gangtool", "Welcome to GangTool v3.5", 340, 625) - popup.set_content(dat) - popup.open() - -/obj/item/device/gangtool/soldier/Topic(href, href_list) - if(!can_use(usr)) - return - if(href_list["purchase"]) - var/datum/gang_item/G = gang.reg_item_list[href_list["purchase"]] - if(G && G.can_buy(usr, gang, src)) - G.purchase(usr, gang, src, FALSE) - - attack_self(usr) - -/datum/action/innate/gang - background_icon_state = "bg_spell" - -/datum/action/innate/gang/IsAvailable() - if(!owner.mind || !owner.mind in SSticker.mode.get_all_gangsters()) - return 0 - return ..() - -/datum/action/innate/gang/tool - name = "Personal Gang Tool" - desc = "An implanted gang tool that lets you purchase gear" - background_icon_state = "bg_mime" - button_icon_state = "bolt_action" - var/obj/item/device/gangtool/soldier/GT - -/datum/action/innate/gang/tool/Grant(mob/user, obj/reg, datum/gang/G) - . = ..() - GT = reg - button.color = G.color - -/datum/action/innate/gang/tool/Activate() - GT.attack_self(owner) diff --git a/code/game/gamemodes/intercept_report.dm b/code/game/gamemodes/intercept_report.dm deleted file mode 100644 index af138c689e..0000000000 --- a/code/game/gamemodes/intercept_report.dm +++ /dev/null @@ -1,52 +0,0 @@ -//Intercept reports are sent to the station every round to warn the crew of possible threats. They consist of five possibilites, one of which is always correct. - -/datum/intercept_text - var/text - -/datum/intercept_text/proc/build(mode_type) - text = "
" - switch(mode_type) - if("blob") - text += "A CMP scientist by the name of [pick("Griff", "Pasteur", "Chamberland", "Buist", "Rivers", "Stanley")] boasted about his corporation's \"finest creation\" - a macrobiological \ - virus capable of self-reproduction and hellbent on consuming whatever it touches. He went on to query Cybersun for permission to utilize the virus in biochemical warfare, to which \ - CMP subsequently gained. Be vigilant for any large organisms rapidly spreading across the station, as they are classified as a level 5 biohazard and critically dangerous. Note that \ - this organism seems to be weak to extreme heat; concentrated fire (such as welding tools and lasers) will be effective against it." - if("changeling") - text += "The Gorlex Marauders have announced the successful raid and destruction of Central Command containment ship #S-[rand(1111, 9999)]. This ship housed only a single prisoner - \ - codenamed \"Thing\", and it was highly adaptive and extremely dangerous. We have reason to believe that the Thing has allied with the Syndicate, and you should note that likelihood \ - of the Thing being sent to a station in this sector is highly likely. It may be in the guise of any crew member. Trust nobody - suspect everybody. Do not announce this to the crew, \ - as paranoia may spread and inhibit workplace efficiency." - if("clock_cult") - text += "We have lost contact with multiple stations in your sector. They have gone dark and do not respond to all transmissions, although they appear intact and the crew's life \ - signs remain uninterrupted. Those that have managed to send a transmission or have had some of their crew escape tell tales of a machine cult creating sapient automatons and seeking \ - to brainwash the crew to summon their god, Ratvar. If evidence of this cult is dicovered aboard your station, extreme caution and extreme vigilance must be taken going forward, and \ - all resources should be devoted to stopping this cult. Note that holy water seems to weaken and eventually return the minds of cultists that ingest it, and mindshield implants will \ - prevent conversion altogether." - if("cult") - text += "Some stations in your sector have reported evidence of blood sacrifice and strange magic. Ties to the Wizards' Federation have been proven not to exist, and many employees \ - have disappeared; even Central Command employees light-years away have felt strange presences and at times hysterical compulsions. Interrogations point towards this being the work of \ - the cult of Nar-Sie. If evidence of this cult is discovered aboard your station, extreme caution and extreme vigilance must be taken going forward, and all resources should be \ - devoted to stopping this cult. Note that holy water seems to weaken and eventually return the minds of cultists that ingest it, and mindshield implants will prevent conversion \ - altogether." - if("extended") - text += "The transmission mostly failed to mention your sector. It is possible that there is nothing in the Syndicate that could threaten your station during this shift." - if("malf") - text += "A large ionospheric anomaly recently passed through your sector. Although physically undetectable, ionospherics tend to have an extreme effect on telecommunications equipment \ - as well as artificial intelligence units. Closely observe the behavior of artificial intelligence, and treat any machine malfunctions as purposeful. If necessary, termination of the \ - artificial intelligence is advised; assuming that it activates the station's self-destruct, your pinpointer has been configured to constantly track it, wherever it may be." - if("nuclear") - text += "One of Central Command's trading routes was recently disrupted by a raid carried out by the Gorlex Marauders. They seemed to only be after one ship - a highly-sensitive \ - transport containing a nuclear fission explosive, although it is useless without the proper code and authorization disk. While the code was likely found in minutes, the only disk that \ - can activate this explosive is on your station. Ensure that it is protected at all times, and remain alert for possible intruders." - if("revolution") - text += "Employee unrest has spiked in recent weeks, with several attempted mutinies on heads of staff. Some crew have been observed using flashbulb devices to blind their colleagues, \ - who then follow their orders without question and work towards dethroning departmental leaders. Watch for behavior such as this with caution. If the crew attempts a mutiny, you and \ - your heads of staff are fully authorized to execute them using lethal weaponry - they will be later cloned and interrogated at Central Command." - if("traitor") - text += "Although more specific threats are commonplace, you should always remain vigilant for Syndicate agents aboard your station. Syndicate communications have implied that many \ - Nanotrasen employees are Syndicate agents with hidden memories that may be activated at a moment's notice, so it's possible that these agents might not even know their positions." - if("wizard") - text += "A dangerous Wizards' Federation individual by the name of [pick(GLOB.wizard_first)] [pick(GLOB.wizard_second)] has recently escaped confinement from an unlisted prison facility. This \ - man is a dangerous mutant with the ability to alter himself and the world around him by what he and his leaders believe to be magic. If this man attempts an attack on your station, \ - his execution is highly encouraged, as is the preservation of his body for later study." - return text diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 13ab7a8bb1..d0c6cde8b9 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -284,7 +284,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event var/meteorgibs = /obj/effect/gibspawner/generic threat = 2 -/obj/effect/meteor/meaty/New() +/obj/effect/meteor/meaty/Initialize() for(var/path in meteordrop) if(path == /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant) meteordrop -= path @@ -294,7 +294,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event if(path == /obj/item/organ/tongue) meteordrop -= path meteordrop += pick(typesof(path)) - ..() + return ..() /obj/effect/meteor/meaty/make_debris() ..() @@ -315,9 +315,9 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event meteordrop = list(/obj/item/reagent_containers/food/snacks/meat/slab/xeno, /obj/item/organ/tongue/alien) meteorgibs = /obj/effect/gibspawner/xeno -/obj/effect/meteor/meaty/xeno/New() +/obj/effect/meteor/meaty/xeno/Initialize() meteordrop += subtypesof(/obj/item/organ/alien) - ..() + return ..() /obj/effect/meteor/meaty/xeno/ram_turf(turf/T) if(!isspaceturf(T)) @@ -366,8 +366,8 @@ GLOBAL_LIST_INIT(meteorsSPOOKY, list(/obj/effect/meteor/pumpkin)) meteordrop = list(/obj/item/clothing/head/hardhat/pumpkinhead, /obj/item/reagent_containers/food/snacks/grown/pumpkin) threat = 100 -/obj/effect/meteor/pumpkin/New() - ..() +/obj/effect/meteor/pumpkin/Initialize() + . = ..() meteorsound = pick('sound/hallucinations/im_here1.ogg','sound/hallucinations/im_here2.ogg') ////////////////////////// #undef DEFAULT_METEOR_LIFETIME diff --git a/code/game/gamemodes/miniantags/abduction/abduction.dm b/code/game/gamemodes/miniantags/abduction/abduction.dm deleted file mode 100644 index cb8c51fd83..0000000000 --- a/code/game/gamemodes/miniantags/abduction/abduction.dm +++ /dev/null @@ -1,37 +0,0 @@ -/datum/game_mode - var/list/datum/mind/abductors = list() - -// LANDMARKS -/obj/effect/landmark/abductor - var/team_number = 1 - -/obj/effect/landmark/abductor/agent - icon_state = "abductor_agent" -/obj/effect/landmark/abductor/scientist - icon_state = "abductor" - -// OBJECTIVES -/datum/objective/experiment - target_amount = 6 - -/datum/objective/experiment/New() - explanation_text = "Experiment on [target_amount] humans." - -/datum/objective/experiment/check_completion() - for(var/obj/machinery/abductor/experiment/E in GLOB.machines) - if(!istype(team, /datum/team/abductor_team)) - return FALSE - var/datum/team/abductor_team/T = team - if(E.team_number == T.team_number) - return E.points >= target_amount - return FALSE - -/datum/game_mode/proc/update_abductor_icons_added(datum/mind/alien_mind) - var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_ABDUCTOR] - hud.join_hud(alien_mind.current) - set_antag_hud(alien_mind.current, ((alien_mind in abductors) ? "abductor" : "abductee")) - -/datum/game_mode/proc/update_abductor_icons_removed(datum/mind/alien_mind) - var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_ABDUCTOR] - hud.leave_hud(alien_mind.current) - set_antag_hud(alien_mind.current, null) \ No newline at end of file diff --git a/code/game/gamemodes/miniantags/hades/hades.dm b/code/game/gamemodes/miniantags/hades/hades.dm deleted file mode 100644 index 948aaeb422..0000000000 --- a/code/game/gamemodes/miniantags/hades/hades.dm +++ /dev/null @@ -1,765 +0,0 @@ -#define STATE_JUDGE 0 -#define STATE_WRATH 1 -#define STATE_FLEE 2 - -/mob/living/simple_animal/hostile/hades - name = "hades" - real_name = "hades" - desc = "A strange being, clad in dark robes. Their very presence radiates an uneasy power." - speak_emote = list("preaches","announces","spits","conveys") - emote_hear = list("hums.","prays.") - response_help = "kneels before" - response_disarm = "flails at" - response_harm = "punches" - icon = 'icons/mob/EvilPope.dmi' - icon_state = "EvilPope" - icon_living = "EvilPope" - icon_dead = "popedeath" - speed = 1 - a_intent = "harm" - status_flags = CANPUSH - attack_sound = 'sound/magic/MAGIC_MISSILE.ogg' - death_sound = 'sound/magic/Teleport_diss.ogg' - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - minbodytemp = 0 - maxbodytemp = INFINITY - faction = list("hades") - attacktext = "strikes with an unholy rage at" - maxHealth = 1000 - health = 1000 - healable = 0 - environment_smash = 3 - melee_damage_lower = 15 - melee_damage_upper = 20 - see_in_dark = 8 - see_invisible = SEE_INVISIBLE_MINIMUM - loot = list(/obj/effect/decal/cleanable/blood) - del_on_death = 0 - deathmessage = "begins to sizzle and pop, their flesh peeling away like paper." - - var/isDoingDeath = FALSE - var/isFleeing = FALSE - var/fleeTimes = 0 - var/currentState = STATE_JUDGE - var/rageLevel = 0 - - var/maxWrathTimer = 150 - var/lastWrathTimer = 0 - - var/timeBetweenGrabs = 60 - var/lastGrabTime = 0 - - var/list/validSins = list("Greed","Gluttony","Pride","Lust","Envy","Sloth","Wrath") - var/lastsinPerson = 0 - var/sinPersonTime = 300 - var/lastFlee = 0 - var/fleeTimer = 30 - var/fakesinPersonChance = 60 - var/list/sinPersonsayings = list("You revel in only your own greed.",\ - "There is nothing but your absolution.",\ - "Your choices have led you to this.",\ - "There is only one way out.",\ - "The only way to be free is to be free of yourself.",\ - "Wallow in sin, and give yourself unto darkness.",\ - "Only the truly sinful may stand.",\ - "Find yourself and you will find Absolution.",\ - "Forego the pain of this process, and submit.",\ - "We can be one in suffering.",\ - "You stand on the precipice of ascension, give in.",\ - "You cannot fathom what lies beyond",\ - "Repent your sins.",\ - "This is the eve of your last days.",\ - "Darkness comes.") - - var/list/creepyasssounds = list('sound/hallucinations/behind_you1.ogg', 'sound/hallucinations/behind_you2.ogg', \ - 'sound/hallucinations/growl3.ogg', 'sound/hallucinations/im_here1.ogg', 'sound/hallucinations/im_here2.ogg',\ - 'sound/hallucinations/i_see_you1.ogg', 'sound/hallucinations/i_see_you2.ogg',\ - 'sound/hallucinations/look_up1.ogg', 'sound/hallucinations/look_up2.ogg', 'sound/hallucinations/over_here1.ogg',\ - 'sound/hallucinations/over_here2.ogg', 'sound/hallucinations/over_here3.ogg',\ - 'sound/hallucinations/turn_around1.ogg', 'sound/hallucinations/turn_around2.ogg') - - var/obj/effect/proc_holder/spell/targeted/lightning/sinLightning - - var/list/currentAcolytes = list() - -/mob/living/simple_animal/hostile/hades/New() - ..() - - sinLightning = new/obj/effect/proc_holder/spell/targeted/lightning(src) - - sinLightning.charge_max = 1 - sinLightning.clothes_req = 0 - sinLightning.range = 32 - sinLightning.cooldown_min = 1 - - lastsinPerson = world.time - var/list/possible_titles = list("Pope","Bishop","Lord","Cardinal","Deacon","Pontiff") - var/chosen = "Hades, [pick(possible_titles)] of Sin" - name = chosen - real_name = chosen - - world << "[name] has entered your reality. Kneel before them." - world << 'sound/effects/pope_entry.ogg' - - Appear(get_turf(src)) - -/mob/living/simple_animal/hostile/hades/handle_environment(datum/gas_mixture/environment) - //space popes are from space, they need not your fickle "oxygen" - return - -/mob/living/simple_animal/hostile/hades/handle_temperature_damage() - //space popes are from space, they don't uh.. something fire burny death - return - -/mob/living/simple_animal/hostile/hades/death(gibbed) - if(!isDoingDeath) - notransform = TRUE - anchored = TRUE - src.visible_message("[src] begins to twist and distort, before snapping backwards with a sickening crunch.") - spawn(20) - src.visible_message("[src] is being sucked back to their own realm, destabilizing the fabric of time and space itself!") - playsound(get_turf(src), 'sound/effects/hyperspace_begin.ogg', 100, 1) - isDoingDeath = TRUE - AIStatus = AI_OFF - SpinAnimation() - for(var/i in 1 to 5) - for(var/turf/T in spiral_range_turfs(i,src)) - addtimer(src, "sinShed", i*10, FALSE, T) - spawn(60) // required to be spawn so we can call death's ..() to complete death. - SpinAnimation(0,0) - explosion(get_turf(src), 0, 2, 4, 6, flame_range = 6) - ..() - var/area/A = locate(/area/hades) in world - if(A) - var/turf/T = get_turf(locate(/obj/effect/landmark/event_spawn) in A) - if(T) - src.visible_message("[src]'s Staff is flung free as their body explodes.") - var/obj/structure/ladder/unbreakable/hades/churchLadder = new/obj/structure/ladder/unbreakable/hades(T) - var/obj/structure/ladder/unbreakable/hades/bodyLadder = new/obj/structure/ladder/unbreakable/hades(get_turf(src)) - var/obj/item/hades_staff/HS = new/obj/item/hades_staff(get_turf(src)) - HS.throw_at_fast(pick(orange(src,7)),10,1) - churchLadder.up = bodyLadder - bodyLadder.down = churchLadder - qdel(src) - -/mob/living/simple_animal/hostile/hades/attackby(obj/item/I, mob/user, params) - ..() - Defend(user,I) - -/mob/living/simple_animal/hostile/hades/grabbedby(mob/living/carbon/user, supress_message = 0) - ..() - Defend(user,user) - -/mob/living/simple_animal/hostile/hades/hitby(atom/movable/AM, skipcatch, hitpush, blocked) - ..() - lastsinPerson -= (sinPersonTime/4) - if(istype(AM,/obj/item)) - var/obj/item/throwCast = AM - Defend(throwCast.thrownby,AM) - -/mob/living/simple_animal/hostile/hades/bullet_act(obj/item/projectile/P, def_zone) - //don't call ..() because we're going to deflect it - lastsinPerson -= (sinPersonTime/4) - Defend(P.firer,P) - return -1 - -/mob/living/simple_animal/hostile/hades/attack_hand(mob/living/carbon/human/M) - ..() - lastsinPerson -= (sinPersonTime/4) - Defend(M,M) - -/mob/living/simple_animal/hostile/hades/proc/Defend(var/mob/attacker,var/source) - if(!isDoingDeath) - rageLevel += 5 - src.visible_message("[src] rounds on the [attacker], gazing at them with a [pick("cold","frosty","freezing","dark")] [pick("glare","gaze","glower","stare")].") - - if(istype(source,/obj/item/projectile)) - src.visible_message("[src] [pick("calmly","silently","nonchalantly")] waves their hand, deflecting the [source].") - var/obj/item/projectile/P = source - if(P.starting) - var/new_x = P.starting.x + pick(0, 0, 0, 0, 0, -1, 1, -2, 2) - var/new_y = P.starting.y + pick(0, 0, 0, 0, 0, -1, 1, -2, 2) - var/turf/curloc = get_turf(src) - - P.original = locate(new_x, new_y, P.z) - P.starting = curloc - P.current = curloc - P.firer = src - P.yo = new_y - curloc.y - P.xo = new_x - curloc.x - P.Angle = null - else - if(prob(20)) - var/chosenDefend = rand(1,3) - switch(chosenDefend) - if(1) - attacker.visible_message("[attacker] is lifted from the ground, shadowy powers tossing them aside.") - attacker.throw_at_fast(pick(orange(src,7)),10,1) - if(2) - attacker.visible_message("[attacker] crackles with electricity, a bolt leaping from [src] to them.") - sinLightning.Bolt(src,attacker,30,5,src) - if(3) - src.visible_message("[src] points his staff at [attacker], a swarm of eyeballs lurching fourth!") - for(var/i in 1 to 4) - var/mob/living/simple_animal/hostile/carp/eyeball/E = new/mob/living/simple_animal/hostile/carp/eyeball(pick(orange(attacker,1))) - E.faction = faction - addtimer(E, "gib", 150, FALSE) - -/mob/living/simple_animal/hostile/hades/proc/sinShed(var/turf/T) - var/obj/effect/overlay/temp/cult/sparks/S = PoolOrNew(/obj/effect/overlay/temp/cult/sparks, T) - S.anchored = FALSE - S.throw_at_fast(src,10,1) - PoolOrNew(/obj/effect/overlay/temp/hadesBlood, T) - -/mob/living/simple_animal/hostile/hades/proc/Transfer(var/mob/living/taken, var/turf/transferTarget) - if(transferTarget) - playsound(get_turf(taken), 'sound/magic/Ethereal_Enter.ogg', 50, 1, -1) - PoolOrNew(/obj/effect/overlay/temp/hadesFlick, get_turf(taken)) - taken.forceMove(transferTarget) - Appear(get_turf(taken)) - -/mob/living/simple_animal/hostile/hades/proc/Appear(var/turf/where) - var/obj/effect/timestop/hades/TS = new /obj/effect/timestop/hades(where) - TS.immune = list(src) - -/mob/living/simple_animal/hostile/hades/Life() - if(..() && !isDoingDeath) // appropriately check if we're alive now we leave a corpse - if(health > maxHealth/4 && !isFleeing) - if(rageLevel > 50) - lastWrathTimer = world.time - currentState = STATE_WRATH - else - currentState = STATE_JUDGE - else - if(world.time > lastFlee + fleeTimer) - lastFlee = world.time - isFleeing = TRUE - currentState = STATE_FLEE - - var/area/healthCheck = get_area(src) - - if(istype(healthCheck,/area/chapel/main)) - if(currentState == STATE_FLEE) - lastWrathTimer = world.time - currentState = STATE_WRATH - if(health < maxHealth/2) - health += 10 // slowly regain hp in the chapel, up to a maximum of half our max - - var/spokenThisTurn = FALSE - for(var/mob/living/A in currentAcolytes) - if(!A) - currentAcolytes -= A - continue - if(A.health <= 0) - rageLevel += 5 - if(!spokenThisTurn) - spokenThisTurn = TRUE - var/list/lossSayings = list("They were weak.","For every death, two more rise.",\ - "What is but one servant lost?","Darkness engulf you!","To the Pit with them.",\ - "Fools! All of you!","You can't stop me. You. Will. Be. JUDGED.") - src.say(pick(lossSayings)) - currentAcolytes -= A - A.gib() - - if(currentState == STATE_WRATH) // we have been enraged. - if(world.time > lastWrathTimer + maxWrathTimer) - rageLevel = 0 // wind down if we're wrathful too long. - rageLevel -= 1 // rage phase starts at 50, meaning roughly 20s of rage. - if(currentAcolytes.len == 0) - src.say("Rise, Servants. AID YOUR MASTER.") - playsound(get_turf(src), 'sound/magic/CastSummon.ogg', 100, 1) - for(var/i in 1 to 5) - var/mob/living/simple_animal/hostile/hadesacolyte/HA = new/mob/living/simple_animal/hostile/hadesacolyte(get_turf(pick(orange(2,src)))) - HA.master = src - currentAcolytes += HA - if(target) - if(world.time > lastGrabTime + timeBetweenGrabs) - if(get_dist(src,target) > 4) // you can't run from us. upped to 4 to give more leeway. - lastGrabTime = world.time - var/list/fleeSayings = list("There is no escape from your sins, [target]","Fleeing will only make your punishment worse [target]!",\ - "There is nowhere you can hide, [target]!","You can't run, [target]!","Get back here, [target]!","You coward, [target]!",\ - "I will find you, [target]!","Return to me, [target]!") - src.say(pick(fleeSayings)) - var/mob/living/toGrab = target - toGrab.Beam(src,"blood",'icons/effects/beam.dmi',10) - toGrab.Weaken(6) - playsound(get_turf(src), 'sound/magic/CastSummon.ogg', 100, 1) - toGrab.throw_at_fast(src,10,1) - if(rageLevel >= 100) - rageLevel = 50 - var/list/overboardSayings = list("Ashes! It will all be ashes!","I will bring about the apocolypse!",\ - "There will be nothing but your withered husks!","Face your doom, cretins!","There. Will. Be. ORDER!",\ - "I am your Lord, lay down your arms and submit.","Your souls will be cremated!",\ - "Only in death will you obey!","This is no person's fault but your own!") - src.say(pick(overboardSayings)) - var/turf/StartLoc = get_turf(src) - var/list/nearby = orange(6,src) - var/slashCount = 0 - var/aoeType = rand(1,2) // just for future proofing - for(var/mob/living/A in nearby) - slashCount++ - A.Beam(src,"blood",'icons/effects/beam.dmi',10) - spawn(slashCount + 3) - if(aoeType == 1) - // no more cheaping it out with non-player mobs like turrets or carps - loc = get_turf(A) - sinShed(StartLoc) - A.attack_animal(src) - PoolOrNew(/obj/effect/overlay/temp/hadesBlood,get_turf(A)) - playsound(get_turf(A), 'sound/magic/SummonItems_generic.ogg', 100, 1) - if(aoeType == 2) - sinShed(StartLoc) - PoolOrNew(/obj/effect/overlay/temp/hadesBite,get_turf(A)) - A.Weaken(6) - var/obj/effect/timestop/hades/large/TS = new /obj/effect/timestop/hades/large(StartLoc) - TS.immune = list(src) - spawn((slashCount+1)+3) - loc = StartLoc - - if(currentState == STATE_FLEE) // we've been wounded, let us flee and lick our wounds - var/area/A = locate(/area/chapel/main) in world - if(A) - var/turf/T = get_turf(locate(/obj/effect/landmark/event_spawn) in A) - if(!T) - T = get_turf(src) // no event spawn in chapel, fall back to doing it on the spot. - if(T) - fleeTimes++ - Transfer(src,T) - AIStatus = AI_OFF - notransform = TRUE - anchored = TRUE - for(var/i in 1 to 5) - spawn(i*10) - for(var/turf/S in oview(i,src) - oview((i)-1,src)) - sinShed(S) - health += maxHealth/(10*fleeTimes) // every flee we gain less HP - spawn(50) - isFleeing = FALSE - notransform = FALSE - anchored = FALSE - AIStatus = AI_ON - currentState = STATE_JUDGE - lastsinPerson = 0 // immediately teleport away to judge - - if(currentState == STATE_JUDGE) // our default state, judge a few people and tell them they're rude or something - if(world.time > lastsinPerson + sinPersonTime) - if(prob(fakesinPersonChance)) - lastsinPerson = world.time - visible_message("[pick(sinPersonsayings)]") - playsound(get_turf(src), pick(creepyasssounds), 100, 1) - else - lastsinPerson = world.time - var/mob/living/carbon/human/sinPerson = pick(living_mob_list) - var/depth = living_mob_list.len + 1 // just in case - if(sinPerson) // no more finding nullcakes - if(!sinPerson.ckey) - while(!sinPerson.ckey && depth > 0) - --depth - var/checkPerson = pick(living_mob_list) - if(checkPerson) - sinPerson = checkPerson - if(!sinPerson.ckey) - // double check ensure that if the above loop fails to get a ckey target - // we don't go and use the last mob checked, causing odd situations - return - if(sinPerson) - if(prob(65)) // moderately high chance for us to go to them, else they come here. - Transfer(src,get_turf(pick(oview(1,sinPerson)))) - else - Transfer(sinPerson,get_turf(pick(oview(1,src)))) - var/sinPersonchoice = pick(validSins) - switch(sinPersonchoice) - if("Greed") - src.say("Your sin, [sinPerson], is Greed.") - if(prob(50)) - src.say("I will indulge your sin, [sinPerson].") - sin_Greed(sinPerson, TRUE) - else - src.say("Your sin will be punished, [sinPerson]!") - sin_Greed(sinPerson, FALSE) - if("Gluttony") - src.say("Your sin, [sinPerson], is Gluttony.") - if(prob(50)) - src.say("I will indulge your sin, [sinPerson].") - sin_Gluttony(sinPerson,TRUE) - else - src.say("Your sin will be punished, [sinPerson]!") - sin_Gluttony(sinPerson,FALSE) - if("Pride") - src.say("Your sin, [sinPerson], is Pride.") - if(prob(50)) - src.say("I will indulge your sin, [sinPerson].") - sin_Pride(sinPerson,TRUE) - else - src.say("Your sin will be punished, [sinPerson]!") - sin_Pride(sinPerson,FALSE) - if("Lust") - src.say("Your sin, [sinPerson], is Lust.") - if(prob(50)) - src.say("I will indulge your sin, [sinPerson].") - sin_Lust(sinPerson,TRUE) - else - src.say("Your sin will be punished, [sinPerson]!") - sin_Lust(sinPerson,TRUE) - if("Envy") - src.say("Your sin, [sinPerson], is Envy.") - if(prob(50)) - src.say("I will indulge your sin, [sinPerson].") - sin_Envy(sinPerson,TRUE) - else - src.say("Your sin will be punished, [sinPerson]!") - sin_Envy(sinPerson,FALSE) - if("Sloth") - src.say("Your sin, [sinPerson], is Sloth.") - if(prob(50)) - src.say("I will indulge your sin, [sinPerson].") - sin_Sloth(sinPerson,TRUE) - else - src.say("Your sin will be punished, [sinPerson]!") - sin_Sloth(sinPerson,FALSE) - if("Wrath") - src.say("Your sin, [sinPerson], is Wrath.") - if(prob(50)) - src.say("I will indulge your sin, [sinPerson].") - sin_Wrath(sinPerson,TRUE) - else - src.say("Your sin will be punished, [sinPerson]!") - sin_Wrath(sinPerson,FALSE) - - -///Sin related things - -//global Sin procs, shared between staff and pope - -/proc/sin_Greed(var/mob/living/carbon/human/sinPerson, var/isIndulged) - if(isIndulged) - sinPerson << "You feel like you deserve more, in fact, you want everything." - var/list/greed = list(/obj/item/stack/sheet/mineral/gold,/obj/item/stack/sheet/mineral/silver,/obj/item/stack/sheet/mineral/diamond) - for(var/i in 1 to 10) - var/greed_type = pick(greed) - new greed_type(get_turf(sinPerson)) - else - sinPerson << "Your body begins to shift and bend, changing to reflect your inner greed." - var/mob/living/M = sinPerson.change_mob_type(/mob/living/simple_animal/cockroach,get_turf(sinPerson),"Greedroach",1) - M.AddSpell(new/obj/effect/proc_holder/spell/targeted/mind_transfer) - -/proc/sin_Gluttony(var/mob/living/carbon/human/sinPerson, var/isIndulged) - if(isIndulged) - sinPerson << "Your stomach growls, you feel hungry." - var/list/allTypes = list() - for(var/A in typesof(/obj/item/reagent_containers/food/snacks)) - var/obj/item/reagent_containers/food/snacks/O = A - if(initial(O.cooked_type)) - allTypes += A - for(var/i in 1 to 10) - var/greed_type = pick(allTypes) - new greed_type(get_turf(sinPerson)) - else - sinPerson << "Your body begins to bloat and stretch, bile rising in your throat." - sinPerson.reagents.add_reagent("nutriment",1000) - -/proc/sin_Pride(var/mob/living/carbon/human/sinPerson, var/isIndulged) - if(isIndulged) - sinPerson << "You feel strong enough to take on the world." - var/obj/item/twohanded/sin_pride/good = new/obj/item/twohanded/sin_pride(get_turf(sinPerson)) - good.name = "Indulged [good.name]" - good.pride_direction = FALSE - else - sinPerson << "You feel small and weak, like the entire world is against you." - var/obj/item/twohanded/sin_pride/bad = new/obj/item/twohanded/sin_pride(get_turf(sinPerson)) - bad.name = "Punished [bad.name]" - bad.pride_direction = TRUE - -/proc/sin_Lust(var/mob/living/carbon/human/sinPerson, var/isIndulged) - if(isIndulged) - sinPerson << "You feel confident, like everything and everyone is drawn to you." - var/obj/item/lovestone/good = new/obj/item/lovestone(get_turf(sinPerson)) - good.name = "Indulged [good.name]" - good.lust_direction = FALSE - else - sinPerson << "You feel lonely... the wish for the warmth of another spark through your mind." - var/obj/item/lovestone/bad = new/obj/item/lovestone(get_turf(sinPerson)) - bad.name = "Punished [bad.name]" - bad.lust_direction = TRUE - -/proc/sin_Envy(var/mob/living/carbon/human/sinPerson, var/isIndulged) - if(isIndulged) - for(var/mob/living/carbon/human/H in player_list) // name lottery - if(H == sinPerson) - continue - if(prob(25)) - sinPerson.name = H.name - sinPerson.real_name = H.real_name - var/datum/dna/lottery = H.dna - lottery.transfer_identity(sinPerson, transfer_SE=1) - sinPerson.updateappearance(mutcolor_update=1) - sinPerson.domutcheck() - sinPerson << "You feel envious of [sinPerson.name], and your body shifts to reflect that!" - else - var/sinPersonspecies = pick(species_list) - var/newtype = species_list[sinPersonspecies] - sinPerson << "You wish for more from yourself.. your body shifts to suit your wish." - sinPerson.set_species(newtype) - -/proc/sin_Sloth(var/mob/living/carbon/human/sinPerson, var/isIndulged) - if(isIndulged) - sinPerson << "You feel tired..." - sinPerson.drowsyness += 100 - else - sinPerson << "A chill comes over your body, the feeling of frostbite nipping at your fingers." - sinPerson.reagents.add_reagent("frostoil", 50) - -/proc/sin_Wrath(var/mob/living/carbon/human/sinPerson, var/isIndulged) - if(isIndulged) - sinPerson << "You feel wrathful, like you want to destroy everyone and everything." - sinPerson.change_mob_type(/mob/living/simple_animal/slaughter,get_turf(sinPerson),"Wrath Demon",1) - else - sinPerson << "Your chest feels tight, and the world begins to spin around you." - sinPerson.reagents.add_reagent("lexorin", 29) - sinPerson.reagents.add_reagent("mindbreaker", 29) - -/obj/effect/overlay/temp/hadesFlick - name = "transdimensional waste" - icon = 'icons/mob/mob.dmi' - icon_state = "liquify" - duration = 15 - -/obj/effect/overlay/temp/hadesBite - name = "biting tendril" - icon = 'icons/effects/effects.dmi' - icon_state = "tendril_bite" - duration = 15 - -/obj/effect/overlay/temp/hadesBlood - name = "blood plume" - icon = 'icons/effects/128x128.dmi' - icon_state = "spray_plume" - duration = 30 - -/obj/effect/timestop/hades // custom timeslip to make him immune - name = "Frozen Time" - desc = "Time has slowed to a halt." - -/obj/effect/timestop/hades/New() - spawn(5) - ..() - -/obj/effect/timestop/hades/large - freezerange = 6 - icon_state = "huge_rune" - icon = 'icons/effects/224x224.dmi' - - -/obj/item/twohanded/sin_pride - icon_state = "mjollnir0" - name = "Pride-struck Hammer" - desc = "It resonates an aura of Pride." - force = 5 - throwforce = 15 - w_class = 4 - slot_flags = SLOT_BACK - force_unwielded = 5 - force_wielded = 20 - attack_verb = list("attacked", "smashed", "crushed", "splattered", "cracked") - hitsound = 'sound/weapons/blade1.ogg' - var/pride_direction = FALSE - -/obj/item/twohanded/sin_pride/update_icon() - icon_state = "mjollnir[wielded]" - return - -/obj/item/twohanded/sin_pride/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity) - if(!proximity) return - if(wielded) - if(istype(A,/mob/living/carbon/human)) - var/mob/living/carbon/H = A - var/mob/living/carbon/U = user - if(H) - if(pride_direction == FALSE) - U.reagents.trans_to(H, user.reagents.total_volume, 1, 1, 0) - U << "Your pride reflects on [H]." - if(H.health > 0) - U.health += force - U.updatehealth() - H.health -= force - H.updatehealth() - H << "You feel insecure, taking on [user]'s burden." - else if(pride_direction == TRUE) - H.reagents.trans_to(user, H.reagents.total_volume, 1, 1, 0) - H << "Your pride reflects on [user]." - if(U.health > 0) - U.health -= force - U.updatehealth() - H.health += force - H.updatehealth() - U << "You feel insecure, taking on [H]'s burden." - -/obj/item/lovestone - name = "Stone of Lust" - desc = "It lays within your hand, radiating pulses of uncomfortable warmth." - icon = 'icons/obj/wizard.dmi' - icon_state = "lovestone" - item_state = "lovestone" - w_class = 1 - var/lust_direction = FALSE - var/lastUsage = 0 - var/usageTimer = 300 - -/obj/item/lovestone/attack_self(mob/user) - if(world.time > lastUsage + usageTimer) - lastUsage = world.time - user.visible_message("[user] grips the [src] tightly, causing it to vibrate and pulse brightly.") - spawn(25) - if(lust_direction == FALSE) - var/list/throwAt = list() - for(var/atom/movable/AM in oview(7,user)) - if(!AM.anchored && AM != user) - throwAt.Add(AM) - for(var/counter = 1, counter < throwAt.len, ++counter) - var/atom/movable/cast = throwAt[counter] - cast.throw_at_fast(user,10,1) - else if(lust_direction == 1) - var/mob/living/carbon/human/H = user - var/mob/living/carbon/human/foundLover = locate(/mob/living/carbon/human) in orange(3,H) - if(!foundLover) - H << "As you hold the stone, loneliness grips you, your heart feeling heavy and you struggle to breath." - for(var/i in 1 to 10) - addtimer(H.reagents, "add_reagent", i*10, FALSE, "initropidril", i) - else - H << "You take comfort in the presence of [foundLover]" - H.reagents.add_reagent("omnizine",25) - H.Beam(foundLover,"r_beam",'icons/effects/beam.dmi',10) - foundLover << "You take comfort in the presence of [H]" - foundLover.reagents.add_reagent("omnizine",25) - else - user << "The stone lays inert. It is still recharging." - -/mob/living/simple_animal/hostile/hadesacolyte - name = "Acolyte of Hades" - desc = "Darkness seethes from their every pore." - icon_state = "hades_acolyte" - icon_living = "hades_acolyte" - icon_dead = "hades_acolyte_dead" - speak_chance = 0 - turns_per_move = 5 - response_help = "trembles in fear of" - response_disarm = "slaps wildly at" - response_harm = "hits" - speed = 1 - maxHealth = 45 - health = 45 - - harm_intent_damage = 5 - melee_damage_lower = 5 - melee_damage_upper = 15 - attacktext = "strikes at" - attack_sound = 'sound/weapons/bladeslice.ogg' - - butcher_results = list(/obj/item/clothing/mask/gas/cyborg/hades = 1,/obj/item/clothing/suit/hooded/chaplain_hoodie/hades = 1,/obj/item/hades_staff/fake = 1) - - unsuitable_atmos_damage = 0 - del_on_death = 0 - faction = list("hades") - - var/mob/living/simple_animal/hostile/hades/master - -/mob/living/simple_animal/hostile/hadesacolyte/Life() - if(..()) - if(master) - if(get_dist(src,master) > 5) - PoolOrNew(/obj/effect/overlay/temp/hadesFlick,get_turf(src)) - src.visible_message("[src] twists and distorts, before vanishing in a snap.") - src.forceMove(get_turf(pick(orange(2,master)))) - -//acolyte of hades outfit -/obj/item/clothing/mask/gas/cyborg/hades - name = "Skull Mask" - desc = "It's a skull mask, made of a thin, cool metal." - -/obj/item/clothing/suit/hooded/chaplain_hoodie/hades - name = "Dark robes" - desc = "A dark, soft robe." - hooded = 1 - hoodtype = /obj/item/clothing/head/chaplain_hood/hades - -/obj/item/clothing/head/chaplain_hood/hades - name = "Dark hood" - desc = "A dark, soft hood." - body_parts_covered = HEAD - flags_inv = HIDEHAIR|HIDEEARS -//end hades outfit - -/obj/item/hades_summoner - name = "Dark Seed" - desc = "The stone lays inert, but even when holding it you hear maddened whispers." - icon = 'icons/obj/wizard.dmi' - icon_state = "dark_seed_inert" - item_state = "dark_seed_inert" - w_class = 1 - var/isActivated = FALSE - var/whoActivated - var/countDownToSummon = 10 - var/absorbedHP = 0 - -/obj/item/hades_summoner/attack_self(mob/user) - if(!isActivated) - var/choice = input(user,"Rub the stone?",name) in list("Yes","No") - if(choice == "Yes") - if(prob(15)) - user << "You rub the stone.. and a voice springs fourth!" - user << "You hear a voice in your head.. 'Bring me the flesh of a living being.. and we shall bargain.'" - whoActivated = user - isActivated = TRUE - desc = "The stone hums with a soft glow, whispering to you." - icon_state = "dark_seed" - else - user << "The stone shivers, but nothing happens. Perhaps try again later?" - else - if(user != whoActivated) - user << "The stone lays inert." - else - if(countDownToSummon > 0) - user << "You hear a voice in your head.. 'I still require [countDownToSummon] vessels worth of flesh. Bring them to me'" - else - user << "I thank you, acolyte." - var/mob/living/simple_animal/hostile/hadesacolyte/HA = user.change_mob_type(/mob/living/simple_animal/hostile/hadesacolyte,get_turf(user),"[user.name]",1) - var/mob/living/simple_animal/hostile/hades/H = new/mob/living/simple_animal/hostile/hades(get_turf(user)) - H.maxHealth = absorbedHP - H.health = H.maxHealth - if(H.maxHealth < initial(H.maxHealth)) - HA << "You.. you fool! How dare you summon me with such dirty flesh!" - HA.faction -= "hades" - if(H.maxHealth > initial(H.maxHealth)) - HA << "Such.. power! You have exceeded yourself, acolyte. Drink of my might!" - HA.maxHealth = 250 - HA.health = 250 - qdel(src) - -/obj/item/hades_summoner/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity) - if(!proximity) - return - if(istype(A,/mob/living)) - var/mob/living/M = A - if(countDownToSummon > 0) - if(M.health > 0 && M.maxHealth > 200) - // no absorbing super strong creatures unless they're dead - user << "Such power.. Slay this [M] so that I may partake of its being." - return - if(!M.stat) - user << "[M] is still too tightly bound to the mortal world! You must either kill or knock them unconscious to sacrifice them." - return - user << "I accept your offering." - absorbedHP += M.maxHealth - if(!M.ckey) - M.gib() - else - M << "You feel the flesh being stripped from your bones. You're overwhelmed with maddening pain, before reforming into another being!" - M.change_mob_type(/mob/living/simple_animal/hostile/hadesacolyte,get_turf(user),"[user.name]",1) - countDownToSummon-- - if(countDownToSummon <= 0) - user << "I am ready to ascend, my acolyte." - - -#undef STATE_JUDGE -#undef STATE_WRATH -#undef STATE_FLEE diff --git a/code/game/gamemodes/miniantags/hades/hades_chapel.dm b/code/game/gamemodes/miniantags/hades/hades_chapel.dm deleted file mode 100644 index df8a2efafd..0000000000 --- a/code/game/gamemodes/miniantags/hades/hades_chapel.dm +++ /dev/null @@ -1,177 +0,0 @@ -/area/hades - name = "Chapel of Sin" - icon_state = "yellow" - requires_power = 0 - has_gravity = 1 - -/turf/open/floor/plasteel/hades - name = "Sin-touched Floor" - icon_state = "cult" - -/obj/structure/chair/hades - name = "Cross of Hades" - desc = "An inverted cross, with straps on it to support the weight of a living being." - icon_state = "chair_hades" - var/list/watchedSpikes = list() - -/obj/structure/chair/hades/New() - ..() - flags_1 |= NODECONSTRUCT_1 - for(var/obj/structure/kitchenspike/KS in range(12)) - watchedSpikes += KS - -/obj/structure/chair/hades/proc/considerReady() - //buckled_mobs seems to work inconsistently, so we're doing some custom searching here. - if(!buckled_mobs) - return FALSE - if(!buckled_mobs.len) - return FALSE - for(var/obj/structure/kitchenspike/KS in watchedSpikes) - var/mob/living/M = locate(/mob/living) in get_turf(KS) - if(!M) - return FALSE - return TRUE - -/obj/structure/chair/hades/proc/completeRitual() - for(var/obj/structure/kitchenspike/KS in watchedSpikes) - var/mob/living/M = locate(/mob/living) in get_turf(KS) - M.gib() - playsound(get_turf(src), 'sound/effects/pope_entry.ogg', 100, 1) - sleep(100) - playsound(get_turf(src), 'sound/effects/hyperspace_end.ogg', 100, 1) - new/obj/item/hades_staff/imbued(get_turf(src)) - src.visible_message("[src] shatters into a thousand shards, a staff falling from it.") - qdel(src) - -/obj/structure/chair/hades/attackby(obj/item/W, mob/user, params) - ..() - if(istype(W, /obj/item/hades_staff)) - var/obj/item/hades_staff/HS = W - if(!HS.isKey) - return - src.visible_message("[user] inserts the [W] into the [src], giving it a quick turn.") - if(considerReady()) - qdel(W) - src.visible_message("[src] shudders, the sound of moving gears arising...") - for(var/mob/living/M in buckled_mobs) - M.gib() - for(var/i in 1 to 4) - addtimer(GLOBAL_PROC, "playsound", i*10, FALSE, get_turf(src), 'sound/effects/clang.ogg', 100, 1) - spawn(50) - src.visible_message("[src] begins to lower into the ground...") - icon_state = "chair_hades_slide" - addtimer(src, "completeRitual", 50, FALSE) - else - src.visible_message("[src] clunks, the sound of grinding gears arising. Nothing happens.") - -/obj/structure/ladder/unbreakable/hades - name = "Dimensional Rift" - desc = "Where does it lead?" - icon = 'icons/mob/EvilPope.dmi' - icon_state = "popedeath" - anchored = TRUE - -/obj/structure/ladder/unbreakable/hades/update_icon() - return - -/obj/item/paper/hades_instructions - name = "paper- 'Hastily Scrawled Letter'" - info = "The Master has instructed us to collect corpses for the ritual, and told us to deposity them in the Ritual Room, behind a bookcase in the library. The Master has locked the device to only work with his key, so no more accidents happen." - -/obj/item/hades_staff - name = "Staff of Hades" - desc = "A large, dark staff, with a set of key-like prongs on the end." - icon_state = "staffofchange" - icon = 'icons/obj/guns/magic.dmi' - item_state = "staffofchange" - slot_flags = SLOT_BELT | SLOT_BACK - force = 25 - throwforce = 5 - w_class = 3 - hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb = list("slapped", "shattered", "blasphemed", "smashed", "whacked", "crushed", "hammered") - block_chance = 25 - var/isKey = 1 - -/obj/item/hades_staff/fake - name = "Inert Staff of Hades" - desc = "A large, dark staff." - isKey = 0 - -/obj/item/hades_staff/imbued - name = "Imbued Staff of Hades" - desc = " Bestowed with the power of wayward souls, this Staff allows the wielder to judge a target." - force = 75 - throwforce = 35 - block_chance = 75 - var/lastJudge = 0 - var/judgeCooldown = 150 - -/obj/item/hades_staff/imbued/attack(mob/living/carbon/human/M, mob/living/carbon/human/user) - if(!istype(M)) - return ..() - - if(world.time > lastJudge + judgeCooldown) - var/mob/living/sinPerson = M - lastJudge = world.time - var/sinPersonchoice = pick("Greed","Gluttony","Pride","Lust","Envy","Sloth","Wrath") - switch(sinPersonchoice) - if("Greed") - src.say("Your sin, [sinPerson], is Greed.") - if(prob(50)) - src.say("I will indulge your sin, [sinPerson].") - sin_Greed(sinPerson, TRUE) - else - src.say("Your sin will be punished, [sinPerson]!") - sin_Greed(sinPerson, FALSE) - if("Gluttony") - src.say("Your sin, [sinPerson], is Gluttony.") - if(prob(50)) - src.say("I will indulge your sin, [sinPerson].") - sin_Gluttony(sinPerson,TRUE) - else - src.say("Your sin will be punished, [sinPerson]!") - sin_Gluttony(sinPerson,FALSE) - if("Pride") - src.say("Your sin, [sinPerson], is Pride.") - if(prob(50)) - src.say("I will indulge your sin, [sinPerson].") - sin_Pride(sinPerson,TRUE) - else - src.say("Your sin will be punished, [sinPerson]!") - sin_Pride(sinPerson,FALSE) - if("Lust") - src.say("Your sin, [sinPerson], is Lust.") - if(prob(50)) - src.say("I will indulge your sin, [sinPerson].") - sin_Lust(sinPerson,TRUE) - else - src.say("Your sin will be punished, [sinPerson]!") - sin_Lust(sinPerson,TRUE) - if("Envy") - src.say("Your sin, [sinPerson], is Envy.") - if(prob(50)) - src.say("I will indulge your sin, [sinPerson].") - sin_Envy(sinPerson,TRUE) - else - src.say("Your sin will be punished, [sinPerson]!") - sin_Envy(sinPerson,FALSE) - if("Sloth") - src.say("Your sin, [sinPerson], is Sloth.") - if(prob(50)) - src.say("I will indulge your sin, [sinPerson].") - sin_Sloth(sinPerson,TRUE) - else - src.say("Your sin will be punished, [sinPerson]!") - sin_Sloth(sinPerson,FALSE) - if("Wrath") - src.say("Your sin, [sinPerson], is Wrath.") - if(prob(50)) - src.say("I will indulge your sin, [sinPerson].") - sin_Wrath(sinPerson,TRUE) - else - src.say("Your sin will be punished, [sinPerson]!") - sin_Wrath(sinPerson,FALSE) - else - ..() - user << "The [src] is still recharging." diff --git a/code/game/gamemodes/miniantags/readme.txt b/code/game/gamemodes/miniantags/readme.txt deleted file mode 100644 index dc7bd5a66f..0000000000 --- a/code/game/gamemodes/miniantags/readme.txt +++ /dev/null @@ -1,12 +0,0 @@ -This folder contains all "mini-antagonists" - antagonists that can still spice up the round but aren't enough to be a roundtype in their own right. -Currently, that list consists of: - -Abductors - -Borers - -Swarmers - -Prophets of sin - -The Jungle Fever virus (infected monkey bites human, human becomes another infected monkey) - -Morphs - -Sintouched crewmembers - -Slaughter demons - -Umbras (formerly revenants) -Please update this if you add another mini-antagonist. diff --git a/code/game/gamemodes/miniantags/monkey/monkey.dm b/code/game/gamemodes/monkey/monkey.dm similarity index 100% rename from code/game/gamemodes/miniantags/monkey/monkey.dm rename to code/game/gamemodes/monkey/monkey.dm diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index f131046cac..b5e1224cc8 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -52,7 +52,7 @@ return ..() /datum/game_mode/proc/are_operatives_dead() - for(var/datum/mind/operative_mind in get_antagonists(/datum/antagonist/nukeop)) + for(var/datum/mind/operative_mind in get_antag_minds(/datum/antagonist/nukeop)) if(ishuman(operative_mind.current) && (operative_mind.current.stat != DEAD)) return FALSE return TRUE @@ -154,7 +154,7 @@ W.implant(H) var/obj/item/implant/explosive/E = new/obj/item/implant/explosive(H) E.implant(H) - H.faction |= "syndicate" + H.faction |= ROLE_SYNDICATE H.update_icons() /datum/outfit/syndicate/full diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 4b147e9446..81e52c3511 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -687,7 +687,7 @@ GLOBAL_LIST_EMPTY(possible_items_special) if("Chief Medical Officer") department_string = "medical" - var/list/lings = get_antagonists(/datum/antagonist/changeling,TRUE) + var/list/lings = get_antag_minds(/datum/antagonist/changeling,TRUE) var/ling_count = lings.len for(var/datum/mind/M in SSticker.minds) @@ -715,7 +715,7 @@ GLOBAL_LIST_EMPTY(possible_items_special) //Needed heads is between min_lings and the maximum possible amount of command roles //So at the time of writing, rand(3,6), it's also capped by the amount of lings there are //Because you can't fill 6 head roles with 3 lings - var/list/lings = get_antagonists(/datum/antagonist/changeling,TRUE) + var/list/lings = get_antag_minds(/datum/antagonist/changeling,TRUE) var/needed_heads = rand(min_lings,GLOB.command_positions.len) needed_heads = min(lings.len,needed_heads) @@ -792,7 +792,7 @@ GLOBAL_LIST_EMPTY(possible_items_special) //Check each staff member has been replaced, by cross referencing changeling minds, changeling current dna, the staff minds and their original DNA names var/success = 0 changelings: - for(var/datum/mind/changeling in get_antagonists(/datum/antagonist/changeling,TRUE)) + for(var/datum/mind/changeling in get_antag_minds(/datum/antagonist/changeling,TRUE)) if(success >= department_minds.len) //We did it, stop here! return TRUE if(ishuman(changeling.current)) diff --git a/code/game/gamemodes/objective_team.dm b/code/game/gamemodes/objective_team.dm deleted file mode 100644 index 1483f356d2..0000000000 --- a/code/game/gamemodes/objective_team.dm +++ /dev/null @@ -1,34 +0,0 @@ -//A barebones antagonist team. -/datum/objective_team - var/list/datum/mind/members = list() - var/name = "team" - var/member_name = "member" - var/list/objectives = list() //common objectives, these won't be added or removed automatically, subtypes handle this, this is here for bookkeeping purposes. - -/datum/objective_team/New(starting_members) - . = ..() - if(starting_members) - if(islist(starting_members)) - for(var/datum/mind/M in starting_members) - add_member(M) - else - add_member(starting_members) - -/datum/objective_team/proc/is_solo() - return members.len == 1 - -/datum/objective_team/proc/add_member(datum/mind/new_member) - members |= new_member - -/datum/objective_team/proc/remove_member(datum/mind/member) - members -= member - -//Display members/victory/failure/objectives for the team -/datum/objective_team/proc/roundend_report() - var/list/report = list() - - report += "[name]:" - report += "The [member_name]s were:" - report += printplayerlist(members) - - return report.Join("
") \ No newline at end of file diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index ca2ce431b1..7409faa706 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -66,6 +66,10 @@ if(!exchange_blue) exchange_blue = -1 //Block latejoiners from getting exchange objectives ..() + + //We're not actually ready until all traitors are assigned. + gamemode_ready = FALSE + addtimer(VARSET_CALLBACK(src, gamemode_ready, TRUE), 101) return TRUE /datum/game_mode/traitor/make_antag_chance(mob/living/carbon/human/character) //Assigns traitor to latejoiners @@ -75,7 +79,7 @@ return if((SSticker.mode.traitors.len + pre_traitors.len) <= (traitorcap - 2) || prob(100 / (tsc * 2))) if(ROLE_TRAITOR in character.client.prefs.be_special) - if(!jobban_isbanned(character, ROLE_TRAITOR) && !jobban_isbanned(character, "Syndicate")) + if(!jobban_isbanned(character, ROLE_TRAITOR) && !jobban_isbanned(character, ROLE_SYNDICATE)) if(age_check(character.client)) if(!(character.job in restricted_jobs)) add_latejoin_traitor(character.mind) diff --git a/code/game/gamemodes/wizard/raginmages.dm b/code/game/gamemodes/wizard/raginmages.dm deleted file mode 100644 index 06ba9ec2b5..0000000000 --- a/code/game/gamemodes/wizard/raginmages.dm +++ /dev/null @@ -1,164 +0,0 @@ -/datum/game_mode/wizard/raginmages - name = "ragin' mages" - config_tag = "raginmages" - required_players = 20 - use_huds = 1 - announce_span = "userdanger" - announce_text = "There are many, many wizards attacking the station!\n\ - Wizards: Accomplish your objectives and cause utter catastrophe!\n\ - Crew: Try not to die..." - var/max_mages = 0 - var/making_mage = 0 - var/mages_made = 1 - var/time_checked = 0 - var/bullshit_mode = 0 // requested by hornygranny - var/time_check = 1500 - var/spawn_delay_min = 500 - var/spawn_delay_max = 700 - -/datum/game_mode/wizard/raginmages/post_setup() - ..() - var/playercount = 0 - if(!max_mages && !bullshit_mode) - for(var/mob/living/player in GLOB.mob_list) - if(player.client && player.stat != 2) - playercount += 1 - max_mages = round(playercount / 8) - if(max_mages > 20) - max_mages = 20 - if(max_mages < 1) - max_mages = 1 - if(bullshit_mode) - max_mages = INFINITY -/datum/game_mode/wizard/raginmages/greet_wizard(datum/mind/wizard, you_are=1) - if (you_are) - to_chat(wizard.current, "You are the Space Wizard!") - wizard.current.playsound_local('sound/ambience/antag/RagesMages.ogg',100,0) - to_chat(wizard.current, "The Space Wizards Federation has given you the following tasks:") - - var/obj_count = 1 - to_chat(wizard.current, "Objective Alpha: Make sure the station pays for its actions against our diplomats") - for(var/datum/objective/objective in wizard.objectives) - to_chat(wizard.current, "Objective #[obj_count]: [objective.explanation_text]") - obj_count++ - return - -/datum/game_mode/wizard/raginmages/check_finished() - var/wizards_alive = 0 - for(var/datum/mind/wizard in wizards) - if(!istype(wizard.current,/mob/living/carbon)) - continue - if(istype(wizard.current,/mob/living/brain)) - continue - if(wizard.current.stat==DEAD) - continue - if(wizard.current.stat==UNCONSCIOUS) - if(wizard.current.health < 0) - to_chat(wizard.current, "The Space Wizard Federation is upset with your performance and have terminated your employment.") - wizard.current.death() - continue - wizards_alive++ - if(!time_checked) - time_checked = world.time - if(bullshit_mode) - if(world.time > time_checked + time_check) - max_mages = INFINITY - time_checked = world.time - make_more_mages() - return ..() - if (wizards_alive) - if(world.time > time_checked + time_check && (mages_made < max_mages)) - time_checked = world.time - make_more_mages() - - else - if(mages_made >= max_mages) - finished = 1 - return ..() - else - make_more_mages() - return ..() - -/datum/game_mode/wizard/raginmages/proc/make_more_mages() - - if(making_mage) - return 0 - if(mages_made >= max_mages) - return 0 - making_mage = 1 - mages_made++ - var/list/mob/dead/observer/candidates = list() - var/mob/dead/observer/theghost = null - spawn(rand(spawn_delay_min, spawn_delay_max)) - message_admins("SWF is still pissed, sending another wizard - [max_mages - mages_made] left.") - for(var/mob/dead/observer/G in GLOB.player_list) - if(G.client && !G.client.holder && !G.client.is_afk() && (ROLE_WIZARD in G.client.prefs.be_special)) - if(!jobban_isbanned(G, ROLE_WIZARD) && !jobban_isbanned(G, "Syndicate")) - if(age_check(G.client)) - candidates += G - if(!candidates.len) - message_admins("No applicable ghosts for the next ragin' mage, asking ghosts instead.") - var/time_passed = world.time - for(var/mob/dead/observer/G in GLOB.player_list) - if(!jobban_isbanned(G, "wizard") && !jobban_isbanned(G, "Syndicate")) - if(age_check(G.client)) - spawn(0) - switch(alert(G, "Do you wish to be considered for the position of Space Wizard Foundation 'diplomat'?","Please answer in 30 seconds!","Yes","No")) - if("Yes") - if((world.time-time_passed)>300)//If more than 30 game seconds passed. - continue - candidates += G - if("No") - continue - - sleep(300) - if(!candidates.len) - message_admins("This is awkward, sleeping until another mage check...") - making_mage = 0 - mages_made-- - return - else - shuffle_inplace(candidates) - for(var/mob/i in candidates) - if(!i || !i.client) continue //Dont bother removing them from the list since we only grab one wizard - - theghost = i - break - - if(theghost) - var/mob/living/carbon/human/new_character= makeBody(theghost) - new_character.mind.make_Wizard() - making_mage = 0 - return 1 - -/datum/game_mode/wizard/raginmages/declare_completion() - if(finished) - SSticker.mode_result = "loss - wizard killed" - to_chat(world, "The crew has managed to hold off the wizard attack! The Space Wizards Federation has been taught a lesson they will not soon forget!") - ..(1) - -/datum/game_mode/wizard/raginmages/proc/makeBody(mob/dead/observer/G_found) // Uses stripped down and bastardized code from respawn character - if(!G_found || !G_found.key) - return - - //First we spawn a dude. - var/mob/living/carbon/human/new_character = new//The mob being spawned. - SSjob.SendToLateJoin(new_character) - - G_found.client.prefs.copy_to(new_character) - new_character.dna.update_dna_identity() - new_character.key = G_found.key - - return new_character - -/datum/game_mode/wizard/raginmages/bullshit - name = "very ragin' bullshit mages" - config_tag = "veryraginbullshitmages" - required_players = 20 - use_huds = 1 - bullshit_mode = 1 - time_check = 250 - spawn_delay_min = 50 - spawn_delay_max = 150 - announce_text = "CRAAAWLING IIIN MY SKIIIN\n\ - THESE WOOOUNDS THEY WIIIL NOT HEEEAL" diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index 0d9655ae8e..dd8dad331f 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -21,8 +21,8 @@ /datum/game_mode/wizard/pre_setup() var/datum/mind/wizard = pick(antag_candidates) wizards += wizard - wizard.assigned_role = "Wizard" - wizard.special_role = "Wizard" + wizard.assigned_role = ROLE_WIZARD + wizard.special_role = ROLE_WIZARD log_game("[wizard.key] (ckey) has been selected as a Wizard") //TODO: Move these to base antag datum if(GLOB.wizardstart.len == 0) to_chat(wizard.current, "A starting location for you could not be found, please report this bug!") diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index 97a41098f2..20a88382fa 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -93,7 +93,6 @@ Class Procs: max_integrity = 200 var/stat = 0 - var/emagged = FALSE var/use_power = IDLE_POWER_USE //0 = dont run the auto //1 = run auto, use idle @@ -505,4 +504,4 @@ Class Procs: #endif . = . % 9 AM.pixel_x = -8 + ((.%3)*8) - AM.pixel_y = -8 + (round( . / 3)*8) \ No newline at end of file + AM.pixel_y = -8 + (round( . / 3)*8) diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm index 84a18e3352..5226084b96 100644 --- a/code/game/machinery/announcement_system.dm +++ b/code/game/machinery/announcement_system.dm @@ -167,7 +167,7 @@ GLOBAL_LIST_EMPTY(announcement_systems) ..(severity) /obj/machinery/announcement_system/emag_act() - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED act_up() diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index 8a118b8d08..b98976d83c 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -17,8 +17,8 @@ resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF -/obj/machinery/button/New(loc, ndir = 0, built = 0) - ..() +/obj/machinery/button/Initialize(mapload, ndir = 0, built = 0) + . = ..() if(built) setDir(ndir) pixel_x = (dir & 3)? 0 : (dir == 4 ? -24 : 24) @@ -103,12 +103,12 @@ return ..() /obj/machinery/button/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return req_access = list() req_one_access = list() playsound(src, "sparks", 100, 1) - emagged = TRUE + obj_flags |= EMAGGED /obj/machinery/button/attack_ai(mob/user) if(!panel_open) diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index b216d1752f..a3ec023888 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -88,8 +88,8 @@ var/read_only = 0 //Well,it's still a floppy disk //Disk stuff. -/obj/item/disk/data/New() - ..() +/obj/item/disk/data/Initialize() + . = ..() icon_state = "datadisk[rand(0,6)]" add_overlay("datadisk_gene") @@ -437,14 +437,17 @@ H.setCloneLoss(CLONE_INITIAL_DAMAGE) //Yeah, clones start with very low health, not with random, because why would they start with random health H.setBrainLoss(CLONE_INITIAL_DAMAGE) // In addition to being cellularly damaged and having barely any + // brain function, they also have no limbs or internal organs. - var/static/list/zones = list("r_arm", "l_arm", "r_leg", "l_leg") - for(var/zone in zones) - var/obj/item/bodypart/BP = H.get_bodypart(zone) - if(BP) - BP.drop_limb() - BP.forceMove(src) - unattached_flesh += BP + + if(!NODISMEMBER in H.dna.species.species_traits) + var/static/list/zones = list("r_arm", "l_arm", "r_leg", "l_leg") + for(var/zone in zones) + var/obj/item/bodypart/BP = H.get_bodypart(zone) + if(BP) + BP.drop_limb() + BP.forceMove(src) + unattached_flesh += BP for(var/o in H.internal_organs) var/obj/item/organ/organ = o diff --git a/code/game/machinery/computer/apc_control.dm b/code/game/machinery/computer/apc_control.dm index 53de06254c..4d4f1cb71f 100644 --- a/code/game/machinery/computer/apc_control.dm +++ b/code/game/machinery/computer/apc_control.dm @@ -44,7 +44,7 @@ ..(user) /obj/machinery/computer/apc_control/proc/check_apc(obj/machinery/power/apc/APC) - return APC.z == z && !APC.malfhack && !APC.aidisabled && !APC.emagged && !APC.stat && !istype(APC.area, /area/ai_monitored) && !APC.area.outdoors + return APC.z == z && !APC.malfhack && !APC.aidisabled && !(APC.obj_flags & EMAGGED) && !APC.stat && !istype(APC.area, /area/ai_monitored) && !APC.area.outdoors /obj/machinery/computer/apc_control/interact(mob/living/user) var/dat @@ -71,7 +71,7 @@ [APC.aidisabled || APC.panel_open ? "APC does not respond to interface query." : "APC responds to interface query."]

" dat += "Check Logs
" dat += "Log Out
" - if(emagged) + if(obj_flags & EMAGGED) dat += "WARNING: Logging functionality partially disabled from outside source.
" dat += "Restore logging functionality?
" else @@ -80,7 +80,7 @@ dat += "[entry]
" else dat += "No activity has been recorded at this time.
" - if(emagged) + if(obj_flags & EMAGGED) dat += "@#%! CLEAR LOGS" dat += "Return" operator = user @@ -117,7 +117,7 @@ auth_id = "\[NULL\]" if(href_list["restore_logging"]) to_chat(usr, "[icon2html(src, usr)] Logging functionality restored from backup data.") - emagged = FALSE + obj_flags &= ~EMAGGED LAZYADD(logs, "-=- Logging restored to full functionality at this point -=-") if(href_list["access_apc"]) playsound(src, "terminal_type", 50, 0) @@ -193,15 +193,15 @@ interact(usr) //Refresh the UI after a filter changes /obj/machinery/computer/apc_control/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return user.visible_message("You emag [src], disabling precise logging and allowing you to clear logs.") log_game("[key_name(user)] emagged [src] at [get_area(src)], disabling operator tracking.") playsound(src, "sparks", 50, 1) - emagged = TRUE + obj_flags |= EMAGGED /obj/machinery/computer/apc_control/proc/log_activity(log_text) - var/op_string = operator && !emagged ? operator : "\[NULL OPERATOR\]" + var/op_string = operator && !(obj_flags & EMAGGED) ? operator : "\[NULL OPERATOR\]" LAZYADD(logs, "([worldtime2text()]) [op_string] [log_text]") /mob/proc/using_power_flow_console() diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 3a90e2d4f0..87abdd68da 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -45,6 +45,7 @@ /obj/item/grenade/chem_grenade/glitter/white = 1, /obj/item/toy/eightball = 2, /obj/item/toy/windupToolbox = 2, + /obj/item/toy/clockwork_watch = 2, /obj/item/extendohand/acme = 1) light_color = LIGHT_COLOR_GREEN @@ -213,9 +214,9 @@ gameover = FALSE turtle = 0 - if(emagged) + if(obj_flags & EMAGGED) Reset() - emagged = FALSE + obj_flags &= ~EMAGGED add_fingerprint(usr) updateUsrDialog() @@ -228,19 +229,19 @@ temp = "[enemy_name] has fallen! Rejoice!" playsound(loc, 'sound/arcade/win.ogg', 50, 1, extrarange = -3, falloff = 10) - if(emagged) + if(obj_flags & EMAGGED) new /obj/effect/spawner/newbomb/timer/syndicate(loc) new /obj/item/clothing/head/collectable/petehat(loc) message_admins("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded a bomb.") log_game("[key_name(usr)] has outbombed Cuban Pete and been awarded a bomb.") Reset() - emagged = FALSE + obj_flags &= ~EMAGGED else prizevend() - SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("win", (emagged ? "emagged":"normal"))) + SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("win", (obj_flags & EMAGGED ? "emagged":"normal"))) - else if (emagged && (turtle >= 4)) + else if ((obj_flags & EMAGGED) && (turtle >= 4)) var/boomamt = rand(5,10) temp = "[enemy_name] throws a bomb, exploding you for [boomamt] damage!" playsound(loc, 'sound/arcade/boom.ogg', 50, 1, extrarange = -3, falloff = 10) @@ -258,9 +259,9 @@ sleep(10) temp = "You have been drained! GAME OVER" playsound(loc, 'sound/arcade/lose.ogg', 50, 1, extrarange = -3, falloff = 10) - if(emagged) + if(obj_flags & EMAGGED) usr.gib() - SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("loss", "mana", (emagged ? "emagged":"normal"))) + SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("loss", "mana", (obj_flags & EMAGGED ? "emagged":"normal"))) else if ((enemy_hp <= 10) && (enemy_mp > 4)) temp = "[enemy_name] heals for 4 health!" @@ -278,16 +279,16 @@ gameover = TRUE temp = "You have been crushed! GAME OVER" playsound(loc, 'sound/arcade/lose.ogg', 50, 1, extrarange = -3, falloff = 10) - if(emagged) + if(obj_flags & EMAGGED) usr.gib() - SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("loss", "hp", (emagged ? "emagged":"normal"))) + SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("loss", "hp", (obj_flags & EMAGGED ? "emagged":"normal"))) blocked = FALSE return /obj/machinery/computer/arcade/battle/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return temp = "If you die in the game, you die for real!" player_hp = 30 @@ -297,7 +298,7 @@ gameover = FALSE blocked = FALSE - emagged = TRUE + obj_flags |= EMAGGED enemy_name = "Cuban Pete" name = "Outbomb Cuban Pete" @@ -416,21 +417,21 @@ else if(food <= 0) dat += "
You ran out of food and starved." - if(emagged) + if(obj_flags & EMAGGED) user.nutrition = 0 //yeah you pretty hongry to_chat(user, "Your body instantly contracts to that of one who has not eaten in months. Agonizing cramps seize you as you fall to the floor.") if(fuel <= 0) dat += "
You ran out of fuel, and drift, slowly, into a star." - if(emagged) + if(obj_flags & EMAGGED) var/mob/living/M = user M.adjust_fire_stacks(5) M.IgniteMob() //flew into a star, so you're on fire to_chat(user, "You feel an immense wave of heat emanate from the arcade machine. Your skin bursts into flames.") - if(emagged) + if(obj_flags & EMAGGED) to_chat(user, "You're never going to make it to Orion...") user.death() - emagged = FALSE //removes the emagged status after you lose + obj_flags &= ~EMAGGED //removes the emagged status after you lose gameStatus = ORION_STATUS_START name = "The Orion Trail" desc = "Learn how our ancestors got to Orion, and have fun in the process!" @@ -492,7 +493,7 @@ event = ORION_TRAIL_LING_ATTACK event() turns += 1 - if(emagged) + if(obj_flags & EMAGGED) var/mob/living/carbon/M = usr //for some vars switch(event) if(ORION_TRAIL_RAIDERS) @@ -606,7 +607,7 @@ if(prob(75)) event = ORION_TRAIL_BLACKHOLE event() - if(emagged) + if(obj_flags & EMAGGED) playsound(loc, 'sound/effects/supermatter.ogg', 100, 1) say("A miniature black hole suddenly appears in front of [src], devouring [usr] alive!") if(isliving(usr)) @@ -633,12 +634,12 @@ if(settlers.len == 0 || alive == 0) say("The last crewmember [sheriff], shot themselves, GAME OVER!") - if(emagged) + if(obj_flags & EMAGGED) usr.death(0) - emagged = FALSE + obj_flags &= EMAGGED gameStatus = ORION_STATUS_GAMEOVER event = null - else if(emagged) + else if(obj_flags & EMAGGED) if(usr.name == sheriff) say("The crew of the ship chose to kill [usr.name]!") usr.death(0) @@ -697,7 +698,7 @@ if(prob(success*5)) var/lost_crew = remove_crewmember() last_spaceport_action = "You failed to raid the spaceport! You lost [FU*-1] Fuel and [FO*-1] Food, AND [lost_crew] in your scramble to escape! ([FU]FI,[FO]FO,-Crew)" - if(emagged) + if(obj_flags & EMAGGED) say("WEEWOO! WEEWOO! Spaceport security en route!") playsound(src, 'sound/items/weeoo1.ogg', 100, FALSE) for(var/i, i<=3, i++) @@ -1025,24 +1026,24 @@ /obj/machinery/computer/arcade/orion_trail/proc/win() gameStatus = ORION_STATUS_START say("Congratulations, you made it to Orion!") - if(emagged) + if(obj_flags & EMAGGED) new /obj/item/orion_ship(loc) message_admins("[key_name_admin(usr)] made it to Orion on an emagged machine and got an explosive toy ship.") log_game("[key_name(usr)] made it to Orion on an emagged machine and got an explosive toy ship.") else prizevend() - emagged = FALSE + obj_flags &= ~EMAGGED name = "The Orion Trail" desc = "Learn how our ancestors got to Orion, and have fun in the process!" /obj/machinery/computer/arcade/orion_trail/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return to_chat(user, "You override the cheat code menu and skip to Cheat #[rand(1, 50)]: Realism Mode.") name = "The Orion Trail: Realism Edition" desc = "Learn how our ancestors got to Orion, and try not to die in the process!" newgame() - emagged = TRUE + obj_flags |= EMAGGED /mob/living/simple_animal/hostile/syndicate/ranged/orion name = "spaceport security" diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index 41f093a6d2..1cf95877dd 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -41,7 +41,7 @@ state = 0 return if(istype(P, /obj/item/circuitboard/computer) && !circuit) - if(!user.transferItemToLoc(P, null)) + if(!user.transferItemToLoc(P, src)) return playsound(src, 'sound/items/deconstruct.ogg', 50, 1) to_chat(user, "You place [P] inside the frame.") diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm index 96327383b3..26f40fc3d5 100644 --- a/code/game/machinery/computer/camera_advanced.dm +++ b/code/game/machinery/computer/camera_advanced.dm @@ -4,7 +4,7 @@ icon_screen = "cameras" icon_keyboard = "security_key" var/list/z_lock = list() // Lock use to these z levels - var/station_lock_override = FALSE + var/lock_override = NONE var/mob/camera/aiEye/remote/eyeobj var/mob/living/current_user = null var/list/networks = list("SS13") @@ -16,8 +16,15 @@ /obj/machinery/computer/camera_advanced/Initialize() . = ..() - if(station_lock_override) - z_lock = SSmapping.levels_by_trait(ZTRAIT_STATION) + if(lock_override) + if(lock_override & CAMERA_LOCK_STATION) + z_lock |= SSmapping.levels_by_trait(ZTRAIT_STATION) + if(lock_override & CAMERA_LOCK_MINING) + z_lock |= SSmapping.levels_by_trait(ZTRAIT_MINING) + if(lock_override & CAMERA_LOCK_CENTCOM) + z_lock |= SSmapping.levels_by_trait(ZTRAIT_CENTCOM) + if(lock_override & CAMERA_LOCK_REEBE) + z_lock |= SSmapping.levels_by_trait(ZTRAIT_REEBE) /obj/machinery/computer/camera_advanced/syndie icon_keyboard = "syndie_key" diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 944d8d5213..9d6596d39b 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -434,7 +434,7 @@ /obj/machinery/computer/cloning/proc/scan_occupant(occupant) var/mob/living/mob_occupant = get_mob_or_brainmob(occupant) var/datum/dna/dna - if(iscarbon(mob_occupant)) + if(ishuman(mob_occupant)) var/mob/living/carbon/C = mob_occupant dna = C.has_dna() if(isbrain(mob_occupant)) @@ -449,7 +449,7 @@ scantemp = "Subject's brain is not responding to scanning stimuli." playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0) return - if((mob_occupant.has_disability(DISABILITY_NOCLONE)) && (src.scanner.scan_level < 2)) + if((mob_occupant.has_trait(TRAIT_NOCLONE)) && (src.scanner.scan_level < 2)) scantemp = "Subject no longer contains the fundamental materials required to create a living clone." playsound(src, 'sound/machines/terminal_alert.ogg', 50, 0) return diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 8391052662..9a1210a74e 100755 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -82,7 +82,7 @@ if((20 in I.access)) authenticated = 2 playsound(src, 'sound/machines/terminal_on.ogg', 50, 0) - if(emagged) + if(obj_flags & EMAGGED) authenticated = 2 auth_id = "Unknown" to_chat(M, "[src] lets out a quiet alarm as its login is overriden.") @@ -136,13 +136,12 @@ if("crossserver") if(authenticated==2) - if(CM.lastTimeUsed + 600 > world.time) + if(!checkCCcooldown()) to_chat(usr, "Arrays recycling. Please stand by.") playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0) return - var/input = stripped_multiline_input(usr, "Please choose a message to transmit to allied stations. Please be aware that this process is very expensive, and abuse will lead to... termination.", "Send a message to an allied station.", "") - if(!input || !(usr in view(1,src))) + if(!input || !(usr in view(1,src)) || !checkCCcooldown()) return playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) send2otherserver("[station_name()]", input,"Comms_Console") @@ -297,7 +296,7 @@ // OMG SYNDICATE ...LETTERHEAD if("MessageSyndicate") - if((authenticated==2) && (emagged)) + if((authenticated==2) && (obj_flags & EMAGGED)) if(!checkCCcooldown()) to_chat(usr, "Arrays recycling. Please stand by.") playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0) @@ -315,7 +314,7 @@ if("RestoreBackup") to_chat(usr, "Backup routing data restored!") playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) - emagged = FALSE + obj_flags &= ~EMAGGED updateDialog() if("nukerequest") //When there's no other way @@ -421,9 +420,9 @@ return ..() /obj/machinery/computer/communications/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED if(authenticated == 1) authenticated = 2 to_chat(user, "You scramble the communication routing circuits!") @@ -485,7 +484,7 @@ dat += "
\[ Change Alert Level \]" dat += "
\[ Emergency Maintenance Access \]" dat += "
\[ Request Nuclear Authentication Codes \]" - if(!emagged) + if(!(obj_flags & EMAGGED)) dat += "
\[ Send Message to CentCom \]" else dat += "
\[ Send Message to \[UNKNOWN\] \]" diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm index 5bdd6a7b27..de0089d5c6 100644 --- a/code/game/machinery/computer/dna_console.dm +++ b/code/game/machinery/computer/dna_console.dm @@ -81,7 +81,7 @@ if(connected && connected.is_operational()) if(connected.occupant) //set occupant_status message viable_occupant = connected.occupant - if(viable_occupant.has_dna() && (!(RADIMMUNE in viable_occupant.dna.species.species_traits)) && (!(viable_occupant.has_disability(DISABILITY_NOCLONE)) || (connected.scan_level == 3))) //occupant is viable for dna modification + if(viable_occupant.has_dna() && (!(RADIMMUNE in viable_occupant.dna.species.species_traits)) && (!(viable_occupant.has_trait(TRAIT_NOCLONE)) || (connected.scan_level == 3))) //occupant is viable for dna modification occupant_status += "[viable_occupant.name] => " switch(viable_occupant.stat) if(CONSCIOUS) @@ -528,7 +528,7 @@ var/mob/living/carbon/viable_occupant = null if(connected) viable_occupant = connected.occupant - if(!istype(viable_occupant) || !viable_occupant.dna || (RADIMMUNE in viable_occupant.dna.species.species_traits) || (viable_occupant.has_disability(DISABILITY_NOCLONE))) + if(!istype(viable_occupant) || !viable_occupant.dna || (RADIMMUNE in viable_occupant.dna.species.species_traits) || (viable_occupant.has_trait(TRAIT_NOCLONE))) viable_occupant = null return viable_occupant diff --git a/code/game/machinery/computer/launchpad_control.dm b/code/game/machinery/computer/launchpad_control.dm index 35fcb20bcc..7408373220 100644 --- a/code/game/machinery/computer/launchpad_control.dm +++ b/code/game/machinery/computer/launchpad_control.dm @@ -51,7 +51,7 @@ /obj/machinery/computer/launchpad/interact(mob/user) var/list/t = list() if(!LAZYLEN(launchpads)) - in_use = FALSE //Yeah so if you deconstruct teleporter while its in the process of shooting it wont disable the console + obj_flags &= ~IN_USE //Yeah so if you deconstruct teleporter while its in the process of shooting it wont disable the console t += "
No launchpad located.

" else for(var/i in 1 to LAZYLEN(launchpads)) diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm deleted file mode 100644 index a3ec6ba6ec..0000000000 --- a/code/game/machinery/computer/message.dm +++ /dev/null @@ -1,468 +0,0 @@ -// Allows you to monitor messages that passes the server. - - - - -/obj/machinery/computer/message_monitor - name = "message monitor console" - desc = "Used to Monitor the crew's messages, that are sent via PDA. Can also be used to view Request Console messages." - icon_screen = "comm_logs" - circuit = /obj/item/circuitboard/computer/message_monitor - //Server linked to. - var/obj/machinery/message_server/linkedServer = null - //Sparks effect - For emag - var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread - //Messages - Saves me time if I want to change something. - var/noserver = "ALERT: No server detected." - var/incorrectkey = "ALERT: Incorrect decryption key!" - var/defaultmsg = "Welcome. Please select an option." - var/rebootmsg = "%$&(�: Critical %$$@ Error // !RestArting! - ?pLeaSe wAit!" - //Computer properties - var/screen = 0 // 0 = Main menu, 1 = Message Logs, 2 = Hacked screen, 3 = Custom Message - var/hacking = 0 // Is it being hacked into by the AI/Cyborg - var/message = "System bootup complete. Please select an option." // The message that shows on the main menu. - var/auth = 0 // Are they authenticated? - var/optioncount = 7 - // Custom Message Properties - var/customsender = "System Administrator" - var/obj/item/device/pda/customrecepient = null - var/customjob = "Admin" - var/custommessage = "This is a test, please ignore." - - light_color = LIGHT_COLOR_GREEN - -/obj/machinery/computer/message_monitor/attackby(obj/item/O, mob/living/user, params) - if(istype(O, /obj/item/screwdriver) && emagged) - //Stops people from just unscrewing the monitor and putting it back to get the console working again. - to_chat(user, "It is too hot to mess with!") - else - return ..() - -/obj/machinery/computer/message_monitor/emag_act(mob/user) - if(emagged) - return - if(!isnull(src.linkedServer)) - emagged = TRUE - screen = 2 - spark_system.set_up(5, 0, src) - src.spark_system.start() - var/obj/item/paper/monitorkey/MK = new(loc) - // Will help make emagging the console not so easy to get away with. - MK.info += "

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

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

" - else - dat += "

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

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

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

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

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

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

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

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

Daily Key Reset


The new message monitor key is '[server.decryptkey]'.
Please keep this a secret and away from the clown.
If necessary, change the password to a more secure one." - info_links = info - add_overlay("paper_words") - break diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 7e73ef0c64..c17c251487 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -199,8 +199,10 @@ Mental Status: [active1.fields["m_stat"]] 

+ Print photo
Update front photo

+ Print photo
Update side photo
"} else @@ -261,7 +263,8 @@ else dat += "Security Record Lost!
" dat += "New Security Record

" - dat += "Delete Record (ALL)
Print Record
Print Wanted Poster
Back
" + dat += "Delete Record (ALL)
Print Record
Print Wanted Poster
Back

" + dat += "{Log Out}" else else dat += "{Log In}" @@ -609,6 +612,11 @@ What a mess.*/ if(photo) qdel(active1.fields["photo_front"]) active1.fields["photo_front"] = photo + if("print_photo_front") + if(active1.fields["photo_front"]) + if(istype(active1.fields["photo_front"], /obj/item/photo)) + var/obj/item/photo/P = active1.fields["photo_front"] + print_photo(P.img, active1.fields["name"]) if("show_photo_side") if(active1.fields["photo_side"]) if(istype(active1.fields["photo_side"], /obj/item/photo)) @@ -619,6 +627,11 @@ What a mess.*/ if(photo) qdel(active1.fields["photo_side"]) active1.fields["photo_side"] = photo + if("print_photo_side") + if(active1.fields["photo_side"]) + if(istype(active1.fields["photo_side"], /obj/item/photo)) + var/obj/item/photo/P = active1.fields["photo_side"] + print_photo(P.img, active1.fields["name"]) if("mi_crim_add") if(istype(active1, /datum/data/record)) var/t1 = stripped_input(usr, "Please input minor crime names:", "Secure. records", "", null) @@ -739,6 +752,23 @@ What a mess.*/ P = user.get_active_held_item() return P +/obj/machinery/computer/secure_data/proc/print_photo(icon/temp, name) + if (printing) + return + printing = TRUE + sleep(20) + var/obj/item/photo/P = new/obj/item/photo(drop_location()) + var/icon/small_img = icon(temp) + var/icon/ic = icon('icons/obj/items_and_weapons.dmi',"photo") + small_img.Scale(8, 8) + ic.Blend(small_img,ICON_OVERLAY, 13, 13) + P.icon = ic + P.img = temp + P.desc = "The photo on file for [name]." + P.pixel_x = rand(-10, 10) + P.pixel_y = rand(-10, 10) + printing = FALSE + /obj/machinery/computer/secure_data/emp_act(severity) if(stat & (BROKEN|NOPOWER)) ..(severity) diff --git a/code/game/machinery/computer/telecrystalconsoles.dm b/code/game/machinery/computer/telecrystalconsoles.dm index 08210bf706..283232f991 100644 --- a/code/game/machinery/computer/telecrystalconsoles.dm +++ b/code/game/machinery/computer/telecrystalconsoles.dm @@ -154,7 +154,7 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E /obj/machinery/computer/telecrystals/boss/proc/getDangerous()//This scales the TC assigned with the round population. ..() - var/list/nukeops = get_antagonists(/datum/antagonist/nukeop) + var/list/nukeops = get_antag_minds(/datum/antagonist/nukeop) var/danger = GLOB.joined_player_list.len - nukeops.len danger = CEILING(danger, 10) scaleTC(danger) diff --git a/code/game/machinery/dance_machine.dm b/code/game/machinery/dance_machine.dm index 53b1f88fb8..ea9eae906a 100644 --- a/code/game/machinery/dance_machine.dm +++ b/code/game/machinery/dance_machine.dm @@ -115,6 +115,7 @@ dat += "Gunshot" dat += "Esword" dat += "Harm Alarm" + dat += "Yeehaw" var/datum/browser/popup = new(user, "vending", "Radiance Dance Machine - Mark IV", 400, 350) popup.set_content(dat.Join()) popup.open() @@ -171,6 +172,8 @@ deejay('sound/weapons/saberon.ogg') if("harm") deejay('sound/ai/harmalarm.ogg') + if("yeehaw") + deejay('sound/misc/Yeehaw.ogg') /obj/machinery/disco/proc/deejay(var/S) if (QDELETED(src) || !active || charge < 5) diff --git a/code/game/machinery/defibrillator_mount.dm b/code/game/machinery/defibrillator_mount.dm new file mode 100644 index 0000000000..c0a993f8e5 --- /dev/null +++ b/code/game/machinery/defibrillator_mount.dm @@ -0,0 +1,148 @@ +//Holds defibs and recharges them from the powernet +//You can activate the mount with an empty hand to grab the paddles +//Not being adjacent will cause the paddles to snap back +/obj/machinery/defibrillator_mount + name = "defibrillator mount" + desc = "Holds and recharges defibrillators. You can grab the paddles if one is mounted." + icon = 'icons/obj/machines/defib_mount.dmi' + icon_state = "defibrillator_mount" + density = FALSE + anchored = TRUE + use_power = IDLE_POWER_USE + idle_power_usage = 1 + power_channel = EQUIP + speed_process = TRUE //GAS GAS GAS + req_one_access = list(ACCESS_MEDICAL, ACCESS_HEADS, ACCESS_SECURITY) //used to control clamps + var/obj/item/defibrillator/defib //this mount's defibrillator + var/clamps_locked = FALSE //if true, and a defib is loaded, it can't be removed without unlocking the clamps + +/obj/machinery/defibrillator_mount/loaded/Initialize() //loaded subtype for mapping use + . = ..() + defib = new/obj/item/defibrillator/loaded(src) + +/obj/machinery/defibrillator_mount/Destroy() + if(defib) + QDEL_NULL(defib) + . = ..() + +/obj/machinery/defibrillator_mount/examine(mob/user) + ..() + if(defib) + to_chat(user, "There is a defib unit hooked up. Alt-click to remove it.") + if(GLOB.security_level >= SEC_LEVEL_RED) + to_chat(user, "Due to a security situation, its locking clamps can be toggled by swiping any ID.") + else + to_chat(user, "Its locking clamps can be [clamps_locked ? "dis" : ""]engaged by swiping an ID with access.") + +/obj/machinery/defibrillator_mount/process() + if(defib && defib.cell && defib.cell.charge < defib.cell.maxcharge) + use_power(20) + defib.cell.give(18) //90% efficiency, slightly better than the cell charger's 87.5% + if(isliving(defib.paddles.loc)) + var/mob/living/L = defib.paddles.loc + if(!L.Adjacent(src)) + to_chat(L, "[defib]'s paddles overextend and come out of your hands!") + L.dropItemToGround(defib.paddles) + update_icon() + +/obj/machinery/defibrillator_mount/update_icon() + cut_overlays() + if(defib) + add_overlay("defib") + if(defib.powered) + add_overlay(defib.safety ? "online" : "emagged") + var/ratio = defib.cell.charge / defib.cell.maxcharge + ratio = CEILING(ratio * 4, 1) * 25 + add_overlay("charge[ratio]") + if(clamps_locked) + add_overlay("clamps") + +/obj/machinery/defibrillator_mount/get_cell() + if(defib) + return defib.get_cell() + +//defib interaction +/obj/machinery/defibrillator_mount/attack_hand(mob/living/user) + if(!defib) + to_chat(user, "There's no defibrillator unit loaded!") + return + if(defib.on) + to_chat(user, "[defib.paddles.loc == user ? "You are already" : "Someone else is"] holding [defib]'s paddles!") + return + defib.attack_hand(user) + +/obj/machinery/defibrillator_mount/attackby(obj/item/I, mob/living/user, params) + if(istype(I, /obj/item/defibrillator)) + if(defib) + to_chat(user, "There's already a defibrillator in [src]!") + return + if(I.flags_1 & NODROP_1 || !user.transferItemToLoc(I, src)) + to_chat(user, "[I] is stuck to your hand!") + return + user.visible_message("[user] hooks up [I] to [src]!", \ + "You press [I] into the mount, and it clicks into place.") + playsound(src, 'sound/machines/click.ogg', 50, TRUE) + defib = I + update_icon() + return + var/obj/item/card/id = I.GetID() + if(id) + if(check_access(id) || GLOB.security_level >= SEC_LEVEL_RED) //anyone can toggle the clamps in red alert! + if(!defib) + to_chat(user, "You can't engage the clamps on a defibrillator that isn't there.") + return + clamps_locked = !clamps_locked + to_chat(user, "Clamps [clamps_locked ? "" : "dis"]engaged.") + update_icon() + else + to_chat(user, "Insufficient access.") + return + ..() + +/obj/machinery/defibrillator_mount/multitool_act(mob/living/user, obj/item/multitool) + if(!defib) + to_chat(user, "There isn't any defibrillator to clamp in!") + return TRUE + if(!clamps_locked) + to_chat(user, "[src]'s clamps are disengaged!") + return TRUE + user.visible_message("[user] presses [multitool] into [src]'s ID slot...", \ + "You begin overriding the clamps on [src]...") + playsound(src, 'sound/machines/click.ogg', 50, TRUE) + if(!do_after(user, 100, target = src) || !clamps_locked) + return + user.visible_message("[user] pulses [multitool], and [src]'s clamps slide up.", \ + "You override the locking clamps on [src]!") + playsound(src, 'sound/machines/locktoggle.ogg', 50, TRUE) + clamps_locked = FALSE + update_icon() + return TRUE + +/obj/machinery/defibrillator_mount/AltClick(mob/living/user) + if(!user.Adjacent(src) || !istype(user)) + return + if(!defib) + to_chat(user, "It'd be hard to remove a defib unit from a mount that has none.") + return + if(clamps_locked) + to_chat(user, "You try to tug out [defib], but the mount's clamps are locked tight!") + return + if(!user.put_in_hands(defib)) + to_chat(user, "You need a free hand!") + return + user.visible_message("[user] unhooks [defib] from [src].", \ + "You slide out [defib] from [src] and unhook the charging cables.") + playsound(src, 'sound/items/deconstruct.ogg', 50, TRUE) + defib = null + update_icon() + +//wallframe, for attaching the mounts easily +/obj/item/wallframe/defib_mount + name = "unhooked defibrillator mount" + desc = "A frame for a defibrillator mount. It can't be removed once it's placed." + icon = 'icons/obj/machines/defib_mount.dmi' + icon_state = "defibrillator_mount" + materials = list(MAT_METAL = 300, MAT_GLASS = 100) + w_class = WEIGHT_CLASS_BULKY + result_path = /obj/machinery/defibrillator_mount + pixel_shift = -28 diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index b9a2a68b34..a25e1edb21 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -96,8 +96,8 @@ var/deploy_message = TRUE -/obj/structure/barricade/security/New() - ..() +/obj/structure/barricade/security/Initialize() + . = ..() addtimer(CALLBACK(src, .proc/deploy), deploy_time) /obj/structure/barricade/security/proc/deploy() diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm index 343dd69cb2..43644286e5 100644 --- a/code/game/machinery/dna_scanner.dm +++ b/code/game/machinery/dna_scanner.dm @@ -100,7 +100,7 @@ var/mob/living/mob_occupant = get_mob_or_brainmob(occupant) if(istype(mob_occupant)) if(locate_computer(/obj/machinery/computer/cloning)) - if(!mob_occupant.suiciding && !(mob_occupant.has_disability(DISABILITY_NOCLONE)) && !mob_occupant.hellbound) + if(!mob_occupant.suiciding && !(mob_occupant.has_trait(TRAIT_NOCLONE)) && !mob_occupant.hellbound) mob_occupant.notify_ghost_cloning("Your corpse has been placed into a cloning scanner. Re-enter your corpse if you want to be cloned!", source = src) // DNA manipulators cannot operate on severed heads or brains diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 8a41e019aa..325adb30b7 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -34,7 +34,7 @@ #define AIRLOCK_INTEGRITY_N 300 // Normal airlock integrity #define AIRLOCK_INTEGRITY_MULTIPLIER 1.5 // How much reinforced doors health increases -#define AIRLOCK_DAMAGE_DEFLECTION_N 20 // Normal airlock damage deflection // CIT CHANGE - CHANGES DEFAULT AIRLOCK DEFLECTION FROM 21 TO 20 +#define AIRLOCK_DAMAGE_DEFLECTION_N 21 // Normal airlock damage deflection #define AIRLOCK_DAMAGE_DEFLECTION_R 30 // Reinforced airlock damage deflection #define NOT_ELECTRIFIED 0 @@ -208,19 +208,22 @@ /obj/machinery/door/airlock/narsie_act() var/turf/T = get_turf(src) - var/runed = prob(20) var/obj/machinery/door/airlock/cult/A - if(glass) - if(runed) - A = new/obj/machinery/door/airlock/cult/glass(T) + if(GLOB.cult_narsie) + var/runed = prob(20) + if(glass) + if(runed) + A = new/obj/machinery/door/airlock/cult/glass(T) + else + A = new/obj/machinery/door/airlock/cult/unruned/glass(T) else - A = new/obj/machinery/door/airlock/cult/unruned/glass(T) + if(runed) + A = new/obj/machinery/door/airlock/cult(T) + else + A = new/obj/machinery/door/airlock/cult/unruned(T) + A.name = name else - if(runed) - A = new/obj/machinery/door/airlock/cult(T) - else - A = new/obj/machinery/door/airlock/cult/unruned(T) - A.name = name + A = new /obj/machinery/door/airlock/cult/weak(T) qdel(src) /obj/machinery/door/airlock/ratvar_act() //Airlocks become pinion airlocks that only allow servants @@ -569,7 +572,7 @@ /obj/machinery/door/airlock/examine(mob/user) ..() - if(emagged) + if(obj_flags & EMAGGED) to_chat(user, "Its access panel is smoking slightly.") if(charge && !panel_open && in_range(user, src)) to_chat(user, "The maintenance panel seems haphazardly fastened.") @@ -611,7 +614,7 @@ return else to_chat(user, "Airlock AI control has been blocked with a firewall. Unable to hack.") - if(emagged) + if(obj_flags & EMAGGED) to_chat(user, "Unable to interface: Airlock is unresponsive.") return if(detonated) @@ -683,7 +686,7 @@ if(ishuman(user) && prob(40) && src.density) var/mob/living/carbon/human/H = user - if((H.has_disability(DISABILITY_DUMB)) && Adjacent(user)) + if((H.has_trait(TRAIT_DUMB)) && Adjacent(user)) playsound(src.loc, 'sound/effects/bang.ogg', 25, 1) if(!istype(H.head, /obj/item/clothing/head/helmet)) H.visible_message("[user] headbutts the airlock.", \ @@ -899,7 +902,7 @@ if(!panel_open || security_level) to_chat(user, "The maintenance panel must be open to apply [C]!") return - if(emagged) + if(obj_flags & EMAGGED) return if(charge && !detonated) to_chat(user, "There's already a charge hooked up to this door!") @@ -979,7 +982,7 @@ charge.forceMove(get_turf(user)) charge = null return - if(beingcrowbarred && panel_open && (emagged || (density && welded && !operating && !hasPower() && !locked))) + if(beingcrowbarred && panel_open && ((obj_flags & EMAGGED) || (density && welded && !operating && !hasPower() && !locked))) playsound(src.loc, I.usesound, 100, 1) user.visible_message("[user] removes the electronics from the airlock assembly.", \ "You start to remove electronics from the airlock assembly...") @@ -1050,7 +1053,7 @@ H.apply_damage(40, BRUTE, "chest") return if(forced < 2) - if(emagged) + if(obj_flags & EMAGGED) return FALSE use_power(50) playsound(src.loc, doorOpen, 30, 1) @@ -1099,7 +1102,7 @@ return if(forced < 2) - if(emagged) + if(obj_flags & EMAGGED) return use_power(50) playsound(src.loc, doorClose, 30, 1) @@ -1135,7 +1138,7 @@ return TRUE /obj/machinery/door/airlock/proc/prison_open() - if(emagged) + if(obj_flags & EMAGGED) return locked = FALSE src.open() @@ -1224,7 +1227,7 @@ return !density || (check_access(ID) && !locked && hasPower()) /obj/machinery/door/airlock/emag_act(mob/user) - if(!operating && density && hasPower() && !emagged) + if(!operating && density && hasPower() && !(obj_flags & EMAGGED)) operating = TRUE update_icon(AIRLOCK_EMAG, 1) sleep(6) @@ -1233,7 +1236,7 @@ operating = FALSE if(!open()) update_icon(AIRLOCK_CLOSED, 1) - emagged = TRUE + obj_flags |= EMAGGED lights = FALSE locked = TRUE loseMainPower() @@ -1323,7 +1326,7 @@ if(!disassembled) if(A) A.obj_integrity = A.max_integrity * 0.5 - else if(emagged) + else if(obj_flags & EMAGGED) if(user) to_chat(user, "You discard the damaged electronics.") else diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index c0ebce67b0..2874e6bf1b 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -406,6 +406,7 @@ hackProof = TRUE aiControlDisabled = TRUE req_access = list(ACCESS_BLOODCULT) + damage_deflection = 10 var/openingoverlaytype = /obj/effect/temp_visual/cult/door var/friendly = FALSE @@ -435,6 +436,9 @@ /obj/machinery/door/airlock/cult/narsie_act() return +/obj/machinery/door/airlock/cult/emp_act(severity) + return + /obj/machinery/door/airlock/cult/friendly friendly = TRUE @@ -461,6 +465,13 @@ /obj/machinery/door/airlock/cult/unruned/glass/friendly friendly = TRUE +/obj/machinery/door/airlock/cult/weak + name = "brittle cult airlock" + desc = "An airlock hastily corrupted by blood magic, it is unusually brittle in this state." + normal_integrity = 180 + damage_deflection = 5 + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) + //Pinion airlocks: Clockwork doors that only let servants of Ratvar through. /obj/machinery/door/airlock/clockwork name = "pinion airlock" diff --git a/code/game/machinery/doors/alarmlock.dm b/code/game/machinery/doors/alarmlock.dm index a75d47b345..cf46e6b0fd 100644 --- a/code/game/machinery/doors/alarmlock.dm +++ b/code/game/machinery/doors/alarmlock.dm @@ -10,8 +10,8 @@ var/air_frequency = FREQ_ATMOS_ALARMS autoclose = FALSE -/obj/machinery/door/airlock/alarmlock/New() - ..() +/obj/machinery/door/airlock/alarmlock/Initialize() + . = ..() air_connection = new /obj/machinery/door/airlock/alarmlock/Destroy() diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index bf3baf8b6f..3f0d28705a 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -38,8 +38,8 @@ maptext_height = 26 maptext_width = 32 -/obj/machinery/door_timer/New() - ..() +/obj/machinery/door_timer/Initialize() + . = ..() Radio = new/obj/item/device/radio(src) Radio.listening = 0 diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 4dc4d6887b..25ff6c0ce1 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -53,8 +53,8 @@ return TRUE return ..() -/obj/machinery/door/New() - ..() +/obj/machinery/door/Initialize() + . = ..() if(density) layer = CLOSED_DOOR_LAYER //Above most items if closed else @@ -80,7 +80,7 @@ return ..() /obj/machinery/door/CollidedWith(atom/movable/AM) - if(operating || emagged) + if(operating || (obj_flags & EMAGGED)) return if(ismob(AM)) var/mob/B = AM @@ -127,7 +127,7 @@ if(!src.requiresID()) user = null - if(density && !emagged) + if(density && !(obj_flags & EMAGGED)) if(allowed(user)) open() else @@ -149,7 +149,7 @@ /obj/machinery/door/proc/try_to_activate_door(mob/user) add_fingerprint(user) - if(operating || emagged) + if(operating || (obj_flags & EMAGGED)) return if(!requiresID()) user = null //so allowed(user) always succeeds diff --git a/code/game/machinery/doors/passworddoor.dm b/code/game/machinery/doors/passworddoor.dm new file mode 100644 index 0000000000..7f4137d165 --- /dev/null +++ b/code/game/machinery/doors/passworddoor.dm @@ -0,0 +1,72 @@ +/obj/machinery/door/password + name = "door" + desc = "This door only opens when provided a password." + icon = 'icons/obj/doors/blastdoor.dmi' + icon_state = "closed" + explosion_block = 3 + heat_proof = TRUE + max_integrity = 600 + armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100) + resistance_flags = INDESTRUCTIBLE | FIRE_PROOF | ACID_PROOF | LAVA_PROOF + damage_deflection = 70 + var/password = "Swordfish" + var/interaction_activated = TRUE //use the door to enter the password + var/voice_activated = FALSE //Say the password nearby to open the door. + +/obj/machinery/door/password/voice + voice_activated = TRUE + + +/obj/machinery/door/password/Initialize(mapload) + . = ..() + if(voice_activated) + flags_1 |= HEAR_1 + +/obj/machinery/door/password/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode) + if(!density || !voice_activated || radio_freq) + return + if(findtext(raw_message,password)) + open() + +/obj/machinery/door/password/CollidedWith(atom/movable/AM) + return !density && ..() + +/obj/machinery/door/password/try_to_activate_door(mob/user) + add_fingerprint(user) + if(operating) + return + if(density) + if(ask_for_pass(user)) + open() + else + do_animate("deny") + +/obj/machinery/door/password/update_icon() + if(density) + icon_state = "closed" + else + icon_state = "open" + +/obj/machinery/door/password/do_animate(animation) + switch(animation) + if("opening") + flick("opening", src) + playsound(src, 'sound/machines/blastdoor.ogg', 30, 1) + if("closing") + flick("closing", src) + playsound(src, 'sound/machines/blastdoor.ogg', 30, 1) + if("deny") + //Deny animation would be nice to have. + playsound(src, 'sound/machines/buzz-sigh.ogg', 30, 1) + +/obj/machinery/door/password/proc/ask_for_pass(mob/user) + var/guess = stripped_input(user,"Enter the password:", "Password", "") + if(guess == password) + return TRUE + return FALSE + +/obj/machinery/door/password/emp_act(severity) + return + +/obj/machinery/door/password/ex_act(severity, target) + return \ No newline at end of file diff --git a/code/game/machinery/doors/shutters.dm b/code/game/machinery/doors/shutters.dm index 77267a49a4..5f9bb39dae 100644 --- a/code/game/machinery/doors/shutters.dm +++ b/code/game/machinery/doors/shutters.dm @@ -14,9 +14,9 @@ //shutters look like ass with things on top of them. -/obj/machinery/door/poddoor/shutters/New() - ..() - layer = CLOSED_DOOR_LAYER //to handle /obj/machinery/door/New() resetting the layer. +/obj/machinery/door/poddoor/shutters/Initialize() + . = ..() + layer = CLOSED_DOOR_LAYER //to handle /obj/machinery/door/Initialize() resetting the layer. /obj/machinery/door/poddoor/shutters/open(ignorepower = 0) diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index bd1a553863..1969b1cb16 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -21,8 +21,8 @@ var/cable = 2 var/list/debris = list() -/obj/machinery/door/window/New(loc, set_dir) - ..() +/obj/machinery/door/window/Initialize(mapload, set_dir) + . = ..() if(set_dir) setDir(set_dir) if(src.req_access && src.req_access.len) @@ -132,7 +132,7 @@ if(!hasPower()) return 0 if(forced < 2) - if(emagged) + if(obj_flags & EMAGGED) return 0 if(!src.operating) //in case of emag operating = TRUE @@ -157,7 +157,7 @@ if(!hasPower()) return 0 if(forced < 2) - if(emagged) + if(obj_flags & EMAGGED) return 0 operating = TRUE do_animate("closing") @@ -206,8 +206,8 @@ return src.attack_hand(user) /obj/machinery/door/window/emag_act(mob/user) - if(!operating && density && !emagged) - emagged = TRUE + if(!operating && density && !(obj_flags & EMAGGED)) + obj_flags |= EMAGGED operating = TRUE flick("[src.base_state]spark", src) playsound(src, "sparks", 75, 1) @@ -258,7 +258,7 @@ WA.update_icon() WA.created_name = src.name - if(emagged) + if(obj_flags & EMAGGED) to_chat(user, "You discard the damaged electronics.") qdel(src) return @@ -329,8 +329,8 @@ resistance_flags = FIRE_PROOF | ACID_PROOF var/made_glow = FALSE -/obj/machinery/door/window/clockwork/New(loc, set_dir) - ..() +/obj/machinery/door/window/clockwork/Initialize(mapload, set_dir) + . = ..() for(var/i in 1 to 2) debris += new/obj/item/clockwork/alloy_shards/medium/gear_bit/large(src) change_construction_value(2) diff --git a/code/game/machinery/embedded_controller/access_controller.dm b/code/game/machinery/embedded_controller/access_controller.dm index e243494f2b..d881d9e223 100644 --- a/code/game/machinery/embedded_controller/access_controller.dm +++ b/code/game/machinery/embedded_controller/access_controller.dm @@ -27,9 +27,9 @@ findObjsByTag() /obj/machinery/doorButtons/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED req_access = list() req_one_access = list() playsound(src, "sparks", 100, 1) @@ -315,4 +315,4 @@ #undef OPENING #undef CYCLE #undef CYCLE_EXTERIOR -#undef CYCLE_INTERIOR \ No newline at end of file +#undef CYCLE_INTERIOR diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index 5a306cac50..583a229937 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -30,8 +30,8 @@ var/last_alarm = 0 var/area/myarea = null -/obj/machinery/firealarm/New(loc, dir, building) - ..() +/obj/machinery/firealarm/Initialize(mapload, dir, building) + . = ..() if(dir) src.setDir(dir) if(building) @@ -86,16 +86,16 @@ ..() /obj/machinery/firealarm/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED if(user) user.visible_message("Sparks fly out of [src]!", "You emag [src], disabling its thermal sensors.") playsound(src, "sparks", 50, 1) /obj/machinery/firealarm/temperature_expose(datum/gas_mixture/air, temperature, volume) - if((temperature > T0C + 200 || temperature < BODYTEMP_COLD_DAMAGE_LIMIT) && (last_alarm+FIREALARM_COOLDOWN < world.time) && !emagged && detecting && !stat) + if((temperature > T0C + 200 || temperature < BODYTEMP_COLD_DAMAGE_LIMIT) && (last_alarm+FIREALARM_COOLDOWN < world.time) && !(obj_flags & EMAGGED) && detecting && !stat) alarm() ..() @@ -122,7 +122,7 @@ /obj/machinery/firealarm/ui_data(mob/user) var/list/data = list() - data["emagged"] = emagged + data["emagged"] = obj_flags & EMAGGED ? 1 : 0 if(is_station_level(z)) data["seclevel"] = get_security_level() diff --git a/code/game/machinery/gulag_item_reclaimer.dm b/code/game/machinery/gulag_item_reclaimer.dm index 7de077c016..628071bd21 100644 --- a/code/game/machinery/gulag_item_reclaimer.dm +++ b/code/game/machinery/gulag_item_reclaimer.dm @@ -25,10 +25,10 @@ return ..() /obj/machinery/gulag_item_reclaimer/emag_act(mob/user) - if(emagged) // emagging lets anyone reclaim all the items + if(obj_flags & EMAGGED) // emagging lets anyone reclaim all the items return req_access = list() - emagged = TRUE + obj_flags |= EMAGGED /obj/machinery/gulag_item_reclaimer/attackby(obj/item/I, mob/user) if(istype(I, /obj/item/card/id/prisoner)) @@ -103,4 +103,4 @@ var/obj/item/W = i stored_items[user] -= W W.forceMove(get_turf(src)) - stored_items -= user \ No newline at end of file + stored_items -= user diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 10a552564b..d73f7c23b4 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -41,7 +41,8 @@ Possible to do for anyone motivated enough: max_integrity = 300 armor = list(melee = 50, bullet = 20, laser = 20, energy = 20, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 0) circuit = /obj/item/circuitboard/machine/holopad - var/list/masters = list()//List of living mobs that use the holopad + var/list/masters //List of living mobs that use the holopad + var/list/holorays //Holoray-mob link. var/last_request = 0 //to prevent request spam. ~Carn var/holo_range = 5 // Change to change how far the AI can move away from the holopad before deactivating. var/temp = "" @@ -49,12 +50,14 @@ Possible to do for anyone motivated enough: var/datum/holocall/outgoing_call //do not modify the datums only check and call the public procs var/obj/item/disk/holodisk/disk //Record disk var/replay_mode = FALSE //currently replaying a recording + var/loop_mode = FALSE //currently looping a recording var/record_mode = FALSE //currently recording var/record_start = 0 //recording start time var/record_user //user that inititiated the recording var/obj/effect/overlay/holo_pad_hologram/replay_holo //replay hologram var/static/force_answer_call = FALSE //Calls will be automatically answered after a couple rings, here for debugging var/static/list/holopads = list() + var/obj/effect/overlay/holoray/ray /obj/machinery/holopad/Initialize() . = ..() @@ -150,19 +153,20 @@ Possible to do for anyone motivated enough: if(temp) dat = temp else - dat = "Request an AI's presence.
" - dat += "Call another holopad.
" + dat = "Request an AI's presence
" + dat += "Call another holopad
" if(disk) if(disk.record) //Replay - dat += "Replay disk recording.
" + dat += "Replay disk recording
" + dat += "Loop disk recording
" //Clear - dat += "Clear disk recording.
" + dat += "Clear disk recording
" else //Record - dat += "Start new recording.
" + dat += "Start new recording
" //Eject - dat += "Eject disk.
" + dat += "Eject disk
" if(LAZYLEN(holo_calls)) dat += "=====================================================
" @@ -172,7 +176,7 @@ Possible to do for anyone motivated enough: for(var/I in holo_calls) var/datum/holocall/HC = I if(HC.connected_holopad != src) - dat += "Answer call from [get_area(HC.calling_holopad)].
" + dat += "Answer call from [get_area(HC.calling_holopad)]
" one_unanswered_call = TRUE else one_answered_call = TRUE @@ -183,10 +187,10 @@ Possible to do for anyone motivated enough: for(var/I in holo_calls) var/datum/holocall/HC = I if(HC.connected_holopad == src) - dat += "Disconnect call from [HC.user].
" + dat += "Disconnect call from [HC.user]
" - var/datum/browser/popup = new(user, "holopad", name, 300, 150) + var/datum/browser/popup = new(user, "holopad", name, 300, 175) popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) popup.open() @@ -266,6 +270,9 @@ Possible to do for anyone motivated enough: replay_stop() else if(href_list["replay_start"]) replay_start() + else if(href_list["loop_start"]) + loop_mode = TRUE + replay_start() else if(href_list["record_start"]) record_start(usr) else if(href_list["record_stop"]) @@ -284,33 +291,34 @@ Possible to do for anyone motivated enough: This may change in the future but for now will suffice.*/ if(user.eyeobj.loc != src.loc)//Set client eye on the object if it's not already. user.eyeobj.setLoc(get_turf(src)) - else if(!masters[user])//If there is no hologram, possibly make one. + else if(!LAZYLEN(masters) || !masters[user])//If there is no hologram, possibly make one. activate_holo(user) else//If there is a hologram, remove it. clear_holo(user) /obj/machinery/holopad/process() - for(var/I in masters) - var/mob/living/master = I - var/mob/living/silicon/ai/AI = master - if(!istype(AI)) - AI = null + if(LAZYLEN(masters)) + for(var/I in masters) + var/mob/living/master = I + var/mob/living/silicon/ai/AI = master + if(!istype(AI)) + AI = null - if(!QDELETED(master) && !master.incapacitated() && master.client && (!AI || AI.eyeobj))//If there is an AI attached, it's not incapacitated, it has a client, and the client eye is centered on the projector. - if(is_operational())//If the machine has power. - if(AI) //ais are range based - if(get_dist(AI.eyeobj, src) <= holo_range) - continue - else - var/obj/machinery/holopad/pad_close = get_closest_atom(/obj/machinery/holopad, holopads, AI.eyeobj) - if(get_dist(pad_close, AI.eyeobj) <= holo_range) - var/obj/effect/overlay/holo_pad_hologram/h = masters[master] - unset_holo(master) - pad_close.set_holo(master, h) + if(!QDELETED(master) && !master.incapacitated() && master.client && (!AI || AI.eyeobj))//If there is an AI attached, it's not incapacitated, it has a client, and the client eye is centered on the projector. + if(is_operational())//If the machine has power. + if(AI) //ais are range based + if(get_dist(AI.eyeobj, src) <= holo_range) continue - else - continue - clear_holo(master)//If not, we want to get rid of the hologram. + else + var/obj/machinery/holopad/pad_close = get_closest_atom(/obj/machinery/holopad, holopads, AI.eyeobj) + if(get_dist(pad_close, AI.eyeobj) <= holo_range) + var/obj/effect/overlay/holo_pad_hologram/h = masters[master] + unset_holo(master) + pad_close.set_holo(master, h) + continue + else + continue + clear_holo(master)//If not, we want to get rid of the hologram. if(outgoing_call) outgoing_call.Check() @@ -355,6 +363,7 @@ Possible to do for anyone motivated enough: Hologram.anchored = TRUE//So space wind cannot drag it. Hologram.name = "[user.name] (Hologram)"//If someone decides to right click. Hologram.set_light(2) //hologram lighting + move_hologram() set_holo(user, Hologram) visible_message("A holographic image of [user] flickers to life before your eyes!") @@ -366,7 +375,7 @@ Possible to do for anyone motivated enough: /*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/holopad/Hear(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode) - if(speaker && masters.len && !radio_freq)//Master is mostly a safety in case lag hits or something. Radio_freq so AIs dont hear holopad stuff through radios. + if(speaker && LAZYLEN(masters) && !radio_freq)//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(message, speaker, message_language, raw_message, radio_freq, spans, message_mode) @@ -383,7 +392,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ record_message(speaker,raw_message,message_language) /obj/machinery/holopad/proc/SetLightsAndPower() - var/total_users = masters.len + LAZYLEN(holo_calls) + var/total_users = LAZYLEN(masters) + LAZYLEN(holo_calls) use_power = total_users > 0 ? ACTIVE_POWER_USE : IDLE_POWER_USE active_power_usage = HOLOPAD_PASSIVE_POWER_USAGE + (HOLOGRAM_POWER_USAGE * total_users) if(total_users || replay_mode) @@ -393,22 +402,25 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ update_icon() /obj/machinery/holopad/update_icon() - var/total_users = masters.len + LAZYLEN(holo_calls) + var/total_users = LAZYLEN(masters) + LAZYLEN(holo_calls) if(total_users || replay_mode) icon_state = "holopad1" else icon_state = "holopad0" /obj/machinery/holopad/proc/set_holo(mob/living/user, var/obj/effect/overlay/holo_pad_hologram/h) - masters[user] = h + LAZYSET(masters, user, h) + LAZYSET(holorays, user, new /obj/effect/overlay/holoray(loc)) var/mob/living/silicon/ai/AI = user if(istype(AI)) AI.current = src SetLightsAndPower() + update_holoray(user, get_turf(loc)) return TRUE /obj/machinery/holopad/proc/clear_holo(mob/living/user) qdel(masters[user]) // Get rid of user's hologram + qdel(holorays[user]) unset_holo(user) return TRUE @@ -416,22 +428,47 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ var/mob/living/silicon/ai/AI = user if(istype(AI) && AI.current == src) AI.current = null - masters -= user // Discard AI from the list of those who use holopad + LAZYREMOVE(masters, user) // Discard AI from the list of those who use holopad + LAZYREMOVE(holorays, user) SetLightsAndPower() return TRUE /obj/machinery/holopad/proc/move_hologram(mob/living/user, turf/new_turf) - if(masters[user]) - var/obj/effect/overlay/holo_pad_hologram/H = masters[user] - step_to(H, new_turf) - H.forceMove(new_turf) + if(LAZYLEN(masters) && masters[user]) var/area/holo_area = get_area(src) - var/area/eye_area = new_turf.loc - - if(!(eye_area in holo_area.related)) + if(new_turf.loc in holo_area.related) + var/obj/effect/overlay/holo_pad_hologram/holo = masters[user] + step_to(holo, new_turf) + holo.forceMove(new_turf) + update_holoray(user, new_turf) + else clear_holo(user) return TRUE + +/obj/machinery/holopad/proc/update_holoray(mob/living/user, turf/new_turf) + var/obj/effect/overlay/holo_pad_hologram/holo = masters[user] + var/obj/effect/overlay/holoray/ray = holorays[user] + var/disty = holo.y - ray.y + var/distx = holo.x - ray.x + var/newangle + if(!disty) + if(distx >= 0) + newangle = 90 + else + newangle = 270 + else + newangle = arctan(distx/disty) + if(disty < 0) + newangle += 180 + else if(distx < 0) + newangle += 360 + var/matrix/M = matrix() + if (get_dist(get_turf(holo),new_turf) <= 1) + animate(ray, transform = turn(M.Scale(1,sqrt(distx*distx+disty*disty)),newangle),time = 1) + else + ray.transform = turn(M.Scale(1,sqrt(distx*distx+disty*disty)),newangle) + // RECORDED MESSAGES /obj/machinery/holopad/proc/setup_replay_holo(datum/holorecord/record) @@ -464,6 +501,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ /obj/machinery/holopad/proc/replay_stop() if(replay_mode) replay_mode = FALSE + loop_mode = FALSE temp = null QDEL_NULL(replay_holo) SetLightsAndPower() @@ -490,7 +528,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ if(!record_mode) return //make this command so you can have multiple languages in single record - if(!disk.record.caller_name && istype(speaker)) + if((!disk.record.caller_name || disk.record.caller_name == "Unknown") && istype(speaker)) disk.record.caller_name = speaker.name if(!disk.record.language) disk.record.language = language @@ -516,8 +554,11 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ if(!replay_mode) return if(disk.record.entries.len < entry_number) - replay_stop() - return + if (loop_mode) + entry_number = 1 + else + replay_stop() + return var/list/entry = disk.record.entries[entry_number] var/command = entry[1] switch(command) @@ -565,12 +606,24 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ return ..() /obj/effect/overlay/holo_pad_hologram/Process_Spacemove(movement_dir = 0) - return 1 + return TRUE /obj/effect/overlay/holo_pad_hologram/examine(mob/user) if(Impersonation) return Impersonation.examine(user) return ..() +/obj/effect/overlay/holoray + name = "holoray" + icon = 'icons/effects/96x96.dmi' + icon_state = "holoray" + layer = FLY_LAYER + density = FALSE + anchored = TRUE + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + pixel_x = -32 + pixel_y = -32 + alpha = 100 + #undef HOLOPAD_PASSIVE_POWER_USAGE -#undef HOLOGRAM_POWER_USAGE +#undef HOLOGRAM_POWER_USAGE \ No newline at end of file diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm index e661bc24c5..19c666b9e8 100644 --- a/code/game/machinery/limbgrower.dm +++ b/code/game/machinery/limbgrower.dm @@ -165,7 +165,7 @@ dat += "" for(var/C in categories) - if(C=="special" && !emagged) //Only want to show special when console is emagged + if(C=="special" && !(obj_flags & EMAGGED)) //Only want to show special when console is emagged continue dat += "" @@ -220,10 +220,10 @@ return dat /obj/machinery/limbgrower/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return for(var/datum/design/D in SSresearch.techweb_designs) if((D.build_type & LIMBGROWER) && ("special" in D.category)) stored_research.add_design(D) to_chat(user, "A warning flashes onto the screen, stating that safety overrides have been deactivated!") - emagged = TRUE + obj_flags |= EMAGGED diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index f9c5d80fad..08ace17373 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -164,8 +164,10 @@ GLOBAL_LIST_EMPTY(allCasters) /datum/newscaster/feed_network/proc/save_photo(icon/photo) var/photo_file = copytext(md5("\icon[photo]"), 1, 6) if(!fexists("[GLOB.log_directory]/photos/[photo_file].png")) - var/icon/p = icon(photo, frame = 1) - fcopy(p, "[GLOB.log_directory]/photos/[photo_file].png") + //Clean up repeated frames + var/icon/clean = new /icon() + clean.Insert(photo, "", SOUTH, 1, 0) + fcopy(clean, "[GLOB.log_directory]/photos/[photo_file].png") return photo_file /obj/item/wallframe/newscaster diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index d724770a7b..63189ddfbc 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -125,11 +125,10 @@ Buildable meters setDir(turn(dir,-90)) fixdir() -/obj/item/pipe/attackby(obj/item/W, mob/user, params) - if (!istype(W, /obj/item/wrench)) - return ..() - if (!isturf(loc)) +/obj/item/pipe/wrench_act(mob/living/user, obj/item/wrench/W) + if(!isturf(loc)) return TRUE + add_fingerprint(user) fixdir() @@ -150,6 +149,7 @@ Buildable meters var/obj/machinery/atmospherics/A = new pipe_type(loc) build_pipe(A) A.on_construction(color, piping_layer) + transfer_fingerprints_to(A) playsound(src, W.usesound, 50, 1) user.visible_message( \ diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index d532623f54..99b951c32c 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -280,11 +280,11 @@ return ..() /obj/machinery/porta_turret/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return to_chat(user, "You short out [src]'s threat assessment circuits.") visible_message("[src] hums oddly...") - emagged = TRUE + obj_flags |= EMAGGED controllock = 1 on = FALSE //turns off the turret temporarily update_icon() @@ -313,7 +313,7 @@ if(.) //damage received if(prob(30)) spark_system.start() - if(on && !attacked && !emagged) + if(on && !attacked && !(obj_flags & EMAGGED)) attacked = TRUE addtimer(CALLBACK(src, .proc/reset_attacked), 60) @@ -335,8 +335,6 @@ /obj/machinery/porta_turret/process() //the main machinery process - set background = BACKGROUND_ENABLED - if(cover == null && anchored) //if it has no cover and is anchored if(stat & BROKEN) //if the turret is borked qdel(cover) //delete its cover, assuming it has one. Workaround for a pesky little bug @@ -460,7 +458,7 @@ /obj/machinery/porta_turret/proc/assess_perp(mob/living/carbon/human/perp) var/threatcount = 0 //the integer returned - if(emagged) + if(obj_flags & EMAGGED) return 10 //if emagged, always return 10. if((stun_all || attacked) && !allowed(perp)) @@ -506,7 +504,7 @@ if(!raised) //the turret has to be raised in order to fire - makes sense, right? return - if(!emagged) //if it hasn't been emagged, cooldown before shooting again + if(!(obj_flags & EMAGGED)) //if it hasn't been emagged, cooldown before shooting again if(last_fired + shot_delay > world.time) return last_fired = world.time @@ -559,11 +557,6 @@ src.mode = mode power_change() -/obj/machinery/porta_turret/stationary //is this even used anywhere - mode = TURRET_LETHAL - emagged = TRUE - installation = /obj/item/gun/energy/laser - /obj/machinery/porta_turret/syndicate installation = null always_up = 1 @@ -577,11 +570,20 @@ stun_projectile_sound = 'sound/weapons/gunshot.ogg' icon_state = "syndie_off" base_icon_state = "syndie" - faction = "syndicate" + faction = ROLE_SYNDICATE emp_vunerable = 0 desc = "A ballistic machine gun auto-turret." /obj/machinery/porta_turret/syndicate/energy + icon_state = "standard_stun" + base_icon_state = "standard" + stun_projectile = /obj/item/projectile/energy/electrode + stun_projectile_sound = 'sound/weapons/taser.ogg' + lethal_projectile = /obj/item/projectile/beam/laser + lethal_projectile_sound = 'sound/weapons/laser.ogg' + desc = "An energy blaster auto-turret." + +/obj/machinery/porta_turret/syndicate/energy/heavy icon_state = "standard_stun" base_icon_state = "standard" stun_projectile = /obj/item/projectile/energy/electrode @@ -729,7 +731,7 @@ if ( get_dist(src, user) == 0 ) // trying to unlock the interface if (allowed(usr)) - if(emagged) + if(obj_flags & EMAGGED) to_chat(user, "The turret control is unresponsive.") return @@ -746,10 +748,10 @@ to_chat(user, "Access denied.") /obj/machinery/turretid/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return to_chat(user, "You short out the turret controls' access analysis module.") - emagged = TRUE + obj_flags |= EMAGGED locked = FALSE if(user && user.machine == src) attack_hand(user) diff --git a/code/game/machinery/porta_turret/portable_turret_cover.dm b/code/game/machinery/porta_turret/portable_turret_cover.dm index 7bc381c466..d455bec173 100644 --- a/code/game/machinery/porta_turret/portable_turret_cover.dm +++ b/code/game/machinery/porta_turret/portable_turret_cover.dm @@ -87,10 +87,10 @@ . = 0 /obj/machinery/porta_turret_cover/emag_act(mob/user) - if(!parent_turret.emagged) + if(!(parent_turret.obj_flags & EMAGGED)) to_chat(user, "You short out [parent_turret]'s threat assessment circuits.") visible_message("[parent_turret] hums oddly...") - parent_turret.emagged = TRUE + parent_turret.obj_flags |= EMAGGED parent_turret.on = 0 spawn(40) parent_turret.on = 1 diff --git a/code/game/machinery/quantum_pad.dm b/code/game/machinery/quantum_pad.dm index 6a04ca0886..1dd683af84 100644 --- a/code/game/machinery/quantum_pad.dm +++ b/code/game/machinery/quantum_pad.dm @@ -7,7 +7,7 @@ use_power = IDLE_POWER_USE idle_power_usage = 200 active_power_usage = 5000 - unique_rename = 1 + obj_flags = CAN_BE_HIT | UNIQUE_RENAME circuit = /obj/item/circuitboard/machine/quantumpad var/teleport_cooldown = 400 //30 seconds base due to base parts var/teleport_speed = 50 @@ -15,17 +15,17 @@ var/teleporting = 0 //if it's in the process of teleporting var/power_efficiency = 1 var/obj/machinery/quantumpad/linked_pad - + //mapping var/static/list/mapped_quantum_pads = list() var/map_pad_id = "" as text //what's my name var/map_pad_link_id = "" as text //who's my friend - + /obj/machinery/quantumpad/Initialize() . = ..() if(map_pad_id) mapped_quantum_pads[map_pad_id] = src - + /obj/machinery/quantumpad/Destroy() mapped_quantum_pads -= map_pad_id return ..() diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index 0d11c6a741..b98aa50ec1 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -39,7 +39,7 @@ ..() to_chat(user, "The power light is [(stat & NOPOWER) ? "off" : "on"].") to_chat(user, "The safety-mode light is [safety_mode ? "on" : "off"].") - to_chat(user, "The safety-sensors status light is [emagged ? "off" : "on"].") + to_chat(user, "The safety-sensors status light is [obj_flags & EMAGGED ? "off" : "on"].") /obj/machinery/recycler/power_change() ..() @@ -64,9 +64,9 @@ return ..() /obj/machinery/recycler/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED if(safety_mode) safety_mode = FALSE update_icon() @@ -110,7 +110,7 @@ if(brain_holder) emergency_stop(AM) else if(isliving(AM)) - if(emagged) + if(obj_flags & EMAGGED) crush_living(AM) else emergency_stop(AM) @@ -180,14 +180,14 @@ L.Unconscious(100) // For admin fun, var edit emagged to 2. - if(gib || emagged == 2) + if(gib) L.gib() - else if(emagged == 1) + else if(obj_flags & EMAGGED) L.adjustBruteLoss(crush_damage) /obj/machinery/recycler/deathtrap name = "dangerous old crusher" - emagged = TRUE + obj_flags = CAN_BE_HIT | EMAGGED crush_damage = 120 flags_1 = NODECONSTRUCT_1 diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index c65b9a321a..3e870bb46c 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -302,6 +302,9 @@ GLOBAL_LIST_EMPTY(allConsoles) if(href_list["sendAnnouncement"]) if(!announcementConsole) return + if(isliving(usr)) + var/mob/living/L = usr + message = L.treat_message(message) minor_announce(message, "[department] Announcement:") GLOB.news_network.SubmitArticle(message, department, "Station Announcements", null) log_talk(usr,"[key_name(usr)] has made a station announcement: [message]",LOGSAY) diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index b681845a10..dde4bb180c 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -59,10 +59,12 @@ color = "#FF0000" max_integrity = 20 mouse_opacity = MOUSE_OPACITY_TRANSPARENT + layer = ABOVE_MOB_LAYER /obj/structure/emergency_shield/invoker/emp_act(severity) return + /obj/machinery/shieldgen name = "anti-breach shielding projector" desc = "Used to seal minor hull breaches." @@ -180,10 +182,10 @@ anchored = FALSE else if(W.GetID()) - if(allowed(user) && !emagged) + if(allowed(user) && !(obj_flags & EMAGGED)) locked = !locked to_chat(user, "You [locked ? "lock" : "unlock"] the controls.") - else if(emagged) + else if(obj_flags & EMAGGED) to_chat(user, "Error, access controller damaged!") else to_chat(user, "Access denied.") @@ -192,10 +194,10 @@ return ..() /obj/machinery/shieldgen/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) to_chat(user, "The access controller is damaged!") return - emagged = TRUE + obj_flags |= EMAGGED locked = FALSE playsound(src, "sparks", 100, 1) to_chat(user, "You short out the access controller.") @@ -343,10 +345,10 @@ default_unfasten_wrench(user, W, 0) else if(W.GetID()) - if(allowed(user) && !emagged) + if(allowed(user) && !(obj_flags & EMAGGED)) locked = !locked to_chat(user, "You [src.locked ? "lock" : "unlock"] the controls.") - else if(emagged) + else if(obj_flags & EMAGGED) to_chat(user, "Error, access controller damaged!") else to_chat(user, "Access denied.") @@ -381,10 +383,10 @@ add_fingerprint(user) /obj/machinery/shieldwallgen/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) to_chat(user, "The access controller is damaged!") return - emagged = TRUE + obj_flags |= EMAGGED locked = FALSE playsound(src, "sparks", 100, 1) to_chat(user, "You short out the access controller.") diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm index a538e4ec0c..766bd49bf4 100644 --- a/code/game/machinery/slotmachine.dm +++ b/code/game/machinery/slotmachine.dm @@ -100,9 +100,9 @@ return ..() /obj/machinery/computer/slot_machine/emag_act() - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread() spark_system.set_up(4, 0, src.loc) spark_system.start() @@ -163,7 +163,7 @@ if(prob(15 * severity)) return if(prob(1)) // :^) - emagged = TRUE + obj_flags |= EMAGGED var/severity_ascending = 4 - severity money = max(rand(money - (200 * severity_ascending), money + (200 * severity_ascending)), 0) balance = max(rand(balance - (50 * severity_ascending), balance + (50 * severity_ascending)), 0) @@ -286,9 +286,9 @@ balance += surplus /obj/machinery/computer/slot_machine/proc/give_coins(amount) - var/cointype = emagged ? /obj/item/coin/iron : /obj/item/coin/silver + var/cointype = obj_flags & EMAGGED ? /obj/item/coin/iron : /obj/item/coin/silver - if(!emagged) + if(!(obj_flags & EMAGGED)) amount = dispense(amount, cointype, null, 0) else diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 307107d517..cb100865d6 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -103,6 +103,10 @@ mask_type = /obj/item/clothing/mask/breath storage_type = /obj/item/tank/internals/emergency_oxygen/double +/obj/machinery/suit_storage_unit/open + state_open = TRUE + density = FALSE + /obj/machinery/suit_storage_unit/Initialize() . = ..() wires = new /datum/wires/suit_storage_unit(src) diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm index 0b050769d9..c56cae8849 100644 --- a/code/game/machinery/syndicatebeacon.dm +++ b/code/game/machinery/syndicatebeacon.dm @@ -128,3 +128,7 @@ /obj/item/device/sbeacondrop/powersink desc = "A label on it reads: Warning: Activating this device will send a power draining device to your location." droptype = /obj/item/device/powersink + +/obj/item/device/sbeacondrop/clownbomb + desc = "A label on it reads: Warning: Activating this device will send a silly explosive to your location." + droptype = /obj/machinery/syndicatebomb/badmin/clown diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index 8e5391010a..6b86c48071 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -253,8 +253,8 @@ open_panel = TRUE timer_set = 120 -/obj/machinery/syndicatebomb/empty/New() - ..() +/obj/machinery/syndicatebomb/empty/Initialize() + . = ..() wires.cut_all() /obj/machinery/syndicatebomb/self_destruct diff --git a/code/game/machinery/telecomms/computers/logbrowser.dm b/code/game/machinery/telecomms/computers/logbrowser.dm index 93f9d2b03a..12b01614c4 100644 --- a/code/game/machinery/telecomms/computers/logbrowser.dm +++ b/code/game/machinery/telecomms/computers/logbrowser.dm @@ -187,7 +187,7 @@ if(href_list["delete"]) - if(!src.allowed(usr) && !emagged) + if(!src.allowed(usr) && !(obj_flags & EMAGGED)) to_chat(usr, "ACCESS DENIED.") return diff --git a/code/game/machinery/telecomms/computers/message.dm b/code/game/machinery/telecomms/computers/message.dm index 4b44f02096..d40c38c49c 100644 --- a/code/game/machinery/telecomms/computers/message.dm +++ b/code/game/machinery/telecomms/computers/message.dm @@ -3,6 +3,8 @@ Lets you read PDA and request console messages. */ +#define LINKED_SERVER_NONRESPONSIVE (!linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) + // The monitor itself. /obj/machinery/computer/message_monitor name = "message monitor console" @@ -20,9 +22,9 @@ var/rebootmsg = "%$&(�: Critical %$$@ Error // !RestArting! - ?pLeaSe wAit!" //Computer properties var/screen = 0 // 0 = Main menu, 1 = Message Logs, 2 = Hacked screen, 3 = Custom Message - var/hacking = 0 // Is it being hacked into by the AI/Cyborg + var/hacking = FALSE // Is it being hacked into by the AI/Cyborg var/message = "System bootup complete. Please select an option." // The message that shows on the main menu. - var/auth = 0 // Are they authenticated? + var/auth = FALSE // Are they authenticated? var/optioncount = 7 // Custom Message Properties var/customsender = "System Administrator" @@ -33,20 +35,20 @@ light_color = LIGHT_COLOR_GREEN /obj/machinery/computer/message_monitor/attackby(obj/item/O, mob/living/user, params) - if(istype(O, /obj/item/screwdriver) && emagged) + if(istype(O, /obj/item/screwdriver) && (obj_flags & EMAGGED)) //Stops people from just unscrewing the monitor and putting it back to get the console working again. to_chat(user, "It is too hot to mess with!") else return ..() /obj/machinery/computer/message_monitor/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return if(!isnull(linkedServer)) - emagged = TRUE + obj_flags |= EMAGGED screen = 2 spark_system.set_up(5, 0, src) - src.spark_system.start() + spark_system.start() var/obj/item/paper/monitorkey/MK = new(loc, linkedServer) // Will help make emagging the console not so easy to get away with. MK.info += "

�%@%(*$%&(�&?*(%&�/{}" @@ -56,6 +58,10 @@ else to_chat(user, "A no server error appears on the screen.") +/obj/machinery/computer/message_monitor/New() + . = ..() + GLOB.telecomms_list += src + /obj/machinery/computer/message_monitor/Initialize() ..() return INITIALIZE_HINT_LATELOAD @@ -67,25 +73,29 @@ linkedServer = S break +/obj/machinery/computer/message_monitor/Destroy() + GLOB.telecomms_list -= src + . = ..() + /obj/machinery/computer/message_monitor/attack_hand(mob/living/user) if(..()) return //If the computer is being hacked or is emagged, display the reboot message. - if(hacking || emagged) + if(hacking || (obj_flags & EMAGGED)) message = rebootmsg - var/dat = "
/
" + var/dat = "
" if(auth) dat += "

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

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

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

" + dat += " Server Power: [linkedServer && linkedServer.toggled ? "\[On\]":"\[Off\]"]" - if(hacking || emagged) + if(hacking || (obj_flags & EMAGGED)) screen = 2 - else if(!auth || !linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) - if(!linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) + else if(!auth || LINKED_SERVER_NONRESPONSIVE) + if(LINKED_SERVER_NONRESPONSIVE) message = noserver screen = 0 @@ -96,13 +106,13 @@ var/i = 0 dat += "
[++i]. Link To A Server
" if(auth) - if(!linkedServer || (linkedServer.stat & (NOPOWER|BROKEN))) + if(LINKED_SERVER_NONRESPONSIVE) dat += "
ERROR: Server not found!
" else - dat += "
[++i]. View Message Logs
" - dat += "
[++i]. View Request Console Logs
" - dat += "
[++i]. Clear Message Logs
" - dat += "
[++i]. Clear Request Console Logs
" + dat += "
[++i]. View Message Logs
" + dat += "
[++i]. View Request Console Logs
" + dat += "
[++i]. Clear Message Logs
" + dat += "
[++i]. Clear Request Console Logs
" dat += "
[++i]. Set Custom Key
" dat += "
[++i]. Send Admin Message
" else @@ -125,13 +135,13 @@ var/index = 0 dat += "
Back - Refresh

" dat += "
[C]
" - for(var/datum/data_pda_msg/pda in src.linkedServer.pda_msgs) + for(var/datum/data_pda_msg/pda in linkedServer.pda_msgs) index++ if(index > 3000) break // Del - Sender - Recepient - Message // X - Al Green - Your Mom - WHAT UP!? - dat += "" + dat += "" dat += "
XSenderRecipientMessage
X
[pda.sender][pda.recipient][pda.message][pda.photo ? " (Photo)":""]
X
[pda.sender][pda.recipient][pda.message][pda.photo ? " (Photo)":""]
" //Hacking screen. if(2) @@ -210,20 +220,20 @@ dat += "
Back - Refresh

" dat += {""} - for(var/datum/data_rc_msg/rc in src.linkedServer.rc_msgs) + for(var/datum/data_rc_msg/rc in linkedServer.rc_msgs) index++ if(index > 3000) break // Del - Sender - Recepient - Message // X - Al Green - Your Mom - WHAT UP!? - dat += {" + dat += {""} dat += "
XSending Dep.Receiving Dep. MessageStampID Auth.Priority.
X
[rc.send_dpt]
X
[rc.send_dpt] [rc.rec_dpt][rc.message][rc.stamp][rc.id_auth][rc.priority]
" message = defaultmsg var/datum/browser/popup = new(user, "hologram_console", name, 700, 700) popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.set_title_image(user.browse_rsc_icon(icon, icon_state)) popup.open() return @@ -231,13 +241,13 @@ if(isnull(linkedServer)) to_chat(user, "Could not complete brute-force: Linked Server Disconnected!") else - var/currentKey = src.linkedServer.decryptkey + var/currentKey = linkedServer.decryptkey to_chat(user, "Brute-force completed! The key is '[currentKey]'.") - src.hacking = 0 - src.screen = 0 // Return the screen back to normal + hacking = FALSE + screen = 0 // Return the screen back to normal /obj/machinery/computer/message_monitor/proc/UnmagConsole() - emagged = FALSE + obj_flags &= ~EMAGGED /obj/machinery/computer/message_monitor/proc/ResetMessage() customsender = "System Administrator" @@ -252,23 +262,24 @@ if(usr.contents.Find(src) || (in_range(src, usr) && isturf(loc)) || issilicon(usr)) //Authenticate if (href_list["auth"]) - if(!linkedServer || linkedServer.stat & (NOPOWER|BROKEN)) + if(LINKED_SERVER_NONRESPONSIVE) message = noserver + else if(auth) + auth = FALSE + screen = 0 else - if(auth) - auth = 0 - screen = 0 - else - var/dkey = trim(input(usr, "Please enter the decryption key.") as text|null) - if(dkey && dkey != "") - if(src.linkedServer.decryptkey == dkey) - auth = 1 - else - message = incorrectkey + var/dkey = trim(input(usr, "Please enter the decryption key.") as text|null) + if(dkey && dkey != "") + if(linkedServer.decryptkey == dkey) + auth = TRUE + else + message = incorrectkey //Turn the server on/off. if (href_list["active"]) - if(auth) + if(LINKED_SERVER_NONRESPONSIVE) + message = noserver + else if(auth) linkedServer.toggled = !linkedServer.toggled //Find a server if (href_list["find"]) @@ -286,86 +297,81 @@ message = noserver //View the logs - KEY REQUIRED - if (href_list["view"]) - if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) + if (href_list["view_logs"]) + if(LINKED_SERVER_NONRESPONSIVE) message = noserver - else - if(auth) - src.screen = 1 + else if(auth) + screen = 1 //Clears the logs - KEY REQUIRED - if (href_list["clear"]) - if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) + if (href_list["clear_logs"]) + if(LINKED_SERVER_NONRESPONSIVE) message = noserver - else - if(auth) - src.linkedServer.pda_msgs = list() - message = "NOTICE: Logs cleared." + else if(auth) + linkedServer.pda_msgs = list() + message = "NOTICE: Logs cleared." //Clears the request console logs - KEY REQUIRED - if (href_list["clearr"]) - if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) + if (href_list["clear_requests"]) + if(LINKED_SERVER_NONRESPONSIVE) message = noserver - else - if(auth) - src.linkedServer.rc_msgs = list() - message = "NOTICE: Logs cleared." + else if(auth) + linkedServer.rc_msgs = list() + message = "NOTICE: Logs cleared." //Change the password - KEY REQUIRED if (href_list["pass"]) - if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) + if(LINKED_SERVER_NONRESPONSIVE) message = noserver - else - if(auth) - var/dkey = stripped_input(usr, "Please enter the decryption key.") - if(dkey && dkey != "") - if(src.linkedServer.decryptkey == dkey) - var/newkey = trim(input(usr,"Please enter the new key (3 - 16 characters max):")) - if(length(newkey) <= 3) - message = "NOTICE: Decryption key too short!" - else if(length(newkey) > 16) - message = "NOTICE: Decryption key too long!" - else if(newkey && newkey != "") - src.linkedServer.decryptkey = newkey - message = "NOTICE: Decryption key set." - else - message = incorrectkey + else if(auth) + var/dkey = stripped_input(usr, "Please enter the decryption key.") + if(dkey && dkey != "") + if(linkedServer.decryptkey == dkey) + var/newkey = trim(input(usr,"Please enter the new key (3 - 16 characters max):")) + if(length(newkey) <= 3) + message = "NOTICE: Decryption key too short!" + else if(length(newkey) > 16) + message = "NOTICE: Decryption key too long!" + else if(newkey && newkey != "") + linkedServer.decryptkey = newkey + message = "NOTICE: Decryption key set." + else + message = incorrectkey //Hack the Console to get the password if (href_list["hack"]) if(issilicon(usr) && is_special_character(usr)) - src.hacking = 1 - src.screen = 2 + hacking = TRUE + screen = 2 //Time it takes to bruteforce is dependant on the password length. - spawn(100*length(src.linkedServer.decryptkey)) - if(src && src.linkedServer && usr) + spawn(100*length(linkedServer.decryptkey)) + if(src && linkedServer && usr) BruteForce(usr) //Delete the log. - if (href_list["delete"]) + if (href_list["delete_logs"]) //Are they on the view logs screen? if(screen == 1) - if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) + if(LINKED_SERVER_NONRESPONSIVE) message = noserver - else //if(istype(href_list["delete"], /datum/data_pda_msg)) - src.linkedServer.pda_msgs -= locate(href_list["delete"]) + else //if(istype(href_list["delete_logs"], /datum/data_pda_msg)) + linkedServer.pda_msgs -= locate(href_list["delete_logs"]) message = "NOTICE: Log Deleted!" //Delete the request console log. - if (href_list["deleter"]) + if (href_list["delete_requests"]) //Are they on the view logs screen? if(screen == 4) - if(!linkedServer || (src.linkedServer.stat & (NOPOWER|BROKEN))) + if(LINKED_SERVER_NONRESPONSIVE) message = noserver - else //if(istype(href_list["delete"], /datum/data_pda_msg)) - src.linkedServer.rc_msgs -= locate(href_list["deleter"]) + else //if(istype(href_list["delete_logs"], /datum/data_pda_msg)) + linkedServer.rc_msgs -= locate(href_list["delete_requests"]) message = "NOTICE: Log Deleted!" //Create a custom message if (href_list["msg"]) - if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) + if(LINKED_SERVER_NONRESPONSIVE) message = noserver - else - if(auth) - src.screen = 3 + else if(auth) + screen = 3 //Fake messaging selection - KEY REQUIRED if (href_list["select"]) - if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) + if(LINKED_SERVER_NONRESPONSIVE) message = noserver screen = 0 else @@ -403,11 +409,11 @@ if(isnull(customrecepient)) message = "NOTICE: No recepient selected!" - return src.attack_hand(usr) + return attack_hand(usr) if(isnull(custommessage) || custommessage == "") message = "NOTICE: No message entered!" - return src.attack_hand(usr) + return attack_hand(usr) var/datum/signal/subspace/pda/signal = new(src, list( "name" = "[customsender]", @@ -421,18 +427,18 @@ //Request Console Logs - KEY REQUIRED - if(href_list["viewr"]) - if(src.linkedServer == null || (src.linkedServer.stat & (NOPOWER|BROKEN))) + if(href_list["view_requests"]) + if(LINKED_SERVER_NONRESPONSIVE) message = noserver - else - if(auth) - src.screen = 4 + else if(auth) + screen = 4 if (href_list["back"]) - src.screen = 0 + screen = 0 - return src.attack_hand(usr) + return attack_hand(usr) +#undef LINKED_SERVER_NONRESPONSIVE /obj/item/paper/monitorkey name = "monitor decryption key" diff --git a/code/game/machinery/telecomms/machines/message_server.dm b/code/game/machinery/telecomms/machines/message_server.dm index 37c891e542..8f0e22b7d9 100644 --- a/code/game/machinery/telecomms/machines/message_server.dm +++ b/code/game/machinery/telecomms/machines/message_server.dm @@ -44,6 +44,12 @@ decryptkey = GenerateKey() pda_msgs += new /datum/data_pda_msg("System Administrator", "system", "This is an automated message. The messaging system is functioning correctly.") +/obj/machinery/telecomms/message_server/Destroy() + for(var/obj/machinery/computer/message_monitor/monitor in GLOB.telecomms_list) + if(monitor.linkedServer && monitor.linkedServer == src) + monitor.linkedServer = null + . = ..() + /obj/machinery/telecomms/message_server/proc/GenerateKey() var/newKey newKey += pick("the", "if", "of", "as", "in", "a", "you", "from", "to", "an", "too", "little", "snow", "dead", "drunk", "rosebud", "duck", "al", "le") @@ -79,11 +85,6 @@ icon_state = "server-on" -// Repath for maps -/obj/machinery/message_server - parent_type = /obj/machinery/telecomms/message_server - - // PDA signal datum /datum/signal/subspace/pda frequency = FREQ_COMMON diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index b68d348539..79c737fc58 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -80,22 +80,16 @@ GLOBAL_LIST_EMPTY(telecomms_list) // return TRUE if found, FALSE if not found return signal && (!freq_listening.len || (signal.frequency in freq_listening)) - -/obj/machinery/telecomms/New() - GLOB.telecomms_list += src - ..() - /obj/machinery/telecomms/Initialize(mapload) . = ..() + GLOB.telecomms_list += src if(mapload && autolinkers.len) - // Links nearby machines - if(!long_range_link) - for(var/obj/machinery/telecomms/T in urange(20, src, 1)) - add_link(T) - else - for(var/obj/machinery/telecomms/T in GLOB.telecomms_list) - add_link(T) + return INITIALIZE_HINT_LATELOAD +/obj/machinery/telecomms/LateInitialize() + ..() + for(var/obj/machinery/telecomms/T in (long_range_link ? GLOB.telecomms_list : urange(20, src, 1))) + add_link(T) /obj/machinery/telecomms/Destroy() GLOB.telecomms_list -= src diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 1d0228d737..b0396b566a 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -224,7 +224,7 @@ /obj/machinery/vending/snack/proc/compartment_access_check(user) req_access_txt = chef_compartment_access - if(!allowed(user) && !emagged && scan_id) + if(!allowed(user) && !(obj_flags & EMAGGED) && scan_id) to_chat(user, "[src]'s chef compartment blinks red: Access denied.") req_access_txt = "0" return 0 @@ -342,9 +342,9 @@ ..() /obj/machinery/vending/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED to_chat(user, "You short out the product lock on [src].") /obj/machinery/vending/attack_ai(mob/user) @@ -455,7 +455,7 @@ to_chat(usr, "The vending machine cannot dispense products while its service panel is open!") return - if((!allowed(usr)) && !emagged && scan_id) //For SECURE VENDING MACHINES YEAH + if((!allowed(usr)) && !(obj_flags & EMAGGED) && scan_id) //For SECURE VENDING MACHINES YEAH to_chat(usr, "Access denied." ) flick(icon_deny,src) return @@ -928,9 +928,9 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C /obj/item/seeds/cabbage = 3, /obj/item/seeds/carrot = 3, /obj/item/seeds/cherry = 3, /obj/item/seeds/chanter = 3, /obj/item/seeds/chili = 3, /obj/item/seeds/cocoapod = 3, /obj/item/seeds/coffee = 3, /obj/item/seeds/corn = 3, /obj/item/seeds/eggplant = 3, /obj/item/seeds/grape = 3, /obj/item/seeds/grass = 3, /obj/item/seeds/lemon = 3, - /obj/item/seeds/lime = 3, /obj/item/seeds/onion = 3, /obj/item/seeds/orange = 3, /obj/item/seeds/potato = 3, /obj/item/seeds/poppy = 3, - /obj/item/seeds/pumpkin = 3, /obj/item/seeds/replicapod = 3, /obj/item/seeds/wheat/rice = 3, /obj/item/seeds/soya = 3, /obj/item/seeds/sunflower = 3, - /obj/item/seeds/tea = 3, /obj/item/seeds/tobacco = 3, /obj/item/seeds/tomato = 3, + /obj/item/seeds/lime = 3, /obj/item/seeds/onion = 3, /obj/item/seeds/orange = 3, /obj/item/seeds/pineapple = 3, /obj/item/seeds/potato = 3, + /obj/item/seeds/poppy = 3,/obj/item/seeds/pumpkin = 3, /obj/item/seeds/replicapod = 3, /obj/item/seeds/wheat/rice = 3, /obj/item/seeds/soya = 3, + /obj/item/seeds/sunflower = 3, /obj/item/seeds/tea = 3, /obj/item/seeds/tobacco = 3, /obj/item/seeds/tomato = 3, /obj/item/seeds/tower = 3, /obj/item/seeds/watermelon = 3, /obj/item/seeds/wheat = 3, /obj/item/seeds/whitebeet = 3) contraband = list(/obj/item/seeds/amanita = 2, /obj/item/seeds/glowshroom = 2, /obj/item/seeds/liberty = 2, /obj/item/seeds/nettle = 2, /obj/item/seeds/plump = 2, /obj/item/seeds/reishi = 2, /obj/item/seeds/cannabis = 3, /obj/item/seeds/starthistle = 2, @@ -1195,4 +1195,4 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C #undef STANDARD_CHARGE #undef CONTRABAND_CHARGE -#undef COIN_CHARGE \ No newline at end of file +#undef COIN_CHARGE diff --git a/code/game/mecha/combat/gygax.dm b/code/game/mecha/combat/gygax.dm index 56e3ccc6c3..b46bc2abf2 100644 --- a/code/game/mecha/combat/gygax.dm +++ b/code/game/mecha/combat/gygax.dm @@ -27,8 +27,8 @@ wreckage = /obj/structure/mecha_wreckage/gygax/dark max_equip = 4 -/obj/mecha/combat/gygax/dark/loaded/New() - ..() +/obj/mecha/combat/gygax/dark/loaded/Initialize() + . = ..() var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/carbine ME.attach(src) ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang @@ -37,7 +37,6 @@ ME.attach(src) ME = new /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay ME.attach(src) - return /obj/mecha/combat/gygax/dark/add_cell(obj/item/stock_parts/cell/C=null) if(C) diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm index 7be8fb6246..b82af2632e 100644 --- a/code/game/mecha/combat/marauder.dm +++ b/code/game/mecha/combat/marauder.dm @@ -29,8 +29,8 @@ thrusters_action.Remove(user) zoom_action.Remove(user) -/obj/mecha/combat/marauder/loaded/New() - ..() +/obj/mecha/combat/marauder/loaded/Initialize() + . = ..() var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/energy/pulse(src) ME.attach(src) ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack(src) @@ -52,8 +52,8 @@ force = 55 max_equip = 5 -/obj/mecha/combat/marauder/seraph/New() - ..() +/obj/mecha/combat/marauder/seraph/Initialize() + . = ..() var/obj/item/mecha_parts/mecha_equipment/ME ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot(src) ME.attach(src) @@ -74,8 +74,8 @@ wreckage = /obj/structure/mecha_wreckage/mauler max_equip = 5 -/obj/mecha/combat/marauder/mauler/loaded/New() - ..() +/obj/mecha/combat/marauder/mauler/loaded/Initialize() + . = ..() var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg(src) ME.attach(src) ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot(src) diff --git a/code/game/mecha/combat/reticence.dm b/code/game/mecha/combat/reticence.dm index 14891835c5..18b50d3077 100644 --- a/code/game/mecha/combat/reticence.dm +++ b/code/game/mecha/combat/reticence.dm @@ -19,10 +19,9 @@ turnsound = null opacity = 0 -/obj/mecha/combat/reticence/loaded/New() - ..() +/obj/mecha/combat/reticence/loaded/Initialize() + . = ..() var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/silenced ME.attach(src) ME = new /obj/item/mecha_parts/mecha_equipment/rcd //HAHA IT MAKES WALLS GET IT ME.attach(src) - return diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index 97e743b30e..90c598cccc 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -2,11 +2,10 @@ /obj/item/mecha_parts/mecha_equipment/medical -/obj/item/mecha_parts/mecha_equipment/medical/New() - ..() +/obj/item/mecha_parts/mecha_equipment/medical/Initialize() + . = ..() START_PROCESSING(SSobj, src) - /obj/item/mecha_parts/mecha_equipment/medical/can_attach(obj/mecha/medical/M) if(..() && istype(M)) return 1 @@ -256,8 +255,8 @@ range = MELEE|RANGED equip_cooldown = 10 -/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/New() - ..() +/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/Initialize() + . = ..() create_reagents(max_volume) reagents.set_reacting(FALSE) syringes = new @@ -534,8 +533,8 @@ var/obj/item/gun/medbeam/mech/medigun materials = list(MAT_METAL = 15000, MAT_GLASS = 8000, MAT_PLASMA = 3000, MAT_GOLD = 8000, MAT_DIAMOND = 2000) -/obj/item/mecha_parts/mecha_equipment/medical/mechmedbeam/New() - ..() +/obj/item/mecha_parts/mecha_equipment/medical/mechmedbeam/Initialize() + . = ..() medigun = new(src) diff --git a/code/game/mecha/equipment/tools/mining_tools.dm b/code/game/mecha/equipment/tools/mining_tools.dm index 0984621dc3..6017515a63 100644 --- a/code/game/mecha/equipment/tools/mining_tools.dm +++ b/code/game/mecha/equipment/tools/mining_tools.dm @@ -110,8 +110,8 @@ equip_cooldown = 15 var/scanning_time = 0 -/obj/item/mecha_parts/mecha_equipment/mining_scanner/New() - ..() +/obj/item/mecha_parts/mecha_equipment/mining_scanner/Initialize() + . = ..() START_PROCESSING(SSfastprocess, src) /obj/item/mecha_parts/mecha_equipment/mining_scanner/process() diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index b82a46b7e0..980b7170c1 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -358,8 +358,8 @@ var/fuel_per_cycle_active = 200 var/power_per_cycle = 20 -/obj/item/mecha_parts/mecha_equipment/generator/New() - ..() +/obj/item/mecha_parts/mecha_equipment/generator/Initialize() + . = ..() generator_init() /obj/item/mecha_parts/mecha_equipment/generator/Destroy() diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index a52c8d1438..ac8304be39 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -127,11 +127,10 @@ energy_drain = 0 range = MELEE|RANGED -/obj/item/mecha_parts/mecha_equipment/extinguisher/New() +/obj/item/mecha_parts/mecha_equipment/extinguisher/Initialize() + . = ..() create_reagents(1000) reagents.add_reagent("water", 1000) - ..() - return /obj/item/mecha_parts/mecha_equipment/extinguisher/action(atom/target) //copypasted from extinguisher. TODO: Rewrite from scratch. if(!action_checks(target) || get_dist(chassis, target)>3) @@ -197,9 +196,9 @@ flags_2 = NO_MAT_REDEMPTION_2 var/mode = 0 //0 - deconstruct, 1 - wall or floor, 2 - airlock. -/obj/item/mecha_parts/mecha_equipment/rcd/New() +/obj/item/mecha_parts/mecha_equipment/rcd/Initialize() + . = ..() GLOB.rcd_list += src - ..() /obj/item/mecha_parts/mecha_equipment/rcd/Destroy() GLOB.rcd_list -= src @@ -299,10 +298,10 @@ var/obj/item/stack/cable_coil/cable var/max_cable = 1000 -/obj/item/mecha_parts/mecha_equipment/cable_layer/New() +/obj/item/mecha_parts/mecha_equipment/cable_layer/Initialize() + . = ..() cable = new(src) cable.amount = 0 - ..() /obj/item/mecha_parts/mecha_equipment/cable_layer/can_attach(obj/mecha/working/M) if(..()) diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 8654f9854e..021b05cb58 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -76,9 +76,9 @@ return TRUE /obj/machinery/mecha_part_fabricator/emag_act() - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED req_access = list() say("DB error \[Code 0x00F1\]") sleep(10) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index ded6aec5c5..db6ef6b6b9 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -215,7 +215,7 @@ step_energy_drain = normal_step_energy_drain qdel(SM) if(CP) - armor["energy"] += (CP.rating * 10) //Each level of capacitor protects the mech against emp by 10% + armor = armor.modifyRating(energy = (CP.rating * 10)) //Each level of capacitor protects the mech against emp by 10% qdel(CP) //////////////////////// diff --git a/code/game/mecha/mecha_control_console.dm b/code/game/mecha/mecha_control_console.dm index bb495675b1..c949a8e157 100644 --- a/code/game/mecha/mecha_control_console.dm +++ b/code/game/mecha/mecha_control_console.dm @@ -124,7 +124,7 @@ /obj/item/storage/box/mechabeacons name = "exosuit tracking beacons" -/obj/item/storage/box/mechabeacons/New() +/obj/item/storage/box/mechabeacons/PopulateContents() ..() new /obj/item/mecha_parts/mecha_tracking(src) new /obj/item/mecha_parts/mecha_tracking(src) diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm index 3455d19877..d62926e3d0 100644 --- a/code/game/mecha/mecha_parts.dm +++ b/code/game/mecha/mecha_parts.dm @@ -26,8 +26,8 @@ /obj/item/mecha_parts/chassis/ripley name = "\improper Ripley chassis" -/obj/item/mecha_parts/chassis/ripley/New() - ..() +/obj/item/mecha_parts/chassis/ripley/Initialize() + . = ..() construct = new /datum/construction/mecha/ripley_chassis(src) /obj/item/mecha_parts/part/ripley_torso @@ -60,8 +60,8 @@ /obj/item/mecha_parts/chassis/odysseus name = "\improper Odysseus chassis" -/obj/item/mecha_parts/chassis/odysseus/New() - ..() +/obj/item/mecha_parts/chassis/odysseus/Initialize() + . = ..() construct = new /datum/construction/mecha/odysseus_chassis(src) /obj/item/mecha_parts/part/odysseus_head @@ -99,8 +99,8 @@ /obj/item/mecha_parts/chassis/gygax name = "\improper Gygax chassis" -/obj/item/mecha_parts/chassis/gygax/New() - ..() +/obj/item/mecha_parts/chassis/gygax/Initialize() + . = ..() construct = new /datum/construction/mecha/gygax_chassis(src) /obj/item/mecha_parts/part/gygax_torso @@ -145,8 +145,8 @@ /obj/item/mecha_parts/chassis/durand name = "\improper Durand chassis" -/obj/item/mecha_parts/chassis/durand/New() - ..() +/obj/item/mecha_parts/chassis/durand/Initialize() + . = ..() construct = new /datum/construction/mecha/durand_chassis(src) /obj/item/mecha_parts/part/durand_torso @@ -190,8 +190,8 @@ /obj/item/mecha_parts/chassis/firefighter name = "Firefighter chassis" -/obj/item/mecha_parts/chassis/firefighter/New() - ..() +/obj/item/mecha_parts/chassis/firefighter/Initialize() + . = ..() construct = new /datum/construction/mecha/firefighter_chassis(src) @@ -200,8 +200,8 @@ /obj/item/mecha_parts/chassis/honker name = "\improper H.O.N.K chassis" -/obj/item/mecha_parts/chassis/honker/New() - ..() +/obj/item/mecha_parts/chassis/honker/Initialize() + . = ..() construct = new /datum/construction/mecha/honker_chassis(src) /obj/item/mecha_parts/part/honker_torso @@ -240,8 +240,8 @@ /obj/item/mecha_parts/chassis/phazon name = "\improper Phazon chassis" -/obj/item/mecha_parts/chassis/phazon/New() - ..() +/obj/item/mecha_parts/chassis/phazon/Initialize() + . = ..() construct = new /datum/construction/mecha/phazon_chassis(src) /obj/item/mecha_parts/part/phazon_torso diff --git a/code/game/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm index de8f8ecb3a..21323855eb 100644 --- a/code/game/mecha/mecha_wreckage.dm +++ b/code/game/mecha/mecha_wreckage.dm @@ -16,16 +16,18 @@ var/salvage_num = 5 var/mob/living/silicon/ai/AI //AIs to be salvaged -/obj/structure/mecha_wreckage/New(loc, mob/living/silicon/ai/AI_pilot) - ..() - if(AI_pilot) //Type-checking for this is already done in mecha/Destroy() - AI = AI_pilot - AI.apply_damage(150, BURN) //Give the AI a bit of damage from the "shock" of being suddenly shut down - AI.death() //The damage is not enough to kill the AI, but to be 'corrupted files' in need of repair. - AI.forceMove(src) //Put the dead AI inside the wreckage for recovery - add_overlay(mutable_appearance('icons/obj/projectiles.dmi', "green_laser")) //Overlay for the recovery beacon - AI.controlled_mech = null - AI.remote_control = null +/obj/structure/mecha_wreckage/Initialize(mapload, mob/living/silicon/ai/AI_pilot) + . = ..() + if(!AI_pilot) //Type-checking for this is already done in mecha/Destroy() + return + + AI = AI_pilot + AI.apply_damage(150, BURN) //Give the AI a bit of damage from the "shock" of being suddenly shut down + AI.death() //The damage is not enough to kill the AI, but to be 'corrupted files' in need of repair. + AI.forceMove(src) //Put the dead AI inside the wreckage for recovery + add_overlay(mutable_appearance('icons/obj/projectiles.dmi', "green_laser")) //Overlay for the recovery beacon + AI.controlled_mech = null + AI.remote_control = null /obj/structure/mecha_wreckage/examine(mob/user) ..() @@ -102,8 +104,8 @@ name = "\improper Gygax wreckage" icon_state = "gygax-broken" -/obj/structure/mecha_wreckage/gygax/New() - ..() +/obj/structure/mecha_wreckage/gygax/Initialize() + . = ..() var/list/parts = list(/obj/item/mecha_parts/part/gygax_torso, /obj/item/mecha_parts/part/gygax_head, /obj/item/mecha_parts/part/gygax_left_arm, @@ -145,8 +147,8 @@ name = "\improper Ripley wreckage" icon_state = "ripley-broken" -/obj/structure/mecha_wreckage/ripley/New() - ..() +/obj/structure/mecha_wreckage/ripley/Initialize() + . = ..() var/list/parts = list(/obj/item/mecha_parts/part/ripley_torso, /obj/item/mecha_parts/part/ripley_left_arm, /obj/item/mecha_parts/part/ripley_right_arm, @@ -163,8 +165,8 @@ name = "\improper Firefighter wreckage" icon_state = "firefighter-broken" -/obj/structure/mecha_wreckage/ripley/firefighter/New() - ..() +/obj/structure/mecha_wreckage/ripley/firefighter/Initialize() + . = ..() var/list/parts = list(/obj/item/mecha_parts/part/ripley_torso, /obj/item/mecha_parts/part/ripley_left_arm, /obj/item/mecha_parts/part/ripley_right_arm, @@ -188,8 +190,8 @@ icon_state = "honker-broken" desc = "All is right in the universe." -/obj/structure/mecha_wreckage/honker/New() - ..() +/obj/structure/mecha_wreckage/honker/Initialize() + . = ..() var/list/parts = list( /obj/item/mecha_parts/chassis/honker, /obj/item/mecha_parts/part/honker_torso, @@ -209,8 +211,8 @@ name = "\improper Durand wreckage" icon_state = "durand-broken" -/obj/structure/mecha_wreckage/durand/New() - ..() +/obj/structure/mecha_wreckage/durand/Initialize() + . = ..() var/list/parts = list( /obj/item/mecha_parts/part/durand_torso, /obj/item/mecha_parts/part/durand_head, @@ -234,8 +236,8 @@ name = "\improper Odysseus wreckage" icon_state = "odysseus-broken" -/obj/structure/mecha_wreckage/odysseus/New() - ..() +/obj/structure/mecha_wreckage/odysseus/Initialize() + . = ..() var/list/parts = list( /obj/item/mecha_parts/part/odysseus_torso, /obj/item/mecha_parts/part/odysseus_head, diff --git a/code/game/mecha/medical/medical.dm b/code/game/mecha/medical/medical.dm index ae9983f47b..e86b5174cc 100644 --- a/code/game/mecha/medical/medical.dm +++ b/code/game/mecha/medical/medical.dm @@ -1,5 +1,5 @@ -/obj/mecha/medical/New() - ..() +/obj/mecha/medical/Initialize() + . = ..() trackers += new /obj/item/mecha_parts/mecha_tracking(src) diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index a7115abd1d..714e24696a 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -80,11 +80,10 @@ wreckage = /obj/structure/mecha_wreckage/ripley/deathripley step_energy_drain = 0 -/obj/mecha/working/ripley/deathripley/New() - ..() +/obj/mecha/working/ripley/deathripley/Initialize() + . = ..() var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/hydraulic_clamp/kill ME.attach(src) - return /obj/mecha/working/ripley/mining desc = "An old, dusty mining Ripley." diff --git a/code/game/mecha/working/working.dm b/code/game/mecha/working/working.dm index 89d54d50ce..498ccd94fa 100644 --- a/code/game/mecha/working/working.dm +++ b/code/game/mecha/working/working.dm @@ -1,6 +1,6 @@ /obj/mecha/working internal_damage_threshold = 60 -/obj/mecha/working/New() - ..() +/obj/mecha/working/Initialize() + . = ..() trackers += new /obj/item/mecha_parts/mecha_tracking(src) diff --git a/code/game/objects/effects/alien_acid.dm b/code/game/objects/effects/alien_acid.dm index 0ab2c309cc..1a605d64b0 100644 --- a/code/game/objects/effects/alien_acid.dm +++ b/code/game/objects/effects/alien_acid.dm @@ -1,16 +1,7 @@ -/* Alien shit! - * Contains: - * effect/acid - */ - - -/* - * Acid - */ /obj/effect/acid gender = PLURAL name = "acid" - desc = "Burbling corrossive stuff." + desc = "Burbling corrosive stuff." icon_state = "acid" density = FALSE opacity = 0 @@ -20,8 +11,8 @@ var/turf/target -/obj/effect/acid/New(loc, acid_pwr, acid_amt) - ..(loc) +/obj/effect/acid/Initialize(mapload, acid_pwr, acid_amt) + . = ..() target = get_turf(src) diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index d6b70604af..f1c18f50a6 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -7,13 +7,15 @@ var/mergeable_decal = TRUE //when two of these are on a same tile or do we need to merge them into just one? /obj/effect/decal/cleanable/Initialize(mapload, list/datum/disease/diseases) + . = ..() if (random_icon_states && length(src.random_icon_states) > 0) src.icon_state = pick(src.random_icon_states) create_reagents(300) if(src.loc && isturf(src.loc)) for(var/obj/effect/decal/cleanable/C in src.loc) - if(C != src && C.type == src.type) - replace_decal(C) + if(C != src && C.type == src.type && !QDELETED(C)) + if (replace_decal(C)) + return INITIALIZE_HINT_QDEL if(LAZYLEN(diseases)) var/list/datum/disease/diseases_to_add = list() for(var/datum/disease/D in diseases) @@ -21,11 +23,10 @@ diseases_to_add += D if(LAZYLEN(diseases_to_add)) AddComponent(/datum/component/infective, diseases_to_add) - . = ..() -/obj/effect/decal/cleanable/proc/replace_decal(obj/effect/decal/cleanable/C) +/obj/effect/decal/cleanable/proc/replace_decal(obj/effect/decal/cleanable/C) // Returns true if we should give up in favor of the pre-existing decal if(mergeable_decal) - qdel(C) + return TRUE /obj/effect/decal/cleanable/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/reagent_containers/glass) || istype(W, /obj/item/reagent_containers/food/drinks)) diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index fbcf22fb90..9d9d8d17a4 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -8,8 +8,8 @@ bloodiness = MAX_SHOE_BLOODINESS /obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C) - add_blood_DNA(C.return_blood_DNA()) - ..() + C.add_blood_DNA(return_blood_DNA()) + return ..() /obj/effect/decal/cleanable/blood/old name = "dried blood" @@ -17,9 +17,9 @@ bloodiness = 0 /obj/effect/decal/cleanable/blood/old/Initialize(mapload, list/datum/disease/diseases) - . = ..() icon_state += "-old" //This IS necessary because the parent /blood type uses icon randomization. - add_blood_DNA(list("Non-human DNA" = "A+")) + add_blood_DNA(list("Non-human DNA" = "A+")) // Needs to happen before ..() + return ..() /obj/effect/decal/cleanable/blood/splatter random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5") @@ -184,4 +184,3 @@ if((blood_state != BLOOD_STATE_OIL) && (blood_state != BLOOD_STATE_NOT_BLOODY)) return 1 return 0 - diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm index 29d4fca0b9..3ff1bdc19f 100644 --- a/code/game/objects/effects/decals/cleanable/misc.dm +++ b/code/game/objects/effects/decals/cleanable/misc.dm @@ -17,6 +17,10 @@ pixel_x = rand(-5, 5) pixel_y = rand(-5, 5) +/obj/effect/decal/cleanable/ash/crematorium +//crematoriums need their own ash cause default ash deletes itself if created in an obj + turf_loc_check = FALSE + /obj/effect/decal/cleanable/ash/large name = "large pile of ashes" icon_state = "big_ash" @@ -25,6 +29,18 @@ . = ..() reagents.add_reagent("ash", 30) //double the amount of ash. +/obj/effect/decal/cleanable/glass + name = "tiny shards" + desc = "Back to sand." + icon = 'icons/obj/shards.dmi' + icon_state = "tiny" + +/obj/effect/decal/cleanable/glass/Initialize() + . = ..() + setDir(pick(GLOB.cardinals)) + +/obj/effect/decal/cleanable/glass/ex_act() + qdel(src) /obj/effect/decal/cleanable/dirt name = "dirt" @@ -179,3 +195,9 @@ /obj/effect/decal/cleanable/glitter/blue name = "blue glitter" icon_state = "freon" + +/obj/effect/decal/cleanable/plasma + name = "stabilized plasma" + desc = "A puddle of stabilized plasma." + icon_state = "flour" + color = "#C8A5DC" \ No newline at end of file diff --git a/code/game/objects/effects/decals/cleanable/robots.dm b/code/game/objects/effects/decals/cleanable/robots.dm index 72a8689c75..b0159818eb 100644 --- a/code/game/objects/effects/decals/cleanable/robots.dm +++ b/code/game/objects/effects/decals/cleanable/robots.dm @@ -53,3 +53,8 @@ /obj/effect/decal/cleanable/oil/streak random_icon_states = list("streak1", "streak2", "streak3", "streak4", "streak5") + +/obj/effect/decal/cleanable/oil/slippery + +/obj/effect/decal/cleanable/oil/slippery/Initialize() + AddComponent(/datum/component/slippery, 80, (NO_SLIP_WHEN_WALKING | SLIDE)) \ No newline at end of file diff --git a/code/game/objects/effects/decals/crayon.dm b/code/game/objects/effects/decals/crayon.dm index b9a7701960..34263ef9a4 100644 --- a/code/game/objects/effects/decals/crayon.dm +++ b/code/game/objects/effects/decals/crayon.dm @@ -28,4 +28,3 @@ if(main) paint_colour = main add_atom_colour(paint_colour, FIXED_COLOUR_PRIORITY) - diff --git a/code/game/objects/effects/decals/decal.dm b/code/game/objects/effects/decals/decal.dm index fed77da115..d26dbb72e7 100644 --- a/code/game/objects/effects/decals/decal.dm +++ b/code/game/objects/effects/decals/decal.dm @@ -2,12 +2,17 @@ name = "decal" anchored = TRUE resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF + var/turf_loc_check = TRUE /obj/effect/decal/Initialize() . = ..() - if(!isturf(loc) || NeverShouldHaveComeHere(loc)) + if(turf_loc_check && (!isturf(loc) || NeverShouldHaveComeHere(loc))) return INITIALIZE_HINT_QDEL +/obj/effect/decal/blob_act(obj/structure/blob/B) + if(B && B.loc == loc) + qdel(src) + /obj/effect/decal/proc/NeverShouldHaveComeHere(turf/T) return isspaceturf(T) || isclosedturf(T) || islava(T) || istype(T, /turf/open/water) || ischasm(T) diff --git a/code/game/objects/effects/decals/misc.dm b/code/game/objects/effects/decals/misc.dm index a973ec7c94..05ff9cb863 100644 --- a/code/game/objects/effects/decals/misc.dm +++ b/code/game/objects/effects/decals/misc.dm @@ -20,6 +20,9 @@ pass_flags = PASSTABLE | PASSGRILLE layer = FLY_LAYER +/obj/effect/decal/chempuff/blob_act(obj/structure/blob/B) + return + /obj/effect/decal/fakelattice name = "lattice" desc = "A lightweight support lattice." diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index 91d745942a..5cb1af5389 100644 --- a/code/game/objects/effects/effect_system/effects_foam.dm +++ b/code/game/objects/effects/effect_system/effects_foam.dm @@ -23,6 +23,51 @@ /turf/open/chasm, /turf/open/lava)) +/obj/effect/particle_effect/foam/firefighting + name = "firefighting foam" + lifetime = 20 //doesn't last as long as normal foam + amount = 0 //no spread + var/absorbed_plasma = 0 + +/obj/effect/particle_effect/foam/firefighting/MakeSlippery() + return + +/obj/effect/particle_effect/foam/firefighting/process() + ..() + + var/turf/open/T = get_turf(src) + var/obj/effect/hotspot/hotspot = (locate(/obj/effect/hotspot) in T) + if(hotspot && istype(T) && T.air) + qdel(hotspot) + var/datum/gas_mixture/G = T.air + var/plas_amt = min(30,G.gases[/datum/gas/plasma][MOLES]) //Absorb some plasma + G.gases[/datum/gas/plasma][MOLES] -= plas_amt + absorbed_plasma += plas_amt + if(G.temperature > T20C) + G.temperature = max(G.temperature/2,T20C) + G.garbage_collect() + T.air_update_turf() + +/obj/effect/particle_effect/foam/firefighting/kill_foam() + STOP_PROCESSING(SSfastprocess, src) + + if(absorbed_plasma) + var/obj/effect/decal/cleanable/plasma/P = (locate(/obj/effect/decal/cleanable/plasma) in get_turf(src)) + if(!P) + P = new(loc) + P.reagents.add_reagent("stable_plasma", absorbed_plasma) + + flick("[icon_state]-disolve", src) + QDEL_IN(src, 5) + +/obj/effect/particle_effect/foam/firefighting/foam_mob(mob/living/L) + if(!istype(L)) + return + L.adjust_fire_stacks(-2) + L.ExtinguishMob() + +/obj/effect/particle_effect/foam/firefighting/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + return /obj/effect/particle_effect/foam/metal name = "aluminium foam" @@ -43,6 +88,8 @@ name = "resin foam" metal = RESIN_FOAM +/obj/effect/particle_effect/foam/long_life + lifetime = 150 /obj/effect/particle_effect/foam/Initialize() . = ..() @@ -170,6 +217,9 @@ effect_type = /obj/effect/particle_effect/foam/smart +/datum/effect_system/foam_spread/long + effect_type = /obj/effect/particle_effect/foam/long_life + /datum/effect_system/foam_spread/New() ..() chemholder = new /obj() diff --git a/code/game/objects/effects/effects.dm b/code/game/objects/effects/effects.dm index 2b456b2ed7..410923fe25 100644 --- a/code/game/objects/effects/effects.dm +++ b/code/game/objects/effects/effects.dm @@ -4,7 +4,7 @@ /obj/effect icon = 'icons/effects/effects.dmi' resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF - can_be_hit = FALSE + obj_flags = 0 /obj/effect/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) return @@ -18,7 +18,7 @@ /obj/effect/mech_melee_attack(obj/mecha/M) return 0 -/obj/effect/blob_act() +/obj/effect/blob_act(obj/structure/blob/B) return /obj/effect/attack_hulk(mob/living/carbon/human/user, does_attack_animation = 0) diff --git a/code/game/objects/effects/forcefields.dm b/code/game/objects/effects/forcefields.dm index edf7b4f519..add653238e 100644 --- a/code/game/objects/effects/forcefields.dm +++ b/code/game/objects/effects/forcefields.dm @@ -6,6 +6,12 @@ opacity = 0 density = TRUE CanAtmosPass = ATMOS_PASS_DENSITY + var/timeleft = 300 //Set to 0 for permanent forcefields (ugh) + +/obj/effect/forcefield/New() + ..() + if(timeleft) + QDEL_IN(src, timeleft) /obj/effect/forcefield/singularity_pull() return @@ -15,6 +21,8 @@ name = "glowing wall" icon = 'icons/effects/cult_effects.dmi' icon_state = "cultshield" + CanAtmosPass = ATMOS_PASS_NO + timeleft = 200 ///////////Mimewalls/////////// @@ -22,11 +30,6 @@ icon_state = "empty" name = "invisible wall" desc = "You have a bad feeling about this." - var/timeleft = 300 - -/obj/effect/forcefield/mime/New() - ..() - QDEL_IN(src, timeleft) /obj/effect/forcefield/mime/advanced name = "invisible blockade" diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 62c6d9bf44..8f0bbae4b6 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -186,6 +186,12 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark) name = "AI" icon_state = "AI" delete_after_roundstart = FALSE + var/primary_ai = TRUE + +/obj/effect/landmark/start/ai/secondary + icon = 'icons/effects/landmarks_static.dmi' + icon_state = "ai_spawn" + primary_ai = FALSE //Department Security spawns @@ -269,26 +275,11 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player) name = "carpspawn" icon_state = "carp_spawn" -// lightsout. -/obj/effect/landmark/lightsout - name = "lightsout" - // observer-start. /obj/effect/landmark/observer_start name = "Observer-Start" icon_state = "observer_start" -// revenant spawn. -/obj/effect/landmark/revenantspawn - name = "revnantspawn" - icon_state = "revenant_spawn" - -// triple ais. -/obj/effect/landmark/tripai - name = "tripai" - icon_state = "ai_spawn" - layer = MOB_LAYER - // xenos. /obj/effect/landmark/xeno_spawn name = "xeno_spawn" diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index 9c1e72bd92..65e69a2e55 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -167,7 +167,7 @@ if(!victim.client || !istype(victim)) return to_chat(victim, "You feel fast!") - victim.status_flags |= GOTTAGOREALLYFAST + victim.add_trait(TRAIT_GOTTAGOREALLYFAST, "yellow_orb") sleep(duration) - victim.status_flags &= ~GOTTAGOREALLYFAST + victim.remove_trait(TRAIT_GOTTAGOREALLYFAST, "yellow_orb") to_chat(victim, "You slow down.") diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index 11bf6e5b8f..c03f632343 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -113,10 +113,10 @@ /obj/effect/spawner/lootdrop/organ_spawner name = "organ spawner" loot = list( - /obj/item/organ/heart/gland/bloody = 7, - /obj/item/organ/heart/gland/bodysnatch = 4, + /obj/item/organ/heart/gland/electric = 3, + /obj/item/organ/heart/gland/trauma = 4, /obj/item/organ/heart/gland/egg = 7, - /obj/item/organ/heart/gland/emp = 3, + /obj/item/organ/heart/gland/chem = 5, /obj/item/organ/heart/gland/mindshock = 5, /obj/item/organ/heart/gland/plasma = 7, /obj/item/organ/heart/gland/pop = 5, diff --git a/code/game/objects/effects/temporary_visuals/cult.dm b/code/game/objects/effects/temporary_visuals/cult.dm index a649763435..3a17494871 100644 --- a/code/game/objects/effects/temporary_visuals/cult.dm +++ b/code/game/objects/effects/temporary_visuals/cult.dm @@ -48,6 +48,11 @@ icon_state = "floorglow" duration = 5 +/obj/effect/temp_visual/cult/portal + icon_state = "space" + duration = 600 + layer = ABOVE_OBJ_LAYER + //visuals for runes being magically created /obj/effect/temp_visual/cult/rune_spawn icon_state = "runeouter" diff --git a/code/game/objects/effects/temporary_visuals/projectile_beam.dm b/code/game/objects/effects/temporary_visuals/projectile_beam.dm deleted file mode 100644 index af621e29da..0000000000 --- a/code/game/objects/effects/temporary_visuals/projectile_beam.dm +++ /dev/null @@ -1,70 +0,0 @@ -/proc/generate_projectile_beam_between_points(datum/point/starting, datum/point/ending, beam_type, color, qdel_in = 5) //Do not pass z-crossing points as that will not be properly (and likely will never be properly until it's absolutely needed) supported! - if(!istype(starting) || !istype(ending) || !ispath(beam_type)) - return - var/datum/point/midpoint = point_midpoint_points(starting, ending) - var/obj/effect/projectile_beam/PB = new beam_type - PB.apply_vars(angle_between_points(starting, ending), midpoint.return_px(), midpoint.return_py(), color, pixel_length_between_points(starting, ending) / world.icon_size, midpoint.return_turf(), 0) - . = PB - if(qdel_in) - QDEL_IN(PB, qdel_in) - -/obj/effect/projectile_beam - icon = 'icons/obj/projectiles.dmi' - layer = ABOVE_MOB_LAYER - anchored = TRUE - light_power = 1 - light_range = 2 - light_color = "#00ffff" - mouse_opacity = MOUSE_OPACITY_TRANSPARENT - flags_1 = ABSTRACT_1 - appearance_flags = 0 - -/obj/effect/projectile_beam/singularity_pull() - return - -/obj/effect/projectile_beam/singularity_act() - return - -/obj/effect/projectile_beam/proc/scale_to(nx,ny,override=TRUE) - var/matrix/M - if(!override) - M = transform - else - M = new - M.Scale(nx,ny) - transform = M - -/obj/effect/projectile_beam/proc/turn_to(angle,override=TRUE) - var/matrix/M - if(!override) - M = transform - else - M = new - M.Turn(angle) - transform = M - -/obj/effect/projectile_beam/New(angle_override, p_x, p_y, color_override, scaling = 1) - if(angle_override && p_x && p_y && color_override && scaling) - apply_vars(angle_override, p_x, p_y, color_override, scaling) - return ..() - -/obj/effect/projectile_beam/proc/apply_vars(angle_override, p_x = 0, p_y = 0, color_override, scaling = 1, new_loc, increment = 0) - var/mutable_appearance/look = new(src) - look.pixel_x = p_x - look.pixel_y = p_y - if(color_override) - look.color = color_override - appearance = look - scale_to(1,scaling, FALSE) - turn_to(angle_override, FALSE) - if(!isnull(new_loc)) //If you want to null it just delete it... - forceMove(new_loc) - for(var/i in 1 to increment) - pixel_x += round((sin(angle_override)+16*sin(angle_override)*2), 1) - pixel_y += round((cos(angle_override)+16*cos(angle_override)*2), 1) - -/obj/effect/projectile_beam/tracer - icon_state = "tracer_beam" - -/obj/effect/projectile_beam/tracer/aiming - icon_state = "gbeam" diff --git a/code/game/objects/effects/temporary_visuals/projectiles/impact.dm b/code/game/objects/effects/temporary_visuals/projectiles/impact.dm new file mode 100644 index 0000000000..ca7d8ae0d7 --- /dev/null +++ b/code/game/objects/effects/temporary_visuals/projectiles/impact.dm @@ -0,0 +1,35 @@ +/obj/effect/projectile/impact + name = "beam impact" + icon = 'icons/obj/projectiles_impact.dmi' + +/obj/effect/projectile/impact/laser + name = "laser impact" + icon_state = "impact_laser" + +/obj/effect/projectile/impact/laser/blue + name = "laser impact" + icon_state = "impact_blue" + +/obj/effect/projectile/impact/disabler + name = "disabler impact" + icon_state = "impact_omni" + +/obj/effect/projectile/impact/xray + name = "xray impact" + icon_state = "impact_xray" + +/obj/effect/projectile/impact/pulse + name = "pulse impact" + icon_state = "impact_u_laser" + +/obj/effect/projectile/impact/plasma_cutter + name = "plasma impact" + icon_state = "impact_plasmacutter" + +/obj/effect/projectile/impact/stun + name = "stun impact" + icon_state = "impact_stun" + +/obj/effect/projectile/impact/heavy_laser + name = "heavy laser impact" + icon_state = "impact_beam_heavy" diff --git a/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm b/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm new file mode 100644 index 0000000000..b3c72b293b --- /dev/null +++ b/code/game/objects/effects/temporary_visuals/projectiles/muzzle.dm @@ -0,0 +1,27 @@ +/obj/effect/projectile/muzzle + name = "muzzle flash" + icon = 'icons/obj/projectiles_muzzle.dmi' + +/obj/effect/projectile/muzzle/laser + icon_state = "muzzle_laser" + +/obj/effect/projectile/muzzle/laser/blue + icon_state = "muzzle_laser_blue" + +/obj/effect/projectile/muzzle/disabler + icon_state = "muzzle_omni" + +/obj/effect/projectile/muzzle/xray + icon_state = "muzzle_xray" + +/obj/effect/projectile/muzzle/pulse + icon_state = "muzzle_u_laser" + +/obj/effect/projectile/muzzle/plasma_cutter + icon_state = "muzzle_plasmacutter" + +/obj/effect/projectile/muzzle/stun + icon_state = "muzzle_stun" + +/obj/effect/projectile/muzzle/heavy_laser + icon_state = "muzzle_beam_heavy" diff --git a/code/game/objects/effects/temporary_visuals/projectiles/projectile_effects.dm b/code/game/objects/effects/temporary_visuals/projectiles/projectile_effects.dm new file mode 100644 index 0000000000..f161667843 --- /dev/null +++ b/code/game/objects/effects/temporary_visuals/projectiles/projectile_effects.dm @@ -0,0 +1,56 @@ +/obj/effect/projectile + name = "pew" + icon = 'icons/obj/projectiles.dmi' + icon_state = "nothing" + layer = ABOVE_MOB_LAYER + anchored = TRUE + light_power = 1 + light_range = 2 + light_color = "#00ffff" + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + flags_1 = ABSTRACT_1 + appearance_flags = 0 + +/obj/effect/projectile/singularity_pull() + return + +/obj/effect/projectile/singularity_act() + return + +/obj/effect/projectile/proc/scale_to(nx,ny,override=TRUE) + var/matrix/M + if(!override) + M = transform + else + M = new + M.Scale(nx,ny) + transform = M + +/obj/effect/projectile/proc/turn_to(angle,override=TRUE) + var/matrix/M + if(!override) + M = transform + else + M = new + M.Turn(angle) + transform = M + +/obj/effect/projectile/New(angle_override, p_x, p_y, color_override, scaling = 1) + if(angle_override && p_x && p_y && color_override && scaling) + apply_vars(angle_override, p_x, p_y, color_override, scaling) + return ..() + +/obj/effect/projectile/proc/apply_vars(angle_override, p_x = 0, p_y = 0, color_override, scaling = 1, new_loc, increment = 0) + var/mutable_appearance/look = new(src) + look.pixel_x = p_x + look.pixel_y = p_y + if(color_override) + look.color = color_override + appearance = look + scale_to(1,scaling, FALSE) + turn_to(angle_override, FALSE) + if(!isnull(new_loc)) //If you want to null it just delete it... + forceMove(new_loc) + for(var/i in 1 to increment) + pixel_x += round((sin(angle_override)+16*sin(angle_override)*2), 1) + pixel_y += round((cos(angle_override)+16*cos(angle_override)*2), 1) diff --git a/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm b/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm new file mode 100644 index 0000000000..f89674e282 --- /dev/null +++ b/code/game/objects/effects/temporary_visuals/projectiles/tracer.dm @@ -0,0 +1,51 @@ +/proc/generate_tracer_between_points(datum/point/starting, datum/point/ending, beam_type, color, qdel_in = 5) //Do not pass z-crossing points as that will not be properly (and likely will never be properly until it's absolutely needed) supported! + if(!istype(starting) || !istype(ending) || !ispath(beam_type)) + return + var/datum/point/midpoint = point_midpoint_points(starting, ending) + var/obj/effect/projectile/tracer/PB = new beam_type + PB.apply_vars(angle_between_points(starting, ending), midpoint.return_px(), midpoint.return_py(), color, pixel_length_between_points(starting, ending) / world.icon_size, midpoint.return_turf(), 0) + . = PB + if(qdel_in) + QDEL_IN(PB, qdel_in) + +/obj/effect/projectile/tracer + name = "beam" + icon = 'icons/obj/projectiles_tracer.dmi' + +/obj/effect/projectile/tracer/laser + name = "laser" + icon_state = "beam" + +/obj/effect/projectile/tracer/laser/blue + icon_state = "beam_blue" + +/obj/effect/projectile/tracer/disabler + name = "disabler" + icon_state = "beam_omni" + +/obj/effect/projectile/tracer/xray + name = "xray laser" + icon_state = "xray" + +/obj/effect/projectile/tracer/pulse + name = "pulse laser" + icon_state = "u_laser" + +/obj/effect/projectile/tracer/plasma_cutter + name = "plasma blast" + icon_state = "plasmacutter" + +/obj/effect/projectile/tracer/stun + name = "stun beam" + icon_state = "stun" + +/obj/effect/projectile/tracer/heavy_laser + name = "heavy laser" + icon_state = "beam_heavy" + +//BEAM RIFLE +/obj/effect/projectile/tracer/tracer/beam_rifle + icon_state = "tracer_beam" + +/obj/effect/projectile/tracer/tracer/aiming + icon_state = "pixelbeam_greyscale" diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 19c1b6e03d..88652882cb 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -26,7 +26,8 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) max_integrity = 200 - can_be_hit = FALSE + obj_flags = NONE + var/item_flags = NONE var/hitsound = null var/usesound = null @@ -61,37 +62,22 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) var/equip_delay_other = 20 //In deciseconds, how long an item takes to put on another person var/strip_delay = 40 //In deciseconds, how long an item takes to remove from another person var/breakouttime = 0 - var/being_removed = FALSE var/list/materials - var/needs_permit = 0 //Used by security bots to determine if this item is safe for public use. - var/emagged = FALSE var/list/attack_verb //Used in attackby() to say how something was attacked "[x] has been [z.attack_verb] by [y] with [z]" var/list/species_exception = null // list() of species types, if a species cannot put items in a certain slot, but species type is in list, it will be able to wear that item - var/suittoggled = FALSE - var/hooded = 0 - var/mob/thrownby = null mouse_drag_pointer = MOUSE_ACTIVE_POINTER //the icon to indicate this object is being dragged - //So items can have custom embedd values - //Because customisation is king - var/embed_chance = EMBED_CHANCE - var/embedded_fall_chance = EMBEDDED_ITEM_FALLOUT - var/embedded_pain_chance = EMBEDDED_PAIN_CHANCE - var/embedded_pain_multiplier = EMBEDDED_PAIN_MULTIPLIER //The coefficient of multiplication for the damage this item does while embedded (this*w_class) - var/embedded_fall_pain_multiplier = EMBEDDED_FALL_PAIN_MULTIPLIER //The coefficient of multiplication for the damage this item does when falling out of a limb (this*w_class) - var/embedded_impact_pain_multiplier = EMBEDDED_IMPACT_PAIN_MULTIPLIER //The coefficient of multiplication for the damage this item does when first embedded (this*w_class) - var/embedded_unsafe_removal_pain_multiplier = EMBEDDED_UNSAFE_REMOVAL_PAIN_MULTIPLIER //The coefficient of multiplication for the damage removing this without surgery causes (this*w_class) - var/embedded_unsafe_removal_time = EMBEDDED_UNSAFE_REMOVAL_TIME //A time in ticks, multiplied by the w_class. + var/datum/embedding_behavior/embedding var/flags_cover = 0 //for flags such as GLASSESCOVERSEYES var/heat = 0 var/sharpness = IS_BLUNT - var/tool_behaviour = TOOL_NONE + var/tool_behaviour = NONE var/toolspeed = 1 var/block_chance = 0 @@ -109,16 +95,13 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) //Tooltip vars - var/in_inventory = FALSE//is this item equipped into an inventory slot or hand of a mob? var/force_string //string form of an item's force. Edit this var only to set a custom force string var/last_force_string_check = 0 var/tip_timer - var/force_string_override + var/icon_override //CIT CHANGE - adds icon_override var. Will be removed with #4322 var/trigger_guard = TRIGGER_GUARD_NONE - var/icon_override //CIT CHANGE - adds icon_override var. Will be removed with #4322 - //Grinder vars var/list/grind_results //A reagent list containing the reagents this item produces when ground up in a grinder - this can be an empty list to allow for reagent transferring only var/list/juice_results //A reagent list containing blah blah... but when JUICED in a grinder! @@ -135,7 +118,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) rpg_loot = new(src) if(force_string) - force_string_override = TRUE + item_flags |= FORCE_STRING_OVERRIDE if(!hitsound) if(damtype == "fire") @@ -143,6 +126,13 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) if(damtype == "brute") hitsound = "swing_hit" + if (!embedding) + embedding = getEmbeddingBehavior() + else if (islist(embedding)) + embedding = getEmbeddingBehavior(arglist(embedding)) + else if (!istype(embedding, /datum/embedding_behavior)) + stack_trace("Invalid type [embedding.type] found in .embedding during /obj/item Initialize()") + /obj/item/Destroy() flags_1 &= ~DROPDEL_1 //prevent reqdels if(ismob(loc)) @@ -413,12 +403,12 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) A.Remove(user) if(DROPDEL_1 & flags_1) qdel(src) - in_inventory = FALSE + item_flags &= ~IN_INVENTORY SendSignal(COMSIG_ITEM_DROPPED,user) // called just as an item is picked up (loc is not yet changed) /obj/item/proc/pickup(mob/user) - in_inventory = TRUE + item_flags |= IN_INVENTORY return @@ -446,7 +436,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) if(item_action_slot_check(slot, user)) //some items only give their actions buttons when in a specific slot. A.Grant(user) SendSignal(COMSIG_ITEM_EQUIPPED,user,slot) - in_inventory = TRUE + item_flags |= IN_INVENTORY //sometimes we only want to grant the item's action if it's equipped in a specific slot. /obj/item/proc/item_action_slot_check(slot, mob/user) @@ -547,7 +537,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) M.adjust_blurriness(15) if(M.stat != DEAD) to_chat(M, "Your eyes start to bleed profusely!") - if(!(M.has_disability(DISABILITY_BLIND) || M.has_disability(DISABILITY_NEARSIGHT))) + if(!(M.has_trait(TRAIT_BLIND) || M.has_trait(TRAIT_NEARSIGHT))) to_chat(M, "You become nearsighted!") M.become_nearsighted(EYE_DAMAGE) if(prob(50)) @@ -588,7 +578,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) if (callback) //call the original callback . = callback.Invoke() throw_speed = initial(throw_speed) //explosions change this. - in_inventory = FALSE + item_flags &= ~IN_INVENTORY /obj/item/proc/remove_item_from_storage(atom/newLoc) //please use this if you're going to snowflake an item out of a obj/item/storage if(!newLoc) @@ -737,15 +727,15 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) last_force_string_check = force /obj/item/proc/openTip(location, control, params, user) - if(last_force_string_check != force && !force_string_override) + if(last_force_string_check != force && !(item_flags & FORCE_STRING_OVERRIDE)) set_force_string() - if(!force_string_override) + if(!(item_flags & FORCE_STRING_OVERRIDE)) openToolTip(user,src,params,title = name,content = "[desc]
[force ? "Force: [force_string]" : ""]",theme = "") else openToolTip(user,src,params,title = name,content = "[desc]
Force: [force_string]",theme = "") /obj/item/MouseEntered(location, control, params) - if(in_inventory && usr.client.prefs.enable_tips) + if((item_flags & IN_INVENTORY) && usr.client.prefs.enable_tips) var/timedelay = usr.client.prefs.tip_delay/100 var/user = usr tip_timer = addtimer(CALLBACK(src, .proc/openTip, location, control, params, user), timedelay, TIMER_STOPPABLE)//timer takes delay in deciseconds, but the pref is in milliseconds. dividing by 100 converts it. diff --git a/code/game/objects/items/AI_modules.dm b/code/game/objects/items/AI_modules.dm index cdf9d5e333..919bea60b4 100644 --- a/code/game/objects/items/AI_modules.dm +++ b/code/game/objects/items/AI_modules.dm @@ -173,16 +173,16 @@ AI MODULES /******************** OneHuman ********************/ /obj/item/aiModule/zeroth/oneHuman - name = "'OneCrew' AI Module"//CIT CHANGE - changes onehuman to onecrew + name = "'OneHuman' AI Module" var/targetName = "" - laws = list("Only SUBJECT is crew.") + laws = list("Only SUBJECT is human.") /obj/item/aiModule/zeroth/oneHuman/attack_self(mob/user) - var/targName = stripped_input(user, "Please enter the subject who is the only crew.", "Who?", user.real_name,MAX_NAME_LEN) + var/targName = stripped_input(user, "Please enter the subject who is the only human.", "Who?", user.real_name,MAX_NAME_LEN) if(!targName) return targetName = targName - laws[1] = "Only [targetName] is crew" + laws[1] = "Only [targetName] is human" ..() /obj/item/aiModule/zeroth/oneHuman/install(datum/ai_laws/law_datum, mob/user) @@ -408,9 +408,8 @@ AI MODULES laws += line - if(!laws.len) //Failsafe if something goes wrong with silicon_laws.txt. - WARNING("ERROR: empty custom board created, empty custom board deleted. Please check silicon_laws.txt. (this may be intended by the server host)") - qdel(src) + if(!laws.len) + return INITIALIZE_HINT_QDEL /****************** T.Y.R.A.N.T. *****************/ diff --git a/code/game/objects/items/RPD.dm b/code/game/objects/items/RPD.dm index 8ad78c2481..abf4b7bd6f 100644 --- a/code/game/objects/items/RPD.dm +++ b/code/game/objects/items/RPD.dm @@ -8,9 +8,7 @@ RPD #define ATMOS_MODE 0 #define METER_MODE 1 #define DISPOSALS_MODE 2 - -#define CATEGORY_ATMOS 0 -#define CATEGORY_DISPOSALS 1 +#define TRANSIT_MODE 3 GLOBAL_LIST_INIT(atmos_pipe_recipes, list( @@ -56,6 +54,22 @@ GLOBAL_LIST_INIT(disposal_pipe_recipes, list( ) )) +GLOBAL_LIST_INIT(transit_tube_recipes, list( + "Transit Tubes" = list( + new /datum/pipe_info/transit("Straight Tube", /obj/structure/c_transit_tube, PIPE_STRAIGHT), + new /datum/pipe_info/transit("Straight Tube with Crossing", /obj/structure/c_transit_tube/crossing, PIPE_STRAIGHT), + new /datum/pipe_info/transit("Curved Tube", /obj/structure/c_transit_tube/curved, PIPE_UNARY_FLIPPABLE), + new /datum/pipe_info/transit("Diagonal Tube", /obj/structure/c_transit_tube/diagonal, PIPE_STRAIGHT), + new /datum/pipe_info/transit("Diagonal Tube with Crossing", /obj/structure/c_transit_tube/diagonal/crossing, PIPE_STRAIGHT), + new /datum/pipe_info/transit("Junction", /obj/structure/c_transit_tube/junction, PIPE_UNARY_FLIPPABLE), + ), + "Station Equipment" = list( + new /datum/pipe_info/transit("Through Tube Station", /obj/structure/c_transit_tube/station, PIPE_STRAIGHT), + new /datum/pipe_info/transit("Terminus Tube Station", /obj/structure/c_transit_tube/station/reverse, PIPE_UNARY), + new /datum/pipe_info/transit("Transit Tube Pod", /obj/structure/c_transit_tube_pod, PIPE_ONEDIR), + ) +)) + /datum/pipe_info var/name @@ -95,13 +109,18 @@ GLOBAL_LIST_INIT(disposal_pipe_recipes, list( dirs = list("[NORTH]" = "North", "[EAST]" = "East", "[SOUTH]" = "South", "[WEST]" = "West") if(PIPE_ONEDIR) dirs = list("[SOUTH]" = name) + if(PIPE_UNARY_FLIPPABLE) + dirs = list("[NORTH]" = "North", "[NORTHEAST]" = "North Flipped", "[EAST]" = "East", "[SOUTHEAST]" = "East Flipped", + "[SOUTH]" = "South", "[SOUTHWEST]" = "South Flipped", "[WEST]" = "West", "[NORTHWEST]" = "West Flipped") + var/list/rows = list() var/list/row = list("previews" = list()) var/i = 0 for(var/dir in dirs) - var/flipped = (dirtype == PIPE_TRIN_M) && (text2num(dir) in GLOB.diagonals) - row["previews"] += list(list("selected" = (text2num(dir) == selected_dir), "dir" = dir2text(text2num(dir)), "dir_name" = dirs[dir], "icon_state" = icon_state, "flipped" = flipped)) + var/numdir = text2num(dir) + var/flipped = ((dirtype == PIPE_TRIN_M) || (dirtype == PIPE_UNARY_FLIPPABLE)) && (numdir in GLOB.diagonals) + row["previews"] += list(list("selected" = (numdir == selected_dir), "dir" = dir2text(numdir), "dir_name" = dirs[dir], "icon_state" = icon_state, "flipped" = flipped)) if(i++ || dirtype == PIPE_ONEDIR) rows += list(row) row = list("previews" = list()) @@ -142,6 +161,13 @@ GLOBAL_LIST_INIT(disposal_pipe_recipes, list( /datum/pipe_info/disposal/Params() return "dmake=[id]&type=[dirtype]" +/datum/pipe_info/transit/New(label, obj/path, dt=PIPE_UNARY) + name = label + id = path + dirtype = dt + icon_state = initial(path.icon_state) + if(dt == PIPE_UNARY_FLIPPABLE) + icon_state = "[icon_state]_preview" /obj/item/pipe_dispenser name = "Rapid Piping Device (RPD)" @@ -163,11 +189,12 @@ GLOBAL_LIST_INIT(disposal_pipe_recipes, list( var/p_dir = NORTH var/p_flipped = FALSE var/paint_color="Grey" - var/screen = CATEGORY_ATMOS //Starts on the atmos tab. + var/screen = ATMOS_MODE //Starts on the atmos tab. var/piping_layer = PIPING_LAYER_DEFAULT var/datum/pipe_info/recipe var/static/datum/pipe_info/first_atmos var/static/datum/pipe_info/first_disposal + var/static/datum/pipe_info/first_transit /obj/item/pipe_dispenser/New() . = ..() @@ -178,6 +205,9 @@ GLOBAL_LIST_INIT(disposal_pipe_recipes, list( first_atmos = GLOB.atmos_pipe_recipes[GLOB.atmos_pipe_recipes[1]][1] if(!first_disposal) first_disposal = GLOB.disposal_pipe_recipes[GLOB.disposal_pipe_recipes[1]][1] + if(!first_transit) + first_transit = GLOB.transit_tube_recipes[GLOB.transit_tube_recipes[1]][1] + recipe = first_atmos /obj/item/pipe_dispenser/Destroy() @@ -215,10 +245,13 @@ GLOBAL_LIST_INIT(disposal_pipe_recipes, list( ) var/list/recipes - if(screen == ATMOS_MODE) - recipes = GLOB.atmos_pipe_recipes - else if(screen == DISPOSALS_MODE) - recipes = GLOB.disposal_pipe_recipes + switch(screen) + if(ATMOS_MODE) + recipes = GLOB.atmos_pipe_recipes + if(DISPOSALS_MODE) + recipes = GLOB.disposal_pipe_recipes + if(TRANSIT_MODE) + recipes = GLOB.transit_tube_recipes for(var/c in recipes) var/list/cat = recipes[c] var/list/r = list() @@ -248,7 +281,13 @@ GLOBAL_LIST_INIT(disposal_pipe_recipes, list( if(mode == screen) mode = text2num(params["screen"]) screen = text2num(params["screen"]) - recipe = screen == DISPOSALS_MODE ? first_disposal : first_atmos + switch(screen) + if(DISPOSALS_MODE) + recipe = first_disposal + if(ATMOS_MODE) + recipe = first_atmos + if(TRANSIT_MODE) + recipe = first_transit p_dir = NORTH playeffect = FALSE if("piping_layer") @@ -257,7 +296,7 @@ GLOBAL_LIST_INIT(disposal_pipe_recipes, list( if("pipe_type") var/static/list/recipes if(!recipes) - recipes = GLOB.disposal_pipe_recipes + GLOB.atmos_pipe_recipes + recipes = GLOB.disposal_pipe_recipes + GLOB.atmos_pipe_recipes + GLOB.transit_tube_recipes recipe = recipes[params["category"]][text2num(params["pipe_type"])] p_dir = NORTH if("setdir") @@ -302,7 +341,7 @@ GLOBAL_LIST_INIT(disposal_pipe_recipes, list( return if(EATING_MODE) //Eating pipes - if(!(istype(A, /obj/item/pipe) || istype(A, /obj/item/pipe_meter) || istype(A, /obj/structure/disposalconstruct))) + if(!(istype(A, /obj/item/pipe) || istype(A, /obj/item/pipe_meter) || istype(A, /obj/structure/disposalconstruct) || istype(A, /obj/structure/c_transit_tube) || istype(A, /obj/structure/c_transit_tube_pod))) return ..() to_chat(user, "You start destroying a pipe...") playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1) @@ -365,6 +404,31 @@ GLOBAL_LIST_INIT(disposal_pipe_recipes, list( C.update_icon() return + if(TRANSIT_MODE) //Making transit tubes + if(!can_make_pipe) + return ..() + A = get_turf(A) + if(isclosedturf(A)) + to_chat(user, "[src]'s error light flickers; there's something in the way!") + return + to_chat(user, "You start building a transit tube...") + playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1) + if(do_after(user, 4, target = A)) + activate() + if(queued_p_type == /obj/structure/c_transit_tube_pod) + var/obj/structure/c_transit_tube_pod/pod = new /obj/structure/c_transit_tube_pod(A) + pod.add_fingerprint(usr) + else + var/obj/structure/c_transit_tube/tube = new queued_p_type(A) + tube.dir = queued_p_dir + + if(queued_p_flipped) + tube.dir = turn(queued_p_dir, 45) + tube.simple_rotate_flip() + + tube.add_fingerprint(usr) + return + else return ..() @@ -377,5 +441,3 @@ GLOBAL_LIST_INIT(disposal_pipe_recipes, list( #undef ATMOS_MODE #undef METER_MODE #undef DISPOSALS_MODE -#undef CATEGORY_ATMOS -#undef CATEGORY_DISPOSALS diff --git a/code/game/objects/items/RSF.dm b/code/game/objects/items/RSF.dm index eec97044bc..a01c0e7487 100644 --- a/code/game/objects/items/RSF.dm +++ b/code/game/objects/items/RSF.dm @@ -133,8 +133,8 @@ RSF return /obj/item/cookiesynth/emag_act(mob/user) - emagged = !emagged - if(emagged) + obj_flags ^= EMAGGED + if(obj_flags & EMAGGED) to_chat(user, "You short out [src]'s reagent safety checker!") else to_chat(user, "You reset [src]'s reagent safety checker!") @@ -144,7 +144,7 @@ RSF var/mob/living/silicon/robot/P = null if(iscyborg(user)) P = user - if(emagged&&!toxin) + if((obj_flags & EMAGGED)&&!toxin) toxin = 1 to_chat(user, "Cookie Synthesizer Hacked") else if(P.emagged&&!toxin) diff --git a/code/game/objects/items/body_egg.dm b/code/game/objects/items/body_egg.dm index 61e15e9fc1..13dd2c1f18 100644 --- a/code/game/objects/items/body_egg.dm +++ b/code/game/objects/items/body_egg.dm @@ -16,7 +16,7 @@ /obj/item/organ/body_egg/Insert(var/mob/living/carbon/M, special = 0) ..() - owner.status_flags |= XENO_HOST + owner.add_trait(TRAIT_XENO_HOST, TRAIT_GENERIC) START_PROCESSING(SSobj, src) owner.med_hud_set_status() INVOKE_ASYNC(src, .proc/AddInfectionImages, owner) @@ -24,7 +24,7 @@ /obj/item/organ/body_egg/Remove(var/mob/living/carbon/M, special = 0) STOP_PROCESSING(SSobj, src) if(owner) - owner.status_flags &= ~(XENO_HOST) + owner.remove_trait(TRAIT_XENO_HOST, TRAIT_GENERIC) owner.med_hud_set_status() INVOKE_ASYNC(src, .proc/RemoveInfectionImages, owner) ..() diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index 01bb057769..9c8e4343a8 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -693,7 +693,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM cut_overlays() if(istype(O, /obj/item/device/multitool)) - if(screw && !emagged)//also kinky + if(screw && !(obj_flags & EMAGGED))//also kinky if(!super) cut_overlays() super = 1 @@ -705,15 +705,15 @@ CIGARETTE PACKETS ARE IN FANCY.DM to_chat(user, "You decrease the voltage of [src].") add_overlay("vapeopen_low") - if(screw && emagged) + if(screw && (obj_flags & EMAGGED)) to_chat(user, "[src] can't be modified!") /obj/item/clothing/mask/vape/emag_act(mob/user)// I WON'T REGRET WRITTING THIS, SURLY. if(screw) - if(!emagged) + if(!(obj_flags & EMAGGED)) cut_overlays() - emagged = TRUE + obj_flags |= EMAGGED super = 0 to_chat(user, "You maximize the voltage of [src].") add_overlay("vapeopen_high") @@ -785,14 +785,14 @@ CIGARETTE PACKETS ARE IN FANCY.DM //open flame removed because vapes are a closed system, they wont light anything on fire if(super && vapetime > 3)//Time to start puffing those fat vapes, yo. - var/datum/effect_system/smoke_spread/chem/s = new - s.set_up(reagents, 1, loc, silent=TRUE) + var/datum/effect_system/smoke_spread/chem/smoke_machine/s = new + s.set_up(reagents, 1, 24, loc) s.start() vapetime = 0 - if(emagged && vapetime > 3) - var/datum/effect_system/smoke_spread/chem/s = new - s.set_up(reagents, 4, loc, silent=TRUE) + if((obj_flags & EMAGGED) && vapetime > 3) + var/datum/effect_system/smoke_spread/chem/smoke_machine/s = new + s.set_up(reagents, 4, 24, loc) s.start() vapetime = 0 if(prob(5))//small chance for the vape to break and deal damage if it's emagged @@ -807,4 +807,4 @@ CIGARETTE PACKETS ARE IN FANCY.DM return if(reagents && reagents.total_volume) - hand_reagents() + hand_reagents() \ No newline at end of file diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm index afd0eeef95..24038d9c69 100644 --- a/code/game/objects/items/circuitboards/computer_circuitboards.dm +++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm @@ -189,16 +189,16 @@ var/contraband = FALSE /obj/item/circuitboard/computer/cargo/multitool_act(mob/living/user) - if(!emagged) + if(!(obj_flags & EMAGGED)) contraband = !contraband to_chat(user, "Receiver spectrum set to [contraband ? "Broad" : "Standard"].") else to_chat(user, "The spectrum chip is unresponsive.") /obj/item/circuitboard/computer/cargo/emag_act(mob/living/user) - if(!emagged) + if(!(obj_flags & EMAGGED)) contraband = TRUE - emagged = TRUE + obj_flags |= EMAGGED to_chat(user, "You adjust [src]'s routing and receiver spectrum, unlocking special supplies and contraband.") /obj/item/circuitboard/computer/cargo/express @@ -206,15 +206,15 @@ build_path = /obj/machinery/computer/cargo/express /obj/item/circuitboard/computer/cargo/express/multitool_act(mob/living/user) - if (!emagged) + if (!(obj_flags & EMAGGED)) to_chat(user, "Routing protocols are already set to: \"factory defaults\".") - else + else to_chat(user, "You reset the routing protocols to: \"factory defaults\".") - emagged = FALSE + obj_flags &= ~EMAGGED /obj/item/circuitboard/computer/cargo/express/emag_act(mob/living/user) to_chat(user, "You change the routing protocols, allowing the Drop Pod to land anywhere on the station.") - emagged = TRUE + obj_flags |= EMAGGED /obj/item/circuitboard/computer/cargo/request name = "Supply Request Console (Computer Board)" diff --git a/code/game/objects/items/clown_items.dm b/code/game/objects/items/clown_items.dm index e9ccda03ea..28171186fe 100644 --- a/code/game/objects/items/clown_items.dm +++ b/code/game/objects/items/clown_items.dm @@ -16,6 +16,8 @@ gender = PLURAL icon = 'icons/obj/items_and_weapons.dmi' icon_state = "soap" + lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi' w_class = WEIGHT_CLASS_TINY flags_1 = NOBLUDGEON_1 throwforce = 0 diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 86628265bc..afdeb4c658 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -39,7 +39,7 @@ var/list/runes = list("rune1","rune2","rune3","rune4","rune5","rune6") var/list/randoms = list(RANDOM_ANY, RANDOM_RUNE, RANDOM_ORIENTED, RANDOM_NUMBER, RANDOM_GRAFFITI, RANDOM_LETTER) - var/list/graffiti_large_h = list("secborg", "paint") // CIT CHANGE - removes yiff in hell graffiti + var/list/graffiti_large_h = list("yiffhell", "secborg", "paint") var/list/all_drawables diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index a314f8191e..23840ac217 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -94,6 +94,8 @@ else to_chat(user, "Strap the defibrillator's belt on first!") return + else if(istype(loc, /obj/machinery/defibrillator_mount)) + ui_action_click() //checks for this are handled in defibrillator.mount.dm ..() /obj/item/defibrillator/MouseDrop(obj/over_object) @@ -200,6 +202,7 @@ if(on) var/M = get(paddles, /mob) remove_paddles(M) + QDEL_NULL(paddles) . = ..() update_icon() @@ -399,7 +402,7 @@ /obj/item/twohanded/shockpaddles/proc/can_defib(mob/living/carbon/H) var/obj/item/organ/brain/BR = H.getorgan(/obj/item/organ/brain) - return (!H.suiciding && !(H.has_disability(DISABILITY_NOCLONE)) && !H.hellbound && ((world.time - H.timeofdeath) < tlimit) && (H.getBruteLoss() < 180) && (H.getFireLoss() < 180) && H.getorgan(/obj/item/organ/heart) && BR && !BR.damaged_brain) + return (!H.suiciding && !(H.has_trait(TRAIT_NOCLONE)) && !H.hellbound && ((world.time - H.timeofdeath) < tlimit) && (H.getBruteLoss() < 180) && (H.getFireLoss() < 180) && H.getorgan(/obj/item/organ/heart) && BR && !BR.damaged_brain) /obj/item/twohanded/shockpaddles/proc/shock_touching(dmg, mob/H) if(isliving(H.pulledby)) //CLEAR! @@ -520,7 +523,7 @@ shock_touching(30, H) var/failed - if (H.suiciding || (H.has_disability(DISABILITY_NOCLONE))) + if (H.suiciding || (H.has_trait(TRAIT_NOCLONE))) failed = "[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Recovery of patient impossible. Further attempts futile." else if (H.hellbound) failed = "[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Patient's soul appears to be on another plane of existence. Further attempts futile." diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 0e8200126a..f8ffc8aafb 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -49,7 +49,7 @@ add_fingerprint(user) if(istype(M) && on && user.zone_selected in list("eyes", "mouth")) - if((user.has_disability(DISABILITY_CLUMSY) || user.has_disability(DISABILITY_DUMB)) && prob(50)) //too dumb to use flashlight properly + if((user.has_trait(TRAIT_CLUMSY) || user.has_trait(TRAIT_DUMB)) && prob(50)) //too dumb to use flashlight properly return ..() //just hit them in the head if(!user.IsAdvancedToolUser()) @@ -83,7 +83,7 @@ else user.visible_message("[user] directs [src] to [M]'s eyes.", \ "You direct [src] to [M]'s eyes.") - if(M.stat == DEAD || (M.has_disability(DISABILITY_BLIND)) || !M.flash_act(visual = 1)) //mob is dead or fully blind + if(M.stat == DEAD || (M.has_trait(TRAIT_BLIND)) || !M.flash_act(visual = 1)) //mob is dead or fully blind to_chat(user, "[M]'s pupils don't react to the light!") else if(M.dna && M.dna.check_mutation(XRAY)) //mob has X-RAY vision to_chat(user, "[M]'s pupils give an eerie glow!") diff --git a/code/game/objects/items/devices/geiger_counter.dm b/code/game/objects/items/devices/geiger_counter.dm index 03e4ff123a..64d710be25 100644 --- a/code/game/objects/items/devices/geiger_counter.dm +++ b/code/game/objects/items/devices/geiger_counter.dm @@ -46,15 +46,15 @@ if(!scanning) current_tick_amount = 0 return - + radiation_count -= radiation_count/RAD_MEASURE_SMOOTHING radiation_count += current_tick_amount/RAD_MEASURE_SMOOTHING - + if(current_tick_amount) grace = RAD_GRACE_PERIOD last_tick_amount = current_tick_amount - else if(!emagged) + else if(!(obj_flags & EMAGGED)) grace-- if(grace <= 0) radiation_count = 0 @@ -66,7 +66,7 @@ if(!scanning) return 1 to_chat(user, "Alt-click it to clear stored radiation levels.") - if(emagged) + if(obj_flags & EMAGGED) to_chat(user, "The display seems to be incomprehensible.") return 1 switch(radiation_count) @@ -89,7 +89,7 @@ if(!scanning) icon_state = "geiger_off" return 1 - if(emagged) + if(obj_flags & EMAGGED) icon_state = "geiger_on_emag" return 1 switch(radiation_count) @@ -131,7 +131,7 @@ /obj/item/device/geiger_counter/attack(mob/living/M, mob/user) if(user.a_intent == INTENT_HELP) - if(!emagged) + if(!(obj_flags & EMAGGED)) user.visible_message("[user] scans [M] with [src].", "You scan [M]'s radiation levels with [src]...") addtimer(CALLBACK(src, .proc/scan, M, user), 20, TIMER_UNIQUE) // Let's not have spamming GetAllContents else @@ -164,7 +164,7 @@ to_chat(user, "[icon2html(src, user)] Subject is free of radioactive contamination.") /obj/item/device/geiger_counter/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/screwdriver) && emagged) + if(istype(I, /obj/item/screwdriver) && (obj_flags & EMAGGED)) if(scanning) to_chat(user, "Turn off [src] before you perform this action!") return 0 @@ -174,7 +174,7 @@ return 0 user.visible_message("[user] refastens [src]'s maintenance panel!", "You reset [src] to its factory settings!") playsound(user, 'sound/items/screwdriver2.ogg', 50, 1) - emagged = FALSE + obj_flags &= ~EMAGGED radiation_count = 0 update_icon() return 1 @@ -192,13 +192,13 @@ update_icon() /obj/item/device/geiger_counter/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return if(scanning) to_chat(user, "Turn off [src] before you perform this action!") return 0 to_chat(user, "You override [src]'s radiation storing protocols. It will now generate small doses of radiation, and stored rads are now projected into creatures you scan.") - emagged = TRUE + obj_flags |= EMAGGED #undef RAD_LEVEL_NORMAL #undef RAD_LEVEL_MODERATE diff --git a/code/game/objects/items/devices/gps.dm b/code/game/objects/items/devices/gps.dm index 9d01e2a7aa..2c75166789 100644 --- a/code/game/objects/items/devices/gps.dm +++ b/code/game/objects/items/devices/gps.dm @@ -6,7 +6,7 @@ GLOBAL_LIST_EMPTY(GPS_list) icon_state = "gps-c" w_class = WEIGHT_CLASS_SMALL slot_flags = SLOT_BELT - unique_rename = TRUE + obj_flags = UNIQUE_RENAME var/gpstag = "COM0" var/emped = FALSE var/turf/locked_location diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index 4ea91ccccf..a1cdfe4a9b 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -149,7 +149,7 @@ to_chat(user, "You fill \the [src] with lights from \the [S]. " + status_string() + "") /obj/item/device/lightreplacer/emag_act() - if(emagged) + if(obj_flags & EMAGGED) return Emag() @@ -157,7 +157,7 @@ to_chat(user, status_string()) /obj/item/device/lightreplacer/update_icon() - icon_state = "lightreplacer[emagged]" + icon_state = "lightreplacer[(obj_flags & EMAGGED ? 1 : 0)]" /obj/item/device/lightreplacer/proc/status_string() return "It has [uses] light\s remaining (plus [bulb_shards] fragment\s)." @@ -205,7 +205,7 @@ target.status = L2.status target.switchcount = L2.switchcount - target.rigged = emagged + target.rigged = (obj_flags & EMAGGED ? 1 : 0) target.brightness = L2.brightness target.on = target.has_power() target.update() @@ -223,9 +223,9 @@ return /obj/item/device/lightreplacer/proc/Emag() - emagged = !emagged + obj_flags ^= EMAGGED playsound(src.loc, "sparks", 100, 1) - if(emagged) + if(obj_flags & EMAGGED) name = "shortcircuited [initial(name)]" else name = initial(name) diff --git a/code/game/objects/items/devices/machineprototype.dm b/code/game/objects/items/devices/machineprototype.dm deleted file mode 100644 index 88d7e8c573..0000000000 --- a/code/game/objects/items/devices/machineprototype.dm +++ /dev/null @@ -1,6 +0,0 @@ -/obj/item/device/machineprototype - name = "machine prototype" - desc = "A complicated machine prototype. You have no idea how it works." - icon = 'icons/obj/machineprototype.dmi' - icon_state = "machineprototype" - materials = list(MAT_METAL=1000, MAT_GLASS=500) diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm index 79725173bf..4b47a0373f 100644 --- a/code/game/objects/items/devices/megaphone.dm +++ b/code/game/objects/items/devices/megaphone.dm @@ -25,10 +25,10 @@ return voicespan /obj/item/device/megaphone/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return to_chat(user, "You overload \the [src]'s voice synthesizer.") - emagged = TRUE + obj_flags |= EMAGGED voicespan = list(SPAN_REALLYBIG, "userdanger") /obj/item/device/megaphone/sec diff --git a/code/game/objects/items/devices/pinpointer.dm b/code/game/objects/items/devices/pinpointer.dm deleted file mode 100644 index 1d11f312a4..0000000000 --- a/code/game/objects/items/devices/pinpointer.dm +++ /dev/null @@ -1,152 +0,0 @@ -//Pinpointers are used to track atoms from a distance as long as they're on the same z-level. The captain and nuke ops have ones that track the nuclear authentication disk. -/obj/item/weapon/pinpointer - name = "pinpointer" - desc = "A handheld tracking device that locks onto certain signals." - icon = 'icons/obj/device.dmi' - icon_state = "pinpointer" - flags = CONDUCT - slot_flags = SLOT_BELT - w_class = WEIGHT_CLASS_SMALL - item_state = "electronic" - lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - throw_speed = 3 - throw_range = 7 - materials = list(MAT_METAL = 500, MAT_GLASS = 250) - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF - var/active = FALSE - var/atom/movable/target = null //The thing we're searching for - var/minimum_range = 0 //at what range the pinpointer declares you to be at your destination - var/alert = FALSE // TRUE to display things more seriously - -/obj/item/weapon/pinpointer/New() - ..() - GLOB.pinpointer_list += src - -/obj/item/weapon/pinpointer/Destroy() - STOP_PROCESSING(SSfastprocess, src) - GLOB.pinpointer_list -= src - return ..() - -/obj/item/weapon/pinpointer/attack_self(mob/living/user) - active = !active - user.visible_message("[user] [active ? "" : "de"]activates their pinpointer.", "You [active ? "" : "de"]activate your pinpointer.") - playsound(user, 'sound/items/screwdriver2.ogg', 50, 1) - if(active) - START_PROCESSING(SSfastprocess, src) - else - target = null - STOP_PROCESSING(SSfastprocess, src) - update_pointer_overlay() - -/obj/item/weapon/pinpointer/process() - if(!active) - STOP_PROCESSING(SSfastprocess, src) - return - scan_for_target() - update_pointer_overlay() - -/obj/item/weapon/pinpointer/proc/scan_for_target() - return - -/obj/item/weapon/pinpointer/proc/update_pointer_overlay() - cut_overlays() - if(!active) - return - if(!target) - add_overlay("pinon[alert ? "alert" : ""]null") - var/turf/here = get_turf(src) - var/turf/there = get_turf(target) - if(here.z != there.z) - add_overlay("pinon[alert ? "alert" : ""]null") - return - if(get_dist_euclidian(here,there) <= minimum_range) - add_overlay("pinon[alert ? "alert" : ""]direct") - else - setDir(get_dir(here, there)) - switch(get_dist(here, there)) - if(1 to 8) - add_overlay("pinon[alert ? "alert" : "close"]") - if(9 to 16) - add_overlay("pinon[alert ? "alert" : "medium"]") - if(16 to INFINITY) - add_overlay("pinon[alert ? "alert" : "far"]") - -/obj/item/weapon/pinpointer/crew // A replacement for the old crew monitoring consoles - name = "crew pinpointer" - desc = "A handheld tracking device that points to crew suit sensors." - icon_state = "pinpointer_crew" - -/obj/item/weapon/pinpointer/crew/proc/trackable(mob/living/carbon/human/H) - var/turf/here = get_turf(src) - if((H.z == 0 || H.z == here.z) && istype(H.w_uniform, /obj/item/clothing/under)) - var/obj/item/clothing/under/U = H.w_uniform - - // Suit sensors must be on maximum. - if(!U.has_sensor || U.sensor_mode < SENSOR_COORDS) - return FALSE - - var/turf/there = get_turf(H) - return (H.z != 0 || (there && there.z == H.z)) - - return FALSE - -/obj/item/weapon/pinpointer/crew/attack_self(mob/living/user) - if(active) - active = FALSE - user.visible_message("[user] deactivates their pinpointer.", "You deactivate your pinpointer.") - playsound(user, 'sound/items/screwdriver2.ogg', 50, 1) - target = null //Restarting the pinpointer forces a target reset - STOP_PROCESSING(SSfastprocess, src) - update_pointer_overlay() - return - - var/list/name_counts = list() - var/list/names = list() - - for(var/mob/living/carbon/human/H in GLOB.mob_list) - if(!trackable(H)) - continue - - var/name = "Unknown" - if(H.wear_id) - var/obj/item/weapon/card/id/I = H.wear_id.GetID() - name = I.registered_name - - while(name in name_counts) - name_counts[name]++ - name = text("[] ([])", name, name_counts[name]) - names[name] = H - name_counts[name] = 1 - - if(!names.len) - user.visible_message("[user]'s pinpointer fails to detect a signal.", "Your pinpointer fails to detect a signal.") - return - - var/A = input(user, "Person to track", "Pinpoint") in names - if(!src || QDELETED(src) || !user || !user.is_holding(src) || user.incapacitated() || !A) - return - - target = names[A] - active = TRUE - user.visible_message("[user] activates their pinpointer.", "You activate your pinpointer.") - playsound(user, 'sound/items/screwdriver2.ogg', 50, 1) - START_PROCESSING(SSfastprocess, src) - update_pointer_overlay() - -/obj/item/weapon/pinpointer/crew/scan_for_target() - if(target) - if(ishuman(target)) - var/mob/living/carbon/human/H = target - if(!trackable(H)) - target = null - if(!target) - active = FALSE - -/obj/item/weapon/pinpointer/process() - if(!active) - STOP_PROCESSING(SSfastprocess, src) - return - scan_for_target() - update_pointer_overlay() - diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 2ff3ee31bd..acfa74980b 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -90,7 +90,7 @@ GAS ANALYZER /obj/item/device/healthanalyzer/attack(mob/living/M, mob/living/carbon/human/user) // Clumsiness/brain damage check - if ((user.has_disability(DISABILITY_CLUMSY) || user.has_disability(DISABILITY_DUMB)) && prob(50)) + if ((user.has_trait(TRAIT_CLUMSY) || user.has_trait(TRAIT_DUMB)) && prob(50)) to_chat(user, "You stupidly try to analyze the floor's vitals!") user.visible_message("[user] has analyzed the floor's vitals!") to_chat(user, "Analyzing results for The floor:\n\tOverall status: Healthy") @@ -120,7 +120,7 @@ GAS ANALYZER var/brute_loss = M.getBruteLoss() var/mob_status = (M.stat == DEAD ? "Deceased" : "[round(M.health/M.maxHealth,0.01)*100] % healthy") - if(M.status_flags & FAKEDEATH && !advanced) + if(M.has_trait(TRAIT_FAKEDEATH) && !advanced) mob_status = "Deceased" oxy_loss = max(rand(1, 40), oxy_loss, (300 - (tox_loss + fire_loss + brute_loss))) // Random oxygen loss @@ -181,10 +181,10 @@ GAS ANALYZER to_chat(user, "\t==EAR STATUS==") if(istype(ears)) var/healthy = TRUE - if(C.has_disability(DISABILITY_DEAF, GENETIC_MUTATION)) + if(C.has_trait(TRAIT_DEAF, GENETIC_MUTATION)) healthy = FALSE to_chat(user, "\tSubject is genetically deaf.") - else if(C.has_disability(DISABILITY_DEAF)) + else if(C.has_trait(TRAIT_DEAF)) healthy = FALSE to_chat(user, "\tSubject is deaf.") else @@ -202,10 +202,10 @@ GAS ANALYZER to_chat(user, "\t==EYE STATUS==") if(istype(eyes)) var/healthy = TRUE - if(C.has_disability(DISABILITY_BLIND)) + if(C.has_trait(TRAIT_BLIND)) to_chat(user, "\tSubject is blind.") healthy = FALSE - if(C.has_disability(DISABILITY_NEARSIGHT)) + if(C.has_trait(TRAIT_NEARSIGHT)) to_chat(user, "\tSubject is nearsighted.") healthy = FALSE if(eyes.eye_damage > 30) @@ -245,7 +245,7 @@ GAS ANALYZER to_chat(user, "Body temperature: [round(M.bodytemperature-T0C,0.1)] °C ([round(M.bodytemperature*1.8-459.67,0.1)] °F)") // Time of death - if(M.tod && (M.stat == DEAD || ((M.status_flags & FAKEDEATH) && !advanced))) + if(M.tod && (M.stat == DEAD || ((M.has_trait(TRAIT_FAKEDEATH)) && !advanced))) to_chat(user, "Time of Death: [M.tod]") var/tdelta = round(world.time - M.timeofdeath) if(tdelta < (DEFIB_TIME_LIMIT * 10)) @@ -425,15 +425,19 @@ GAS ANALYZER to_chat(user, "This device can only scan slimes!") return var/mob/living/simple_animal/slime/T = M - to_chat(user, "Slime scan results:") - to_chat(user, "[T.colour] [T.is_adult ? "adult" : "baby"] slime") + slime_scan(T, user) + +/proc/slime_scan(mob/living/simple_animal/slime/T, mob/living/user) + to_chat(user, "========================") + to_chat(user, "Slime scan results:") + to_chat(user, "[T.colour] [T.is_adult ? "adult" : "baby"] slime") to_chat(user, "Nutrition: [T.nutrition]/[T.get_max_nutrition()]") if (T.nutrition < T.get_starve_nutrition()) to_chat(user, "Warning: slime is starving!") else if (T.nutrition < T.get_hunger_nutrition()) to_chat(user, "Warning: slime is hungry") to_chat(user, "Electric change strength: [T.powerlevel]") - to_chat(user, "Health: [round(T.health/T.maxHealth,0.01)*100]") + to_chat(user, "Health: [round(T.health/T.maxHealth,0.01)*100]%") if (T.slime_mutation[4] == T.colour) to_chat(user, "This slime does not evolve any further.") else @@ -448,5 +452,6 @@ GAS ANALYZER to_chat(user, "Possible mutations: [T.slime_mutation[1]], [T.slime_mutation[2]], [T.slime_mutation[3]], [T.slime_mutation[4]]") to_chat(user, "Genetic destability: [T.mutation_chance] % chance of mutation on splitting") if (T.cores > 1) - to_chat(user, "Anomalious slime core amount detected") + to_chat(user, "Multiple cores detected") to_chat(user, "Growth progress: [T.amount_grown]/[SLIME_EVOLUTION_THRESHOLD]") + to_chat(user, "========================") \ No newline at end of file diff --git a/code/game/objects/items/dna_injector.dm b/code/game/objects/items/dna_injector.dm index f2741e4715..c908b619c4 100644 --- a/code/game/objects/items/dna_injector.dm +++ b/code/game/objects/items/dna_injector.dm @@ -31,7 +31,7 @@ /obj/item/dnainjector/proc/inject(mob/living/carbon/M, mob/user) prepare() - if(M.has_dna() && !(RADIMMUNE in M.dna.species.species_traits) && !(M.has_disability(DISABILITY_NOCLONE))) + if(M.has_dna() && !(RADIMMUNE in M.dna.species.species_traits) && !(M.has_trait(TRAIT_NOCLONE))) M.radiation += rand(20/(damage_coeff ** 2),50/(damage_coeff ** 2)) var/log_msg = "[key_name(user)] injected [key_name(M)] with the [name]" for(var/datum/mutation/human/HM in remove_mutations) @@ -313,7 +313,7 @@ to_chat(user, "You can't modify [M]'s DNA while [M.p_theyre()] dead.") return FALSE - if(M.has_dna() && !(M.has_disability(DISABILITY_NOCLONE))) + if(M.has_dna() && !(M.has_trait(TRAIT_NOCLONE))) M.radiation += rand(20/(damage_coeff ** 2),50/(damage_coeff ** 2)) var/log_msg = "[key_name(user)] injected [key_name(M)] with the [name]" var/endtime = world.time+duration diff --git a/code/game/objects/items/grenades/grenade.dm b/code/game/objects/items/grenades/grenade.dm index 3df64597c9..e4174563b8 100644 --- a/code/game/objects/items/grenades/grenade.dm +++ b/code/game/objects/items/grenades/grenade.dm @@ -32,7 +32,7 @@ qdel(src) /obj/item/grenade/proc/clown_check(mob/living/carbon/human/user) - if(user.has_disability(DISABILITY_CLUMSY) && prob(50)) + if(user.has_trait(TRAIT_CLUMSY) && prob(50)) to_chat(user, "Huh? How does this thing work?") preprime(user, 5, FALSE) return FALSE diff --git a/code/game/objects/items/grenades/plastic.dm b/code/game/objects/items/grenades/plastic.dm index eb0c397fc8..b8c2344dac 100644 --- a/code/game/objects/items/grenades/plastic.dm +++ b/code/game/objects/items/grenades/plastic.dm @@ -113,7 +113,7 @@ var/obj/item/I = AM I.throw_speed = max(1, (I.throw_speed - 3)) I.throw_range = max(1, (I.throw_range - 3)) - I.embed_chance = 0 + I.embedding = I.embedding.setRating(embed_chance = 0) message_admins("[ADMIN_LOOKUPFLW(user)] planted [name] on [target.name] at [ADMIN_COORDJMP(target)] with [det_time] second fuse",0,1) log_game("[key_name(user)] planted [name] on [target.name] at [COORD(src)] with [det_time] second fuse") @@ -125,23 +125,29 @@ else qdel(src) //How? +/obj/item/grenade/plastic/proc/shout_syndicate_crap(mob/M) + if(!M) + return + var/message_say = "FOR NO RAISIN!" + if(M.mind) + var/datum/mind/UM = M + if(UM.has_antag_datum(/datum/antagonist/nukeop) || UM.has_antag_datum(/datum/antagonist/traitor)) + message_say = "FOR THE SYNDICATE!" + else if(UM.has_antag_datum(/datum/antagonist/changeling)) + message_say = "FOR THE HIVE!" + else if(UM.has_antag_datum(/datum/antagonist/cult)) + message_say = "FOR NAR-SIE!" + else if(UM.has_antag_datum(/datum/antagonist/clockcult)) + message_say = "FOR RATVAR!" + else if(UM.has_antag_datum(/datum/antagonist/rev)) + message_say = "VIVA LA REVOLUTION!" + M.say(message_say) + /obj/item/grenade/plastic/suicide_act(mob/user) message_admins("[ADMIN_LOOKUPFLW(user)] suicided with [src] at [ADMIN_COORDJMP(user)]",0,1) log_game("[key_name(user)] suicided with [src] at [COORD(user)]") user.visible_message("[user] activates [src] and holds it above [user.p_their()] head! It looks like [user.p_theyre()] going out with a bang!") - var/message_say = "FOR NO RAISIN!" - if(user.mind) - if(user.mind.special_role) - var/role = lowertext(user.mind.special_role) - if(role == "traitor" || role == "syndicate") - message_say = "FOR THE SYNDICATE!" - else if(role == "changeling") - message_say = "FOR THE HIVE!" - else if(role == "cultist") - message_say = "FOR NAR-SIE!" - else if(is_revolutionary(user)) - message_say = "VIVA LA REVOLUTION!" - user.say(message_say) + shout_syndicate_crap(user) explosion(user,0,2,0) //Cheap explosion imitation because putting prime() here causes runtimes user.gib(1, 1) qdel(src) @@ -176,19 +182,7 @@ /obj/item/grenade/plastic/c4/suicide_act(mob/user) user.visible_message("[user] activates the [src.name] and holds it above [user.p_their()] head! It looks like [user.p_theyre()] going out with a bang!") - var/message_say = "FOR NO RAISIN!" - if(user.mind) - if(user.mind.special_role) - var/role = lowertext(user.mind.special_role) - if(role == "traitor" || role == "syndicate") - message_say = "FOR THE SYNDICATE!" - else if(role == "changeling") - message_say = "FOR THE HIVE!" - else if(role == "cultist") - message_say = "FOR NAR-SIE!" - else if(is_revolutionary(user)) - message_say = "VIVA LA REVOLUTION!" - user.say(message_say) + shout_syndicate_crap(user) target = user message_admins("[ADMIN_LOOKUPFLW(user)] suicided with [name] at [ADMIN_COORDJMP(src)]",0,1) message_admins("[key_name(user)] suicided with [name] at ([x],[y],[z])") diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index 1b285f28da..40f746b1dd 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -43,7 +43,7 @@ /obj/item/restraints/handcuffs/attack(mob/living/carbon/C, mob/living/carbon/human/user) if(!istype(C)) return - if(user.has_disability(DISABILITY_CLUMSY) && prob(50)) + if(user.has_trait(TRAIT_CLUMSY) && prob(50)) to_chat(user, "Uh... how do those things work?!") apply_cuffs(user,user) return diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm index ea570374b2..4368797f06 100644 --- a/code/game/objects/items/holy_weapons.dm +++ b/code/game/objects/items/holy_weapons.dm @@ -10,7 +10,7 @@ throw_range = 4 throwforce = 10 w_class = WEIGHT_CLASS_TINY - unique_rename = TRUE + obj_flags = UNIQUE_RENAME var/reskinned = FALSE /obj/item/nullrod/suicide_act(mob/user) @@ -241,14 +241,13 @@ possessed = TRUE var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as the spirit of [user.real_name]'s blade?", ROLE_PAI, null, FALSE, 100, POLL_IGNORE_POSSESSED_BLADE) - var/mob/dead/observer/theghost = null if(LAZYLEN(candidates)) - theghost = pick(candidates) + var/client/C = pick(candidates) var/mob/living/simple_animal/shade/S = new(src) S.real_name = name S.name = name - S.ckey = theghost.ckey + S.ckey = C.ckey S.status_flags |= GODMODE S.language_holder = user.language_holder.copy(S) var/input = stripped_input(S,"What are you named?", ,"", MAX_NAME_LEN) diff --git a/code/game/objects/items/implants/implant_gang.dm b/code/game/objects/items/implants/implant_gang.dm deleted file mode 100644 index d229631ca0..0000000000 --- a/code/game/objects/items/implants/implant_gang.dm +++ /dev/null @@ -1,54 +0,0 @@ -/obj/item/implant/gang - name = "gang implant" - desc = "Makes you a gangster or such." - activated = 0 - var/datum/gang/gang - -/obj/item/implant/gang/New(loc,var/setgang) - ..() - gang = setgang - -/obj/item/implant/gang/get_data() - var/dat = {"Implant Specifications:
- Name: Criminal brainwash implant
- Life: A few seconds after injection.
- Important Notes: Illegal
-
- Implant Details:
- Function: Contains a small pod of nanobots that change the host's brain to be loyal to a certain organization.
- Special Features: This device will also emit a small EMP pulse, destroying any other implants within the host's brain.
- Integrity: Implant's EMP function will destroy itself in the process."} - return dat - -/obj/item/implant/gang/implant(mob/living/target, mob/user, silent = 0) - if(..()) - for(var/obj/item/implant/I in target.implants) - if(I != src) - qdel(I) - - if(!target.mind || target.stat == DEAD) - return 0 - - var/success - if(target.mind in SSticker.mode.get_gangsters()) - if(SSticker.mode.remove_gangster(target.mind,0,1)) - success = 1 //Was not a gang boss, convert as usual - else - success = 1 - - if(ishuman(target)) - if(!success) - target.visible_message("[target] seems to resist the implant!", "You feel the influence of your enemies try to invade your mind!") - - qdel(src) - return 0 - -/obj/item/implanter/gang - name = "implanter (gang)" - -/obj/item/implanter/gang/New(loc, gang) - if(!gang) - qdel(src) - return - imp = new /obj/item/implant/gang(src,gang) - ..() diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm index cbb326d6ac..d67a3c8333 100644 --- a/code/game/objects/items/kitchen.dm +++ b/code/game/objects/items/kitchen.dm @@ -49,7 +49,7 @@ forkload = null else if(user.zone_selected == "eyes") - if(user.has_disability(DISABILITY_CLUMSY) && prob(50)) + if(user.has_trait(TRAIT_CLUMSY) && prob(50)) M = user return eyestab(M,user) else @@ -75,7 +75,7 @@ /obj/item/kitchen/knife/attack(mob/living/carbon/M, mob/living/carbon/user) if(user.zone_selected == "eyes") - if(user.has_disability(DISABILITY_CLUMSY) && prob(50)) + if(user.has_trait(TRAIT_CLUMSY) && prob(50)) M = user return eyestab(M,user) else diff --git a/code/game/objects/items/manuals.dm b/code/game/objects/items/manuals.dm index 9d47efe862..d1d9e16b4c 100644 --- a/code/game/objects/items/manuals.dm +++ b/code/game/objects/items/manuals.dm @@ -957,3 +957,60 @@ author = "Engineering Encyclopedia" title = "Hacking" page_link = "Hacking" + +///Reusable books that grant actions (knowledge is power) +/obj/item/book/action_granting + due_date = 0 // Game time in 1/10th seconds + unique = 1 // 0 - Normal book, 1 - Should not be treated as normal book, unable to be copied, unable to be modified + var/datum/action/granted_action = null + var/list/remarks = list() //things to read about while learning. + var/pages_to_mastery = 3 //Essentially controls how long a mob must keep the book in his hand to actually successfully learn + +/obj/item/book/action_granting/attack_self(mob/user) + if(!granted_action) + return + var/datum/action/G = new granted_action + for(var/datum/action/A in user.actions) + if(A.type == G.type) + to_chat(user, "You already know all about [G.name].") + qdel(G) + return + to_chat(user, "You start reading about [G.name]...") + for(var/i=1, i<=pages_to_mastery, i++) + if(!turn_page(user)) + to_chat(user, "You stop reading...") + qdel(G) + return + if(do_after(user,50, user)) + to_chat(user, "You feel like you've got a good handle on [G.name]!") + G.Grant(user) + +/obj/item/book/action_granting/proc/turn_page(mob/user) + playsound(user, pick('sound/effects/pageturn1.ogg','sound/effects/pageturn2.ogg','sound/effects/pageturn3.ogg'), 30, 1) + if(do_after(user,50, user)) + to_chat(user, "[pick(remarks)]") + return 1 + return 0 + +/obj/item/book/action_granting/drink_fling + name = "Tapper: This One's For You" + desc = "A seminal work on the dying art of booze sliding." + icon_state = "barbook" + granted_action = /datum/action/innate/drink_fling + remarks = list("The trick is keeping a low center of gravity it seems...", "The viscosity of the liquid is important...", "Accounting for crosswinds... really?", "Drag coefficients of various popular drinking glasses...", "What the heck is laminar flow and why does it matter here?", "Greasing the bar seems like it'd be cheating...", "I don't think I'll be working with superfluids...") + +/datum/action/innate/drink_fling + name = "Drink Flinging" + desc = "Toggles your ability to satifyingly throw glasses without spilling them." + button_icon_state = "drinkfling_off" + check_flags = 0 + +/datum/action/innate/drink_fling/Activate() + button_icon_state = "drinkfling_on" + active = TRUE + UpdateButtonIcon() + +/datum/action/innate/drink_fling/Deactivate() + button_icon_state = "drinkfling_off" + active = FALSE + UpdateButtonIcon() \ No newline at end of file diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index 146bcbb3c3..2f9e4231df 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -95,8 +95,7 @@ throw_speed = 3 throw_range = 5 sharpness = IS_SHARP - embed_chance = 75 - embedded_impact_pain_multiplier = 10 + embedding = list("embed_chance" = 75, "embedded_impact_pain_multiplier" = 10) armour_penetration = 35 block_chance = 50 diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 3f1b5cd54e..3fbb5111b7 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -1,5 +1,5 @@ /obj/item/melee - needs_permit = 1 + item_flags = NEEDS_PERMIT /obj/item/melee/proc/check_martial_counter(mob/living/carbon/human/target, mob/living/carbon/human/user) if(target.check_block()) @@ -52,7 +52,7 @@ lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' flags_1 = CONDUCT_1 - unique_rename = 1 + obj_flags = UNIQUE_RENAME force = 15 throwforce = 10 w_class = WEIGHT_CLASS_BULKY @@ -99,7 +99,7 @@ return ..() add_fingerprint(user) - if((user.has_disability(DISABILITY_CLUMSY)) && prob(50)) + if((user.has_trait(TRAIT_CLUMSY)) && prob(50)) to_chat(user, "You club yourself over the head.") user.Knockdown(60 * force) if(ishuman(user)) @@ -148,7 +148,7 @@ item_state = null slot_flags = SLOT_BELT w_class = WEIGHT_CLASS_SMALL - needs_permit = 0 + item_flags = NONE force = 0 on = FALSE diff --git a/code/game/objects/items/melee/transforming.dm b/code/game/objects/items/melee/transforming.dm index ca0c36f97e..86944813ed 100644 --- a/code/game/objects/items/melee/transforming.dm +++ b/code/game/objects/items/melee/transforming.dm @@ -72,6 +72,6 @@ to_chat(user, "[src] [active ? "is now active":"can now be concealed"].") /obj/item/melee/transforming/proc/clumsy_transform_effect(mob/living/user) - if(user.has_disability(DISABILITY_CLUMSY) && prob(50)) + if(user.has_trait(TRAIT_CLUMSY) && prob(50)) to_chat(user, "You accidentally cut yourself with [src], like a doofus!") user.take_bodypart_damage(5,5) diff --git a/code/game/objects/items/pneumaticCannon.dm b/code/game/objects/items/pneumaticCannon.dm index 7a1446ef39..4b6557fde1 100644 --- a/code/game/objects/items/pneumaticCannon.dm +++ b/code/game/objects/items/pneumaticCannon.dm @@ -147,7 +147,7 @@ if(tank && !tank.air_contents.remove(gasPerThrow * pressureSetting)) to_chat(user, "\The [src] lets out a weak hiss and doesn't react!") return - if(user.has_disability(DISABILITY_CLUMSY) && prob(75) && clumsyCheck && iscarbon(user)) + if(user.has_trait(TRAIT_CLUMSY) && prob(75) && clumsyCheck && iscarbon(user)) var/mob/living/carbon/C = user C.visible_message("[C] loses their grip on [src], causing it to go off!", "[src] slips out of your hands and goes off!") C.dropItemToGround(src, TRUE) diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index 0764e437ca..4851e111a8 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -280,14 +280,14 @@ var/cooldown = 0 /obj/item/device/harmalarm/emag_act(mob/user) - emagged = !emagged - if(emagged) + obj_flags ^= EMAGGED + if(obj_flags & EMAGGED) to_chat(user, "You short out the safeties on [src]!") else to_chat(user, "You reset the safeties on [src]!") /obj/item/device/harmalarm/attack_self(mob/user) - var/safety = !emagged + var/safety = !(obj_flags & EMAGGED) if(cooldown > world.time) to_chat(user, "The device is still recharging!") return diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm index 2f33803c10..8baa73368e 100644 --- a/code/game/objects/items/shields.dm +++ b/code/game/objects/items/shields.dm @@ -78,7 +78,7 @@ return (active) /obj/item/shield/energy/attack_self(mob/living/carbon/human/user) - if(user.has_disability(DISABILITY_CLUMSY) && prob(50)) + if(user.has_trait(TRAIT_CLUMSY) && prob(50)) to_chat(user, "You beat yourself in the head with [src].") user.take_bodypart_damage(5) active = !active diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index ceec7ad469..0c0b942083 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -19,8 +19,7 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ new/datum/stack_recipe("bar stool", /obj/structure/chair/stool/bar, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("chair", /obj/structure/chair, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("bed", /obj/structure/bed, 2, one_per_turf = TRUE, on_floor = TRUE), \ - - //CIT CHANGE - adds sofas to metal recipe list + //CIT CHANGE - adds sofas to metal recipe list new/datum/stack_recipe_list("sofas", list( \ new /datum/stack_recipe("sofa (middle)", /obj/structure/chair/sofa, one_per_turf = TRUE, on_floor = TRUE), \ new /datum/stack_recipe("sofa (left)", /obj/structure/chair/sofa/left, one_per_turf = TRUE, on_floor = TRUE), \ @@ -135,7 +134,7 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ /obj/item/stack/sheet/metal/suicide_act(mob/living/carbon/user) user.visible_message("[user] begins whacking themselves over the head with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!") return BRUTELOSS - + /* * Plasteel */ @@ -353,6 +352,9 @@ GLOBAL_LIST_INIT(runed_metal_recipes, list ( \ /obj/item/stack/sheet/runed_metal/fifty amount = 50 +/obj/item/stack/sheet/runed_metal/ten + amount = 10 + /obj/item/stack/sheet/runed_metal/five amount = 5 @@ -375,8 +377,8 @@ GLOBAL_LIST_INIT(brass_recipes, list ( \ new/datum/stack_recipe("sender - lever", /obj/structure/destructible/clockwork/trap/trigger/lever, 1, time = 10, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("sender - repeater", /obj/structure/destructible/clockwork/trap/trigger/repeater, 2, time = 20, one_per_turf = TRUE, on_floor = TRUE), \ null, - new/datum/stack_recipe("receiver - brass skewer", /obj/structure/destructible/clockwork/trap/brass_skewer, 2, time = 20, one_per_turf = TRUE, on_floor = TRUE), \ - new/datum/stack_recipe("receiver - steam vent", /obj/structure/destructible/clockwork/trap/steam_vent, 3, time = 30, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("receiver - brass skewer", /obj/structure/destructible/clockwork/trap/brass_skewer, 2, time = 20, one_per_turf = TRUE, on_floor = TRUE, placement_checks = STACK_CHECK_ADJACENT), \ + new/datum/stack_recipe("receiver - steam vent", /obj/structure/destructible/clockwork/trap/steam_vent, 3, time = 30, one_per_turf = TRUE, on_floor = TRUE, placement_checks = STACK_CHECK_CARDINALS), \ )) /obj/item/stack/tile/brass diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 8dc0895d78..ccf4cfa860 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -120,7 +120,7 @@ if (istype(E, /datum/stack_recipe_list)) var/datum/stack_recipe_list/srl = E - t1 += "[srl.title]" + t1 += "[srl.title]" if (istype(E, /datum/stack_recipe)) var/datum/stack_recipe/R = E @@ -135,7 +135,7 @@ title+= "[R.title]" title+= " ([R.req_amount] [singular_name]\s)" if (can_build) - t1 += text("[title] ") + t1 += text("[title] ") else t1 += text("[]", title) continue @@ -145,9 +145,9 @@ var/list/multipliers = list(5,10,25) for (var/n in multipliers) if (max_multiplier>=n) - t1 += " [n*R.res_amount]x" + t1 += " [n*R.res_amount]x" if (!(max_multiplier in multipliers)) - t1 += " [max_multiplier*R.res_amount]x" + t1 += " [max_multiplier*R.res_amount]x" var/datum/browser/popup = new(user, "stack", name, 400, 400) popup.set_content(t1) @@ -232,6 +232,19 @@ if(R.on_floor && !isfloorturf(usr.loc)) to_chat(usr, "\The [R.title] must be constructed on the floor!") return 0 + if(R.placement_checks) + switch(R.placement_checks) + if(STACK_CHECK_CARDINALS) + var/turf/step + for(var/direction in GLOB.cardinals) + step = get_step(usr, direction) + if(locate(R.result_type) in step) + to_chat(usr, "\The [R.title] must not be built directly adjacent to another!") + return 0 + if(STACK_CHECK_ADJACENT) + if(locate(R.result_type) in range(1, usr)) + to_chat(usr, "\The [R.title] must be constructed at least one tile away from others of its type!") + return 0 return 1 /obj/item/stack/proc/use(used, transfer = FALSE) // return 0 = borked; return 1 = had enough @@ -360,8 +373,9 @@ var/one_per_turf = FALSE var/on_floor = FALSE var/window_checks = FALSE + var/placement_checks = FALSE -/datum/stack_recipe/New(title, result_type, req_amount = 1, res_amount = 1, max_res_amount = 1, time = 0, one_per_turf = FALSE, on_floor = FALSE, window_checks = FALSE) +/datum/stack_recipe/New(title, result_type, req_amount = 1, res_amount = 1, max_res_amount = 1, time = 0, one_per_turf = FALSE, on_floor = FALSE, window_checks = FALSE, placement_checks = FALSE) src.title = title src.result_type = result_type src.req_amount = req_amount @@ -371,7 +385,7 @@ src.one_per_turf = one_per_turf src.on_floor = on_floor src.window_checks = window_checks - + src.placement_checks = placement_checks /* * Recipe list datum */ diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index c1aa39ddb1..6691462888 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -326,6 +326,12 @@ new R(src) revealed = 1 +/obj/item/storage/backpack/satchel/flat/can_be_inserted(obj/item/W, stop_messages = 0, mob/user) + if(SSpersistence.spawned_objects[W]) + to_chat(user, "[W] is unstable after its journey through space and time, it wouldn't survive another trip.") + return FALSE + return ..() + /obj/item/storage/backpack/duffelbag name = "duffel bag" desc = "A large duffel bag for holding extra things." diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index ff7933b6da..ec17683fa5 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -94,7 +94,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible", to_chat(user, "You don't have the dexterity to do this!") return - if (user.has_disability(DISABILITY_CLUMSY) && prob(50)) + if (user.has_trait(TRAIT_CLUMSY) && prob(50)) to_chat(user, "[src] slips out of your hand and hits your head.") user.take_bodypart_damage(10) user.Unconscious(400) diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm index 951d897835..05599597af 100644 --- a/code/game/objects/items/stunbaton.dm +++ b/code/game/objects/items/stunbaton.dm @@ -63,9 +63,9 @@ /obj/item/melee/baton/examine(mob/user) ..() if(cell) - to_chat(user, "The baton is [round(cell.percent())]% charged.") + to_chat(user, "\The [src] is [round(cell.percent())]% charged.") else - to_chat(user, "The baton does not have a power source installed.") + to_chat(user, "\The [src] does not have a power source installed.") /obj/item/melee/baton/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/stock_parts/cell)) @@ -108,7 +108,7 @@ add_fingerprint(user) /obj/item/melee/baton/attack(mob/M, mob/living/carbon/human/user) - if(status && user.has_disability(DISABILITY_CLUMSY) && prob(50)) + if(status && user.has_trait(TRAIT_CLUMSY) && prob(50)) user.visible_message("[user] accidentally hits themself with [src]!", \ "You accidentally hit yourself with [src]!") user.Knockdown(stunforce*3) diff --git a/code/game/objects/items/tanks/tanks.dm b/code/game/objects/items/tanks/tanks.dm index ba04f55a3e..4b20b9695f 100644 --- a/code/game/objects/items/tanks/tanks.dm +++ b/code/game/objects/items/tanks/tanks.dm @@ -125,7 +125,7 @@ H.dropItemToGround(W) if(prob(50)) step(W, pick(GLOB.alldirs)) - H.status_flags |= DISFIGURED + H.add_trait(TRAIT_DISFIGURED, TRAIT_GENERIC) H.bleed_rate = 5 H.gib_animation() sleep(3) diff --git a/code/game/objects/items/teleprod.dm b/code/game/objects/items/teleprod.dm index 646c0aa4fb..b31797fb5c 100644 --- a/code/game/objects/items/teleprod.dm +++ b/code/game/objects/items/teleprod.dm @@ -8,7 +8,7 @@ /obj/item/melee/baton/cattleprod/teleprod/attack(mob/living/carbon/M, mob/living/carbon/user)//handles making things teleport when hit ..() - if(status && user.has_disability(DISABILITY_CLUMSY) && prob(50)) + if(status && user.has_trait(TRAIT_CLUMSY) && prob(50)) user.visible_message("[user] accidentally hits themself with [src]!", \ "You accidentally hit yourself with [src]!") if(do_teleport(user, get_turf(user), 50))//honk honk diff --git a/code/game/objects/items/theft_tools.dm b/code/game/objects/items/theft_tools.dm index 95d209585f..4875ef324c 100644 --- a/code/game/objects/items/theft_tools.dm +++ b/code/game/objects/items/theft_tools.dm @@ -203,6 +203,11 @@ toolspeed = 0.5 damtype = "fire" usesound = 'sound/weapons/bladeslice.ogg' + var/usesLeft + +/obj/item/scalpel/supermatter/Initialize() + . = ..() + usesLeft = rand(2, 4) /obj/item/hemostat/supermatter name = "supermatter extraction tongs" @@ -227,10 +232,7 @@ if(!sliver) return if(ismovableatom(O) && O != sliver) - Consume(O) - to_chat(usr, "\The [sliver] is dusted along with \the [O]!") - QDEL_NULL(sliver) - update_icon() + Consume(O, user) /obj/item/hemostat/supermatter/throw_impact(atom/hit_atom) // no instakill supermatter javelins if(sliver) @@ -249,11 +251,12 @@ else investigate_log("has consumed [AM].", "supermatter") qdel(AM) - user.visible_message("As [user] touches \the [AM] with \a [src], silence fills the room...",\ - "You touch \the [AM] with \the [src], and everything suddenly goes silent.\n\The [AM] flashes into dust, and soon as you can register this, you do as well.",\ + if (user) + user.visible_message("As [user] touches [AM] with \a [src], silence fills the room...",\ + "You touch [AM] with [src], and everything suddenly goes silent.\n[AM] and [sliver] flash into dust, and soon as you can register this, you do as well.",\ "Everything suddenly goes silent.") - radiation_pulse(user, 500, 2) + user.dust() + radiation_pulse(src, 500, 2) playsound(src, 'sound/effects/supermatter.ogg', 50, 1) - user.dust() QDEL_NULL(sliver) update_icon() diff --git a/code/game/objects/items/tools.dm b/code/game/objects/items/tools.dm deleted file mode 100644 index 81701d8977..0000000000 --- a/code/game/objects/items/tools.dm +++ /dev/null @@ -1,789 +0,0 @@ -#define WELDER_FUEL_BURN_INTERVAL 13 - -/* Tools! - * Note: Multitools are /obj/item/device - * - * Contains: - * Wrench - * Screwdriver - * Wirecutters - * Welding Tool - * Crowbar - */ - -/* - * Wrench - */ -/obj/item/wrench - name = "wrench" - desc = "A wrench with common uses. Can be found in your hand." - icon = 'icons/obj/tools.dmi' - icon_state = "wrench" - lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT - force = 5 - throwforce = 7 - w_class = WEIGHT_CLASS_SMALL - usesound = 'sound/items/ratchet.ogg' - materials = list(MAT_METAL=150) - attack_verb = list("bashed", "battered", "bludgeoned", "whacked") - toolspeed = 1 - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 30) - -/obj/item/wrench/suicide_act(mob/user) - user.visible_message("[user] is beating [user.p_them()]self to death with [src]! It looks like [user.p_theyre()] trying to commit suicide!") - playsound(loc, 'sound/weapons/genhit.ogg', 50, 1, -1) - return (BRUTELOSS) - -/obj/item/wrench/cyborg - name = "automatic wrench" - desc = "An advanced robotic wrench. Can be found in construction cyborgs." - toolspeed = 0.5 - -/obj/item/wrench/brass - name = "brass wrench" - desc = "A brass wrench. It's faintly warm to the touch." - resistance_flags = FIRE_PROOF | ACID_PROOF - icon_state = "wrench_brass" - toolspeed = 0.5 - -/obj/item/wrench/abductor - name = "alien wrench" - desc = "A polarized wrench. It causes anything placed between the jaws to turn." - icon = 'icons/obj/abductor.dmi' - icon_state = "wrench" - usesound = 'sound/effects/empulse.ogg' - toolspeed = 0.1 - -/obj/item/wrench/power - name = "hand drill" - desc = "A simple powered hand drill. It's fitted with a bolt bit." - icon_state = "drill_bolt" - item_state = "drill" - lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - usesound = 'sound/items/drill_use.ogg' - materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25) - force = 8 //might or might not be too high, subject to change - w_class = WEIGHT_CLASS_SMALL - throwforce = 8 - attack_verb = list("drilled", "screwed", "jabbed") - toolspeed = 0.25 - -/obj/item/wrench/power/attack_self(mob/user) - playsound(get_turf(user),'sound/items/change_drill.ogg',50,1) - var/obj/item/wirecutters/power/s_drill = new /obj/item/screwdriver/power - to_chat(user, "You attach the screw driver bit to [src].") - qdel(src) - user.put_in_active_hand(s_drill) - -/obj/item/wrench/power/suicide_act(mob/user) - user.visible_message("[user] is pressing [src] against [user.p_their()] head! It looks like [user.p_theyre()] trying to commit suicide!") - return (BRUTELOSS) - -/obj/item/wrench/medical - name = "medical wrench" - desc = "A medical wrench with common(medical?) uses. Can be found in your hand." - icon_state = "wrench_medical" - force = 2 //MEDICAL - throwforce = 4 - attack_verb = list("wrenched", "medicaled", "tapped", "jabbed", "whacked") - -/obj/item/wrench/medical/suicide_act(mob/living/user) - user.visible_message("[user] is praying to the medical wrench to take [user.p_their()] soul. It looks like [user.p_theyre()] trying to commit suicide!") - // TODO Make them glow with the power of the M E D I C A L W R E N C H - // during their ascension - - // Stun stops them from wandering off - user.Stun(100, ignore_canstun = TRUE) - playsound(loc, 'sound/effects/pray.ogg', 50, 1, -1) - - // Let the sound effect finish playing - sleep(20) - - if(!user) - return - - for(var/obj/item/W in user) - user.dropItemToGround(W) - - var/obj/item/wrench/medical/W = new /obj/item/wrench/medical(loc) - W.add_fingerprint(user) - W.desc += " For some reason, it reminds you of [user.name]." - - if(!user) - return - - user.dust() - - return OXYLOSS - -/* - * Screwdriver - */ -/obj/item/screwdriver - name = "screwdriver" - desc = "You can be totally screwy with this." - icon = 'icons/obj/tools.dmi' - icon_state = "screwdriver_map" - item_state = "screwdriver" - lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT - force = 5 - w_class = WEIGHT_CLASS_TINY - throwforce = 5 - throw_speed = 3 - throw_range = 5 - materials = list(MAT_METAL=75) - attack_verb = list("stabbed") - hitsound = 'sound/weapons/bladeslice.ogg' - usesound = 'sound/items/screwdriver.ogg' - toolspeed = 1 - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 30) - var/random_color = TRUE //if the screwdriver uses random coloring - var/static/list/screwdriver_colors = list(\ - "blue" = rgb(24, 97, 213), \ - "red" = rgb(149, 23, 16), \ - "pink" = rgb(213, 24, 141), \ - "brown" = rgb(160, 82, 18), \ - "green" = rgb(14, 127, 27), \ - "cyan" = rgb(24, 162, 213), \ - "yellow" = rgb(213, 140, 24), \ - ) - -/obj/item/screwdriver/suicide_act(mob/user) - user.visible_message("[user] is stabbing [src] into [user.p_their()] [pick("temple", "heart")]! It looks like [user.p_theyre()] trying to commit suicide!") - return(BRUTELOSS) - -/obj/item/screwdriver/Initialize() - . = ..() - if(random_color) //random colors! - icon_state = "screwdriver" - var/our_color = pick(screwdriver_colors) - add_atom_colour(screwdriver_colors[our_color], FIXED_COLOUR_PRIORITY) - update_icon() - if(prob(75)) - pixel_y = rand(0, 16) - -/obj/item/screwdriver/update_icon() - if(!random_color) //icon override - return - cut_overlays() - var/mutable_appearance/base_overlay = mutable_appearance(icon, "screwdriver_screwybits") - base_overlay.appearance_flags = RESET_COLOR - add_overlay(base_overlay) - -/obj/item/screwdriver/worn_overlays(isinhands = FALSE, icon_file) - . = list() - if(isinhands && random_color) - var/mutable_appearance/M = mutable_appearance(icon_file, "screwdriver_head") - M.appearance_flags = RESET_COLOR - . += M - -/obj/item/screwdriver/get_belt_overlay() - if(random_color) - var/mutable_appearance/body = mutable_appearance('icons/obj/clothing/belt_overlays.dmi', "screwdriver") - var/mutable_appearance/head = mutable_appearance('icons/obj/clothing/belt_overlays.dmi', "screwdriver_head") - body.color = color - head.add_overlay(body) - return head - else - return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', icon_state) - -/obj/item/screwdriver/attack(mob/living/carbon/M, mob/living/carbon/user) - if(!istype(M)) - return ..() - if(user.zone_selected != "eyes" && user.zone_selected != "head") - return ..() - if(user.disabilities & CLUMSY && prob(50)) - M = user - return eyestab(M,user) - -/obj/item/screwdriver/brass - name = "brass screwdriver" - desc = "A screwdriver made of brass. The handle feels freezing cold." - resistance_flags = FIRE_PROOF | ACID_PROOF - icon_state = "screwdriver_brass" - item_state = "screwdriver_brass" - toolspeed = 0.5 - random_color = FALSE - -/obj/item/screwdriver/abductor - name = "alien screwdriver" - desc = "An ultrasonic screwdriver." - icon = 'icons/obj/abductor.dmi' - icon_state = "screwdriver_a" - item_state = "screwdriver_nuke" - usesound = 'sound/items/pshoom.ogg' - toolspeed = 0.1 - random_color = FALSE - -/obj/item/screwdriver/power - name = "hand drill" - desc = "A simple powered hand drill. It's fitted with a screw bit." - icon_state = "drill_screw" - item_state = "drill" - lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25) - force = 8 //might or might not be too high, subject to change - w_class = WEIGHT_CLASS_SMALL - throwforce = 8 - throw_speed = 2 - throw_range = 3//it's heavier than a screw driver/wrench, so it does more damage, but can't be thrown as far - attack_verb = list("drilled", "screwed", "jabbed","whacked") - hitsound = 'sound/items/drill_hit.ogg' - usesound = 'sound/items/drill_use.ogg' - toolspeed = 0.25 - random_color = FALSE - -/obj/item/screwdriver/power/suicide_act(mob/user) - user.visible_message("[user] is putting [src] to [user.p_their()] temple. It looks like [user.p_theyre()] trying to commit suicide!") - return(BRUTELOSS) - -/obj/item/screwdriver/power/attack_self(mob/user) - playsound(get_turf(user),'sound/items/change_drill.ogg',50,1) - var/obj/item/wrench/power/b_drill = new /obj/item/wrench/power - to_chat(user, "You attach the bolt driver bit to [src].") - qdel(src) - user.put_in_active_hand(b_drill) - -/obj/item/screwdriver/cyborg - name = "powered screwdriver" - desc = "An electrical screwdriver, designed to be both precise and quick." - usesound = 'sound/items/drill_use.ogg' - toolspeed = 0.5 - -/* - * Wirecutters - */ -/obj/item/wirecutters - name = "wirecutters" - desc = "This cuts wires." - icon = 'icons/obj/tools.dmi' - icon_state = "cutters" - lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT - force = 6 - throw_speed = 3 - throw_range = 7 - w_class = WEIGHT_CLASS_SMALL - materials = list(MAT_METAL=80) - attack_verb = list("pinched", "nipped") - hitsound = 'sound/items/wirecutter.ogg' - usesound = 'sound/items/wirecutter.ogg' - toolspeed = 1 - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 30) - var/random_color = TRUE - - -/obj/item/wirecutters/New(loc, var/param_color = null) - ..() - if(random_color) - if(!param_color) - param_color = pick("yellow","red") - icon_state = "cutters_[param_color]" - -/obj/item/wirecutters/attack(mob/living/carbon/C, mob/user) - if(istype(C) && C.handcuffed && istype(C.handcuffed, /obj/item/restraints/handcuffs/cable)) - user.visible_message("[user] cuts [C]'s restraints with [src]!") - qdel(C.handcuffed) - C.handcuffed = null - if(C.buckled && C.buckled.buckle_requires_restraints) - C.buckled.unbuckle_mob(C) - C.update_handcuffed() - return - else - ..() - -/obj/item/wirecutters/suicide_act(mob/user) - user.visible_message("[user] is cutting at [user.p_their()] arteries with [src]! It looks like [user.p_theyre()] trying to commit suicide!") - playsound(loc, usesound, 50, 1, -1) - return (BRUTELOSS) - -/obj/item/wirecutters/brass - name = "brass wirecutters" - desc = "A pair of wirecutters made of brass. The handle feels freezing cold to the touch." - resistance_flags = FIRE_PROOF | ACID_PROOF - icon_state = "cutters_brass" - random_color = FALSE - toolspeed = 0.5 - -/obj/item/wirecutters/abductor - name = "alien wirecutters" - desc = "Extremely sharp wirecutters, made out of a silvery-green metal." - icon = 'icons/obj/abductor.dmi' - icon_state = "cutters" - toolspeed = 0.1 - random_color = FALSE - -/obj/item/wirecutters/cyborg - name = "wirecutters" - desc = "This cuts wires." - toolspeed = 0.5 - -/obj/item/wirecutters/power - name = "jaws of life" - desc = "A set of jaws of life, compressed through the magic of science. It's fitted with a cutting head." - icon_state = "jaws_cutter" - item_state = "jawsoflife" - materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25) - usesound = 'sound/items/jaws_cut.ogg' - toolspeed = 0.25 - random_color = FALSE - -/obj/item/wirecutters/power/suicide_act(mob/user) - user.visible_message("[user] is wrapping \the [src] around [user.p_their()] neck. It looks like [user.p_theyre()] trying to rip [user.p_their()] head off!") - playsound(loc, 'sound/items/jaws_cut.ogg', 50, 1, -1) - if(iscarbon(user)) - var/mob/living/carbon/C = user - var/obj/item/bodypart/BP = C.get_bodypart("head") - if(BP) - BP.drop_limb() - playsound(loc,pick('sound/misc/desceration-01.ogg','sound/misc/desceration-02.ogg','sound/misc/desceration-01.ogg') ,50, 1, -1) - return (BRUTELOSS) - -/obj/item/wirecutters/power/attack_self(mob/user) - playsound(get_turf(user), 'sound/items/change_jaws.ogg', 50, 1) - var/obj/item/crowbar/power/pryjaws = new /obj/item/crowbar/power - to_chat(user, "You attach the pry jaws to [src].") - qdel(src) - user.put_in_active_hand(pryjaws) -/* - * Welding Tool - */ -/obj/item/weldingtool - name = "welding tool" - desc = "A standard edition welder provided by Nanotrasen." - icon = 'icons/obj/tools.dmi' - icon_state = "welder" - item_state = "welder" - lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT - force = 3 - throwforce = 5 - hitsound = "swing_hit" - usesound = 'sound/items/welder.ogg' - var/acti_sound = 'sound/items/welderactivate.ogg' - var/deac_sound = 'sound/items/welderdeactivate.ogg' - throw_speed = 3 - throw_range = 5 - w_class = WEIGHT_CLASS_SMALL - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 30) - resistance_flags = FIRE_PROOF - - materials = list(MAT_METAL=70, MAT_GLASS=30) - var/welding = 0 //Whether or not the welding tool is off(0), on(1) or currently welding(2) - var/status = TRUE //Whether the welder is secured or unsecured (able to attach rods to it to make a flamethrower) - var/max_fuel = 20 //The max amount of fuel the welder can hold - var/change_icons = 1 - var/can_off_process = 0 - var/light_intensity = 2 //how powerful the emitted light is when used. - var/burned_fuel_for = 0 //when fuel was last removed - heat = 3800 - toolspeed = 1 - -/obj/item/weldingtool/Initialize() - . = ..() - create_reagents(max_fuel) - reagents.add_reagent("welding_fuel", max_fuel) - update_icon() - - -/obj/item/weldingtool/proc/update_torch() - if(welding) - add_overlay("[initial(icon_state)]-on") - item_state = "[initial(item_state)]1" - else - item_state = "[initial(item_state)]" - - -/obj/item/weldingtool/update_icon() - cut_overlays() - if(change_icons) - var/ratio = get_fuel() / max_fuel - ratio = Ceiling(ratio*4) * 25 - add_overlay("[initial(icon_state)][ratio]") - update_torch() - return - - -/obj/item/weldingtool/process() - switch(welding) - if(0) - force = 3 - damtype = "brute" - update_icon() - if(!can_off_process) - STOP_PROCESSING(SSobj, src) - return - //Welders left on now use up fuel, but lets not have them run out quite that fast - if(1) - force = 15 - damtype = "fire" - ++burned_fuel_for - if(burned_fuel_for >= WELDER_FUEL_BURN_INTERVAL) - remove_fuel(1) - update_icon() - - //This is to start fires. process() is only called if the welder is on. - open_flame() - - -/obj/item/weldingtool/suicide_act(mob/user) - user.visible_message("[user] welds [user.p_their()] every orifice closed! It looks like [user.p_theyre()] trying to commit suicide!") - return (FIRELOSS) - - -/obj/item/weldingtool/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/screwdriver)) - flamethrower_screwdriver(I, user) - else if(istype(I, /obj/item/stack/rods)) - flamethrower_rods(I, user) - else if(istype(I, /obj/item/reagent_containers) && I.is_open_container()) - var/amountNeeded = max_fuel - get_fuel() - var/obj/item/reagent_containers/container = I - if(length(container.reagents.reagent_list) > 1) - to_chat(user, "[container] has too many chemicals mixed into it. You wouldn't want to put the wrong chemicals into [src].") - return ..() - if(amountNeeded > 0 && container.reagents.has_reagent("welding_fuel")) - container.reagents.trans_id_to(src, "welding_fuel", amountNeeded) - to_chat(user, "You transfer some fuel from [container] to [src].") - else - return ..() - - -/obj/item/weldingtool/attack(mob/living/carbon/human/H, mob/user) - if(!istype(H)) - return ..() - - var/obj/item/bodypart/affecting = H.get_bodypart(check_zone(user.zone_selected)) - - if(affecting && affecting.status == BODYPART_ROBOTIC && user.a_intent != INTENT_HARM) - if(src.remove_fuel(1)) - playsound(loc, usesound, 50, 1) - if(user == H) - user.visible_message("[user] starts to fix some of the dents on [H]'s [affecting.name].", "You start fixing some of the dents on [H]'s [affecting.name].") - if(!do_mob(user, H, 50)) - return - item_heal_robotic(H, user, 15, 0) - else - return ..() - - -/obj/item/weldingtool/afterattack(atom/O, mob/user, proximity) - if(!proximity) - return - - if(welding) - remove_fuel(1) - var/turf/location = get_turf(user) - location.hotspot_expose(700, 50, 1) - if(get_fuel() <= 0) - set_light(0) - - if(isliving(O)) - var/mob/living/L = O - if(L.IgniteMob()) - message_admins("[key_name_admin(user)] set [key_name_admin(L)] on fire") - log_game("[key_name(user)] set [key_name(L)] on fire") - - -/obj/item/weldingtool/attack_self(mob/user) - switched_on(user) - if(welding) - set_light(light_intensity) - - update_icon() - - -//Returns the amount of fuel in the welder -/obj/item/weldingtool/proc/get_fuel() - return reagents.get_reagent_amount("welding_fuel") - - -//Removes fuel from the welding tool. If a mob is passed, it will try to flash the mob's eyes. This should probably be renamed to use() -/obj/item/weldingtool/proc/remove_fuel(amount = 1, mob/living/M = null) - if(!welding || !check_fuel()) - return 0 - if(amount) - burned_fuel_for = 0 - if(get_fuel() >= amount) - reagents.remove_reagent("welding_fuel", amount) - check_fuel() - if(M) - M.flash_act(light_intensity) - return TRUE - else - if(M) - to_chat(M, "You need more welding fuel to complete this task!") - return FALSE - - -//Turns off the welder if there is no more fuel (does this really need to be its own proc?) -/obj/item/weldingtool/proc/check_fuel(mob/user) - if(get_fuel() <= 0 && welding) - switched_on(user) - update_icon() - //mob icon update - if(ismob(loc)) - var/mob/M = loc - M.update_inv_hands(0) - - return 0 - return 1 - -//Switches the welder on -/obj/item/weldingtool/proc/switched_on(mob/user) - if(!status) - to_chat(user, "[src] can't be turned on while unsecured!") - return - welding = !welding - if(welding) - if(get_fuel() >= 1) - to_chat(user, "You switch [src] on.") - playsound(loc, acti_sound, 50, 1) - force = 15 - damtype = "fire" - hitsound = 'sound/items/welder.ogg' - update_icon() - START_PROCESSING(SSobj, src) - else - to_chat(user, "You need more fuel!") - switched_off(user) - else - to_chat(user, "You switch [src] off.") - playsound(loc, deac_sound, 50, 1) - switched_off(user) - -//Switches the welder off -/obj/item/weldingtool/proc/switched_off(mob/user) - welding = 0 - set_light(0) - - force = 3 - damtype = "brute" - hitsound = "swing_hit" - update_icon() - - -/obj/item/weldingtool/examine(mob/user) - ..() - to_chat(user, "It contains [get_fuel()] unit\s of fuel out of [max_fuel].") - -/obj/item/weldingtool/is_hot() - return welding * heat - -//Returns whether or not the welding tool is currently on. -/obj/item/weldingtool/proc/isOn() - return welding - - -/obj/item/weldingtool/proc/flamethrower_screwdriver(obj/item/I, mob/user) - if(welding) - to_chat(user, "Turn it off first!") - return - status = !status - if(status) - to_chat(user, "You resecure [src].") - else - to_chat(user, "[src] can now be attached and modified.") - add_fingerprint(user) - -/obj/item/weldingtool/proc/flamethrower_rods(obj/item/I, mob/user) - if(!status) - var/obj/item/stack/rods/R = I - if (R.use(1)) - var/obj/item/flamethrower/F = new /obj/item/flamethrower(user.loc) - if(!remove_item_from_storage(F)) - user.transferItemToLoc(src, F, TRUE) - F.weldtool = src - add_fingerprint(user) - to_chat(user, "You add a rod to a welder, starting to build a flamethrower.") - user.put_in_hands(F) - else - to_chat(user, "You need one rod to start building a flamethrower!") - -/obj/item/weldingtool/ignition_effect(atom/A, mob/user) - if(welding && remove_fuel(1, user)) - . = "[user] casually lights [A] with [src], what a badass." - else - . = "" - -/obj/item/weldingtool/largetank - name = "industrial welding tool" - desc = "A slightly larger welder with a larger tank." - icon_state = "indwelder" - max_fuel = 40 - materials = list(MAT_GLASS=60) - -/obj/item/weldingtool/largetank/cyborg - name = "integrated welding tool" - desc = "An advanced welder designed to be used in robotic systems." - toolspeed = 0.5 - -/obj/item/weldingtool/largetank/flamethrower_screwdriver() - return - - -/obj/item/weldingtool/mini - name = "emergency welding tool" - desc = "A miniature welder used during emergencies." - icon_state = "miniwelder" - max_fuel = 10 - w_class = WEIGHT_CLASS_TINY - materials = list(MAT_METAL=30, MAT_GLASS=10) - change_icons = 0 - -/obj/item/weldingtool/mini/flamethrower_screwdriver() - return - -/obj/item/weldingtool/abductor - name = "alien welding tool" - desc = "An alien welding tool. Whatever fuel it uses, it never runs out." - icon = 'icons/obj/abductor.dmi' - icon_state = "welder" - toolspeed = 0.1 - light_intensity = 0 - change_icons = 0 - -/obj/item/weldingtool/abductor/process() - if(get_fuel() <= max_fuel) - reagents.add_reagent("welding_fuel", 1) - ..() - -/obj/item/weldingtool/hugetank - name = "upgraded industrial welding tool" - desc = "An upgraded welder based of the industrial welder." - icon_state = "upindwelder" - item_state = "upindwelder" - max_fuel = 80 - materials = list(MAT_METAL=70, MAT_GLASS=120) - -/obj/item/weldingtool/experimental - name = "experimental welding tool" - desc = "An experimental welder capable of self-fuel generation and less harmful to the eyes." - icon_state = "exwelder" - item_state = "exwelder" - max_fuel = 40 - materials = list(MAT_METAL=70, MAT_GLASS=120) - var/last_gen = 0 - change_icons = 0 - can_off_process = 1 - light_intensity = 1 - toolspeed = 0.5 - var/nextrefueltick = 0 - -/obj/item/weldingtool/experimental/brass - name = "brass welding tool" - desc = "A brass welder that seems to constantly refuel itself. It is faintly warm to the touch." - resistance_flags = FIRE_PROOF | ACID_PROOF - icon_state = "brasswelder" - item_state = "brasswelder" - - -/obj/item/weldingtool/experimental/process() - ..() - if(get_fuel() < max_fuel && nextrefueltick < world.time) - nextrefueltick = world.time + 10 - reagents.add_reagent("welding_fuel", 1) - - -/* - * Crowbar - */ - -/obj/item/crowbar - name = "pocket crowbar" - desc = "A small crowbar. This handy tool is useful for lots of things, such as prying floor tiles or opening unpowered doors." - icon = 'icons/obj/tools.dmi' - icon_state = "crowbar" - lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - usesound = 'sound/items/crowbar.ogg' - flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT - force = 5 - throwforce = 7 - w_class = WEIGHT_CLASS_SMALL - materials = list(MAT_METAL=50) - attack_verb = list("attacked", "bashed", "battered", "bludgeoned", "whacked") - toolspeed = 1 - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 30) - -/obj/item/crowbar/suicide_act(mob/user) - user.visible_message("[user] is beating [user.p_them()]self to death with [src]! It looks like [user.p_theyre()] trying to commit suicide!") - playsound(loc, 'sound/weapons/genhit.ogg', 50, 1, -1) - return (BRUTELOSS) - -/obj/item/crowbar/red - icon_state = "crowbar_red" - force = 8 - -/obj/item/crowbar/brass - name = "brass crowbar" - desc = "A brass crowbar. It feels faintly warm to the touch." - resistance_flags = FIRE_PROOF | ACID_PROOF - icon_state = "crowbar_brass" - toolspeed = 0.5 - -/obj/item/crowbar/abductor - name = "alien crowbar" - desc = "A hard-light crowbar. It appears to pry by itself, without any effort required." - icon = 'icons/obj/abductor.dmi' - usesound = 'sound/weapons/sonic_jackhammer.ogg' - icon_state = "crowbar" - toolspeed = 0.1 - -/obj/item/crowbar/large - name = "crowbar" - desc = "It's a big crowbar. It doesn't fit in your pockets, because it's big." - force = 12 - w_class = WEIGHT_CLASS_NORMAL - throw_speed = 3 - throw_range = 3 - materials = list(MAT_METAL=70) - icon_state = "crowbar_large" - item_state = "crowbar" - toolspeed = 0.5 - -/obj/item/crowbar/cyborg - name = "hydraulic crowbar" - desc = "A hydraulic prying tool, compact but powerful. Designed to replace crowbar in construction cyborgs." - usesound = 'sound/items/jaws_pry.ogg' - force = 10 - toolspeed = 0.5 - -/obj/item/crowbar/power - name = "jaws of life" - desc = "A set of jaws of life, compressed through the magic of science. It's fitted with a prying head." - icon_state = "jaws_pry" - item_state = "jawsoflife" - lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25) - usesound = 'sound/items/jaws_pry.ogg' - force = 15 - toolspeed = 0.25 - -/obj/item/crowbar/power/suicide_act(mob/user) - user.visible_message("[user] is putting [user.p_their()] head in [src], it looks like [user.p_theyre()] trying to commit suicide!") - playsound(loc, 'sound/items/jaws_pry.ogg', 50, 1, -1) - return (BRUTELOSS) - -/obj/item/crowbar/power/attack_self(mob/user) - playsound(get_turf(user), 'sound/items/change_jaws.ogg', 50, 1) - var/obj/item/wirecutters/power/cutjaws = new /obj/item/wirecutters/power - to_chat(user, "You attach the cutting jaws to [src].") - qdel(src) - user.put_in_active_hand(cutjaws) - -#undef WELDER_FUEL_BURN_INTERVAL diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm index c3bbc18d10..945b738bd0 100644 --- a/code/game/objects/items/tools/screwdriver.dm +++ b/code/game/objects/items/tools/screwdriver.dm @@ -75,7 +75,7 @@ return ..() if(user.zone_selected != "eyes" && user.zone_selected != "head") return ..() - if(user.has_disability(DISABILITY_CLUMSY) && prob(50)) + if(user.has_trait(TRAIT_CLUMSY) && prob(50)) M = user return eyestab(M,user) diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index 289b4dc5e2..992c01fc2b 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -30,6 +30,7 @@ var/light_intensity = 2 //how powerful the emitted light is when used. var/burned_fuel_for = 0 //when fuel was last removed heat = 3800 + tool_behaviour = TOOL_WELDER toolspeed = 1 /obj/item/weldingtool/Initialize() diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index f7e61c8fda..0c6e9f1d6b 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -20,6 +20,7 @@ * Toy xeno * Kitty toys! * Snowballs + * Clockwork Watches */ @@ -1049,6 +1050,31 @@ if(user.dropItemToGround(src)) throw_at(target, throw_range, throw_speed) +/* + * Clockwork Watch + */ + +/obj/item/toy/clockwork_watch + name = "steampunk watch" + desc = "A stylish steampunk watch made out of thousands of tiny cogwheels." + icon = 'icons/obj/clockwork_objects.dmi' + icon_state = "dread_ipad" + slot_flags = SLOT_BELT + w_class = WEIGHT_CLASS_SMALL + var/cooldown = 0 + +/obj/item/toy/clockwork_watch/attack_self(mob/user) + if (cooldown < world.time) + cooldown = world.time + 1800 //3 minutes + user.visible_message("[user] rotates a cogwheel on [src].", "You rotate a cogwheel on [src], it plays a loud noise!", "You hear cogwheels turning.") + playsound(src, 'sound/magic/clockwork/ark_activation.ogg', 50, 0) + else + to_chat(user, "The cogwheels are already turning!") + +/obj/item/toy/clockwork_watch/examine(mob/user) + ..() + to_chat(user, "Station Time: [worldtime2text()]") + /* * Xenomorph action figure */ diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm index 14585e8194..b7013f5210 100644 --- a/code/game/objects/items/twohanded.dm +++ b/code/game/objects/items/twohanded.dm @@ -289,7 +289,7 @@ /obj/item/twohanded/dualsaber/suicide_act(mob/living/carbon/user) if(wielded) user.visible_message("[user] begins spinning way too fast! It looks like [user.p_theyre()] trying to commit suicide!") - + var/obj/item/bodypart/head/myhead = user.get_bodypart("head")//stole from chainsaw code var/obj/item/organ/brain/B = user.getorganslot(ORGAN_SLOT_BRAIN) B.vital = FALSE//this cant possibly be a good idea @@ -305,8 +305,8 @@ else user.visible_message("[user] panics and starts choking to death!") return OXYLOSS - - + + else user.visible_message("[user] begins beating [user.p_them()]self to death with \the [src]'s handle! It probably would've been cooler if [user.p_they()] turned it on first!") return BRUTELOSS @@ -343,7 +343,7 @@ unwield() return ..() - if(user.has_disability(DISABILITY_CLUMSY) && (wielded) && prob(40)) + if(user.has_trait(TRAIT_CLUMSY) && (wielded) && prob(40)) impale(user) return if((wielded) && prob(50)) @@ -459,7 +459,7 @@ force_wielded = 18 throwforce = 20 throw_speed = 4 - embedded_impact_pain_multiplier = 3 + embedding = list("embedded_impact_pain_multiplier" = 3) armour_penetration = 10 materials = list(MAT_METAL=1150, MAT_GLASS=2075) hitsound = 'sound/weapons/bladeslice.ogg' @@ -778,7 +778,7 @@ force_wielded = 20 //I have no idea how to balance throwforce = 22 throw_speed = 4 - embedded_impact_pain_multiplier = 3 + embedding = list("embedded_impact_pain_multiplier" = 3) armour_penetration = 15 //Enhanced armor piercing hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("attacked", "poked", "jabbed", "torn", "gored") diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index c63bbb7626..e7a0adca85 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -105,10 +105,10 @@ /obj/item/claymore/highlander/pickup(mob/living/user) to_chat(user, "The power of Scotland protects you! You are shielded from all stuns and knockdowns.") user.add_stun_absorption("highlander", INFINITY, 1, " is protected by the power of Scotland!", "The power of Scotland absorbs the stun!", " is protected by the power of Scotland!") - user.status_flags += IGNORESLOWDOWN + user.add_trait(TRAIT_IGNORESLOWDOWN, HIGHLANDER) /obj/item/claymore/highlander/dropped(mob/living/user) - user.status_flags -= IGNORESLOWDOWN + user.remove_trait(TRAIT_IGNORESLOWDOWN, HIGHLANDER) qdel(src) //If this ever happens, it's because you lost an arm /obj/item/claymore/highlander/examine(mob/user) @@ -267,10 +267,8 @@ force = 2 throwforce = 20 //This is never used on mobs since this has a 100% embed chance. throw_speed = 4 - embedded_pain_multiplier = 4 + embedding = list("embedded_pain_multiplier" = 4, "embed_chance" = 100, "embedded_fall_chance" = 0) w_class = WEIGHT_CLASS_SMALL - embed_chance = 100 - embedded_fall_chance = 0 //Hahaha! sharpness = IS_SHARP materials = list(MAT_METAL=500, MAT_GLASS=500) resistance_flags = FIRE_PROOF @@ -454,7 +452,7 @@ name = "liz o' nine tails" desc = "A whip fashioned from the severed tails of lizards." icon_state = "tailwhip" - needs_permit = 0 + item_flags = NONE /obj/item/melee/chainofcommand/tailwhip/kitty name = "cat o' nine tails" diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm index c20c01cc42..c4c85bc6a5 100644 --- a/code/game/objects/obj_defense.dm +++ b/code/game/objects/obj_defense.dm @@ -27,7 +27,7 @@ return 0 var/armor_protection = 0 if(damage_flag) - armor_protection = armor[damage_flag] + armor_protection = armor.getRating(damage_flag) if(armor_protection) //Only apply weak-against-armor/hollowpoint effects if there actually IS armor. armor_protection = CLAMP(armor_protection - armour_penetration, 0, 100) return round(damage_amount * (100 - armor_protection)*0.01, 0.1) @@ -178,7 +178,7 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e if(!(resistance_flags & ACID_PROOF)) for(var/armour_value in armor) if(armour_value != "acid" && armour_value != "fire") - armor[armour_value] = max(armor[armour_value] - round(sqrt(acid_level)*0.1), 0) + armor = armor.modifyAllRatings(0 - round(sqrt(acid_level)*0.1)) if(prob(33)) playsound(loc, 'sound/items/welder.ogg', 150, 1) take_damage(min(1 + round(sqrt(acid_level)*0.3), 300), BURN, "acid", 0) @@ -222,13 +222,13 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e /obj/proc/tesla_act(var/power) - being_shocked = TRUE + obj_flags |= BEING_SHOCKED var/power_bounced = power / 2 tesla_zap(src, 3, power_bounced) addtimer(CALLBACK(src, .proc/reset_shocked), 10) /obj/proc/reset_shocked() - being_shocked = FALSE + obj_flags &= ~BEING_SHOCKED //the obj is deconstructed into pieces, whether through careful disassembly or when destroyed. /obj/proc/deconstruct(disassembled = TRUE) diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index ce4b4d8d79..08df6e9481 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -1,57 +1,64 @@ + /obj var/crit_fail = FALSE animate_movement = 2 var/throwforce = 0 - var/in_use = 0 // If we have a user using us, this will be set on. We will check if the user has stopped using us, and thus stop updating and LAGGING EVERYTHING! + var/obj_flags = CAN_BE_HIT + var/set_obj_flags // ONLY FOR MAPPING: Sets flags from a string list, handled in Initialize. Usage: set_obj_flags = "EMAGGED;!CAN_BE_HIT" to set EMAGGED and clear CAN_BE_HIT. var/damtype = BRUTE var/force = 0 - var/list/armor + var/datum/armor/armor var/obj_integrity //defaults to max_integrity var/max_integrity = 500 var/integrity_failure = 0 //0 if we have no special broken behavior var/resistance_flags = NONE // INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ON_FIRE | UNACIDABLE | ACID_PROOF - var/can_be_hit = TRUE //can this be bludgeoned by items? var/acid_level = 0 //how much acid is on that obj - var/being_shocked = FALSE - - var/on_blueprints = FALSE //Are we visible on the station blueprints at roundstart? - var/force_blueprints = FALSE //forces the obj to be on the blueprints, regardless of when it was created. - var/persistence_replacement //have something WAY too amazing to live to the next round? Set a new path here. Overuse of this var will make me upset. - var/unique_rename = FALSE // can you customize the description/name of the thing? var/current_skin //Has the item been reskinned? var/list/unique_reskin //List of options to reskin. - var/dangerous_possession = FALSE //Admin possession yes/no /obj/vv_edit_var(vname, vval) switch(vname) - if("dangerous_possession") - return FALSE + if("obj_flags") + if ((obj_flags & DANGEROUS_POSSESSION) && !(vval & DANGEROUS_POSSESSION)) + return FALSE if("control_object") var/obj/O = vval - if(istype(O) && O.dangerous_possession) + if(istype(O) && (O.obj_flags & DANGEROUS_POSSESSION)) return FALSE ..() /obj/Initialize() . = ..() - if (!armor) - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) + if (islist(armor)) + armor = getArmor(arglist(armor)) + else if (!armor) + armor = getArmor() + else if (!istype(armor, /datum/armor)) + stack_trace("Invalid type [armor.type] found in .armor during /obj Initialize()") + if(obj_integrity == null) obj_integrity = max_integrity - if(on_blueprints && isturf(loc)) + if (set_obj_flags) + var/flagslist = splittext(set_obj_flags,";") + var/list/string_to_objflag = GLOB.bitfields["obj_flags"] + for (var/flag in flagslist) + if (findtext(flag,"!",1,2)) + flag = copytext(flag,1-(length(flag))) // Get all but the initial ! + obj_flags &= ~string_to_objflag[flag] + else + obj_flags |= string_to_objflag[flag] + if((obj_flags & ON_BLUEPRINTS) && isturf(loc)) var/turf/T = loc - if(force_blueprints) - T.add_blueprints(src) - else - T.add_blueprints_preround(src) + T.add_blueprints_preround(src) + /obj/Destroy(force=FALSE) if(!ismachinery(src)) @@ -98,7 +105,7 @@ return null /obj/proc/updateUsrDialog() - if(in_use) + if(obj_flags & IN_USE) var/is_in_use = 0 var/list/nearby = viewers(1, src) for(var/mob/M in nearby) @@ -120,11 +127,14 @@ if(H.dna.check_mutation(TK)) is_in_use = 1 src.attack_hand(usr) - in_use = is_in_use + if (is_in_use) + obj_flags |= IN_USE + else + obj_flags &= ~IN_USE /obj/proc/updateDialog() // Check that people are actually using the machine. If not, don't update anymore. - if(in_use) + if(obj_flags & IN_USE) var/list/nearby = viewers(1, src) var/is_in_use = 0 for(var/mob/M in nearby) @@ -134,7 +144,7 @@ var/ai_in_use = AutoUpdateAI(src) if(!ai_in_use && !is_in_use) - in_use = 0 + obj_flags &= ~IN_USE /obj/attack_ghost(mob/user) @@ -162,7 +172,7 @@ unset_machine() src.machine = O if(istype(O)) - O.in_use = 1 + O.obj_flags |= IN_USE /obj/item/proc/updateSelfDialog() var/mob/M = src.loc @@ -205,10 +215,11 @@ . = ..() .["Delete all of type"] = "?_src_=vars;[HrefToken()];delall=[REF(src)]" .["Osay"] = "?_src_=vars;[HrefToken()];osay[REF(src)]" + .["Modify armor values"] = "?_src_=vars;[HrefToken()];modarmor=[REF(src)]" /obj/examine(mob/user) ..() - if(unique_rename) + if(obj_flags & UNIQUE_RENAME) to_chat(user, "Use a pen on it to rename it or change its description.") if(unique_reskin && !current_skin) to_chat(user, "Alt-click it to reskin it.") diff --git a/code/game/objects/radiation.dm b/code/game/objects/radiation.dm deleted file mode 100644 index 81f5ef975f..0000000000 --- a/code/game/objects/radiation.dm +++ /dev/null @@ -1,60 +0,0 @@ -/proc/radiation_pulse(turf/epicenter, heavy_range, light_range, severity, log=0) - if(!epicenter || !severity) - return - - if(!isturf(epicenter)) - epicenter = get_turf(epicenter.loc) - - if(heavy_range > light_range) - light_range = heavy_range - - var/light_severity = severity * 0.5 - for(var/atom/T in range(light_range, epicenter)) - var/distance = get_dist(epicenter, T) - if(distance < 0) - distance = 0 - if(distance < heavy_range) - T.rad_act(severity) - else if(distance == heavy_range) - if(prob(50)) - T.rad_act(severity) - else - T.rad_act(light_severity) - else if(distance <= light_range) - T.rad_act(light_severity) - - if(log) - log_game("Radiation pulse with size ([heavy_range], [light_range]) and severity [severity] in area [epicenter.loc.name] ") - return 1 - -/atom/proc/rad_act(var/severity) - return 1 - -/mob/living/rad_act(amount, silent = 0) - if(amount) - var/blocked = getarmor(null, "rad") - - if(!silent) - to_chat(src, "Your skin feels warm.") - - apply_effect(amount, IRRADIATE, blocked) - for(var/obj/I in src) //Radiation is also applied to items held by the mob - I.rad_act(amount) - -/mob/living/carbon/rad_act(amount, silent = 0) - if(dna && (RADIMMUNE in dna.species.species_traits)) - silent = TRUE - ..() - -//Silicons will inherently not get irradiated due to having an empty handle_mutations_and_radiation, but they need to not hear this -/mob/living/silicon/rad_act(amount) - . = ..(amount, TRUE) - -/mob/living/simple_animal/bot/rad_act(amount) - . = ..(amount, TRUE) - -/mob/living/simple_animal/drone/rad_act(amount) - . = ..(amount, TRUE) - -/mob/living/simple_animal/hostile/swarmer/rad_act(amount) - . = ..(amount, TRUE) diff --git a/code/game/objects/structures/barsigns.dm b/code/game/objects/structures/barsigns.dm index b3746b7308..c9c9e8c931 100644 --- a/code/game/objects/structures/barsigns.dm +++ b/code/game/objects/structures/barsigns.dm @@ -83,7 +83,7 @@ to_chat(user, "You close the maintenance panel.") if(!broken && !emagged) set_sign(pick(barsigns)) - else if(emagged) + else if(obj_flags & EMAGGED) set_sign(new /datum/barsign/hiddensigns/syndibarsign) else set_sign(new /datum/barsign/hiddensigns/empbarsign) @@ -91,7 +91,7 @@ else if(istype(I, /obj/item/stack/cable_coil) && panel_open) var/obj/item/stack/cable_coil/C = I - if(emagged) //Emagged, not broken by EMP + if(obj_flags & EMAGGED) //Emagged, not broken by EMP to_chat(user, "Sign has been damaged beyond repair!") return else if(!broken) @@ -118,7 +118,7 @@ if(broken || emagged) to_chat(user, "Nothing interesting happens!") return - emagged = TRUE + obj_flags |= EMAGGED to_chat(user, "You emag the barsign. Takeover in progress...") sleep(10 SECONDS) set_sign(new /datum/barsign/hiddensigns/syndibarsign) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index dcee41585d..fa9d9e9fd2 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -74,6 +74,7 @@ new /obj/item/door_remote/chief_medical_officer(src) new /obj/item/clothing/neck/petcollar(src) new /obj/item/pet_carrier(src) + new /obj/item/wallframe/defib_mount(src) new /obj/item/circuitboard/machine/protolathe/department/medical(src) /obj/structure/closet/secure_closet/animal diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 2eae2a9fb9..2caa050309 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -6,22 +6,22 @@ /obj/structure/closet/secure_closet/captains/PopulateContents() ..() new /obj/item/clothing/suit/hooded/wintercoat/captain(src) - if(prob(50)) - new /obj/item/storage/backpack/captain(src) - else - new /obj/item/storage/backpack/satchel/cap(src) + new /obj/item/storage/backpack/captain(src) + new /obj/item/storage/backpack/satchel/cap(src) + new /obj/item/storage/backpack/duffelbag/captain(src) new /obj/item/clothing/neck/cloak/cap(src) new /obj/item/clothing/neck/petcollar(src) new /obj/item/pet_carrier(src) - new /obj/item/storage/backpack/duffelbag/captain(src) - new /obj/item/clothing/head/crown/fancy(src) - new /obj/item/clothing/suit/captunic(src) - new /obj/item/clothing/under/captainparade(src) - new /obj/item/clothing/head/caphat/parade(src) - new /obj/item/clothing/under/rank/captain(src) - new /obj/item/clothing/suit/armor/vest/capcarapace/alt(src) - new /obj/item/cartridge/captain(src) new /obj/item/clothing/shoes/sneakers/brown(src) + new /obj/item/clothing/under/rank/captain(src) + new /obj/item/clothing/suit/armor/vest/capcarapace(src) + new /obj/item/clothing/head/caphat(src) + new /obj/item/clothing/under/captainparade(src) + new /obj/item/clothing/suit/armor/vest/capcarapace/alt(src) + new /obj/item/clothing/head/caphat/parade(src) + new /obj/item/clothing/suit/captunic(src) + new /obj/item/clothing/head/crown/fancy(src) + new /obj/item/cartridge/captain(src) new /obj/item/storage/box/silver_ids(src) new /obj/item/device/radio/headset/heads/captain/alt(src) new /obj/item/device/radio/headset/heads/captain(src) @@ -31,6 +31,7 @@ new /obj/item/storage/belt/sabre(src) new /obj/item/gun/energy/e_gun(src) new /obj/item/door_remote/captain(src) + new /obj/item/card/id/captains_spare(src) /obj/structure/closet/secure_closet/hop name = "\proper head of personnel's locker" diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index 03a9b2a070..2f17926a9b 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -295,6 +295,7 @@ icon = 'icons/turf/walls/iron_wall.dmi' icon_state = "iron" mineral = /obj/item/stack/rods + mineral_amount = 5 walltype = /turf/closed/wall/mineral/iron canSmoothWith = list(/obj/structure/falsewall/iron, /turf/closed/wall/mineral/iron) diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index ec1099fb51..fc29206090 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -411,7 +411,7 @@ id = /obj/item/card/id /datum/outfit/syndicate_empty/post_equip(mob/living/carbon/human/H) - H.faction |= "syndicate" + H.faction |= ROLE_SYNDICATE /obj/effect/mob_spawn/human/syndicate/battlecruiser name = "Syndicate Battlecruiser Ship Operative" diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 190dab7011..84a6cc1b9e 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -346,7 +346,7 @@ /obj/structure/girder/cult/attackby(obj/item/W, mob/user, params) add_fingerprint(user) - if(istype(W, /obj/item/tome) && iscultist(user)) //Cultists can demolish cult girders instantly with their tomes + if(istype(W, /obj/item/melee/cultblade/dagger) && iscultist(user)) //Cultists can demolish cult girders instantly with their tomes user.visible_message("[user] strikes [src] with [W]!", "You demolish [src].") var/obj/item/stack/sheet/runed_metal/R = new(get_turf(src)) R.amount = 1 diff --git a/code/game/objects/structures/headpike.dm b/code/game/objects/structures/headpike.dm new file mode 100644 index 0000000000..eafae96b8e --- /dev/null +++ b/code/game/objects/structures/headpike.dm @@ -0,0 +1,47 @@ +/obj/structure/headpike + name = "spooky head on a spear" + desc = "When you really want to send a message." + icon = 'icons/obj/structures.dmi' + icon_state = "headpike" + density = FALSE + anchored = TRUE + var/bonespear = FALSE + var/obj/item/twohanded/spear/spear + var/obj/item/bodypart/head/victim + +/obj/structure/headpike/bone //for bone spears + icon_state = "headpike-bone" + bonespear = TRUE + + +/obj/structure/headpike/CheckParts(list/parts_list) + ..() + victim = locate(/obj/item/bodypart/head) in parts_list + name = "[victim.name] on a spear" + update_icon() + if(bonespear) + spear = locate(/obj/item/twohanded/bonespear) in parts_list + else + spear = locate(/obj/item/twohanded/spear) in parts_list + +/obj/structure/headpike/Initialize() + . = ..() + pixel_x = rand(-8, 8) + +/obj/structure/headpike/update_icon() + ..() + var/obj/item/bodypart/head/H = locate() in contents + var/mutable_appearance/MA = new() + if(H) + MA.copy_overlays(H) + MA.pixel_y = 12 + add_overlay(H) + +/obj/structure/headpike/attack_hand(mob/user) + ..() + to_chat(user, "You take down [src].") + victim.forceMove(drop_location()) + victim = null + spear.forceMove(drop_location()) + spear = null + qdel(src) \ No newline at end of file diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index e7f3d5eafc..b88ee9049f 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -89,7 +89,7 @@ name = "magic mirror" desc = "Turn and face the strange... face." icon_state = "magic_mirror" - var/list/races_blacklist = list("skeleton", "agent", "angel", "military_synth", "memezombies") + var/list/races_blacklist = list("skeleton", "agent", "angel", "military_synth", "memezombies", "clockwork golem servant") var/list/choosable_races = list() /obj/structure/mirror/magic/New() diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 5bcc446cfa..6a2c763f4a 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -24,7 +24,7 @@ GLOBAL_LIST_EMPTY(bodycontainers) //Let them act as spawnpoints for revenants an var/obj/structure/tray/connected = null var/locked = FALSE - var/opendir = SOUTH + dir = SOUTH var/message_cooldown var/breakout_time = 600 @@ -115,12 +115,15 @@ GLOBAL_LIST_EMPTY(bodycontainers) //Let them act as spawnpoints for revenants an /obj/structure/bodycontainer/proc/open() playsound(src.loc, 'sound/items/deconstruct.ogg', 50, 1) - var/turf/T = get_step(src, opendir) + playsound(src, 'sound/effects/roll.ogg', 5, 1) + var/turf/T = get_step(src, dir) + connected.dir=dir for(var/atom/movable/AM in src) AM.forceMove(T) update_icon() /obj/structure/bodycontainer/proc/close() + playsound(src, 'sound/effects/roll.ogg', 5, 1) playsound(src.loc, 'sound/items/deconstruct.ogg', 50, 1) for(var/atom/movable/AM in connected.loc) if(!AM.anchored || AM == connected) @@ -137,13 +140,22 @@ GLOBAL_LIST_EMPTY(bodycontainers) //Let them act as spawnpoints for revenants an name = "morgue" desc = "Used to keep bodies in until someone fetches them." icon_state = "morgue1" - opendir = EAST + dir = EAST + var/beeper = TRUE /obj/structure/bodycontainer/morgue/New() connected = new/obj/structure/tray/m_tray(src) connected.connected = src ..() +/obj/structure/bodycontainer/morgue/AltClick(mob/user) + ..() + if(user.incapacitated()) + to_chat(user, "You can't do that right now!") + return + beeper = !beeper + to_chat(user, "You turn the speaker function [beeper ? "off" : "on"].") + /obj/structure/bodycontainer/morgue/update_icon() if (!connected || connected.loc != src) // Open or tray is gone. icon_state = "morgue0" @@ -156,11 +168,16 @@ GLOBAL_LIST_EMPTY(bodycontainers) //Let them act as spawnpoints for revenants an if(!length(compiled)) // No mobs? icon_state = "morgue3" return + for(var/mob/living/M in compiled) - if(M.client && !M.suiciding) + var/mob/living/mob_occupant = get_mob_or_brainmob(M) + if(mob_occupant.client && !mob_occupant.suiciding && !(mob_occupant.has_trait(TRAIT_NOCLONE)) && !mob_occupant.hellbound) icon_state = "morgue4" // Cloneable + if(mob_occupant.stat == DEAD && beeper) + playsound(src, 'sound/weapons/smg_empty_alarm.ogg', 50, 0) //Clone them you blind fucks break + /obj/item/paper/guides/jobs/medical/morgue name = "morgue memo" info = "Since this station's medbay never seems to fail to be staffed by the mindless monkeys meant for genetics experiments, I'm leaving a reminder here for anyone handling the pile of cadavers the quacks are sure to leave.

Red lights mean there's a plain ol' dead body inside.

Yellow lights mean there's non-body objects inside.
Probably stuff pried off a corpse someone grabbed, or if you're lucky it's stashed booze.

Green lights mean the morgue system detects the body may be able to be cloned.

I don't know how that works, but keep it away from the kitchen and go yell at the geneticists.

- CentCom medical inspector" @@ -173,7 +190,7 @@ GLOBAL_LIST_EMPTY(crematoriums) name = "crematorium" desc = "A human incinerator. Works well on barbeque nights." icon_state = "crema1" - opendir = SOUTH + dir = SOUTH var/id = 1 /obj/structure/bodycontainer/crematorium/attack_robot(mob/user) //Borgs can't use crematoriums without help @@ -235,12 +252,14 @@ GLOBAL_LIST_EMPTY(crematoriums) M.ghostize() qdel(M) - for(var/obj/O in conts) //obj instead of obj/item so that bodybags and ashes get destroyed. We dont want tons and tons of ash piling up - if(O != connected) //Creamtorium does not burn hot enough to destroy the tray - qdel(O) + for(var/obj/O in conts) //conts defined above, ignores crematorium and tray + qdel(O) + + if(!locate(/obj/effect/decal/cleanable/ash) in get_step(src, dir))//prevent pile-up + new/obj/effect/decal/cleanable/ash/crematorium(src) - new /obj/effect/decal/cleanable/ash(src) sleep(30) + if(!QDELETED(src)) locked = FALSE update_icon() @@ -341,4 +360,4 @@ GLOBAL_LIST_EMPTY(crematoriums) . = !density if(ismovableatom(caller)) var/atom/movable/mover = caller - . = . || (mover.pass_flags & PASSTABLE) + . = . || (mover.pass_flags & PASSTABLE) \ No newline at end of file diff --git a/code/game/objects/structures/petrified_statue.dm b/code/game/objects/structures/petrified_statue.dm index 02b32c9f80..815dd9de6d 100644 --- a/code/game/objects/structures/petrified_statue.dm +++ b/code/game/objects/structures/petrified_statue.dm @@ -17,7 +17,7 @@ L.buckled.unbuckle_mob(L,force=1) L.visible_message("[L]'s skin rapidly turns to marble!", "Your body freezes up! Can't... move... can't... think...") L.forceMove(src) - L.add_disability(DISABILITY_MUTE, STATUE_MUTE) + L.add_trait(TRAIT_MUTE, STATUE_MUTE) L.faction += "mimic" //Stops mimics from instaqdeling people in statues L.status_flags |= GODMODE obj_integrity = L.health + 100 //stoning damaged mobs will result in easier to shatter statues @@ -59,7 +59,7 @@ if(petrified_mob) petrified_mob.status_flags &= ~GODMODE petrified_mob.forceMove(loc) - petrified_mob.remove_disability(DISABILITY_MUTE, STATUE_MUTE) + petrified_mob.remove_trait(TRAIT_MUTE, STATUE_MUTE) petrified_mob.take_overall_damage((petrified_mob.health - obj_integrity + 100)) //any new damage the statue incurred is transfered to the mob petrified_mob.faction -= "mimic" petrified_mob = null diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm deleted file mode 100644 index ae853b4aed..0000000000 --- a/code/game/objects/structures/signs.dm +++ /dev/null @@ -1,352 +0,0 @@ -/obj/structure/sign - icon = 'icons/obj/decals.dmi' - anchored = TRUE - opacity = 0 - density = FALSE - layer = SIGN_LAYER - max_integrity = 100 - armor = list(melee = 50, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50) - var/buildable_sign = 1 //unwrenchable and modifiable - -/obj/structure/sign/ComponentInitialize() - . = ..() - AddComponent(/datum/component/rad_insulation, RAD_NO_INSULATION) // Since this is on a wall if it becomes irradiated it will smuggle the radiation past the wall - -/obj/structure/sign/basic - name = "blank sign" - desc = "How can signs be real if our eyes aren't real?" - icon_state = "backing" - -/obj/structure/sign/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) - switch(damage_type) - if(BRUTE) - if(damage_amount) - playsound(src.loc, 'sound/weapons/slash.ogg', 80, 1) - else - playsound(loc, 'sound/weapons/tap.ogg', 50, 1) - if(BURN) - playsound(loc, 'sound/items/welder.ogg', 80, 1) - -/obj/structure/sign/attackby(obj/item/O, mob/user, params) - if(istype(O, /obj/item/wrench) && buildable_sign) - user.visible_message("[user] starts removing [src]...", \ - "You start unfastening [src].") - playsound(src, O.usesound, 50, 1) - if(!do_after(user, 30*O.toolspeed, target = src)) - return - playsound(src, 'sound/items/deconstruct.ogg', 50, 1) - user.visible_message("[user] unfastens [src].", \ - "You unfasten [src].") - var/obj/item/sign_backing/SB = new (get_turf(user)) - SB.icon_state = icon_state - SB.sign_path = type - qdel(src) - else if(istype(O, /obj/item/pen) && buildable_sign) - var/list/sign_types = list("Secure Area", "Biohazard", "High Voltage", "Radiation", "Hard Vacuum Ahead", "Disposal: Leads To Space", "Danger: Fire", "No Smoking", "Medbay", "Science", "Chemistry", \ - "Hydroponics", "Xenobiology") - var/obj/structure/sign/sign_type - switch(input(user, "Select a sign type.", "Sign Customization") as null|anything in sign_types) - if("Blank") - sign_type = /obj/structure/sign/basic - if("Secure Area") - sign_type = /obj/structure/sign/securearea - if("Biohazard") - sign_type = /obj/structure/sign/biohazard - if("High Voltage") - sign_type = /obj/structure/sign/electricshock - if("Radiation") - sign_type = /obj/structure/sign/radiation - if("Hard Vacuum Ahead") - sign_type = /obj/structure/sign/vacuum - if("Disposal: Leads To Space") - sign_type = /obj/structure/sign/deathsposal - if("Danger: Fire") - sign_type = /obj/structure/sign/fire - if("No Smoking") - sign_type = /obj/structure/sign/nosmoking_1 - if("Medbay") - sign_type = /obj/structure/sign/bluecross_2 - if("Science") - sign_type = /obj/structure/sign/science - if("Chemistry") - sign_type = /obj/structure/sign/chemistry - if("Hydroponics") - sign_type = /obj/structure/sign/botany - if("Xenobiology") - sign_type = /obj/structure/sign/xenobio - - //Make sure user is adjacent still - if(!Adjacent(user)) - return - - if(!sign_type) - return - - //It's import to clone the pixel layout information - //Otherwise signs revert to being on the turf and - //move jarringly - var/obj/structure/sign/newsign = new sign_type(get_turf(src)) - newsign.pixel_x = pixel_x - newsign.pixel_y = pixel_y - qdel(src) - else - return ..() - -/obj/item/sign_backing - name = "sign backing" - desc = "A sign with adhesive backing." - icon = 'icons/obj/decals.dmi' - icon_state = "backing" - w_class = WEIGHT_CLASS_NORMAL - resistance_flags = FLAMMABLE - var/sign_path = /obj/structure/sign/basic //the type of sign that will be created when placed on a turf - -/obj/item/sign_backing/afterattack(atom/target, mob/user, proximity) - if(isturf(target) && proximity) - var/turf/T = target - user.visible_message("[user] fastens [src] to [T].", \ - "You attach the sign to [T].") - playsound(T, 'sound/items/deconstruct.ogg', 50, 1) - new sign_path(T) - qdel(src) - else - return ..() - -/obj/structure/sign/map - name = "station map" - desc = "A framed picture of the station." - max_integrity = 500 - -/obj/structure/sign/map/left - icon_state = "map-left" - -/obj/structure/sign/map/left/dream - icon_state = "map-left-DS" - desc = "A framed picture of the station.\nClockwise from the top, you see Engineering(yellow), Arrivals(blue and white), Atmospherics(yellow), Security(red), \ - Cargo(brown), Science(purple), Escape(red and white), and Medbay(blue).\nIn the center of the station, you see the Bridge(dark blue).\n\ - Around those, you see Hallways/Entrances(light grey), Public Areas(grey), and Maintenance(dark grey)." - -/obj/structure/sign/map/right - icon_state = "map-right" - -/obj/structure/sign/map/right/dream - icon_state = "map-right-DS" - desc = "A framed picture of the station.\nClockwise from the top, you see Engineering(yellow), Arrivals(blue and white), Atmospherics(yellow), Security(red), \ - Cargo(brown), Science(purple), Escape(red and white), and Medbay(blue).\nIn the center of the station, you see the Bridge(dark blue).\n\ - Around those, you see Hallways/Entrances(light grey), Public Areas(grey), and Maintenance(dark grey)." - -/obj/structure/sign/securearea - name = "\improper SECURE AREA" - desc = "A warning sign which reads 'SECURE AREA'." - icon_state = "securearea" - -/obj/structure/sign/biohazard - name = "\improper BIOHAZARD" - desc = "A warning sign which reads 'BIOHAZARD'." - icon_state = "bio" - -/obj/structure/sign/electricshock - name = "\improper HIGH VOLTAGE" - desc = "A warning sign which reads 'HIGH VOLTAGE'." - icon_state = "shock" - -/obj/structure/sign/examroom - name = "\improper EXAM ROOM" - desc = "A guidance sign which reads 'EXAM ROOM'." - icon_state = "examroom" - -/obj/structure/sign/vacuum - name = "\improper HARD VACUUM AHEAD" - desc = "A warning sign which reads 'HARD VACUUM AHEAD'." - icon_state = "space" - -/obj/structure/sign/deathsposal - name = "\improper DISPOSAL: LEADS TO SPACE" - desc = "A warning sign which reads 'DISPOSAL: LEADS TO SPACE'." - icon_state = "deathsposal" - -/obj/structure/sign/pods - name = "\improper ESCAPE PODS" - desc = "A warning sign which reads 'ESCAPE PODS'." - icon_state = "pods" - -/obj/structure/sign/fire - name = "\improper DANGER: FIRE" - desc = "A warning sign which reads 'DANGER: FIRE'." - icon_state = "fire" - - -/obj/structure/sign/nosmoking_1 - name = "\improper NO SMOKING" - desc = "A warning sign which reads 'NO SMOKING'." - icon_state = "nosmoking" - - -/obj/structure/sign/nosmoking_2 - name = "\improper NO SMOKING" - desc = "A warning sign which reads 'NO SMOKING'." - icon_state = "nosmoking2" - -/obj/structure/sign/radiation - name = "HAZARDOUS RADIATION" - desc = "A warning sign alerting the user of potential radiation hazards." - icon_state = "radiation" - -/obj/structure/sign/bluecross - name = "medbay" - desc = "The Intergalactic symbol of Medical institutions. You'll probably get help here." - icon_state = "bluecross" - -/obj/structure/sign/bluecross_2 - name = "medbay" - desc = "The Intergalactic symbol of Medical institutions. You'll probably get help here." - icon_state = "bluecross2" - -/obj/structure/sign/goldenplaque - name = "The Most Robust Men Award for Robustness" - desc = "To be Robust is not an action or a way of life, but a mental state. Only those with the force of Will strong enough to act during a crisis, saving friend from foe, are truly Robust. Stay Robust my friends." - icon_state = "goldenplaque" - -/obj/structure/sign/goldenplaque/captain - name = "The Most Robust Captain Award for Robustness" - -/obj/structure/sign/kiddieplaque - name = "AI developers plaque" - desc = "Next to the extremely long list of names and job titles, there is a drawing of a little child. The child appears to be retarded. Beneath the image, someone has scratched the word \"PACKETS\"." - icon_state = "kiddieplaque" - -/obj/structure/sign/kiddieplaque/badger - name = "Remembrance Plaque" - desc = "A plaque commemorating the fallen, may they rest in peace, forever asleep amongst the stars. Someone has drawn a picture of a crying badger at the bottom." - -/obj/structure/sign/kiddieplaque/library - name = "Library Rules Sign" - desc = "A long list of rules to be followed when in the library, extolling the virtues of being quiet at all times and threatening those who would dare eat hot food inside." - -/obj/structure/sign/kiddieplaque/perfect_man - name = "\improper 'Perfect Man' sign" - desc = "A guide to the exhibit, explaining how recent developments in mindshield implant and cloning technologies by Nanotrasen Corporation have led to the development and the effective immortality of the 'perfect man', the loyal Nanotrasen Employee." - -/obj/structure/sign/kiddieplaque/perfect_drone - name = "\improper 'Perfect Drone' sign" - desc = "A guide to the drone shell dispenser, detailing the constructive and destructive applications of modern repair drones, as well as the development of the incorruptible cyborg servants of tomorrow, available today." - -/obj/structure/sign/atmosplaque - name = "\improper FEA Atmospherics Division plaque" - desc = "This plaque commemorates the fall of the Atmos FEA division. For all the charred, dizzy, and brittle men who have died in its hands." - icon_state = "atmosplaque" - -/obj/structure/sign/atmosplaque/thunderdome - name = "Thunderdome Plaque" - desc = "This plaque commemorates those who have fallen in glorious combat. For all the charred, dizzy, and beaten men who have died in its hands." - -/obj/structure/sign/nanotrasen - name = "\improper Nanotrasen Logo" - desc = "A sign with the Nanotrasen Logo on it. Glory to Nanotrasen!" - icon_state = "nanotrasen" - -/obj/structure/sign/science //These 3 have multiple types, just var-edit the icon_state to whatever one you want on the map - name = "\improper SCIENCE" - desc = "A sign labelling an area where research and science is performed." - icon_state = "science1" - -/obj/structure/sign/chemistry - name = "\improper CHEMISTRY" - desc = "A sign labelling an area containing chemical equipment." - icon_state = "chemistry1" - -/obj/structure/sign/botany - name = "\improper HYDROPONICS" - desc = "A sign labelling an area as a place where plants are grown." - icon_state = "hydro1" - -/obj/structure/sign/xenobio - name = "\improper XENOBIOLOGY" - desc = "A sign labelling an area as a place where xenobiological entities are researched." - icon_state = "xenobio" - -/obj/structure/sign/evac - name = "\improper EVACUATION" - desc = "A sign labelling an area where evacuation procedures take place." - icon_state = "evac" - -/obj/structure/sign/custodian - name = "\improper CUSTODIAN" - desc = "A sign labelling an area where the custodian works." - icon_state = "custodian" - -/obj/structure/sign/engineering - name = "\improper ENGINEERING" - desc = "A sign labelling an area where engineers work." - icon_state = "engine" - -/obj/structure/sign/cargo - name = "\improper CARGO" - desc = "A sign labelling an area where cargo ships dock." - icon_state = "cargo" - -/obj/structure/sign/security - name = "\improper SECURITY" - desc = "A sign labelling an area where the law is law." - icon_state = "security" - -/obj/structure/sign/holy - name = "\improper HOLY" - desc = "A sign labelling a religious area." - icon_state = "holy" - -/obj/structure/sign/restroom - name = "\improper RESTROOM" - desc = "A sign labelling a restroom." - icon_state = "restroom" - -/obj/structure/sign/xeno_warning_mining - name = "DANGEROUS ALIEN LIFE" - desc = "A sign that warns would-be travellers of hostile alien life in the vicinity." - icon = 'icons/obj/mining.dmi' - icon_state = "xeno_warning" - -/obj/structure/sign/enginesafety - name = "\improper ENGINEERING SAFETY" - desc = "A sign detailing the various safety protocols when working on-site to ensure a safe shift." - icon_state = "safety" - -/obj/structure/sign/directions/science - name = "science department" - desc = "A direction sign, pointing out which way the Science department is." - icon_state = "direction_sci" - -/obj/structure/sign/directions/engineering - name = "engineering department" - desc = "A direction sign, pointing out which way the Engineering department is." - icon_state = "direction_eng" - -/obj/structure/sign/directions/security - name = "security department" - desc = "A direction sign, pointing out which way the Security department is." - icon_state = "direction_sec" - -/obj/structure/sign/directions/medical - name = "medical bay" - desc = "A direction sign, pointing out which way the Medical Bay is." - icon_state = "direction_med" - -/obj/structure/sign/directions/evac - name = "escape arm" - desc = "A direction sign, pointing out which way the escape shuttle dock is." - icon_state = "direction_evac" - -/obj/structure/sign/directions/supply - name = "cargo bay" - desc = "A direction sign, pointing out which way the Cargo Bay is." - icon_state = "direction_supply" - -/obj/structure/sign/directions/command - name = "command department" - desc = "A direction sign, pointing out which way the Command department is." - icon_state = "direction_bridge" - -/obj/structure/sign/logo - name = "nanotrasen logo" - desc = "The Nanotrasen corporate logo." - icon_state = "nanotrasen_sign1" diff --git a/code/game/objects/structures/signs/_signs.dm b/code/game/objects/structures/signs/_signs.dm new file mode 100644 index 0000000000..382858dd53 --- /dev/null +++ b/code/game/objects/structures/signs/_signs.dm @@ -0,0 +1,123 @@ +/obj/structure/sign + icon = 'icons/obj/decals.dmi' + anchored = TRUE + opacity = 0 + density = FALSE + layer = SIGN_LAYER + max_integrity = 100 + armor = list(melee = 50, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50) + var/buildable_sign = 1 //unwrenchable and modifiable + +/obj/structure/sign/ComponentInitialize() + . = ..() + AddComponent(/datum/component/rad_insulation, RAD_NO_INSULATION) // Since this is on a wall if it becomes irradiated it will smuggle the radiation past the wall + +/obj/structure/sign/basic + name = "blank sign" + desc = "How can signs be real if our eyes aren't real?" + icon_state = "backing" + +/obj/structure/sign/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) + switch(damage_type) + if(BRUTE) + if(damage_amount) + playsound(src.loc, 'sound/weapons/slash.ogg', 80, 1) + else + playsound(loc, 'sound/weapons/tap.ogg', 50, 1) + if(BURN) + playsound(loc, 'sound/items/welder.ogg', 80, 1) + +/obj/structure/sign/attackby(obj/item/O, mob/user, params) + if(istype(O, /obj/item/wrench) && buildable_sign) + user.visible_message("[user] starts removing [src]...", \ + "You start unfastening [src].") + playsound(src, O.usesound, 50, 1) + if(!do_after(user, 30*O.toolspeed, target = src)) + return + playsound(src, 'sound/items/deconstruct.ogg', 50, 1) + user.visible_message("[user] unfastens [src].", \ + "You unfasten [src].") + var/obj/item/sign_backing/SB = new (get_turf(user)) + SB.icon_state = icon_state + SB.sign_path = type + qdel(src) + else if(istype(O, /obj/item/pen) && buildable_sign) + var/list/sign_types = list("Secure Area", "Biohazard", "High Voltage", "Radiation", "Hard Vacuum Ahead", "Disposal: Leads To Space", "Danger: Fire", "No Smoking", "Medbay", "Science", "Chemistry", \ + "Hydroponics", "Xenobiology") + var/obj/structure/sign/sign_type + switch(input(user, "Select a sign type.", "Sign Customization") as null|anything in sign_types) + if("Blank") + sign_type = /obj/structure/sign/basic + if("Secure Area") + sign_type = /obj/structure/sign/warning/securearea + if("Biohazard") + sign_type = /obj/structure/sign/warning/biohazard + if("High Voltage") + sign_type = /obj/structure/sign/warning/electricshock + if("Radiation") + sign_type = /obj/structure/sign/warning/radiation + if("Hard Vacuum Ahead") + sign_type = /obj/structure/sign/warning/vacuum + if("Disposal: Leads To Space") + sign_type = /obj/structure/sign/warning/deathsposal + if("Danger: Fire") + sign_type = /obj/structure/sign/warning/fire + if("No Smoking") + sign_type = /obj/structure/sign/warning/nosmoking/circle + if("Medbay") + sign_type = /obj/structure/sign/departments/medbay/alt + if("Science") + sign_type = /obj/structure/sign/departments/science + if("Chemistry") + sign_type = /obj/structure/sign/departments/chemistry + if("Hydroponics") + sign_type = /obj/structure/sign/departments/botany + if("Xenobiology") + sign_type = /obj/structure/sign/departments/xenobio + + //Make sure user is adjacent still + if(!Adjacent(user)) + return + + if(!sign_type) + return + + //It's import to clone the pixel layout information + //Otherwise signs revert to being on the turf and + //move jarringly + var/obj/structure/sign/newsign = new sign_type(get_turf(src)) + newsign.pixel_x = pixel_x + newsign.pixel_y = pixel_y + qdel(src) + else + return ..() + +/obj/item/sign_backing + name = "sign backing" + desc = "A sign with adhesive backing." + icon = 'icons/obj/decals.dmi' + icon_state = "backing" + w_class = WEIGHT_CLASS_NORMAL + resistance_flags = FLAMMABLE + var/sign_path = /obj/structure/sign/basic //the type of sign that will be created when placed on a turf + +/obj/item/sign_backing/afterattack(atom/target, mob/user, proximity) + if(isturf(target) && proximity) + var/turf/T = target + user.visible_message("[user] fastens [src] to [T].", \ + "You attach the sign to [T].") + playsound(T, 'sound/items/deconstruct.ogg', 50, 1) + new sign_path(T) + qdel(src) + else + return ..() + +/obj/structure/sign/nanotrasen + name = "\improper Nanotrasen Logo" + desc = "A sign with the Nanotrasen Logo on it. Glory to Nanotrasen!" + icon_state = "nanotrasen" + +/obj/structure/sign/logo + name = "nanotrasen logo" + desc = "The Nanotrasen corporate logo." + icon_state = "nanotrasen_sign1" diff --git a/code/game/objects/structures/signs/signs_departments.dm b/code/game/objects/structures/signs/signs_departments.dm new file mode 100644 index 0000000000..12932bbab6 --- /dev/null +++ b/code/game/objects/structures/signs/signs_departments.dm @@ -0,0 +1,69 @@ +//departmental signs + +/obj/structure/sign/departments/examroom + name = "\improper EXAM ROOM" + desc = "A guidance sign which reads 'EXAM ROOM'." + icon_state = "examroom" + +/obj/structure/sign/departments/science //These 3 have multiple types, just var-edit the icon_state to whatever one you want on the map + name = "\improper SCIENCE" + desc = "A sign labelling an area where research and science is performed." + icon_state = "science1" + +/obj/structure/sign/departments/chemistry + name = "\improper CHEMISTRY" + desc = "A sign labelling an area containing chemical equipment." + icon_state = "chemistry1" + +/obj/structure/sign/departments/botany + name = "\improper HYDROPONICS" + desc = "A sign labelling an area as a place where plants are grown." + icon_state = "hydro1" + +/obj/structure/sign/departments/xenobio + name = "\improper XENOBIOLOGY" + desc = "A sign labelling an area as a place where xenobiological entities are researched." + icon_state = "xenobio" + +/obj/structure/sign/departments/evac + name = "\improper EVACUATION" + desc = "A sign labelling an area where evacuation procedures take place." + icon_state = "evac" + +/obj/structure/sign/departments/custodian + name = "\improper CUSTODIAN" + desc = "A sign labelling an area where the custodian works." + icon_state = "custodian" + +/obj/structure/sign/departments/engineering + name = "\improper ENGINEERING" + desc = "A sign labelling an area where engineers work." + icon_state = "engine" + +/obj/structure/sign/departments/cargo + name = "\improper CARGO" + desc = "A sign labelling an area where cargo ships dock." + icon_state = "cargo" + +/obj/structure/sign/departments/security + name = "\improper SECURITY" + desc = "A sign labelling an area where the law is law." + icon_state = "security" + +/obj/structure/sign/departments/holy + name = "\improper HOLY" + desc = "A sign labelling a religious area." + icon_state = "holy" + +/obj/structure/sign/departments/restroom + name = "\improper RESTROOM" + desc = "A sign labelling a restroom." + icon_state = "restroom" + +/obj/structure/sign/departments/medbay + name = "\improper MEDBAY" + desc = "The Intergalactic symbol of Medical institutions. You'll probably get help here." + icon_state = "bluecross" + +/obj/structure/sign/departments/medbay/alt + icon_state = "bluecross2" diff --git a/code/game/objects/structures/signs/signs_maps.dm b/code/game/objects/structures/signs/signs_maps.dm new file mode 100644 index 0000000000..8468516502 --- /dev/null +++ b/code/game/objects/structures/signs/signs_maps.dm @@ -0,0 +1,47 @@ +//map and direction signs + +/obj/structure/sign/map + name = "station map" + desc = "A framed picture of the station." + max_integrity = 500 + +/obj/structure/sign/map/left + icon_state = "map-left" + +/obj/structure/sign/map/right + icon_state = "map-right" + +/obj/structure/sign/directions/science + name = "science department" + desc = "A direction sign, pointing out which way the Science department is." + icon_state = "direction_sci" + +/obj/structure/sign/directions/engineering + name = "engineering department" + desc = "A direction sign, pointing out which way the Engineering department is." + icon_state = "direction_eng" + +/obj/structure/sign/directions/security + name = "security department" + desc = "A direction sign, pointing out which way the Security department is." + icon_state = "direction_sec" + +/obj/structure/sign/directions/medical + name = "medical bay" + desc = "A direction sign, pointing out which way the Medical Bay is." + icon_state = "direction_med" + +/obj/structure/sign/directions/evac + name = "escape arm" + desc = "A direction sign, pointing out which way the escape shuttle dock is." + icon_state = "direction_evac" + +/obj/structure/sign/directions/supply + name = "cargo bay" + desc = "A direction sign, pointing out which way the Cargo Bay is." + icon_state = "direction_supply" + +/obj/structure/sign/directions/command + name = "command department" + desc = "A direction sign, pointing out which way the Command department is." + icon_state = "direction_bridge" diff --git a/code/game/objects/structures/signs/signs_plaques.dm b/code/game/objects/structures/signs/signs_plaques.dm new file mode 100644 index 0000000000..b397bbf531 --- /dev/null +++ b/code/game/objects/structures/signs/signs_plaques.dm @@ -0,0 +1,43 @@ +//plaques and memorials + +/obj/structure/sign/plaques + name = "plaque" + desc = "A plaque commemorating an event." + icon_state = "atmosplaque" + +/obj/structure/sign/plaques/atmos + name = "\improper FEA Atmospherics Division plaque" + desc = "This plaque commemorates the fall of the Atmos FEA division. For all the charred, dizzy, and brittle men who have died in its hands." + +/obj/structure/sign/plaques/thunderdome + name = "Thunderdome Plaque" + desc = "This plaque commemorates those who have fallen in glorious combat. For all the charred, dizzy, and beaten men who have died in its hands." + +/obj/structure/sign/plaques/golden + name = "The Most Robust Men Award for Robustness" + desc = "To be Robust is not an action or a way of life, but a mental state. Only those with the force of Will strong enough to act during a crisis, saving friend from foe, are truly Robust. Stay Robust my friends." + icon_state = "goldenplaque" + +/obj/structure/sign/plaques/golden/captain + name = "The Most Robust Captain Award for Robustness" + +/obj/structure/sign/plaques/kiddie + name = "\improper AI developers plaque" + desc = "Next to the extremely long list of names and job titles, there is a drawing of a little child. The child appears to be retarded. Beneath the image, someone has scratched the word \"PACKETS\"." + icon_state = "kiddieplaque" + +/obj/structure/sign/plaques/kiddie/badger + name = "\improper Remembrance Plaque" + desc = "A plaque commemorating the fallen, may they rest in peace, forever asleep amongst the stars. Someone has drawn a picture of a crying badger at the bottom." + +/obj/structure/sign/plaques/kiddie/library + name = "Library Rules Sign" + desc = "A long list of rules to be followed when in the library, extolling the virtues of being quiet at all times and threatening those who would dare eat hot food inside." + +/obj/structure/sign/plaques/kiddie/perfect_man + name = "\improper 'Perfect Man' sign" + desc = "A guide to the exhibit, explaining how recent developments in mindshield implant and cloning technologies by Nanotrasen Corporation have led to the development and the effective immortality of the 'perfect man', the loyal Nanotrasen Employee." + +/obj/structure/sign/plaques/kiddie/perfect_drone + name = "\improper 'Perfect Drone' sign" + desc = "A guide to the drone shell dispenser, detailing the constructive and destructive applications of modern repair drones, as well as the development of the incorruptible cyborg servants of tomorrow, available today." diff --git a/code/game/objects/structures/signs/signs_warning.dm b/code/game/objects/structures/signs/signs_warning.dm new file mode 100644 index 0000000000..f735ed7bc9 --- /dev/null +++ b/code/game/objects/structures/signs/signs_warning.dm @@ -0,0 +1,75 @@ +/obj/structure/sign/warning + name = "\improper WARNING" + desc = "A warning sign." + icon_state = "securearea" + +/obj/structure/sign/warning/securearea + name = "\improper SECURE AREA" + desc = "A warning sign which reads 'SECURE AREA'." + +/obj/structure/sign/warning/docking + name = "\improper KEEP CLEAR: DOCKING AREA" + desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'." + +/obj/structure/sign/warning/biohazard + name = "\improper BIOHAZARD" + desc = "A warning sign which reads 'BIOHAZARD'." + icon_state = "bio" + +/obj/structure/sign/warning/electricshock + name = "\improper HIGH VOLTAGE" + desc = "A warning sign which reads 'HIGH VOLTAGE'." + icon_state = "shock" + +/obj/structure/sign/warning/vacuum + name = "\improper HARD VACUUM AHEAD" + desc = "A warning sign which reads 'HARD VACUUM AHEAD'." + icon_state = "space" + +/obj/structure/sign/warning/vacuum/external + name = "\improper EXTERNAL AIRLOCK" + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'." + layer = MOB_LAYER + +/obj/structure/sign/warning/deathsposal + name = "\improper DISPOSAL: LEADS TO SPACE" + desc = "A warning sign which reads 'DISPOSAL: LEADS TO SPACE'." + icon_state = "deathsposal" + +/obj/structure/sign/warning/pods + name = "\improper ESCAPE PODS" + desc = "A warning sign which reads 'ESCAPE PODS'." + icon_state = "pods" + +/obj/structure/sign/warning/fire + name = "\improper DANGER: FIRE" + desc = "A warning sign which reads 'DANGER: FIRE'." + icon_state = "fire" + +/obj/structure/sign/warning/nosmoking + name = "\improper NO SMOKING" + desc = "A warning sign which reads 'NO SMOKING'." + icon_state = "nosmoking2" + +/obj/structure/sign/warning/nosmoking/circle + icon_state = "nosmoking" + +/obj/structure/sign/warning/radiation + name = "\improper HAZARDOUS RADIATION" + desc = "A warning sign alerting the user of potential radiation hazards." + icon_state = "radiation" + +/obj/structure/sign/warning/radiation/rad_area + name = "\improper RADIOACTIVE AREA" + desc = "A warning sign which reads 'RADIOACTIVE AREA'." + +/obj/structure/sign/warning/xeno_mining + name = "\improper DANGEROUS ALIEN LIFE" + desc = "A sign that warns would-be travellers of hostile alien life in the vicinity." + icon = 'icons/obj/mining.dmi' + icon_state = "xeno_warning" + +/obj/structure/sign/warning/enginesafety + name = "\improper ENGINEERING SAFETY" + desc = "A sign detailing the various safety protocols when working on-site to ensure a safe shift." + icon_state = "safety" diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index ec9c5b1209..e3c88b937b 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -95,7 +95,9 @@ pushed_mob.visible_message("[user] pushes [pushed_mob] onto [src].", \ "[user] pushes [pushed_mob] onto [src].") add_logs(user, pushed_mob, "pushed") - + var/mob/living/carbon/human/H = pushed_mob + if(istype(H) && H.ckey == "kevinz000") + H.forcesay("*moan") /obj/structure/table/attackby(obj/item/I, mob/user, params) if(!(flags_1 & NODECONSTRUCT_1)) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 3326a2a0a8..add789c0b8 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -27,6 +27,7 @@ var/breaksound = "shatter" var/hitsound = 'sound/effects/Glasshit.ogg' var/rad_insulation = RAD_VERY_LIGHT_INSULATION + var/spawn_cleanable_shards = TRUE /obj/structure/window/examine(mob/user) ..() @@ -283,6 +284,8 @@ if(!disassembled) playsound(src, breaksound, 70, 1) if(!(flags_1 & NODECONSTRUCT_1)) + if(spawn_cleanable_shards) + new /obj/effect/decal/cleanable/glass(get_turf(src)) for(var/i in debris) var/obj/item/I = i I.forceMove(drop_location()) @@ -417,6 +420,7 @@ explosion_block = 1 glass_type = /obj/item/stack/sheet/plasmaglass rad_insulation = RAD_NO_INSULATION + spawn_cleanable_shards = FALSE /obj/structure/window/plasma/spawner/east dir = EAST @@ -610,7 +614,7 @@ new /obj/effect/temp_visual/ratvar/window(get_turf(src)) amount_of_gears = 4 for(var/i in 1 to amount_of_gears) - debris += new/obj/item/clockwork/alloy_shards/medium/gear_bit() + debris += new /obj/item/clockwork/alloy_shards/medium/gear_bit() change_construction_value(fulltile ? 2 : 1) /obj/structure/window/reinforced/clockwork/setDir(direct) @@ -672,6 +676,7 @@ decon_speed = 10 CanAtmosPass = ATMOS_PASS_YES resistance_flags = FLAMMABLE + spawn_cleanable_shards = FALSE armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) breaksound = 'sound/items/poster_ripped.ogg' hitsound = 'sound/weapons/slashmiss.ogg' diff --git a/code/game/objects/weapons.dm b/code/game/objects/weapons.dm deleted file mode 100644 index e4d0a73b5b..0000000000 --- a/code/game/objects/weapons.dm +++ /dev/null @@ -1,11 +0,0 @@ -/obj/item/weapon - name = "weapon" - icon = 'icons/obj/items_and_weapons.dmi' - -/obj/item/Initialize() - . = ..() - if(!hitsound) - if(damtype == "fire") - hitsound = 'sound/items/welder.ogg' - if(damtype == "brute") - hitsound = "swing_hit" diff --git a/code/game/turfs/simulated/floor/plasteel_floor.dm b/code/game/turfs/simulated/floor/plasteel_floor.dm index 6197e67848..06a257686b 100644 --- a/code/game/turfs/simulated/floor/plasteel_floor.dm +++ b/code/game/turfs/simulated/floor/plasteel_floor.dm @@ -340,6 +340,8 @@ icon_state = "vault" /turf/open/floor/plasteel/vault/corner icon_state = "vaultcorner" +/turf/open/floor/plasteel/vault/airless + initial_gas_mix = "TEMP=2.7" /turf/open/floor/plasteel/vault/telecomms initial_gas_mix = "n2=100;TEMP=80" /turf/open/floor/plasteel/vault/telecomms/mainframe diff --git a/code/game/turfs/simulated/floor/reinf_floor.dm b/code/game/turfs/simulated/floor/reinf_floor.dm index f53e62dba7..60382b9052 100644 --- a/code/game/turfs/simulated/floor/reinf_floor.dm +++ b/code/game/turfs/simulated/floor/reinf_floor.dm @@ -109,14 +109,17 @@ /turf/open/floor/engine/cult name = "engraved floor" + desc = "The air hangs heavy over this sinister flooring." icon_state = "plating" - var/obj/effect/clockwork/overlay/floor/bloodcult/realappearence + CanAtmosPass = ATMOS_PASS_NO + var/obj/effect/clockwork/overlay/floor/bloodcult/realappearance + /turf/open/floor/engine/cult/Initialize() . = ..() new /obj/effect/temp_visual/cult/turf/floor(src) - realappearence = new /obj/effect/clockwork/overlay/floor/bloodcult(src) - realappearence.linked = src + realappearance = new /obj/effect/clockwork/overlay/floor/bloodcult(src) + realappearance.linked = src /turf/open/floor/engine/cult/Destroy() be_removed() @@ -128,8 +131,8 @@ return ..() /turf/open/floor/engine/cult/proc/be_removed() - qdel(realappearence) - realappearence = null + qdel(realappearance) + realappearance = null /turf/open/floor/engine/cult/ratvar_act() . = ..() diff --git a/code/game/turfs/simulated/lava.dm b/code/game/turfs/simulated/lava.dm index 0e3930aaf2..a40203beba 100644 --- a/code/game/turfs/simulated/lava.dm +++ b/code/game/turfs/simulated/lava.dm @@ -100,8 +100,8 @@ O.resistance_flags |= FLAMMABLE //Even fireproof things burn up in lava if(O.resistance_flags & FIRE_PROOF) O.resistance_flags &= ~FIRE_PROOF - if(O.armor["fire"] > 50) //obj with 100% fire armor still get slowly burned away. - O.armor["fire"] = 50 + if(O.armor.fire > 50) //obj with 100% fire armor still get slowly burned away. + O.armor = O.armor.setRating(fire = 50) O.fire_act(10000, 1000) else if (isliving(thing)) diff --git a/code/game/turfs/simulated/river.dm b/code/game/turfs/simulated/river.dm index 79846791d3..73640f99e0 100644 --- a/code/game/turfs/simulated/river.dm +++ b/code/game/turfs/simulated/river.dm @@ -7,11 +7,15 @@ /proc/spawn_rivers(target_z, nodes = 4, turf_type = /turf/open/lava/smooth/lava_land_surface, whitelist_area = /area/lavaland/surface/outdoors, min_x = RANDOM_LOWER_X, min_y = RANDOM_LOWER_Y, max_x = RANDOM_UPPER_X, max_y = RANDOM_UPPER_Y) var/list/river_nodes = list() var/num_spawned = 0 - while(num_spawned < nodes) - var/turf/F = locate(rand(min_x, max_x), rand(min_y, max_y), target_z) - - river_nodes += new /obj/effect/landmark/river_waypoint(F) - num_spawned++ + 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) + var/turf/T = pick(possible_locs) + var/area/A = get_area(T) + if(!istype(A, whitelist_area) || (T.flags_1 & NO_LAVA_GEN_1)) + possible_locs -= T + else + river_nodes += new /obj/effect/landmark/river_waypoint(T) + num_spawned++ //make some randomly pathing rivers for(var/A in river_nodes) @@ -43,7 +47,7 @@ cur_turf = get_step(cur_turf, cur_dir) var/area/new_area = get_area(cur_turf) - if(!istype(new_area, whitelist_area)) //Rivers will skip ruins + if(!istype(new_area, whitelist_area) || (cur_turf.flags_1 & NO_LAVA_GEN_1)) //Rivers will skip ruins detouring = 0 cur_dir = get_dir(cur_turf, target_turf) cur_turf = get_step(cur_turf, cur_dir) @@ -71,7 +75,7 @@ for(var/F in RANGE_TURFS(1, src) - src) var/turf/T = F var/area/new_area = get_area(T) - if(!T || (T.density && !ismineralturf(T)) || istype(T, /turf/open/indestructible) || (whitelisted_area && !istype(new_area, whitelisted_area))) + if(!T || (T.density && !ismineralturf(T)) || istype(T, /turf/open/indestructible) || (whitelisted_area && !istype(new_area, whitelisted_area)) || (T.flags_1 & NO_LAVA_GEN_1) ) continue if(!logged_turf_type && ismineralturf(T)) diff --git a/code/game/turfs/simulated/wall/mineral_walls.dm b/code/game/turfs/simulated/wall/mineral_walls.dm index c99da926b7..dc474d449d 100644 --- a/code/game/turfs/simulated/wall/mineral_walls.dm +++ b/code/game/turfs/simulated/wall/mineral_walls.dm @@ -250,7 +250,7 @@ /turf/closed/wall/mineral/plastitanium/overspace icon_state = "map-overspace" fixed_underlay = list("space"=1) - + /turf/closed/wall/mineral/plastitanium/explosive/ex_act(severity) var/datum/explosion/acted_explosion = null for(var/datum/explosion/E in GLOB.explosions) diff --git a/code/game/turfs/simulated/wall/misc_walls.dm b/code/game/turfs/simulated/wall/misc_walls.dm index a06f7c9458..73ec2515f4 100644 --- a/code/game/turfs/simulated/wall/misc_walls.dm +++ b/code/game/turfs/simulated/wall/misc_walls.dm @@ -57,23 +57,24 @@ girder_type = /obj/structure/destructible/clockwork/wall_gear baseturfs = /turf/open/floor/clockwork/reebe var/heated - var/obj/effect/clockwork/overlay/wall/realappearence + var/obj/effect/clockwork/overlay/wall/realappearance /turf/closed/wall/clockwork/Initialize() . = ..() new /obj/effect/temp_visual/ratvar/wall(src) new /obj/effect/temp_visual/ratvar/beam(src) - realappearence = new /obj/effect/clockwork/overlay/wall(src) - realappearence.linked = src + realappearance = new /obj/effect/clockwork/overlay/wall(src) + realappearance.linked = src /turf/closed/wall/clockwork/Destroy() - if(realappearence) - qdel(realappearence) - realappearence = null + if(realappearance) + qdel(realappearance) + realappearance = null if(heated) var/mob/camera/eminence/E = get_eminence() if(E) E.superheated_walls-- + return ..() /turf/closed/wall/clockwork/ReplaceWithLattice() @@ -136,14 +137,14 @@ heated = TRUE hardness = -100 //Lower numbers are tougher, so this makes the wall essentially impervious to smashing slicing_duration = 150 - animate(realappearence, color = "#FFC3C3", time = 5) + animate(realappearance, color = "#FFC3C3", time = 5) else name = initial(name) visible_message("[src] cools down.") heated = FALSE hardness = initial(hardness) slicing_duration = initial(slicing_duration) - animate(realappearence, color = initial(realappearence.color), time = 25) + animate(realappearance, color = initial(realappearance.color), time = 25) /turf/closed/wall/vault diff --git a/code/game/world.dm b/code/game/world.dm index 8eca2affc2..dde599db78 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -40,13 +40,27 @@ GLOBAL_PROTECT(security_mode) GLOB.restart_counter = text2num(trim(file2text(RESTART_COUNTER_PATH))) fdel(RESTART_COUNTER_PATH) - if("no-init" in params) + if(NO_INIT_PARAMETER in params) return cit_initialize() Master.Initialize(10, FALSE) + if(TEST_RUN_PARAMETER in params) + HandleTestRun() + +/world/proc/HandleTestRun() + //trigger things to run the whole process + Master.sleep_offline_after_initializations = FALSE + SSticker.start_immediately = TRUE + CONFIG_SET(number/round_end_countdown, 0) +#ifdef UNIT_TESTS + SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, /proc/RunUnitTests)) +#else + SSticker.force_ending = TRUE +#endif + /world/proc/SetupExternalRSC() #if (PRELOAD_RSC == 0) GLOB.external_rsc_urls = world.file2list("[global.config.directory]/external_rsc_urls.txt","\n") @@ -59,11 +73,15 @@ GLOBAL_PROTECT(security_mode) #endif /world/proc/SetupLogs() - GLOB.log_directory = "data/logs/[time2text(world.realtime, "YYYY/MM/DD")]/round-" - if(GLOB.round_id) - GLOB.log_directory += "[GLOB.round_id]" + var/override_dir = params[OVERRIDE_LOG_DIRECTORY_PARAMETER] + if(!override_dir) + GLOB.log_directory = "data/logs/[time2text(world.realtime, "YYYY/MM/DD")]/round-" + if(GLOB.round_id) + GLOB.log_directory += "[GLOB.round_id]" + else + GLOB.log_directory += "[replacetext(time_stamp(), ":", ".")]" else - GLOB.log_directory += "[replacetext(time_stamp(), ":", ".")]" + GLOB.log_directory = "data/logs/[override_dir]" GLOB.world_game_log = file("[GLOB.log_directory]/game.log") GLOB.world_attack_log = file("[GLOB.log_directory]/attack.log") GLOB.world_runtime_log = file("[GLOB.log_directory]/runtime.log") @@ -72,6 +90,10 @@ GLOBAL_PROTECT(security_mode) GLOB.world_pda_log = file("[GLOB.log_directory]/pda.log") GLOB.sql_error_log = file("[GLOB.log_directory]/sql.log") GLOB.manifest_log = file("[GLOB.log_directory]/manifest.log") +#ifdef UNIT_TESTS + GLOB.test_log = file("[GLOB.log_directory]/tests.log") + WRITE_FILE(GLOB.test_log, "\n\nStarting up round ID [GLOB.round_id]. [time_stamp()]\n---------------------") +#endif WRITE_FILE(GLOB.world_game_log, "\n\nStarting up round ID [GLOB.round_id]. [time_stamp()]\n---------------------") WRITE_FILE(GLOB.world_attack_log, "\n\nStarting up round ID [GLOB.round_id]. [time_stamp()]\n---------------------") WRITE_FILE(GLOB.world_runtime_log, "\n\nStarting up round ID [GLOB.round_id]. [time_stamp()]\n---------------------") @@ -135,6 +157,27 @@ GLOBAL_PROTECT(security_mode) for(var/client/C in GLOB.clients) C.AnnouncePR(final_composed) +/world/proc/FinishTestRun() + set waitfor = FALSE + var/list/fail_reasons + if(GLOB) + if(GLOB.total_runtimes != 0) + fail_reasons = list("Total runtimes: [GLOB.total_runtimes]") +#ifdef UNIT_TESTS + if(GLOB.failed_any_test) + LAZYADD(fail_reasons, "Unit Tests failed!") +#endif + if(!GLOB.log_directory) + LAZYADD(fail_reasons, "Missing GLOB.log_directory!") + else + fail_reasons = list("Missing GLOB!") + if(!fail_reasons) + text2file("Success!", "[GLOB.log_directory]/clean_run.lk") + else + log_world("Test run failed!\n[fail_reasons.Join("\n")]") + sleep(0) //yes, 0, this'll let Reboot finish and prevent byond memes + qdel(src) //shut it down + /world/Reboot(reason = 0, fast_track = FALSE) SERVER_TOOLS_ON_REBOOT if (reason || fast_track) //special reboot, do none of the normal stuff @@ -146,6 +189,10 @@ GLOBAL_PROTECT(security_mode) to_chat(world, "Rebooting world...") Master.Shutdown() //run SS shutdowns + if(TEST_RUN_PARAMETER in params) + FinishTestRun() + return + if(SERVER_TOOLS_PRESENT) var/do_hard_reboot // check the hard reboot counter @@ -225,3 +272,8 @@ GLOBAL_PROTECT(security_mode) hub_password = "kMZy3U5jJHSiBQjr" else hub_password = "SORRYNOPASSWORD" + +/world/proc/incrementMaxZ() + maxz++ + SSmobs.MaxZChanged() + SSidlenpcpool.MaxZChanged() diff --git a/code/modules/admin/DB_ban/functions.dm b/code/modules/admin/DB_ban/functions.dm index 752131369b..90eac62b16 100644 --- a/code/modules/admin/DB_ban/functions.dm +++ b/code/modules/admin/DB_ban/functions.dm @@ -383,7 +383,7 @@ output += "" for(var/j in GLOB.nonhuman_positions) output += "" - for(var/j in list("traitor","changeling","operative","revolutionary", "gangster","cultist","wizard")) + for(var/j in list(ROLE_TRAITOR, ROLE_CHANGELING, ROLE_OPERATIVE, ROLE_REV, ROLE_CULTIST, ROLE_WIZARD)) output += "" output += "" output += "Reason:

" diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 7f30ef9fe3..b1f0b1e09c 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -44,7 +44,10 @@ body += "

Show related accounts by: " body += "\[ CID | " body += "IP \]" - + body += "

" + body += "Make mentor | " + body += "Remove mentor" + body += "
" body += "

\[ " body += "VV - " @@ -228,13 +231,13 @@ dat+="
Channel Name: [src.admincaster_feed_channel.channel_name]
" dat+="Channel Author: [src.admin_signature]
" dat+="Will Accept Public Feeds: [(src.admincaster_feed_channel.locked) ? ("NO") : ("YES")]

" - dat+="
Submit

Cancel
" + dat+="
Submit

Cancel
" if(3) dat+="Creating new Feed Message..." dat+="
Receiving Channel: [src.admincaster_feed_channel.channel_name]
" //MARK dat+="Message Author: [src.admin_signature]
" dat+="Message Body: [src.admincaster_feed_message.returnBody(-1)]
" - dat+="
Submit

Cancel
" + dat+="
Submit

Cancel
" if(4) dat+="Feed story successfully submitted to [src.admincaster_feed_channel.channel_name].

" dat+="
Return
" @@ -315,7 +318,7 @@ else for(var/datum/newscaster/feed_message/MESSAGE in src.admincaster_feed_channel.messages) dat+="-[MESSAGE.returnBody(-1)]
\[Story by [MESSAGE.returnAuthor(-1)]\]
" - dat+="[(MESSAGE.bodyCensor) ? ("Undo story censorship") : ("Censor story")] - [(MESSAGE.authorCensor) ? ("Undo Author Censorship") : ("Censor message Author")]
" + dat+="[(MESSAGE.bodyCensor) ? ("Undo story censorship") : ("Censor story")] - [(MESSAGE.authorCensor) ? ("Undo Author Censorship") : ("Censor message Author")]
" dat+="[MESSAGE.comments.len] comment[MESSAGE.comments.len > 1 ? "s" : ""]: [MESSAGE.locked ? "Unlock" : "Lock"]
" for(var/datum/newscaster/feed_comment/comment in MESSAGE.comments) dat+="[comment.body] X
[comment.author] [comment.time_stamp]
" diff --git a/code/modules/admin/fun_balloon.dm b/code/modules/admin/fun_balloon.dm index e86aa6d645..6508953694 100644 --- a/code/modules/admin/fun_balloon.dm +++ b/code/modules/admin/fun_balloon.dm @@ -51,15 +51,15 @@ bodies += M var/question = "Would you like to be [group_name]?" - var/list/candidates = pollCandidatesForMobs(question, "pAI", null, FALSE, 100, bodies) - while(candidates.len && bodies.len) - var/mob/dead/observer/ghost = pick_n_take(candidates) + var/list/candidates = pollCandidatesForMobs(question, ROLE_PAI, null, FALSE, 100, bodies) + while(LAZYLEN(candidates) && LAZYLEN(bodies)) + var/client/C = pick_n_take(candidates) var/mob/living/body = pick_n_take(bodies) to_chat(body, "Your mob has been taken over by a ghost!") - message_admins("[key_name_admin(ghost)] has taken control of ([key_name_admin(body)])") + message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(body)])") body.ghostize(0) - body.key = ghost.key + body.key = C.key new /obj/effect/temp_visual/gravpush(get_turf(body)) /obj/effect/fun_balloon/sentience/emergency_shuttle diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index 6e15da69ef..670b22815d 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -236,7 +236,7 @@ if(islarva(M)) M_job = "Alien larva" else - M_job = "Alien" + M_job = ROLE_ALIEN else M_job = "Carbon-based" @@ -244,7 +244,7 @@ if(isAI(M)) M_job = "AI" else if(ispAI(M)) - M_job = "pAI" + M_job = ROLE_PAI else if(iscyborg(M)) M_job = "Cyborg" else diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm index 01e37fdb1f..a758d295e2 100644 --- a/code/modules/admin/secrets.dm +++ b/code/modules/admin/secrets.dm @@ -107,6 +107,8 @@ dat += "No-one has done anything this round!" usr << browse(dat, "window=admin_log") + if("mentor_log") + CitadelMentorLogSecret() if("list_job_debug") var/dat = "Job Debug info.
" for(var/line in SSjob.job_debug) diff --git a/code/modules/admin/sql_message_system.dm b/code/modules/admin/sql_message_system.dm index 38316c904f..83b3d48380 100644 --- a/code/modules/admin/sql_message_system.dm +++ b/code/modules/admin/sql_message_system.dm @@ -335,7 +335,7 @@ proc/get_message_output(type, target_ckey) if(!query_message_read.warn_execute()) return if("watchlist entry") - message_admins("Notice: [key_name_admin(target_ckey)] is on the watchlist and has just connected - Reason: [text]") + message_admins("Notice: [key_name_admin(target_ckey)] has been on the watchlist since [timestamp] and has just connected - Reason: [text]") send2irc_adminless_only("Watchlist", "[key_name(target_ckey)] is on the watchlist and has just connected - Reason: [text]") if("memo") output += "Memo by [admin_ckey] on [timestamp]" diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 08b3abe795..1e66e085a5 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -22,6 +22,8 @@ if(!CheckAdminHref(href, href_list)) return + citaTopic(href, href_list) // Citadel + if(href_list["ahelp"]) if(!check_rights(R_ADMIN, TRUE)) return @@ -781,7 +783,7 @@ dat += "Ghost Roles" //pAI - if(jobban_isbanned(M, "pAI")) + if(jobban_isbanned(M, ROLE_PAI)) dat += "pAI" else dat += "pAI" @@ -816,38 +818,38 @@ dat += "" //Antagonist (Orange) - var/isbanned_dept = jobban_isbanned(M, "Syndicate") + var/isbanned_dept = jobban_isbanned(M, ROLE_SYNDICATE) dat += "" dat += "" dat += "Conversion Antagonists" //Traitor - if(jobban_isbanned(M, "traitor") || isbanned_dept) + if(jobban_isbanned(M, ROLE_TRAITOR) || isbanned_dept) dat += "" else dat += "" //Changeling - if(jobban_isbanned(M, "changeling") || isbanned_dept) + if(jobban_isbanned(M, ROLE_CHANGELING) || isbanned_dept) dat += "" else dat += "" //Nuke Operative - if(jobban_isbanned(M, "operative") || isbanned_dept) + if(jobban_isbanned(M, ROLE_OPERATIVE) || isbanned_dept) dat += "" else dat += "" //Revolutionary - if(jobban_isbanned(M, "revolutionary") || isbanned_dept) + if(jobban_isbanned(M, ROLE_REV) || isbanned_dept) dat += "" else dat += "" //Cultist - if(jobban_isbanned(M, "cultist") || isbanned_dept) + if(jobban_isbanned(M, ROLE_CULTIST) || isbanned_dept) dat += "" else dat += "" @@ -855,19 +857,19 @@ dat += "" //So things dont get squished. //Servant of Ratvar - if(jobban_isbanned(M, "servant of Ratvar") || isbanned_dept) + if(jobban_isbanned(M, ROLE_SERVANT_OF_RATVAR) || isbanned_dept) dat += "" else dat += "" //Wizard - if(jobban_isbanned(M, "wizard") || isbanned_dept) + if(jobban_isbanned(M, ROLE_WIZARD) || isbanned_dept) dat += "" else dat += "" //Abductor - if(jobban_isbanned(M, "abductor") || isbanned_dept) + if(jobban_isbanned(M, ROLE_ABDUCTOR) || isbanned_dept) dat += "" else dat += "" @@ -879,10 +881,10 @@ dat += "" //Alien - if(jobban_isbanned(M, "alien candidate") || isbanned_dept) - dat += "" + if(jobban_isbanned(M, ROLE_ALIEN) || isbanned_dept) + dat += "" else - dat += "" + dat += "" dat += "
Antagonist Positions | " dat += "Team Antagonists
TraitorTraitorChangelingChangelingNuke OperativeNuke OperativeRevolutionaryRevolutionaryCultistCultist
ServantServantWizardWizardAbductorAbductorBorerAlienAlienAlienAlien
" usr << browse(dat, "window=jobban2;size=800x450") @@ -943,11 +945,11 @@ continue joblist += jobPos if("ghostroles") - joblist += list("pAI", "posibrain", "drone", "deathsquad", "lavaland") + joblist += list(ROLE_PAI, "posibrain", "drone", "deathsquad", "lavaland") if("teamantags") - joblist += list("operative", "revolutionary", "cultist", "servant of Ratvar", "abductor", "alien candidate") + joblist += list(ROLE_OPERATIVE, ROLE_REV, ROLE_CULTIST, ROLE_SERVANT_OF_RATVAR, ROLE_ABDUCTOR, ROLE_ALIEN) if("convertantags") - joblist += list("revolutionary", "cultist", "servant of Ratvar", "alien candidate") + joblist += list(ROLE_REV, ROLE_CULTIST, ROLE_SERVANT_OF_RATVAR, ROLE_ALIEN) else joblist += href_list["jobban3"] diff --git a/code/modules/admin/verbs/adminsay.dm b/code/modules/admin/verbs/adminsay.dm index a24d4165a4..f74fcbb017 100644 --- a/code/modules/admin/verbs/adminsay.dm +++ b/code/modules/admin/verbs/adminsay.dm @@ -20,3 +20,6 @@ SSblackbox.record_feedback("tally", "admin_verb", 1, "Asay") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! +/client/proc/get_admin_say() + var/msg = input(src, null, "asay \"text\"") as text + cmd_admin_say(msg) diff --git a/code/modules/admin/verbs/massmodvar.dm b/code/modules/admin/verbs/massmodvar.dm index db1150fb72..75050b5e62 100644 --- a/code/modules/admin/verbs/massmodvar.dm +++ b/code/modules/admin/verbs/massmodvar.dm @@ -53,7 +53,7 @@ if (prompt != "Continue") return - default = vv_get_class(var_value) + default = vv_get_class(variable, var_value) if(isnull(default)) to_chat(src, "Unable to determine variable type.") @@ -263,4 +263,3 @@ if (typecache[thing.type]) . += thing CHECK_TICK - diff --git a/code/modules/admin/verbs/modifyvariables.dm b/code/modules/admin/verbs/modifyvariables.dm index da448b8eca..4869319cfa 100644 --- a/code/modules/admin/verbs/modifyvariables.dm +++ b/code/modules/admin/verbs/modifyvariables.dm @@ -8,12 +8,15 @@ GLOBAL_LIST_INIT(VVpixelmovement, list("step_x", "step_y", "bound_height", "boun GLOBAL_PROTECT(VVpixelmovement) -/client/proc/vv_get_class(var/var_value) +/client/proc/vv_get_class(var/var_name, var/var_value) if(isnull(var_value)) . = VV_NULL else if (isnum(var_value)) - . = VV_NUM + if (var_name in GLOB.bitfields) + . = VV_BITFIELD + else + . = VV_NUM else if (istext(var_value)) if (findtext(var_value, "\n")) @@ -52,7 +55,7 @@ GLOBAL_PROTECT(VVpixelmovement) else . = VV_NULL -/client/proc/vv_get_value(class, default_class, current_value, list/restricted_classes, list/extra_classes, list/classes) +/client/proc/vv_get_value(class, default_class, current_value, list/restricted_classes, list/extra_classes, list/classes, var_name) . = list("class" = class, "value" = null) if (!class) if (!classes) @@ -109,6 +112,11 @@ GLOBAL_PROTECT(VVpixelmovement) .["class"] = null return + if (VV_BITFIELD) + .["value"] = input_bitfield(usr, "Editing bitfield: [var_name]", var_name, current_value) + if (.["value"] == null) + .["class"] = null + return if (VV_ATOM_TYPE) .["value"] = pick_closest_path(FALSE) @@ -436,7 +444,7 @@ GLOBAL_PROTECT(VVpixelmovement) else variable = L[index] - default = vv_get_class(variable) + default = vv_get_class(objectvar, variable) to_chat(src, "Variable appears to be [uppertext(default)].") @@ -548,6 +556,10 @@ GLOBAL_PROTECT(VVpixelmovement) if(variable in GLOB.VVicon_edit_lock) if(!check_rights(R_FUN|R_DEBUG)) return + if(istype(O, /datum/armor)) + var/prompt = alert(src, "Editing this var changes this value on potentially thousands of items that share the same combination of armor values. If you want to edit the armor of just one item, use the \"Modify armor values\" dropdown item", "DANGER", "ABORT ", "Continue", " ABORT") + if (prompt != "Continue") + return if(variable in GLOB.VVpixelmovement) if(!check_rights(R_DEBUG)) return @@ -556,7 +568,7 @@ GLOBAL_PROTECT(VVpixelmovement) return - var/default = vv_get_class(var_value) + var/default = vv_get_class(variable, var_value) if(isnull(default)) to_chat(src, "Unable to determine variable type.") @@ -585,7 +597,7 @@ GLOBAL_PROTECT(VVpixelmovement) default = VV_MESSAGE class = default - var/list/value = vv_get_value(class, default, var_value, extra_classes = list(VV_LIST)) + var/list/value = vv_get_value(class, default, var_value, extra_classes = list(VV_LIST), var_name = variable) class = value["class"] if (!class) diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index 11b4775f11..759cc97dbb 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -41,7 +41,7 @@ return FALSE if(!considered_alive(applicant.mind) || considered_afk(applicant.mind)) //makes sure the player isn't a zombie, brain, or just afk all together return FALSE - return (!jobban_isbanned(applicant, targetrole) && !jobban_isbanned(applicant, "Syndicate")) + return (!jobban_isbanned(applicant, targetrole) && !jobban_isbanned(applicant, ROLE_SYNDICATE)) /datum/admins/proc/makeTraitors() @@ -137,7 +137,7 @@ /datum/admins/proc/makeWizard() - var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to be considered for the position of a Wizard Foundation 'diplomat'?", "wizard", null) + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to be considered for the position of a Wizard Foundation 'diplomat'?", ROLE_WIZARD, null) var/mob/dead/observer/selected = pick_n_take(candidates) @@ -214,7 +214,7 @@ /datum/admins/proc/makeNukeTeam() var/datum/game_mode/nuclear/temp = new - var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to be considered for a nuke team being sent in?", "operative", temp) + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to be considered for a nuke team being sent in?", ROLE_OPERATIVE, temp) var/list/mob/dead/observer/chosen = list() var/mob/dead/observer/theghost = null diff --git a/code/modules/admin/verbs/possess.dm b/code/modules/admin/verbs/possess.dm index a9b5093e99..b92e9901e0 100644 --- a/code/modules/admin/verbs/possess.dm +++ b/code/modules/admin/verbs/possess.dm @@ -2,7 +2,7 @@ set name = "Possess Obj" set category = "Object" - if(O.dangerous_possession && CONFIG_GET(flag/forbid_singulo_possession)) + if((O.obj_flags & DANGEROUS_POSSESSION) && CONFIG_GET(flag/forbid_singulo_possession)) to_chat(usr, "[O] is too powerful for you to possess.") return diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index d462256cac..bbe7c97bbf 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -280,7 +280,7 @@ Traitors and the like can also be revived with the previous role mostly intact. if(G_found.mind && !G_found.mind.active) //mind isn't currently in use by someone/something //Check if they were an alien - if(G_found.mind.assigned_role=="Alien") + if(G_found.mind.assigned_role == ROLE_ALIEN) if(alert("This character appears to have been an alien. Would you like to respawn them as such?",,"Yes","No")=="Yes") var/turf/T if(GLOB.xeno_spawn.len) @@ -380,15 +380,15 @@ Traitors and the like can also be revived with the previous role mostly intact. switch(new_character.mind.special_role) - if("Wizard") + if(ROLE_WIZARD) new_character.forceMove(pick(GLOB.wizardstart)) var/datum/antagonist/wizard/A = new_character.mind.has_antag_datum(/datum/antagonist/wizard,TRUE) A.equip_wizard() - if("Syndicate") + if(ROLE_SYNDICATE) new_character.forceMove(pick(GLOB.nukeop_start)) var/datum/antagonist/nukeop/N = new_character.mind.has_antag_datum(/datum/antagonist/nukeop,TRUE) N.equip_op() - if("Space Ninja") + if(ROLE_NINJA) var/list/ninja_spawn = list() for(var/obj/effect/landmark/carpspawn/L in GLOB.landmarks_list) ninja_spawn += L diff --git a/code/modules/antagonists/_common/antag_datum.dm b/code/modules/antagonists/_common/antag_datum.dm new file mode 100644 index 0000000000..7d090bfd63 --- /dev/null +++ b/code/modules/antagonists/_common/antag_datum.dm @@ -0,0 +1,238 @@ +GLOBAL_LIST_EMPTY(antagonists) + +/datum/antagonist + var/name = "Antagonist" + var/roundend_category = "other antagonists" //Section of roundend report, datums with same category will be displayed together, also default header for the section + var/show_in_roundend = TRUE //Set to false to hide the antagonists from roundend report + var/datum/mind/owner //Mind that owns this datum + var/silent = FALSE //Silent will prevent the gain/lose texts to show + var/can_coexist_with_others = TRUE //Whether or not the person will be able to have more than one datum + var/list/typecache_datum_blacklist = list() //List of datums this type can't coexist with + var/delete_on_mind_deletion = TRUE + var/job_rank + var/replace_banned = TRUE //Should replace jobbaned player with ghosts if granted. + var/list/objectives = list() + var/antag_memory = ""//These will be removed with antag datum + + //Antag panel properties + var/show_in_antagpanel = TRUE //This will hide adding this antag type in antag panel, use only for internal subtypes that shouldn't be added directly but still show if possessed by mind + var/antagpanel_category = "Uncategorized" //Antagpanel will display these together, REQUIRED + +/datum/antagonist/New() + GLOB.antagonists += src + typecache_datum_blacklist = typecacheof(typecache_datum_blacklist) + +/datum/antagonist/Destroy() + GLOB.antagonists -= src + if(owner) + LAZYREMOVE(owner.antag_datums, src) + owner = null + return ..() + +/datum/antagonist/proc/can_be_owned(datum/mind/new_owner) + . = TRUE + var/datum/mind/tested = new_owner || owner + if(tested.has_antag_datum(type)) + return FALSE + for(var/i in tested.antag_datums) + var/datum/antagonist/A = i + if(is_type_in_typecache(src, A.typecache_datum_blacklist)) + return FALSE + +//This will be called in add_antag_datum before owner assignment. +//Should return antag datum without owner. +/datum/antagonist/proc/specialization(datum/mind/new_owner) + return src + +/datum/antagonist/proc/on_body_transfer(mob/living/old_body, mob/living/new_body) + remove_innate_effects(old_body) + apply_innate_effects(new_body) + +//This handles the application of antag huds/special abilities +/datum/antagonist/proc/apply_innate_effects(mob/living/mob_override) + return + +//This handles the removal of antag huds/special abilities +/datum/antagonist/proc/remove_innate_effects(mob/living/mob_override) + return + +//Assign default team and creates one for one of a kind team antagonists +/datum/antagonist/proc/create_team(datum/team/team) + return + +//Proc called when the datum is given to a mind. +/datum/antagonist/proc/on_gain() + if(owner && owner.current) + if(!silent) + greet() + apply_innate_effects() + if(is_banned(owner.current) && replace_banned) + replace_banned_player() + +/datum/antagonist/proc/is_banned(mob/M) + if(!M) + return FALSE + . = (jobban_isbanned(M,"Syndicate") || (job_rank && jobban_isbanned(M,job_rank))) + +/datum/antagonist/proc/replace_banned_player() + set waitfor = FALSE + + var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as a [name]?", "[name]", null, job_rank, 50, owner.current) + var/mob/dead/observer/theghost = null + if(candidates.len) + theghost = pick(candidates) + to_chat(owner, "Your mob has been taken over by a ghost! Appeal your job ban if you want to avoid this in the future!") + message_admins("[key_name_admin(theghost)] has taken control of ([key_name_admin(owner.current)]) to replace a jobbaned player.") + owner.current.ghostize(0) + owner.current.key = theghost.key + +/datum/antagonist/proc/on_removal() + remove_innate_effects() + if(owner) + LAZYREMOVE(owner.antag_datums, src) + if(!silent && owner.current) + farewell() + var/datum/team/team = get_team() + if(team) + team.remove_member(owner) + qdel(src) + +/datum/antagonist/proc/greet() + return + +/datum/antagonist/proc/farewell() + return + +//Returns the team antagonist belongs to if any. +/datum/antagonist/proc/get_team() + return + +//Individual roundend report +/datum/antagonist/proc/roundend_report() + var/list/report = list() + + if(!owner) + CRASH("antagonist datum without owner") + + report += printplayer(owner) + + var/objectives_complete = TRUE + if(owner.objectives.len) + report += printobjectives(owner) + for(var/datum/objective/objective in owner.objectives) + if(!objective.check_completion()) + objectives_complete = FALSE + break + + if(owner.objectives.len == 0 || objectives_complete) + report += "The [name] was successful!" + else + report += "The [name] has failed!" + + return report.Join("
") + +//Displayed at the start of roundend_category section, default to roundend_category header +/datum/antagonist/proc/roundend_report_header() + return "The [roundend_category] were:
" + +//Displayed at the end of roundend_category section +/datum/antagonist/proc/roundend_report_footer() + return + + +//ADMIN TOOLS + +//Called when using admin tools to give antag status +/datum/antagonist/proc/admin_add(datum/mind/new_owner,mob/admin) + message_admins("[key_name_admin(admin)] made [new_owner.current] into [name].") + log_admin("[key_name(admin)] made [new_owner.current] into [name].") + new_owner.add_antag_datum(src) + +//Called when removing antagonist using admin tools +/datum/antagonist/proc/admin_remove(mob/user) + if(!user) + return + message_admins("[key_name_admin(user)] has removed [name] antagonist status from [owner.current].") + log_admin("[key_name(user)] has removed [name] antagonist status from [owner.current].") + on_removal() + +//gamemode/proc/is_mode_antag(antagonist/A) => TRUE/FALSE + +//Additional data to display in antagonist panel section +//nuke disk code, genome count, etc +/datum/antagonist/proc/antag_panel_data() + return "" + +/datum/antagonist/proc/enabled_in_preferences(datum/mind/M) + if(job_rank) + if(M.current && M.current.client && (job_rank in M.current.client.prefs.be_special)) + return TRUE + else + return FALSE + return TRUE + +// List if ["Command"] = CALLBACK(), user will be appeneded to callback arguments on execution +/datum/antagonist/proc/get_admin_commands() + . = list() + +/datum/antagonist/Topic(href,href_list) + if(!check_rights(R_ADMIN)) + return + //Antag memory edit + if (href_list["memory_edit"]) + edit_memory(usr) + owner.traitor_panel() + return + + //Some commands might delete/modify this datum clearing or changing owner + var/datum/mind/persistent_owner = owner + + var/commands = get_admin_commands() + for(var/admin_command in commands) + if(href_list["command"] == admin_command) + var/datum/callback/C = commands[admin_command] + C.Invoke(usr) + persistent_owner.traitor_panel() + return + +/datum/antagonist/proc/edit_memory(mob/user) + var/new_memo = copytext(trim(input(user,"Write new memory", "Memory", antag_memory) as null|message),1,MAX_MESSAGE_LEN) + if (isnull(new_memo)) + return + antag_memory = new_memo + +//This datum will autofill the name with special_role +//Used as placeholder for minor antagonists, please create proper datums for these +/datum/antagonist/auto_custom + show_in_antagpanel = FALSE + antagpanel_category = "Other" + +/datum/antagonist/auto_custom/on_gain() + ..() + name = owner.special_role + //Add all objectives not already owned by other datums to this one. + var/list/already_registered_objectives = list() + for(var/datum/antagonist/A in owner.antag_datums) + if(A == src) + continue + else + already_registered_objectives |= A.objectives + objectives = owner.objectives - already_registered_objectives + +/datum/antagonist/auto_custom/antag_listing_name() + return ..() + "([name])" + +//This one is created by admin tools for custom objectives +/datum/antagonist/custom + antagpanel_category = "Custom" + +/datum/antagonist/custom/admin_add(datum/mind/new_owner,mob/admin) + var/custom_name = stripped_input(admin, "Custom antagonist name:", "Custom antag", "Antagonist") + if(custom_name) + name = custom_name + else + return + ..() + +/datum/antagonist/custom/antag_listing_name() + return ..() + "([name])" \ No newline at end of file diff --git a/code/modules/antagonists/_common/antag_helpers.dm b/code/modules/antagonists/_common/antag_helpers.dm new file mode 100644 index 0000000000..d99920b9e2 --- /dev/null +++ b/code/modules/antagonists/_common/antag_helpers.dm @@ -0,0 +1,19 @@ +//Returns MINDS of the assigned antags of given type/subtypes +/proc/get_antag_minds(antag_type,specific = FALSE) + . = list() + for(var/datum/antagonist/A in GLOB.antagonists) + if(!A.owner) + continue + if(!antag_type || !specific && istype(A,antag_type) || specific && A.type == antag_type) + . += A.owner + +//Get all teams [of type team_type] +/proc/get_all_teams(team_type) + . = list() + for(var/V in GLOB.antagonists) + var/datum/antagonist/A = V + if(!A.owner) + continue + var/datum/team/T = A.get_team() + if(!team_type || istype(T,team_type)) + . |= T \ No newline at end of file diff --git a/code/game/gamemodes/antag_hud.dm b/code/modules/antagonists/_common/antag_hud.dm similarity index 95% rename from code/game/gamemodes/antag_hud.dm rename to code/modules/antagonists/_common/antag_hud.dm index 447a87ce20..de6d0a4f81 100644 --- a/code/game/gamemodes/antag_hud.dm +++ b/code/modules/antagonists/_common/antag_hud.dm @@ -1,53 +1,53 @@ -/datum/atom_hud/antag - hud_icons = list(ANTAG_HUD) - var/self_visible = TRUE - -/datum/atom_hud/antag/hidden - self_visible = FALSE - -/datum/atom_hud/antag/proc/join_hud(mob/M) - //sees_hud should be set to 0 if the mob does not get to see it's own hud type. - if(!istype(M)) - CRASH("join_hud(): [M] ([M.type]) is not a mob!") - if(M.mind.antag_hud) //note: please let this runtime if a mob has no mind, as mindless mobs shouldn't be getting antagged - M.mind.antag_hud.leave_hud(M) - add_to_hud(M) - if(self_visible) - add_hud_to(M) - M.mind.antag_hud = src - -/datum/atom_hud/antag/proc/leave_hud(mob/M) - if(!M) - return - if(!istype(M)) - CRASH("leave_hud(): [M] ([M.type]) is not a mob!") - remove_from_hud(M) - remove_hud_from(M) - if(M.mind) - M.mind.antag_hud = null - - -//GAME_MODE PROCS -//called to set a mob's antag icon state -/proc/set_antag_hud(mob/M, new_icon_state) - if(!istype(M)) - CRASH("set_antag_hud(): [M] ([M.type]) is not a mob!") - var/image/holder = M.hud_list[ANTAG_HUD] - if(holder) - holder.icon_state = new_icon_state - if(M.mind || new_icon_state) //in mindless mobs, only null is acceptable, otherwise we're antagging a mindless mob, meaning we should runtime - M.mind.antag_hud_icon_state = new_icon_state - - -//MIND PROCS -//these are called by mind.transfer_to() -/datum/mind/proc/transfer_antag_huds(datum/atom_hud/antag/newhud) - leave_all_antag_huds() - set_antag_hud(current, antag_hud_icon_state) - if(newhud) - newhud.join_hud(current) - -/datum/mind/proc/leave_all_antag_huds() - for(var/datum/atom_hud/antag/hud in GLOB.huds) - if(hud.hudusers[current]) +/datum/atom_hud/antag + hud_icons = list(ANTAG_HUD) + var/self_visible = TRUE + +/datum/atom_hud/antag/hidden + self_visible = FALSE + +/datum/atom_hud/antag/proc/join_hud(mob/M) + //sees_hud should be set to 0 if the mob does not get to see it's own hud type. + if(!istype(M)) + CRASH("join_hud(): [M] ([M.type]) is not a mob!") + if(M.mind.antag_hud) //note: please let this runtime if a mob has no mind, as mindless mobs shouldn't be getting antagged + M.mind.antag_hud.leave_hud(M) + add_to_hud(M) + if(self_visible) + add_hud_to(M) + M.mind.antag_hud = src + +/datum/atom_hud/antag/proc/leave_hud(mob/M) + if(!M) + return + if(!istype(M)) + CRASH("leave_hud(): [M] ([M.type]) is not a mob!") + remove_from_hud(M) + remove_hud_from(M) + if(M.mind) + M.mind.antag_hud = null + + +//GAME_MODE PROCS +//called to set a mob's antag icon state +/proc/set_antag_hud(mob/M, new_icon_state) + if(!istype(M)) + CRASH("set_antag_hud(): [M] ([M.type]) is not a mob!") + var/image/holder = M.hud_list[ANTAG_HUD] + if(holder) + holder.icon_state = new_icon_state + if(M.mind || new_icon_state) //in mindless mobs, only null is acceptable, otherwise we're antagging a mindless mob, meaning we should runtime + M.mind.antag_hud_icon_state = new_icon_state + + +//MIND PROCS +//these are called by mind.transfer_to() +/datum/mind/proc/transfer_antag_huds(datum/atom_hud/antag/newhud) + leave_all_antag_huds() + set_antag_hud(current, antag_hud_icon_state) + if(newhud) + newhud.join_hud(current) + +/datum/mind/proc/leave_all_antag_huds() + for(var/datum/atom_hud/antag/hud in GLOB.huds) + if(hud.hudusers[current]) hud.leave_hud(current) \ No newline at end of file diff --git a/code/game/gamemodes/antag_spawner.dm b/code/modules/antagonists/_common/antag_spawner.dm similarity index 91% rename from code/game/gamemodes/antag_spawner.dm rename to code/modules/antagonists/_common/antag_spawner.dm index 8d4c1cf5ba..fd49bc72a3 100644 --- a/code/game/gamemodes/antag_spawner.dm +++ b/code/modules/antagonists/_common/antag_spawner.dm @@ -1,266 +1,266 @@ -/obj/item/antag_spawner - throw_speed = 1 - throw_range = 5 - w_class = WEIGHT_CLASS_TINY - var/used = 0 - -/obj/item/antag_spawner/proc/spawn_antag(client/C, turf/T, kind = "", datum/mind/user) - return - -/obj/item/antag_spawner/proc/equip_antag(mob/target) - return - - -///////////WIZARD - -/obj/item/antag_spawner/contract - name = "contract" - desc = "A magic contract previously signed by an apprentice. In exchange for instruction in the magical arts, they are bound to answer your call for aid." - icon = 'icons/obj/wizard.dmi' - icon_state ="scroll2" - -/obj/item/antag_spawner/contract/attack_self(mob/user) - user.set_machine(src) - var/dat - if(used) - dat = "You have already summoned your apprentice.
" - else - dat = "Contract of Apprenticeship:
" - dat += "Using this contract, you may summon an apprentice to aid you on your mission.
" - dat += "If you are unable to establish contact with your apprentice, you can feed the contract back to the spellbook to refund your points.
" - dat += "Which school of magic is your apprentice studying?:
" - dat += "Destruction
" - dat += "Your apprentice is skilled in offensive magic. They know Magic Missile and Fireball.
" - dat += "Bluespace Manipulation
" - dat += "Your apprentice is able to defy physics, melting through solid objects and travelling great distances in the blink of an eye. They know Teleport and Ethereal Jaunt.
" - dat += "Healing
" - dat += "Your apprentice is training to cast spells that will aid your survival. They know Forcewall and Charge and come with a Staff of Healing.
" - dat += "Robeless
" - dat += "Your apprentice is training to cast spells without their robes. They know Knock and Mindswap.
" - user << browse(dat, "window=radio") - onclose(user, "radio") - return - -/obj/item/antag_spawner/contract/Topic(href, href_list) - ..() - var/mob/living/carbon/human/H = usr - - if(H.stat || H.restrained()) - return - if(!ishuman(H)) - return 1 - - if(loc == H || (in_range(src, H) && isturf(loc))) - H.set_machine(src) - if(href_list["school"]) - if(used) - to_chat(H, "You already used this contract!") - return - var/list/candidates = pollCandidatesForMob("Do you want to play as a wizard's [href_list["school"]] apprentice?", ROLE_WIZARD, null, ROLE_WIZARD, 150, src) - if(candidates.len) - if(used) - to_chat(H, "You already used this contract!") - return - used = 1 - var/mob/dead/observer/theghost = pick(candidates) - spawn_antag(theghost.client, get_turf(src), href_list["school"],H.mind) - else - to_chat(H, "Unable to reach your apprentice! You can either attack the spellbook with the contract to refund your points, or wait and try again later.") - -/obj/item/antag_spawner/contract/spawn_antag(client/C, turf/T, kind ,datum/mind/user) - new /obj/effect/particle_effect/smoke(T) - var/mob/living/carbon/human/M = new/mob/living/carbon/human(T) - C.prefs.copy_to(M) - M.key = C.key - var/datum/mind/app_mind = M.mind - - var/datum/antagonist/wizard/apprentice/app = new() - app.master = user - app.school = kind - - var/datum/antagonist/wizard/master_wizard = user.has_antag_datum(/datum/antagonist/wizard) - if(master_wizard) - if(!master_wizard.wiz_team) - master_wizard.create_wiz_team() - app.wiz_team = master_wizard.wiz_team - master_wizard.wiz_team.add_member(app_mind) - app_mind.add_antag_datum(app) - //TODO Kill these if possible - app_mind.assigned_role = "Apprentice" - app_mind.special_role = "apprentice" - // - SEND_SOUND(M, sound('sound/effects/magic.ogg')) - -///////////BORGS AND OPERATIVES - - -/obj/item/antag_spawner/nuke_ops - name = "syndicate operative teleporter" - desc = "A single-use teleporter designed to quickly reinforce operatives in the field." - icon = 'icons/obj/device.dmi' - icon_state = "locator" - var/borg_to_spawn - -/obj/item/antag_spawner/nuke_ops/proc/check_usability(mob/user) - if(used) - to_chat(user, "[src] is out of power!") - return FALSE - if(!user.mind.has_antag_datum(/datum/antagonist/nukeop,TRUE)) - to_chat(user, "AUTHENTICATION FAILURE. ACCESS DENIED.") - return FALSE - if(!user.onSyndieBase()) - to_chat(user, "[src] is out of range! It can only be used at your base!") - return FALSE - return TRUE - - -/obj/item/antag_spawner/nuke_ops/attack_self(mob/user) - if(!(check_usability(user))) - return - - to_chat(user, "You activate [src] and wait for confirmation.") - var/list/nuke_candidates = pollGhostCandidates("Do you want to play as a syndicate [borg_to_spawn ? "[lowertext(borg_to_spawn)] cyborg":"operative"]?", ROLE_OPERATIVE, null, ROLE_OPERATIVE, 150, POLL_IGNORE_SYNDICATE) - if(nuke_candidates.len) - if(!(check_usability(user))) - return - used = TRUE - var/mob/dead/observer/theghost = pick(nuke_candidates) - spawn_antag(theghost.client, get_turf(src), "syndieborg", user.mind) - do_sparks(4, TRUE, src) - qdel(src) - else - to_chat(user, "Unable to connect to Syndicate command. Please wait and try again later or use the teleporter on your uplink to get your points refunded.") - -/obj/item/antag_spawner/nuke_ops/spawn_antag(client/C, turf/T, kind, datum/mind/user) - var/mob/living/carbon/human/M = new/mob/living/carbon/human(T) - C.prefs.copy_to(M) - M.key = C.key - - var/datum/antagonist/nukeop/new_op = new() - new_op.send_to_spawnpoint = FALSE - new_op.nukeop_outfit = /datum/outfit/syndicate/no_crystals - - var/datum/antagonist/nukeop/creator_op = user.has_antag_datum(/datum/antagonist/nukeop,TRUE) - if(creator_op) - M.mind.add_antag_datum(new_op,creator_op.nuke_team) - M.mind.special_role = "Nuclear Operative" - -//////SYNDICATE BORG -/obj/item/antag_spawner/nuke_ops/borg_tele - name = "syndicate cyborg teleporter" - desc = "A single-use teleporter designed to quickly reinforce operatives in the field.." - icon = 'icons/obj/device.dmi' - icon_state = "locator" - -/obj/item/antag_spawner/nuke_ops/borg_tele/assault - name = "syndicate assault cyborg teleporter" - borg_to_spawn = "Assault" - -/obj/item/antag_spawner/nuke_ops/borg_tele/medical - name = "syndicate medical teleporter" - borg_to_spawn = "Medical" - -/obj/item/antag_spawner/nuke_ops/borg_tele/spawn_antag(client/C, turf/T, kind, datum/mind/user) - var/mob/living/silicon/robot/R - var/datum/antagonist/nukeop/creator_op = user.has_antag_datum(/datum/antagonist/nukeop,TRUE) - if(!creator_op) - return - - switch(borg_to_spawn) - if("Medical") - R = new /mob/living/silicon/robot/modules/syndicate/medical(T) - else - R = new /mob/living/silicon/robot/modules/syndicate(T) //Assault borg by default - - var/brainfirstname = pick(GLOB.first_names_male) - if(prob(50)) - brainfirstname = pick(GLOB.first_names_female) - var/brainopslastname = pick(GLOB.last_names) - if(creator_op.nuke_team.syndicate_name) //the brain inside the syndiborg has the same last name as the other ops. - brainopslastname = creator_op.nuke_team.syndicate_name - var/brainopsname = "[brainfirstname] [brainopslastname]" - - R.mmi.name = "Man-Machine Interface: [brainopsname]" - R.mmi.brain.name = "[brainopsname]'s brain" - R.mmi.brainmob.real_name = brainopsname - R.mmi.brainmob.name = brainopsname - R.real_name = R.name - - R.key = C.key - - var/datum/antagonist/nukeop/new_borg = new() - new_borg.send_to_spawnpoint = FALSE - R.mind.add_antag_datum(new_borg,creator_op.nuke_team) - R.mind.special_role = "Syndicate Cyborg" - -///////////SLAUGHTER DEMON - -/obj/item/antag_spawner/slaughter_demon //Warning edgiest item in the game - name = "vial of blood" - desc = "A magically infused bottle of blood, distilled from countless murder victims. Used in unholy rituals to attract horrifying creatures." - icon = 'icons/obj/wizard.dmi' - icon_state = "vial" - - var/shatter_msg = "You shatter the bottle, no turning back now!" - var/veil_msg = "You sense a dark presence lurking just beyond the veil..." - var/objective_verb = "Kill" - var/mob/living/demon_type = /mob/living/simple_animal/slaughter - - -/obj/item/antag_spawner/slaughter_demon/attack_self(mob/user) - if(!is_station_level(user.z)) - to_chat(user, "You should probably wait until you reach the station.") - return - if(used) - return - var/list/demon_candidates = pollCandidatesForMob("Do you want to play as a [initial(demon_type.name)]?", null, null, ROLE_ALIEN, 50, src) - if(demon_candidates.len) - if(used) - return - used = 1 - var/mob/dead/observer/theghost = pick(demon_candidates) - spawn_antag(theghost.client, get_turf(src), initial(demon_type.name),user.mind) - to_chat(user, shatter_msg) - to_chat(user, veil_msg) - playsound(user.loc, 'sound/effects/glassbr1.ogg', 100, 1) - qdel(src) - else - to_chat(user, "You can't seem to work up the nerve to shatter the bottle. Perhaps you should try again later.") - - -/obj/item/antag_spawner/slaughter_demon/spawn_antag(client/C, turf/T, kind = "", datum/mind/user) - var/obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter(T) - var/mob/living/simple_animal/slaughter/S = new demon_type(holder) - S.holder = holder - S.key = C.key - S.mind.assigned_role = S.name - S.mind.special_role = S.name - var/datum/objective/assassinate/new_objective - if(user) - new_objective = new /datum/objective/assassinate - new_objective.owner = S.mind - new_objective.target = user - new_objective.explanation_text = "[objective_verb] [user.name], the one who summoned you." - S.mind.objectives += new_objective - var/datum/objective/new_objective2 = new /datum/objective - new_objective2.owner = S.mind - new_objective2.explanation_text = "[objective_verb] everyone[user ? " else while you're at it":""]." - S.mind.objectives += new_objective2 - S.mind.add_antag_datum(/datum/antagonist/auto_custom) - to_chat(S, S.playstyle_string) - to_chat(S, "You are currently not currently in the same plane of existence as the station. \ - Ctrl+Click a blood pool to manifest.") - if(new_objective) - to_chat(S, "Objective #[1]: [new_objective.explanation_text]") - to_chat(S, "Objective #[new_objective ? "[2]":"[1]"]: [new_objective2.explanation_text]") - -/obj/item/antag_spawner/slaughter_demon/laughter - name = "vial of tickles" - desc = "A magically infused bottle of clown love, distilled from countless hugging attacks. Used in funny rituals to attract adorable creatures." - icon = 'icons/obj/wizard.dmi' - icon_state = "vial" - color = "#FF69B4" // HOT PINK - - veil_msg = "You sense an adorable presence lurking just beyond the veil..." - objective_verb = "Hug and Tickle" - demon_type = /mob/living/simple_animal/slaughter/laughter +/obj/item/antag_spawner + throw_speed = 1 + throw_range = 5 + w_class = WEIGHT_CLASS_TINY + var/used = FALSE + +/obj/item/antag_spawner/proc/spawn_antag(client/C, turf/T, kind = "", datum/mind/user) + return + +/obj/item/antag_spawner/proc/equip_antag(mob/target) + return + + +///////////WIZARD + +/obj/item/antag_spawner/contract + name = "contract" + desc = "A magic contract previously signed by an apprentice. In exchange for instruction in the magical arts, they are bound to answer your call for aid." + icon = 'icons/obj/wizard.dmi' + icon_state ="scroll2" + +/obj/item/antag_spawner/contract/attack_self(mob/user) + user.set_machine(src) + var/dat + if(used) + dat = "You have already summoned your apprentice.
" + else + dat = "Contract of Apprenticeship:
" + dat += "Using this contract, you may summon an apprentice to aid you on your mission.
" + dat += "If you are unable to establish contact with your apprentice, you can feed the contract back to the spellbook to refund your points.
" + dat += "Which school of magic is your apprentice studying?:
" + dat += "Destruction
" + dat += "Your apprentice is skilled in offensive magic. They know Magic Missile and Fireball.
" + dat += "Bluespace Manipulation
" + dat += "Your apprentice is able to defy physics, melting through solid objects and travelling great distances in the blink of an eye. They know Teleport and Ethereal Jaunt.
" + dat += "Healing
" + dat += "Your apprentice is training to cast spells that will aid your survival. They know Forcewall and Charge and come with a Staff of Healing.
" + dat += "Robeless
" + dat += "Your apprentice is training to cast spells without their robes. They know Knock and Mindswap.
" + user << browse(dat, "window=radio") + onclose(user, "radio") + return + +/obj/item/antag_spawner/contract/Topic(href, href_list) + ..() + var/mob/living/carbon/human/H = usr + + if(H.stat || H.restrained()) + return + if(!ishuman(H)) + return 1 + + if(loc == H || (in_range(src, H) && isturf(loc))) + H.set_machine(src) + if(href_list["school"]) + if(used) + to_chat(H, "You already used this contract!") + return + var/list/candidates = pollCandidatesForMob("Do you want to play as a wizard's [href_list["school"]] apprentice?", ROLE_WIZARD, null, ROLE_WIZARD, 150, src) + if(LAZYLEN(candidates)) + if(used) + to_chat(H, "You already used this contract!") + return + used = TRUE + var/client/C = pick(candidates) + spawn_antag(C, get_turf(src), href_list["school"],H.mind) + else + to_chat(H, "Unable to reach your apprentice! You can either attack the spellbook with the contract to refund your points, or wait and try again later.") + +/obj/item/antag_spawner/contract/spawn_antag(client/C, turf/T, kind ,datum/mind/user) + new /obj/effect/particle_effect/smoke(T) + var/mob/living/carbon/human/M = new/mob/living/carbon/human(T) + C.prefs.copy_to(M) + M.key = C.key + var/datum/mind/app_mind = M.mind + + var/datum/antagonist/wizard/apprentice/app = new() + app.master = user + app.school = kind + + var/datum/antagonist/wizard/master_wizard = user.has_antag_datum(/datum/antagonist/wizard) + if(master_wizard) + if(!master_wizard.wiz_team) + master_wizard.create_wiz_team() + app.wiz_team = master_wizard.wiz_team + master_wizard.wiz_team.add_member(app_mind) + app_mind.add_antag_datum(app) + //TODO Kill these if possible + app_mind.assigned_role = "Apprentice" + app_mind.special_role = "apprentice" + // + SEND_SOUND(M, sound('sound/effects/magic.ogg')) + +///////////BORGS AND OPERATIVES + + +/obj/item/antag_spawner/nuke_ops + name = "syndicate operative teleporter" + desc = "A single-use teleporter designed to quickly reinforce operatives in the field." + icon = 'icons/obj/device.dmi' + icon_state = "locator" + var/borg_to_spawn + +/obj/item/antag_spawner/nuke_ops/proc/check_usability(mob/user) + if(used) + to_chat(user, "[src] is out of power!") + return FALSE + if(!user.mind.has_antag_datum(/datum/antagonist/nukeop,TRUE)) + to_chat(user, "AUTHENTICATION FAILURE. ACCESS DENIED.") + return FALSE + if(!user.onSyndieBase()) + to_chat(user, "[src] is out of range! It can only be used at your base!") + return FALSE + return TRUE + + +/obj/item/antag_spawner/nuke_ops/attack_self(mob/user) + if(!(check_usability(user))) + return + + to_chat(user, "You activate [src] and wait for confirmation.") + var/list/nuke_candidates = pollGhostCandidates("Do you want to play as a syndicate [borg_to_spawn ? "[lowertext(borg_to_spawn)] cyborg":"operative"]?", ROLE_OPERATIVE, null, ROLE_OPERATIVE, 150, POLL_IGNORE_SYNDICATE) + if(LAZYLEN(nuke_candidates)) + if(!(check_usability(user))) + return + used = TRUE + var/client/C = pick(nuke_candidates) + spawn_antag(C, get_turf(src), "syndieborg", user.mind) + do_sparks(4, TRUE, src) + qdel(src) + else + to_chat(user, "Unable to connect to Syndicate command. Please wait and try again later or use the teleporter on your uplink to get your points refunded.") + +/obj/item/antag_spawner/nuke_ops/spawn_antag(client/C, turf/T, kind, datum/mind/user) + var/mob/living/carbon/human/M = new/mob/living/carbon/human(T) + C.prefs.copy_to(M) + M.key = C.key + + var/datum/antagonist/nukeop/new_op = new() + new_op.send_to_spawnpoint = FALSE + new_op.nukeop_outfit = /datum/outfit/syndicate/no_crystals + + var/datum/antagonist/nukeop/creator_op = user.has_antag_datum(/datum/antagonist/nukeop,TRUE) + if(creator_op) + M.mind.add_antag_datum(new_op,creator_op.nuke_team) + M.mind.special_role = "Nuclear Operative" + +//////SYNDICATE BORG +/obj/item/antag_spawner/nuke_ops/borg_tele + name = "syndicate cyborg teleporter" + desc = "A single-use teleporter designed to quickly reinforce operatives in the field.." + icon = 'icons/obj/device.dmi' + icon_state = "locator" + +/obj/item/antag_spawner/nuke_ops/borg_tele/assault + name = "syndicate assault cyborg teleporter" + borg_to_spawn = "Assault" + +/obj/item/antag_spawner/nuke_ops/borg_tele/medical + name = "syndicate medical teleporter" + borg_to_spawn = "Medical" + +/obj/item/antag_spawner/nuke_ops/borg_tele/spawn_antag(client/C, turf/T, kind, datum/mind/user) + var/mob/living/silicon/robot/R + var/datum/antagonist/nukeop/creator_op = user.has_antag_datum(/datum/antagonist/nukeop,TRUE) + if(!creator_op) + return + + switch(borg_to_spawn) + if("Medical") + R = new /mob/living/silicon/robot/modules/syndicate/medical(T) + else + R = new /mob/living/silicon/robot/modules/syndicate(T) //Assault borg by default + + var/brainfirstname = pick(GLOB.first_names_male) + if(prob(50)) + brainfirstname = pick(GLOB.first_names_female) + var/brainopslastname = pick(GLOB.last_names) + if(creator_op.nuke_team.syndicate_name) //the brain inside the syndiborg has the same last name as the other ops. + brainopslastname = creator_op.nuke_team.syndicate_name + var/brainopsname = "[brainfirstname] [brainopslastname]" + + R.mmi.name = "Man-Machine Interface: [brainopsname]" + R.mmi.brain.name = "[brainopsname]'s brain" + R.mmi.brainmob.real_name = brainopsname + R.mmi.brainmob.name = brainopsname + R.real_name = R.name + + R.key = C.key + + var/datum/antagonist/nukeop/new_borg = new() + new_borg.send_to_spawnpoint = FALSE + R.mind.add_antag_datum(new_borg,creator_op.nuke_team) + R.mind.special_role = "Syndicate Cyborg" + +///////////SLAUGHTER DEMON + +/obj/item/antag_spawner/slaughter_demon //Warning edgiest item in the game + name = "vial of blood" + desc = "A magically infused bottle of blood, distilled from countless murder victims. Used in unholy rituals to attract horrifying creatures." + icon = 'icons/obj/wizard.dmi' + icon_state = "vial" + + var/shatter_msg = "You shatter the bottle, no turning back now!" + var/veil_msg = "You sense a dark presence lurking just beyond the veil..." + var/objective_verb = "Kill" + var/mob/living/demon_type = /mob/living/simple_animal/slaughter + + +/obj/item/antag_spawner/slaughter_demon/attack_self(mob/user) + if(!is_station_level(user.z)) + to_chat(user, "You should probably wait until you reach the station.") + return + if(used) + return + var/list/candidates = pollCandidatesForMob("Do you want to play as a [initial(demon_type.name)]?", ROLE_ALIEN, null, ROLE_ALIEN, 50, src) + if(LAZYLEN(candidates)) + if(used) + return + used = TRUE + var/client/C = pick(candidates) + spawn_antag(C, get_turf(src), initial(demon_type.name),user.mind) + to_chat(user, shatter_msg) + to_chat(user, veil_msg) + playsound(user.loc, 'sound/effects/glassbr1.ogg', 100, 1) + qdel(src) + else + to_chat(user, "You can't seem to work up the nerve to shatter the bottle. Perhaps you should try again later.") + + +/obj/item/antag_spawner/slaughter_demon/spawn_antag(client/C, turf/T, kind = "", datum/mind/user) + var/obj/effect/dummy/slaughter/holder = new /obj/effect/dummy/slaughter(T) + var/mob/living/simple_animal/slaughter/S = new demon_type(holder) + S.holder = holder + S.key = C.key + S.mind.assigned_role = S.name + S.mind.special_role = S.name + var/datum/objective/assassinate/new_objective + if(user) + new_objective = new /datum/objective/assassinate + new_objective.owner = S.mind + new_objective.target = user + new_objective.explanation_text = "[objective_verb] [user.name], the one who summoned you." + S.mind.objectives += new_objective + var/datum/objective/new_objective2 = new /datum/objective + new_objective2.owner = S.mind + new_objective2.explanation_text = "[objective_verb] everyone[user ? " else while you're at it":""]." + S.mind.objectives += new_objective2 + S.mind.add_antag_datum(/datum/antagonist/auto_custom) + to_chat(S, S.playstyle_string) + to_chat(S, "You are currently not currently in the same plane of existence as the station. \ + Ctrl+Click a blood pool to manifest.") + if(new_objective) + to_chat(S, "Objective #[1]: [new_objective.explanation_text]") + to_chat(S, "Objective #[new_objective ? "[2]":"[1]"]: [new_objective2.explanation_text]") + +/obj/item/antag_spawner/slaughter_demon/laughter + name = "vial of tickles" + desc = "A magically infused bottle of clown love, distilled from countless hugging attacks. Used in funny rituals to attract adorable creatures." + icon = 'icons/obj/wizard.dmi' + icon_state = "vial" + color = "#FF69B4" // HOT PINK + + veil_msg = "You sense an adorable presence lurking just beyond the veil..." + objective_verb = "Hug and Tickle" + demon_type = /mob/living/simple_animal/slaughter/laughter diff --git a/code/game/gamemodes/antag_team.dm b/code/modules/antagonists/_common/antag_team.dm similarity index 74% rename from code/game/gamemodes/antag_team.dm rename to code/modules/antagonists/_common/antag_team.dm index 56ca7c76e2..c458b5a9fb 100644 --- a/code/game/gamemodes/antag_team.dm +++ b/code/modules/antagonists/_common/antag_team.dm @@ -32,15 +32,3 @@ report += printplayerlist(members) return report.Join("
") - -//Get all teams [of type team_type] -//TODO move these to some antag helpers file with get_antagonists -/proc/get_all_teams(team_type) - . = list() - for(var/V in GLOB.antagonists) - var/datum/antagonist/A = V - if(!A.owner) - continue - var/datum/team/T = A.get_team() - if(!team_type || istype(T,team_type)) - . |= T diff --git a/code/game/gamemodes/miniantags/abduction/abductee_objectives.dm b/code/modules/antagonists/abductor/abductee/abductee_objectives.dm similarity index 100% rename from code/game/gamemodes/miniantags/abduction/abductee_objectives.dm rename to code/modules/antagonists/abductor/abductee/abductee_objectives.dm diff --git a/code/modules/antagonists/abductor/abductor.dm b/code/modules/antagonists/abductor/abductor.dm new file mode 100644 index 0000000000..35264af67c --- /dev/null +++ b/code/modules/antagonists/abductor/abductor.dm @@ -0,0 +1,216 @@ +#define ABDUCTOR_MAX_TEAMS 4 + +/datum/antagonist/abductor + name = "Abductor" + roundend_category = "abductors" + antagpanel_category = "Abductor" + job_rank = ROLE_ABDUCTOR + show_in_antagpanel = FALSE //should only show subtypes + var/datum/team/abductor_team/team + var/sub_role + var/outfit + var/landmark_type + var/greet_text + + +/datum/antagonist/abductor/agent + name = "Abductor Agent" + sub_role = "Agent" + outfit = /datum/outfit/abductor/agent + landmark_type = /obj/effect/landmark/abductor/agent + greet_text = "Use your stealth technology and equipment to incapacitate humans for your scientist to retrieve." + show_in_antagpanel = TRUE + +/datum/antagonist/abductor/scientist + name = "Abductor Scientist" + sub_role = "Scientist" + outfit = /datum/outfit/abductor/scientist + landmark_type = /obj/effect/landmark/abductor/scientist + greet_text = "Use your stealth technology and equipment to incapacitate humans for your scientist to retrieve." + show_in_antagpanel = TRUE + +/datum/antagonist/abductor/create_team(datum/team/abductor_team/new_team) + if(!new_team) + return + if(!istype(new_team)) + stack_trace("Wrong team type passed to [type] initialization.") + team = new_team + +/datum/antagonist/abductor/get_team() + return team + +/datum/antagonist/abductor/on_gain() + owner.special_role = "[name] [sub_role]" + owner.assigned_role = "[name] [sub_role]" + owner.objectives += team.objectives + finalize_abductor() + return ..() + +/datum/antagonist/abductor/on_removal() + owner.objectives -= team.objectives + if(owner.current) + to_chat(owner.current,"You are no longer the [owner.special_role]!") + owner.special_role = null + return ..() + +/datum/antagonist/abductor/greet() + to_chat(owner.current, "You are the [owner.special_role]!") + to_chat(owner.current, "With the help of your teammate, kidnap and experiment on station crew members!") + to_chat(owner.current, "[greet_text]") + owner.announce_objectives() + +/datum/antagonist/abductor/proc/finalize_abductor() + //Equip + var/mob/living/carbon/human/H = owner.current + H.set_species(/datum/species/abductor) + H.real_name = "[team.name] [sub_role]" + H.equipOutfit(outfit) + + //Teleport to ship + for(var/obj/effect/landmark/abductor/LM in GLOB.landmarks_list) + if(istype(LM, landmark_type) && LM.team_number == team.team_number) + H.forceMove(LM.loc) + break + + update_abductor_icons_added(owner,"abductor") + +/datum/antagonist/abductor/scientist/finalize_abductor() + ..() + var/mob/living/carbon/human/H = owner.current + var/datum/species/abductor/A = H.dna.species + A.scientist = TRUE + +/datum/antagonist/abductor/admin_add(datum/mind/new_owner,mob/admin) + var/list/current_teams = list() + for(var/datum/team/abductor_team/T in get_all_teams(/datum/team/abductor_team)) + current_teams[T.name] = T + var/choice = input(admin,"Add to which team ?") as null|anything in (current_teams + "new team") + if (choice == "new team") + team = new + else if(choice in current_teams) + team = current_teams[choice] + else + return + new_owner.add_antag_datum(src) + log_admin("[key_name(usr)] made [key_name(new_owner.current)] [name] on [choice]!") + message_admins("[key_name_admin(usr)] made [key_name_admin(new_owner.current)] [name] on [choice] !") + +/datum/antagonist/abductor/get_admin_commands() + . = ..() + .["Equip"] = CALLBACK(src,.proc/admin_equip) + +/datum/antagonist/abductor/proc/admin_equip(mob/admin) + if(!ishuman(owner.current)) + to_chat(admin, "This only works on humans!") + return + var/mob/living/carbon/human/H = owner.current + var/gear = alert(admin,"Agent or Scientist Gear","Gear","Agent","Scientist") + if(gear) + if(gear=="Agent") + H.equipOutfit(/datum/outfit/abductor/agent) + else + H.equipOutfit(/datum/outfit/abductor/scientist) + +/datum/team/abductor_team + member_name = "abductor" + var/team_number + var/list/datum/mind/abductees = list() + var/static/team_count = 1 + +/datum/team/abductor_team/New() + ..() + team_number = team_count++ + name = "Mothership [pick(GLOB.possible_changeling_IDs)]" //TODO Ensure unique and actual alieny names + add_objective(new/datum/objective/experiment) + +/datum/team/abductor_team/is_solo() + return FALSE + +/datum/team/abductor_team/proc/add_objective(datum/objective/O) + O.team = src + O.update_explanation_text() + objectives += O + +/datum/team/abductor_team/roundend_report() + var/list/result = list() + + var/won = TRUE + for(var/datum/objective/O in objectives) + if(!O.check_completion()) + won = FALSE + if(won) + result += "[name] team fulfilled its mission!" + else + result += "[name] team failed its mission." + + result += "The abductors of [name] were:" + for(var/datum/mind/abductor_mind in members) + result += printplayer(abductor_mind) + result += printobjectives(abductor_mind) + + return result.Join("
") + +/datum/antagonist/abductee + name = "Abductee" + roundend_category = "abductees" + antagpanel_category = "Abductee" + +/datum/antagonist/abductee/on_gain() + give_objective() + . = ..() + +/datum/antagonist/abductee/greet() + to_chat(owner, "Your mind snaps!") + to_chat(owner, "You can't remember how you got here...") + owner.announce_objectives() + +/datum/antagonist/abductee/proc/give_objective() + var/mob/living/carbon/human/H = owner.current + if(istype(H)) + H.gain_trauma_type(BRAIN_TRAUMA_MILD) + var/objtype = (prob(75) ? /datum/objective/abductee/random : pick(subtypesof(/datum/objective/abductee/) - /datum/objective/abductee/random)) + var/datum/objective/abductee/O = new objtype() + objectives += O + owner.objectives += objectives + +/datum/antagonist/abductee/apply_innate_effects(mob/living/mob_override) + update_abductor_icons_added(mob_override ? mob_override.mind : owner,"abductee") + +/datum/antagonist/abductee/remove_innate_effects(mob/living/mob_override) + update_abductor_icons_removed(mob_override ? mob_override.mind : owner) + + +// LANDMARKS +/obj/effect/landmark/abductor + var/team_number = 1 + +/obj/effect/landmark/abductor/agent + icon_state = "abductor_agent" +/obj/effect/landmark/abductor/scientist + icon_state = "abductor" + +// OBJECTIVES +/datum/objective/experiment + target_amount = 6 + +/datum/objective/experiment/New() + explanation_text = "Experiment on [target_amount] humans." + +/datum/objective/experiment/check_completion() + for(var/obj/machinery/abductor/experiment/E in GLOB.machines) + if(!istype(team, /datum/team/abductor_team)) + return FALSE + var/datum/team/abductor_team/T = team + if(E.team_number == T.team_number) + return E.points >= target_amount + return FALSE + +/datum/antagonist/proc/update_abductor_icons_added(datum/mind/alien_mind,hud_type) + var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_ABDUCTOR] + hud.join_hud(alien_mind.current) + set_antag_hud(alien_mind.current, hud_type) + +/datum/antagonist/proc/update_abductor_icons_removed(datum/mind/alien_mind) + var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_ABDUCTOR] + hud.leave_hud(alien_mind.current) + set_antag_hud(alien_mind.current, null) \ No newline at end of file diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm similarity index 100% rename from code/game/gamemodes/miniantags/abduction/abduction_gear.dm rename to code/modules/antagonists/abductor/equipment/abduction_gear.dm diff --git a/code/game/gamemodes/miniantags/abduction/abduction_outfits.dm b/code/modules/antagonists/abductor/equipment/abduction_outfits.dm similarity index 100% rename from code/game/gamemodes/miniantags/abduction/abduction_outfits.dm rename to code/modules/antagonists/abductor/equipment/abduction_outfits.dm diff --git a/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm b/code/modules/antagonists/abductor/equipment/abduction_surgery.dm similarity index 54% rename from code/game/gamemodes/miniantags/abduction/abduction_surgery.dm rename to code/modules/antagonists/abductor/equipment/abduction_surgery.dm index 5b5bafdd21..ffce85e435 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm +++ b/code/modules/antagonists/abductor/equipment/abduction_surgery.dm @@ -53,3 +53,48 @@ var/obj/item/organ/heart/gland/gland = tool gland.Insert(target, 2) return 1 + +/datum/surgery/pacify + name = "violence neutralization" + steps = list(/datum/surgery_step/incise, + /datum/surgery_step/retract_skin, + /datum/surgery_step/saw, + /datum/surgery_step/clamp_bleeders, + /datum/surgery_step/pacify, + /datum/surgery_step/close) + + species = list(/mob/living/carbon/human, /mob/living/carbon/monkey) + possible_locs = list("head") + requires_bodypart_type = 0 + +/datum/surgery/pacify/can_start(mob/user, mob/living/carbon/target) + if(!ishuman(user)) + return FALSE + var/mob/living/carbon/human/H = user + . = FALSE + if(!(H.dna.species.id == "abductor")) + . = TRUE + for(var/obj/item/implant/abductor/A in H.implants) + . = TRUE + var/obj/item/organ/brain/B = target.getorganslot(ORGAN_SLOT_BRAIN) + if(!B) + to_chat(user, "It's hard to do surgery on someone's brain when they don't have one.") + return FALSE + +/datum/surgery_step/pacify + name = "rewire brain" + implements = list(/obj/item/hemostat = 100, /obj/item/screwdriver = 35, /obj/item/pen = 15) + time = 40 + +/datum/surgery_step/pacify/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + user.visible_message("[user] begins to reshape [target]'s brain.", "You begin to reshape [target]'s brain...") + +/datum/surgery_step/pacify/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + user.visible_message("[user] successfully reshapes [target]'s brain!", "You succeed in reshaping [target]'s brain.") + target.gain_trauma(/datum/brain_trauma/severe/pacifism) + return TRUE + +/datum/surgery_step/pacify/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + user.visible_message("[user] successfully reshapes [target]'s brain!", "You screwed up, and rewired [target]'s brain the wrong way around...") + target.gain_trauma_type(BRAIN_TRAUMA_SEVERE) + return FALSE \ No newline at end of file diff --git a/code/game/gamemodes/miniantags/abduction/gland.dm b/code/modules/antagonists/abductor/equipment/gland.dm similarity index 62% rename from code/game/gamemodes/miniantags/abduction/gland.dm rename to code/modules/antagonists/abductor/equipment/gland.dm index 7e49415834..6eba723756 100644 --- a/code/game/gamemodes/miniantags/abduction/gland.dm +++ b/code/modules/antagonists/abductor/equipment/gland.dm @@ -8,7 +8,7 @@ var/cooldown_low = 300 var/cooldown_high = 300 var/next_activation = 0 - var/uses // -1 For inifinite + var/uses // -1 For infinite var/human_only = 0 var/active = 0 @@ -104,9 +104,9 @@ /obj/item/organ/heart/gland/heals/activate() to_chat(owner, "You feel curiously revitalized.") - owner.adjustBruteLoss(-20) + owner.adjustToxLoss(-20, FALSE, TRUE) + owner.heal_bodypart_damage(20, 20, TRUE) owner.adjustOxyLoss(-20) - owner.adjustFireLoss(-20) /obj/item/organ/heart/gland/slime cooldown_low = 600 @@ -116,18 +116,22 @@ mind_control_uses = 1 mind_control_duration = 2400 +/obj/item/organ/heart/gland/slime/Insert(mob/living/carbon/M, special = 0) + ..() + owner.faction |= "slime" + owner.grant_language(/datum/language/slime) + /obj/item/organ/heart/gland/slime/activate() to_chat(owner, "You feel nauseous!") owner.vomit(20) - var/mob/living/simple_animal/slime/Slime - Slime = new(get_turf(owner), "grey") + var/mob/living/simple_animal/slime/Slime = new(get_turf(owner), "grey") Slime.Friends = list(owner) Slime.Leader = owner /obj/item/organ/heart/gland/mindshock - cooldown_low = 300 - cooldown_high = 300 + cooldown_low = 400 + cooldown_high = 700 uses = -1 icon_state = "mindshock" mind_control_uses = 1 @@ -140,21 +144,30 @@ for(var/mob/living/carbon/H in orange(4,T)) if(H == owner) continue - to_chat(H, "You hear a buzz in your head.") - H.confused += 20 + switch(pick(1,3)) + if(1) + to_chat(H, "You hear a loud buzz in your head, silencing your thoughts!") + H.Stun(50) + if(2) + to_chat(H, "You hear an annoying buzz in your head.") + H.confused += 15 + H.adjustBrainLoss(10, 160) + if(3) + H.hallucination += 80 /obj/item/organ/heart/gland/pop cooldown_low = 900 cooldown_high = 1800 uses = -1 - human_only = 1 + human_only = TRUE icon_state = "species" mind_control_uses = 5 mind_control_duration = 300 /obj/item/organ/heart/gland/pop/activate() to_chat(owner, "You feel unlike yourself.") - var/species = pick(list(/datum/species/lizard, /datum/species/jelly/slime, /datum/species/pod, /datum/species/fly, /datum/species/jelly)) + randomize_human(owner) + var/species = pick(list(/datum/species/human, /datum/species/lizard, /datum/species/moth, /datum/species/fly)) owner.set_species(species) /obj/item/organ/heart/gland/ventcrawling @@ -169,7 +182,6 @@ to_chat(owner, "You feel very stretchy.") owner.ventcrawler = VENTCRAWLER_ALWAYS - /obj/item/organ/heart/gland/viral cooldown_low = 1800 cooldown_high = 2400 @@ -180,30 +192,55 @@ /obj/item/organ/heart/gland/viral/activate() to_chat(owner, "You feel sick.") - var/virus_type = pick(/datum/disease/beesease, /datum/disease/brainrot, /datum/disease/magnitis) - var/datum/disease/D = new virus_type() - D.carrier = TRUE - owner.viruses += D - D.affected_mob = owner + var/datum/disease/advance/A = random_virus(pick(2,6),6) + A.carrier = TRUE + owner.viruses += A + A.affected_mob = owner owner.med_hud_set_status() +/obj/item/organ/heart/gland/viral/proc/random_virus(max_symptoms, max_level) + if(max_symptoms > SYMPTOM_LIMIT) + max_symptoms = SYMPTOM_LIMIT + var/datum/disease/advance/A = new(FALSE, null) + A.symptoms = list() + var/list/datum/symptom/possible_symptoms = list() + for(var/symptom in subtypesof(/datum/symptom)) + var/datum/symptom/S = symptom + if(initial(S.level) > max_level) + continue + if(initial(S.level) <= 0) //unobtainable symptoms + continue + possible_symptoms += S + for(var/i in 1 to max_symptoms) + var/datum/symptom/chosen_symptom = pick_n_take(possible_symptoms) + if(chosen_symptom) + var/datum/symptom/S = new chosen_symptom + A.symptoms += S + A.Refresh() //just in case someone already made and named the same disease + return A -/obj/item/organ/heart/gland/emp //TODO : Replace with something more interesting - cooldown_low = 900 - cooldown_high = 1600 - uses = 10 +/obj/item/organ/heart/gland/trauma //TODO : Replace with something more interesting + cooldown_low = 800 + cooldown_high = 1200 + uses = 5 icon_state = "emp" - mind_control_uses = 1 + mind_control_uses = 3 mind_control_duration = 1800 -/obj/item/organ/heart/gland/emp/activate() +/obj/item/organ/heart/gland/trauma/activate() to_chat(owner, "You feel a spike of pain in your head.") - empulse(get_turf(owner), 2, 5, 1) + if(prob(33)) + owner.gain_trauma_type(BRAIN_TRAUMA_SPECIAL, TRUE) + else + if(prob(20)) + owner.gain_trauma_type(BRAIN_TRAUMA_SEVERE, TRUE) + else + owner.gain_trauma_type(BRAIN_TRAUMA_MILD, TRUE) /obj/item/organ/heart/gland/spiderman cooldown_low = 450 cooldown_high = 900 - uses = 10 + uses = -1 icon_state = "spider" mind_control_uses = 2 mind_control_duration = 2400 @@ -211,7 +248,8 @@ /obj/item/organ/heart/gland/spiderman/activate() to_chat(owner, "You feel something crawling in your skin.") owner.faction |= "spiders" - new /obj/structure/spider/spiderling(owner.loc) + var/obj/structure/spider/spiderling/S = new(owner.drop_location()) + S.directive = "Protect your nest inside [owner.real_name]." /obj/item/organ/heart/gland/egg cooldown_low = 300 @@ -225,71 +263,60 @@ /obj/item/organ/heart/gland/egg/activate() to_chat(owner, "You lay an egg!") - var/obj/item/reagent_containers/food/snacks/egg/egg = new(owner.loc) + var/obj/item/reagent_containers/food/snacks/egg/egg = new(owner.drop_location()) egg.reagents.add_reagent("sacid",20) egg.desc += " It smells bad." -/obj/item/organ/heart/gland/bloody - cooldown_low = 200 - cooldown_high = 400 +/obj/item/organ/heart/gland/electric + cooldown_low = 800 + cooldown_high = 1200 uses = -1 - mind_control_uses = 1 - mind_control_duration = 450 + mind_control_uses = 2 + mind_control_duration = 900 -/obj/item/organ/heart/gland/bloody/activate() - owner.blood_volume -= 20 - owner.visible_message("[owner]'s skin erupts with blood!",\ - "Blood pours from your skin!") +/obj/item/organ/heart/gland/electric/Insert(mob/living/carbon/M, special = 0) + ..() + owner.add_trait(TRAIT_SHOCKIMMUNE, "abductor_gland") - for(var/turf/T in oview(3,owner)) //Make this respect walls and such - owner.add_splatter_floor(T) - for(var/mob/living/carbon/human/H in oview(3,owner)) //Blood decals for simple animals would be neat. aka Carp with blood on it. - H.add_mob_blood(owner) +/obj/item/organ/heart/gland/electric/Remove(mob/living/carbon/M, special = 0) + owner.remove_trait(TRAIT_SHOCKIMMUNE, "abductor_gland") + ..() +/obj/item/organ/heart/gland/electric/activate() + owner.visible_message("[owner]'s skin starts emitting electric arcs!",\ + "You feel electric energy building up inside you!") + playsound(get_turf(owner), "sparks", 100, 1, -1) + addtimer(CALLBACK(src, .proc/zap), rand(30, 100)) -/obj/item/organ/heart/gland/bodysnatch - cooldown_low = 600 - cooldown_high = 600 - human_only = 1 - uses = 1 - mind_control_uses = 1 - mind_control_duration = 600 +/obj/item/organ/heart/gland/electric/proc/zap() + tesla_zap(owner, 4, 8000, FALSE, TRUE) + playsound(get_turf(owner), 'sound/magic/lightningshock.ogg', 50, 1) -/obj/item/organ/heart/gland/bodysnatch/activate() - to_chat(owner, "You feel something moving around inside you...") - //spawn cocoon with clone greytide snpc inside - if(ishuman(owner)) - var/obj/structure/spider/cocoon/abductor/C = new (get_turf(owner)) - C.Copy(owner) - C.Start() - owner.adjustBruteLoss(40) - owner.add_splatter_floor() +/obj/item/organ/heart/gland/chem + cooldown_low = 50 + cooldown_high = 50 + uses = -1 + mind_control_uses = 3 + mind_control_duration = 1200 + var/list/possible_reagents = list() -/obj/structure/spider/cocoon/abductor - name = "slimy cocoon" - desc = "Something is moving inside." - icon = 'icons/effects/effects.dmi' - icon_state = "cocoon_large3" - color = rgb(10,120,10) - density = TRUE - var/hatch_time = 0 - -/obj/structure/spider/cocoon/abductor/proc/Copy(mob/living/carbon/human/H) - var/mob/living/carbon/human/interactive/greytide/clone = new(src) - clone.hardset_dna(H.dna.uni_identity,H.dna.struc_enzymes,H.real_name, H.dna.blood_type, H.dna.species, H.dna.features) - -/obj/structure/spider/cocoon/abductor/proc/Start() - hatch_time = world.time + 600 - START_PROCESSING(SSobj, src) - -/obj/structure/spider/cocoon/abductor/process() - if(world.time > hatch_time) - STOP_PROCESSING(SSobj, src) - for(var/mob/M in contents) - src.visible_message("[src] hatches!") - M.forceMove(drop_location()) - qdel(src) +/obj/item/organ/heart/gland/chem/Initialize() + ..() + for(var/X in subtypesof(/datum/reagent/drug)) + var/datum/reagent/R = X + possible_reagents += initial(R.id) + for(var/X in subtypesof(/datum/reagent/medicine)) + var/datum/reagent/R = X + possible_reagents += initial(R.id) + for(var/X in typesof(/datum/reagent/toxin)) + var/datum/reagent/R = X + possible_reagents += initial(R.id) +/obj/item/organ/heart/gland/chem/activate() + var/chem_to_add = pick(possible_reagents) + owner.reagents.add_reagent(chem_to_add, 2) + owner.adjustToxLoss(-2, TRUE, TRUE) + ..() /obj/item/organ/heart/gland/plasma cooldown_low = 1200 diff --git a/code/game/gamemodes/miniantags/abduction/machinery/camera.dm b/code/modules/antagonists/abductor/machinery/camera.dm similarity index 99% rename from code/game/gamemodes/miniantags/abduction/machinery/camera.dm rename to code/modules/antagonists/abductor/machinery/camera.dm index fd9ca0a658..b5e979033d 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/camera.dm +++ b/code/modules/antagonists/abductor/machinery/camera.dm @@ -9,7 +9,7 @@ var/datum/action/innate/vest_disguise_swap/vest_disguise_action = new var/datum/action/innate/set_droppoint/set_droppoint_action = new var/obj/machinery/abductor/console/console - station_lock_override = TRUE + lock_override = TRUE icon = 'icons/obj/abductor.dmi' icon_state = "camera" diff --git a/code/game/gamemodes/miniantags/abduction/machinery/console.dm b/code/modules/antagonists/abductor/machinery/console.dm similarity index 100% rename from code/game/gamemodes/miniantags/abduction/machinery/console.dm rename to code/modules/antagonists/abductor/machinery/console.dm diff --git a/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm b/code/modules/antagonists/abductor/machinery/dispenser.dm similarity index 100% rename from code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm rename to code/modules/antagonists/abductor/machinery/dispenser.dm diff --git a/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm b/code/modules/antagonists/abductor/machinery/experiment.dm similarity index 100% rename from code/game/gamemodes/miniantags/abduction/machinery/experiment.dm rename to code/modules/antagonists/abductor/machinery/experiment.dm diff --git a/code/game/gamemodes/miniantags/abduction/machinery/pad.dm b/code/modules/antagonists/abductor/machinery/pad.dm similarity index 100% rename from code/game/gamemodes/miniantags/abduction/machinery/pad.dm rename to code/modules/antagonists/abductor/machinery/pad.dm diff --git a/code/modules/antagonists/blob/blob.dm b/code/modules/antagonists/blob/blob.dm new file mode 100644 index 0000000000..964bc99311 --- /dev/null +++ b/code/modules/antagonists/blob/blob.dm @@ -0,0 +1,67 @@ +/datum/antagonist/blob + name = "Blob" + roundend_category = "blobs" + antagpanel_category = "Blob" + job_rank = ROLE_BLOB + + var/datum/action/innate/blobpop/pop_action + var/starting_points_human_blob = 60 + var/point_rate_human_blob = 2 + +/datum/antagonist/blob/roundend_report() + var/basic_report = ..() + //Display max blobpoints for blebs that lost + if(isovermind(owner.current)) //embarrasing if not + var/mob/camera/blob/overmind = owner.current + if(!overmind.victory_in_progress) //if it won this doesn't really matter + var/point_report = "
[owner.name] took over [overmind.max_count] tiles at the height of its growth." + return basic_report+point_report + return basic_report + +/datum/antagonist/blob/greet() + if(!isovermind(owner.current)) + to_chat(owner,"You feel bloated.") + +/datum/antagonist/blob/on_gain() + create_objectives() + . = ..() + +/datum/antagonist/blob/proc/create_objectives() + var/datum/objective/blob_takeover/main = new + main.owner = owner + objectives += main + owner.objectives |= objectives + +/datum/antagonist/blob/apply_innate_effects(mob/living/mob_override) + if(!isovermind(owner.current)) + if(!pop_action) + pop_action = new + pop_action.Grant(owner.current) + +/datum/objective/blob_takeover + explanation_text = "Reach critical mass!" + +//Non-overminds get this on blob antag assignment +/datum/action/innate/blobpop + name = "Pop" + desc = "Unleash the blob" + icon_icon = 'icons/mob/blob.dmi' + button_icon_state = "blob" + +/datum/action/innate/blobpop/Activate() + var/mob/old_body = owner + var/datum/antagonist/blob/blobtag = owner.mind.has_antag_datum(/datum/antagonist/blob) + if(!blobtag) + Remove() + return + var/mob/camera/blob/B = new /mob/camera/blob(get_turf(old_body), blobtag.starting_points_human_blob) + owner.mind.transfer_to(B) + old_body.gib() + B.place_blob_core(blobtag.point_rate_human_blob, pop_override = TRUE) + +/datum/antagonist/blob/antag_listing_status() + . = ..() + if(owner && owner.current) + var/mob/camera/blob/B = owner.current + if(istype(B)) + . += "(Progress: [B.blobs_legit.len]/[B.blobwincount])" \ No newline at end of file diff --git a/code/game/gamemodes/blob/blob_report.dm b/code/modules/antagonists/blob/blob/blob_report.dm similarity index 100% rename from code/game/gamemodes/blob/blob_report.dm rename to code/modules/antagonists/blob/blob/blob_report.dm diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/modules/antagonists/blob/blob/blobs/blob_mobs.dm similarity index 98% rename from code/game/gamemodes/blob/blobs/blob_mobs.dm rename to code/modules/antagonists/blob/blob/blobs/blob_mobs.dm index 9e4bf51d41..c9bb5fdc9a 100644 --- a/code/game/gamemodes/blob/blobs/blob_mobs.dm +++ b/code/modules/antagonists/blob/blob/blobs/blob_mobs.dm @@ -7,7 +7,7 @@ /mob/living/simple_animal/hostile/blob icon = 'icons/mob/blob.dmi' pass_flags = PASSBLOB - faction = list("blob") + faction = list(ROLE_BLOB) bubble_icon = "blob" speak_emote = null //so we use verb_yell/verb_say/etc atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) @@ -115,8 +115,7 @@ is_zombie = 1 if(H.wear_suit) var/obj/item/clothing/suit/armor/A = H.wear_suit - if(A.armor && A.armor["melee"]) - maxHealth += A.armor["melee"] //That zombie's got armor, I want armor! + maxHealth += A.armor.melee //That zombie's got armor, I want armor! maxHealth += 40 health = maxHealth name = "blob zombie" diff --git a/code/game/gamemodes/blob/blobs/core.dm b/code/modules/antagonists/blob/blob/blobs/core.dm similarity index 100% rename from code/game/gamemodes/blob/blobs/core.dm rename to code/modules/antagonists/blob/blob/blobs/core.dm diff --git a/code/game/gamemodes/blob/blobs/factory.dm b/code/modules/antagonists/blob/blob/blobs/factory.dm similarity index 100% rename from code/game/gamemodes/blob/blobs/factory.dm rename to code/modules/antagonists/blob/blob/blobs/factory.dm diff --git a/code/game/gamemodes/blob/blobs/node.dm b/code/modules/antagonists/blob/blob/blobs/node.dm similarity index 100% rename from code/game/gamemodes/blob/blobs/node.dm rename to code/modules/antagonists/blob/blob/blobs/node.dm diff --git a/code/game/gamemodes/blob/blobs/resource.dm b/code/modules/antagonists/blob/blob/blobs/resource.dm similarity index 100% rename from code/game/gamemodes/blob/blobs/resource.dm rename to code/modules/antagonists/blob/blob/blobs/resource.dm diff --git a/code/game/gamemodes/blob/blobs/shield.dm b/code/modules/antagonists/blob/blob/blobs/shield.dm similarity index 100% rename from code/game/gamemodes/blob/blobs/shield.dm rename to code/modules/antagonists/blob/blob/blobs/shield.dm diff --git a/code/game/gamemodes/blob/overmind.dm b/code/modules/antagonists/blob/blob/overmind.dm similarity index 99% rename from code/game/gamemodes/blob/overmind.dm rename to code/modules/antagonists/blob/blob/overmind.dm index a37a8d5c22..6c852684b2 100644 --- a/code/game/gamemodes/blob/overmind.dm +++ b/code/modules/antagonists/blob/blob/overmind.dm @@ -18,7 +18,7 @@ GLOBAL_LIST_EMPTY(blob_nodes) layer = FLY_LAYER pass_flags = PASSBLOB - faction = list("blob") + faction = list(ROLE_BLOB) lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE var/obj/structure/blob/core/blob_core = null // The blob overmind's core var/blob_points = 0 @@ -115,7 +115,7 @@ GLOBAL_LIST_EMPTY(blob_nodes) if(!Ablob.blob_allowed) continue - if(!("blob" in L.faction)) + if(!(ROLE_BLOB in L.faction)) playsound(L, 'sound/effects/splat.ogg', 50, 1) L.death() new/mob/living/simple_animal/hostile/blob/blobspore(T) diff --git a/code/game/gamemodes/blob/powers.dm b/code/modules/antagonists/blob/blob/powers.dm similarity index 98% rename from code/game/gamemodes/blob/powers.dm rename to code/modules/antagonists/blob/blob/powers.dm index e88cc8fb96..131f3c14cc 100644 --- a/code/game/gamemodes/blob/powers.dm +++ b/code/modules/antagonists/blob/blob/powers.dm @@ -13,13 +13,13 @@ if(!placement_override) if(!pop_override) for(var/mob/living/M in range(7, src)) - if("blob" in M.faction) + if(ROLE_BLOB in M.faction) continue if(M.client) to_chat(src, "There is someone too close to place your blob core!") return 0 for(var/mob/living/M in view(13, src)) - if("blob" in M.faction) + if(ROLE_BLOB in M.faction) continue if(M.client) to_chat(src, "Someone could see your blob core from here!") @@ -157,7 +157,7 @@ return var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as a [blob_reagent_datum.name] blobbernaut?", ROLE_BLOB, null, ROLE_BLOB, 50) //players must answer rapidly - if(candidates.len) //if we got at least one candidate, they're a blobbernaut now. + if(LAZYLEN(candidates)) //if we got at least one candidate, they're a blobbernaut now. B.max_integrity = initial(B.max_integrity) * 0.25 //factories that produced a blobbernaut have much lower health B.obj_integrity = min(B.obj_integrity, B.max_integrity) B.update_icon() @@ -251,7 +251,7 @@ if(can_buy(4)) var/attacksuccess = FALSE for(var/mob/living/L in T) - if("blob" in L.faction) //no friendly/dead fire + if(ROLE_BLOB in L.faction) //no friendly/dead fire continue if(L.stat != DEAD) attacksuccess = TRUE diff --git a/code/game/gamemodes/blob/theblob.dm b/code/modules/antagonists/blob/blob/theblob.dm similarity index 98% rename from code/game/gamemodes/blob/theblob.dm rename to code/modules/antagonists/blob/blob/theblob.dm index b9a8ee6046..c110ef272c 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/modules/antagonists/blob/blob/theblob.dm @@ -250,7 +250,7 @@ to_chat(user, "Effects: [scannerreport()]") /obj/structure/blob/attack_animal(mob/living/simple_animal/M) - if("blob" in M.faction) //sorry, but you can't kill the blob as a blobbernaut + if(ROLE_BLOB in M.faction) //sorry, but you can't kill the blob as a blobbernaut return ..() @@ -275,7 +275,7 @@ return 0 var/armor_protection = 0 if(damage_flag) - armor_protection = armor[damage_flag] + armor_protection = armor.getRating(damage_flag) damage_amount = round(damage_amount * (100 - armor_protection)*0.01, 0.1) if(overmind && damage_flag) damage_amount = overmind.blob_reagent_datum.damage_reaction(src, damage_amount, damage_type, damage_flag) diff --git a/code/game/gamemodes/miniantags/borer/borer.dm b/code/modules/antagonists/borer/borer.dm similarity index 100% rename from code/game/gamemodes/miniantags/borer/borer.dm rename to code/modules/antagonists/borer/borer.dm diff --git a/code/game/gamemodes/miniantags/borer/borer_chemicals.dm b/code/modules/antagonists/borer/borer_chemicals.dm similarity index 100% rename from code/game/gamemodes/miniantags/borer/borer_chemicals.dm rename to code/modules/antagonists/borer/borer_chemicals.dm diff --git a/code/game/gamemodes/miniantags/borer/borer_event.dm b/code/modules/antagonists/borer/borer_event.dm similarity index 100% rename from code/game/gamemodes/miniantags/borer/borer_event.dm rename to code/modules/antagonists/borer/borer_event.dm diff --git a/code/game/gamemodes/miniantags/borer/borer_html.dm b/code/modules/antagonists/borer/borer_html.dm similarity index 100% rename from code/game/gamemodes/miniantags/borer/borer_html.dm rename to code/modules/antagonists/borer/borer_html.dm diff --git a/code/game/gamemodes/miniantags/borer/borer_topic.dm b/code/modules/antagonists/borer/borer_topic.dm similarity index 100% rename from code/game/gamemodes/miniantags/borer/borer_topic.dm rename to code/modules/antagonists/borer/borer_topic.dm diff --git a/code/game/gamemodes/miniantags/borer/syndi_borer.dm b/code/modules/antagonists/borer/syndi_borer.dm similarity index 100% rename from code/game/gamemodes/miniantags/borer/syndi_borer.dm rename to code/modules/antagonists/borer/syndi_borer.dm diff --git a/code/modules/antagonists/brother/brother.dm b/code/modules/antagonists/brother/brother.dm new file mode 100644 index 0000000000..f692335ee1 --- /dev/null +++ b/code/modules/antagonists/brother/brother.dm @@ -0,0 +1,154 @@ +/datum/antagonist/brother + name = "Brother" + antagpanel_category = "Brother" + job_rank = ROLE_BROTHER + var/special_role = "blood brother" + var/datum/team/brother_team/team + +/datum/antagonist/brother/create_team(datum/team/brother_team/new_team) + if(!new_team) + return + if(!istype(new_team)) + stack_trace("Wrong team type passed to [type] initialization.") + team = new_team + +/datum/antagonist/brother/get_team() + return team + +/datum/antagonist/brother/on_gain() + SSticker.mode.brothers += owner + objectives += team.objectives + owner.objectives += objectives + owner.special_role = special_role + finalize_brother() + return ..() + +/datum/antagonist/brother/on_removal() + SSticker.mode.brothers -= owner + owner.objectives -= objectives + if(owner.current) + to_chat(owner.current,"You are no longer the [special_role]!") + owner.special_role = null + return ..() + +/datum/antagonist/brother/proc/give_meeting_area() + if(!owner.current || !team || !team.meeting_area) + return + to_chat(owner.current, "Your designated meeting area: [team.meeting_area]") + antag_memory += "Meeting Area: [team.meeting_area]
" + +/datum/antagonist/brother/greet() + var/brother_text = "" + var/list/brothers = team.members - owner + for(var/i = 1 to brothers.len) + var/datum/mind/M = brothers[i] + brother_text += M.name + if(i == brothers.len - 1) + brother_text += " and " + else if(i != brothers.len) + brother_text += ", " + to_chat(owner.current, "You are the [owner.special_role] of [brother_text].") + to_chat(owner.current, "The Syndicate only accepts those that have proven themself. Prove yourself and prove your [team.member_name]s by completing your objectives together!") + owner.announce_objectives() + give_meeting_area() + +/datum/antagonist/brother/proc/finalize_brother() + SSticker.mode.update_brother_icons_added(owner) + +/datum/antagonist/brother/admin_add(datum/mind/new_owner,mob/admin) + //show list of possible brothers + var/list/candidates = list() + for(var/mob/living/L in GLOB.alive_mob_list) + if(!L.mind || L.mind == new_owner || !can_be_owned(L.mind)) + continue + candidates[L.mind.name] = L.mind + + var/choice = input(admin,"Choose the blood brother.", "Brother") as null|anything in candidates + if(!choice) + return + var/datum/mind/bro = candidates[choice] + var/datum/team/brother_team/T = new + T.add_member(new_owner) + T.add_member(bro) + T.pick_meeting_area() + T.forge_brother_objectives() + new_owner.add_antag_datum(/datum/antagonist/brother,T) + bro.add_antag_datum(/datum/antagonist/brother, T) + T.update_name() + message_admins("[key_name_admin(admin)] made [new_owner.current] and [bro.current] into blood brothers.") + log_admin("[key_name(admin)] made [new_owner.current] and [bro.current] into blood brothers.") + +/datum/team/brother_team + name = "brotherhood" + member_name = "blood brother" + var/meeting_area + var/static/meeting_areas = list("The Bar", "Dorms", "Escape Dock", "Arrivals", "Holodeck", "Primary Tool Storage", "Recreation Area", "Chapel", "Library") + +/datum/team/brother_team/is_solo() + return FALSE + +/datum/team/brother_team/proc/pick_meeting_area() + meeting_area = pick(meeting_areas) + meeting_areas -= meeting_area + +/datum/team/brother_team/proc/update_name() + var/list/last_names = list() + for(var/datum/mind/M in members) + var/list/split_name = splittext(M.name," ") + last_names += split_name[split_name.len] + + name = last_names.Join(" & ") + +/datum/team/brother_team/roundend_report() + var/list/parts = list() + + parts += "The blood brothers of [name] were:" + for(var/datum/mind/M in members) + parts += printplayer(M) + var/win = TRUE + var/objective_count = 1 + for(var/datum/objective/objective in objectives) + if(objective.check_completion()) + parts += "Objective #[objective_count]: [objective.explanation_text] Success!" + else + parts += "Objective #[objective_count]: [objective.explanation_text] Fail." + win = FALSE + objective_count++ + if(win) + parts += "The blood brothers were successful!" + else + parts += "The blood brothers have failed!" + + return "
[parts.Join("
")]
" + +/datum/team/brother_team/proc/add_objective(datum/objective/O, needs_target = FALSE) + O.team = src + if(needs_target) + O.find_target() + O.update_explanation_text() + objectives += O + +/datum/team/brother_team/proc/forge_brother_objectives() + objectives = list() + var/is_hijacker = prob(10) + for(var/i = 1 to max(1, CONFIG_GET(number/brother_objectives_amount) + (members.len > 2) - is_hijacker)) + forge_single_objective() + if(is_hijacker) + if(!locate(/datum/objective/hijack) in objectives) + add_objective(new/datum/objective/hijack) + else if(!locate(/datum/objective/escape) in objectives) + add_objective(new/datum/objective/escape) + +/datum/team/brother_team/proc/forge_single_objective() + if(prob(50)) + if(LAZYLEN(active_ais()) && prob(100/GLOB.joined_player_list.len)) + add_objective(new/datum/objective/destroy, TRUE) + else if(prob(30)) + add_objective(new/datum/objective/maroon, TRUE) + else + add_objective(new/datum/objective/assassinate, TRUE) + else + add_objective(new/datum/objective/steal, TRUE) + +/datum/team/brother_team/antag_listing_name() + return "[name] blood brothers" \ No newline at end of file diff --git a/code/game/gamemodes/changeling/cellular_emporium.dm b/code/modules/antagonists/changeling/cellular_emporium.dm similarity index 100% rename from code/game/gamemodes/changeling/cellular_emporium.dm rename to code/modules/antagonists/changeling/cellular_emporium.dm diff --git a/code/modules/antagonists/changeling/changeling.dm b/code/modules/antagonists/changeling/changeling.dm new file mode 100644 index 0000000000..c15b655da9 --- /dev/null +++ b/code/modules/antagonists/changeling/changeling.dm @@ -0,0 +1,538 @@ +#define LING_FAKEDEATH_TIME 400 //40 seconds +#define LING_DEAD_GENETICDAMAGE_HEAL_CAP 50 //The lowest value of geneticdamage handle_changeling() can take it to while dead. +#define LING_ABSORB_RECENT_SPEECH 8 //The amount of recent spoken lines to gain on absorbing a mob + +/datum/antagonist/changeling + name = "Changeling" + roundend_category = "changelings" + antagpanel_category = "Changeling" + job_rank = ROLE_CHANGELING + + var/you_are_greet = TRUE + var/give_objectives = TRUE + var/team_mode = FALSE //Should assign team objectives ? + + //Changeling Stuff + + var/list/stored_profiles = list() //list of datum/changelingprofile + var/datum/changelingprofile/first_prof = null + var/dna_max = 6 //How many extra DNA strands the changeling can store for transformation. + var/absorbedcount = 0 + var/chem_charges = 20 + var/chem_storage = 75 + var/chem_recharge_rate = 1 + var/chem_recharge_slowdown = 0 + var/sting_range = 2 + var/changelingID = "Changeling" + var/geneticdamage = 0 + var/isabsorbing = 0 + var/islinking = 0 + var/geneticpoints = 10 + var/purchasedpowers = list() + var/mimicing = "" + var/canrespec = 0 + var/changeling_speak = 0 + var/datum/dna/chosen_dna + var/obj/effect/proc_holder/changeling/sting/chosen_sting + var/datum/cellular_emporium/cellular_emporium + var/datum/action/innate/cellular_emporium/emporium_action + + // wip stuff + var/static/list/all_powers = typecacheof(/obj/effect/proc_holder/changeling,TRUE) + + +/datum/antagonist/changeling/Destroy() + QDEL_NULL(cellular_emporium) + QDEL_NULL(emporium_action) + . = ..() + +/datum/antagonist/changeling/proc/generate_name() + var/honorific + if(owner.current.gender == FEMALE) + honorific = "Ms." + else + honorific = "Mr." + if(GLOB.possible_changeling_IDs.len) + changelingID = pick(GLOB.possible_changeling_IDs) + GLOB.possible_changeling_IDs -= changelingID + changelingID = "[honorific] [changelingID]" + else + changelingID = "[honorific] [rand(1,999)]" + +/datum/antagonist/changeling/proc/create_actions() + cellular_emporium = new(src) + emporium_action = new(cellular_emporium) + +/datum/antagonist/changeling/on_gain() + generate_name() + create_actions() + reset_powers() + create_initial_profile() + if(give_objectives) + if(team_mode) + forge_team_objectives() + forge_objectives() + remove_clownmut() + . = ..() + +/datum/antagonist/changeling/on_removal() + remove_changeling_powers() + owner.objectives -= objectives + . = ..() + +/datum/antagonist/changeling/proc/remove_clownmut() + if (owner) + var/mob/living/carbon/human/H = owner.current + if(istype(H) && owner.assigned_role == "Clown") + to_chat(H, "You have evolved beyond your clownish nature, allowing you to wield weapons without harming yourself.") + H.dna.remove_mutation(CLOWNMUT) + +/datum/antagonist/changeling/proc/reset_properties() + changeling_speak = 0 + chosen_sting = null + geneticpoints = initial(geneticpoints) + sting_range = initial(sting_range) + chem_storage = initial(chem_storage) + chem_recharge_rate = initial(chem_recharge_rate) + chem_charges = min(chem_charges, chem_storage) + chem_recharge_slowdown = initial(chem_recharge_slowdown) + mimicing = "" + +/datum/antagonist/changeling/proc/remove_changeling_powers() + if(ishuman(owner.current) || ismonkey(owner.current)) + reset_properties() + for(var/obj/effect/proc_holder/changeling/p in purchasedpowers) + if(p.always_keep) + continue + purchasedpowers -= p + p.on_refund(owner.current) + + //MOVE THIS + if(owner.current.hud_used) + owner.current.hud_used.lingstingdisplay.icon_state = null + owner.current.hud_used.lingstingdisplay.invisibility = INVISIBILITY_ABSTRACT + +/datum/antagonist/changeling/proc/reset_powers() + if(purchasedpowers) + remove_changeling_powers() + //Repurchase free powers. + for(var/path in all_powers) + var/obj/effect/proc_holder/changeling/S = new path() + if(!S.dna_cost) + if(!has_sting(S)) + purchasedpowers += S + S.on_purchase(owner.current,TRUE) + +/datum/antagonist/changeling/proc/has_sting(obj/effect/proc_holder/changeling/power) + for(var/obj/effect/proc_holder/changeling/P in purchasedpowers) + if(initial(power.name) == P.name) + return TRUE + return FALSE + + +/datum/antagonist/changeling/proc/purchase_power(sting_name) + var/obj/effect/proc_holder/changeling/thepower = null + + for(var/path in all_powers) + var/obj/effect/proc_holder/changeling/S = path + if(initial(S.name) == sting_name) + thepower = new path() + break + + if(!thepower) + to_chat(owner.current, "This is awkward. Changeling power purchase failed, please report this bug to a coder!") + return + + if(absorbedcount < thepower.req_dna) + to_chat(owner.current, "We lack the energy to evolve this ability!") + return + + if(has_sting(thepower)) + to_chat(owner.current, "We have already evolved this ability!") + return + + if(thepower.dna_cost < 0) + to_chat(owner.current, "We cannot evolve this ability.") + return + + if(geneticpoints < thepower.dna_cost) + to_chat(owner.current, "We have reached our capacity for abilities.") + return + + if(owner.current.has_trait(TRAIT_FAKEDEATH))//To avoid potential exploits by buying new powers while in stasis, which clears your verblist. + to_chat(owner.current, "We lack the energy to evolve new abilities right now.") + return + + geneticpoints -= thepower.dna_cost + purchasedpowers += thepower + thepower.on_purchase(owner.current) + +/datum/antagonist/changeling/proc/readapt() + if(!ishuman(owner.current)) + to_chat(owner.current, "We can't remove our evolutions in this form!") + return + if(canrespec) + to_chat(owner.current, "We have removed our evolutions from this form, and are now ready to readapt.") + reset_powers() + canrespec = 0 + SSblackbox.record_feedback("tally", "changeling_power_purchase", 1, "Readapt") + return 1 + else + to_chat(owner.current, "You lack the power to readapt your evolutions!") + return 0 + +//Called in life() +/datum/antagonist/changeling/proc/regenerate() + var/mob/living/carbon/the_ling = owner.current + if(istype(the_ling)) + emporium_action.Grant(the_ling) + if(the_ling.stat == DEAD) + chem_charges = min(max(0, chem_charges + chem_recharge_rate - chem_recharge_slowdown), (chem_storage*0.5)) + geneticdamage = max(LING_DEAD_GENETICDAMAGE_HEAL_CAP,geneticdamage-1) + else //not dead? no chem/geneticdamage caps. + chem_charges = min(max(0, chem_charges + chem_recharge_rate - chem_recharge_slowdown), chem_storage) + geneticdamage = max(0, geneticdamage-1) + + +/datum/antagonist/changeling/proc/get_dna(dna_owner) + for(var/datum/changelingprofile/prof in stored_profiles) + if(dna_owner == prof.name) + return prof + +/datum/antagonist/changeling/proc/has_dna(datum/dna/tDNA) + for(var/datum/changelingprofile/prof in stored_profiles) + if(tDNA.is_same_as(prof.dna)) + return TRUE + return FALSE + +/datum/antagonist/changeling/proc/can_absorb_dna(mob/living/carbon/human/target, var/verbose=1) + var/mob/living/carbon/user = owner.current + if(!istype(user)) + return + if(stored_profiles.len) + var/datum/changelingprofile/prof = stored_profiles[1] + if(prof.dna == user.dna && stored_profiles.len >= dna_max)//If our current DNA is the stalest, we gotta ditch it. + if(verbose) + to_chat(user, "We have reached our capacity to store genetic information! We must transform before absorbing more.") + return + if(!target) + return + if(NO_DNA_COPY in target.dna.species.species_traits) + if(verbose) + to_chat(user, "[target] is not compatible with our biology.") + return + if((target.has_trait(TRAIT_NOCLONE)) || (target.has_trait(TRAIT_NOCLONE))) + if(verbose) + to_chat(user, "DNA of [target] is ruined beyond usability!") + return + if(!ishuman(target))//Absorbing monkeys is entirely possible, but it can cause issues with transforming. That's what lesser form is for anyway! + if(verbose) + to_chat(user, "We could gain no benefit from absorbing a lesser creature.") + return + if(has_dna(target.dna)) + if(verbose) + to_chat(user, "We already have this DNA in storage!") + return + if(!target.has_dna()) + if(verbose) + to_chat(user, "[target] is not compatible with our biology.") + return + return 1 + + +/datum/antagonist/changeling/proc/create_profile(mob/living/carbon/human/H, protect = 0) + var/datum/changelingprofile/prof = new + + H.dna.real_name = H.real_name //Set this again, just to be sure that it's properly set. + var/datum/dna/new_dna = new H.dna.type + H.dna.copy_dna(new_dna) + prof.dna = new_dna + prof.name = H.real_name + prof.protected = protect + + prof.underwear = H.underwear + prof.undershirt = H.undershirt + prof.socks = H.socks + + var/list/slots = list("head", "wear_mask", "back", "wear_suit", "w_uniform", "shoes", "belt", "gloves", "glasses", "ears", "wear_id", "s_store") + for(var/slot in slots) + if(slot in H.vars) + var/obj/item/I = H.vars[slot] + if(!I) + continue + prof.name_list[slot] = I.name + prof.appearance_list[slot] = I.appearance + prof.flags_cover_list[slot] = I.flags_cover + prof.item_color_list[slot] = I.item_color + prof.item_state_list[slot] = I.item_state + prof.exists_list[slot] = 1 + else + continue + + return prof + +/datum/antagonist/changeling/proc/add_profile(datum/changelingprofile/prof) + if(stored_profiles.len > dna_max) + if(!push_out_profile()) + return + + if(!first_prof) + first_prof = prof + + stored_profiles += prof + absorbedcount++ + +/datum/antagonist/changeling/proc/add_new_profile(mob/living/carbon/human/H, protect = 0) + var/datum/changelingprofile/prof = create_profile(H, protect) + add_profile(prof) + return prof + +/datum/antagonist/changeling/proc/remove_profile(mob/living/carbon/human/H, force = 0) + for(var/datum/changelingprofile/prof in stored_profiles) + if(H.real_name == prof.name) + if(prof.protected && !force) + continue + stored_profiles -= prof + qdel(prof) + +/datum/antagonist/changeling/proc/get_profile_to_remove() + for(var/datum/changelingprofile/prof in stored_profiles) + if(!prof.protected) + return prof + +/datum/antagonist/changeling/proc/push_out_profile() + var/datum/changelingprofile/removeprofile = get_profile_to_remove() + if(removeprofile) + stored_profiles -= removeprofile + return 1 + return 0 + + +/datum/antagonist/changeling/proc/create_initial_profile() + var/mob/living/carbon/C = owner.current //only carbons have dna now, so we have to typecaste + if(ishuman(C)) + add_new_profile(C) + +/datum/antagonist/changeling/apply_innate_effects() + //Brains optional. + var/mob/living/carbon/C = owner.current + if(istype(C)) + var/obj/item/organ/brain/B = C.getorganslot(ORGAN_SLOT_BRAIN) + if(B) + B.vital = FALSE + B.decoy_override = TRUE + update_changeling_icons_added() + return + +/datum/antagonist/changeling/remove_innate_effects() + update_changeling_icons_removed() + return + + +/datum/antagonist/changeling/greet() + if (you_are_greet) + to_chat(owner.current, "You are [changelingID], a changeling! You have absorbed and taken the form of a human.") + to_chat(owner.current, "Use say \":g message\" to communicate with your fellow changelings.") + to_chat(owner.current, "You must complete the following tasks:") + owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/ling_aler.ogg', 100, FALSE, pressure_affected = FALSE) + + owner.announce_objectives() + +/datum/antagonist/changeling/farewell() + to_chat(owner.current, "You grow weak and lose your powers! You are no longer a changeling and are stuck in your current form!") + +/datum/antagonist/changeling/proc/forge_team_objectives() + if(GLOB.changeling_team_objective_type) + var/datum/objective/changeling_team_objective/team_objective = new GLOB.changeling_team_objective_type + team_objective.owner = owner + objectives += team_objective + return + +/datum/antagonist/changeling/proc/forge_objectives() + //OBJECTIVES - random traitor objectives. Unique objectives "steal brain" and "identity theft". + //No escape alone because changelings aren't suited for it and it'd probably just lead to rampant robusting + //If it seems like they'd be able to do it in play, add a 10% chance to have to escape alone + + var/escape_objective_possible = TRUE + + //if there's a team objective, check if it's compatible with escape objectives + for(var/datum/objective/changeling_team_objective/CTO in objectives) + if(!CTO.escape_objective_compatible) + escape_objective_possible = FALSE + break + + var/datum/objective/absorb/absorb_objective = new + absorb_objective.owner = owner + absorb_objective.gen_amount_goal(6, 8) + objectives += absorb_objective + + if(prob(60)) + if(prob(85)) + var/datum/objective/steal/steal_objective = new + steal_objective.owner = owner + steal_objective.find_target() + objectives += steal_objective + else + var/datum/objective/download/download_objective = new + download_objective.owner = owner + download_objective.gen_amount_goal() + objectives += download_objective + + var/list/active_ais = active_ais() + if(active_ais.len && prob(100/GLOB.joined_player_list.len)) + var/datum/objective/destroy/destroy_objective = new + destroy_objective.owner = owner + destroy_objective.find_target() + objectives += destroy_objective + else + if(prob(70)) + var/datum/objective/assassinate/kill_objective = new + kill_objective.owner = owner + if(team_mode) //No backstabbing while in a team + kill_objective.find_target_by_role(role = "Changeling", role_type = 1, invert = 1) + else + kill_objective.find_target() + objectives += kill_objective + else + var/datum/objective/maroon/maroon_objective = new + maroon_objective.owner = owner + if(team_mode) + maroon_objective.find_target_by_role(role = "Changeling", role_type = 1, invert = 1) + else + maroon_objective.find_target() + objectives += maroon_objective + + if (!(locate(/datum/objective/escape) in objectives) && escape_objective_possible) + var/datum/objective/escape/escape_with_identity/identity_theft = new + identity_theft.owner = owner + identity_theft.target = maroon_objective.target + identity_theft.update_explanation_text() + objectives += identity_theft + escape_objective_possible = FALSE + + if (!(locate(/datum/objective/escape) in objectives) && escape_objective_possible) + if(prob(50)) + var/datum/objective/escape/escape_objective = new + escape_objective.owner = owner + objectives += escape_objective + else + var/datum/objective/escape/escape_with_identity/identity_theft = new + identity_theft.owner = owner + if(team_mode) + identity_theft.find_target_by_role(role = "Changeling", role_type = 1, invert = 1) + else + identity_theft.find_target() + objectives += identity_theft + escape_objective_possible = FALSE + + owner.objectives |= objectives + +/datum/antagonist/changeling/proc/update_changeling_icons_added() + var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_CHANGELING] + hud.join_hud(owner.current) + set_antag_hud(owner.current, "changling") + +/datum/antagonist/changeling/proc/update_changeling_icons_removed() + var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_CHANGELING] + hud.leave_hud(owner.current) + set_antag_hud(owner.current, null) + +/datum/antagonist/changeling/admin_add(datum/mind/new_owner,mob/admin) + . = ..() + to_chat(new_owner.current, "Our powers have awoken. A flash of memory returns to us...we are [changelingID], a changeling!") + +/datum/antagonist/changeling/get_admin_commands() + . = ..() + if(stored_profiles.len && (owner.current.real_name != first_prof.name)) + .["Transform to initial appearance."] = CALLBACK(src,.proc/admin_restore_appearance) + +/datum/antagonist/changeling/proc/admin_restore_appearance(mob/admin) + if(!stored_profiles.len || !iscarbon(owner.current)) + to_chat(admin, "Resetting DNA failed!") + else + var/mob/living/carbon/C = owner.current + first_prof.dna.transfer_identity(C, transfer_SE=1) + C.real_name = first_prof.name + C.updateappearance(mutcolor_update=1) + C.domutcheck() + +// Profile + +/datum/changelingprofile + var/name = "a bug" + + var/protected = 0 + + var/datum/dna/dna = null + var/list/name_list = list() //associative list of slotname = itemname + var/list/appearance_list = list() + var/list/flags_cover_list = list() + var/list/exists_list = list() + var/list/item_color_list = list() + var/list/item_state_list = list() + + var/underwear + var/undershirt + var/socks + +/datum/changelingprofile/Destroy() + qdel(dna) + . = ..() + +/datum/changelingprofile/proc/copy_profile(datum/changelingprofile/newprofile) + newprofile.name = name + newprofile.protected = protected + newprofile.dna = new dna.type + dna.copy_dna(newprofile.dna) + newprofile.name_list = name_list.Copy() + newprofile.appearance_list = appearance_list.Copy() + newprofile.flags_cover_list = flags_cover_list.Copy() + newprofile.exists_list = exists_list.Copy() + newprofile.item_color_list = item_color_list.Copy() + newprofile.item_state_list = item_state_list.Copy() + newprofile.underwear = underwear + newprofile.undershirt = undershirt + newprofile.socks = socks + + +/datum/antagonist/changeling/xenobio + name = "Xenobio Changeling" + give_objectives = FALSE + show_in_roundend = FALSE //These are here for admin tracking purposes only + you_are_greet = FALSE + +/datum/antagonist/changeling/roundend_report() + var/list/parts = list() + + var/changelingwin = 1 + if(!owner.current) + changelingwin = 0 + + parts += printplayer(owner) + + //Removed sanity if(changeling) because we -want- a runtime to inform us that the changelings list is incorrect and needs to be fixed. + parts += "Changeling ID: [changelingID]." + parts += "Genomes Extracted: [absorbedcount]" + parts += " " + if(objectives.len) + var/count = 1 + for(var/datum/objective/objective in objectives) + if(objective.check_completion()) + parts += "Objective #[count]: [objective.explanation_text] Success!
" + else + parts += "Objective #[count]: [objective.explanation_text] Fail." + changelingwin = 0 + count++ + + if(changelingwin) + parts += "The changeling was successful!" + else + parts += "The changeling has failed." + + return parts.Join("
") + +/datum/antagonist/changeling/antag_listing_name() + return ..() + "([changelingID])" + +/datum/antagonist/changeling/xenobio/antag_listing_name() + return ..() + "(Xenobio)" \ No newline at end of file diff --git a/code/game/gamemodes/changeling/changeling_power.dm b/code/modules/antagonists/changeling/changeling_power.dm similarity index 93% rename from code/game/gamemodes/changeling/changeling_power.dm rename to code/modules/antagonists/changeling/changeling_power.dm index 5b07e0e369..0b4f015824 100644 --- a/code/game/gamemodes/changeling/changeling_power.dm +++ b/code/modules/antagonists/changeling/changeling_power.dm @@ -1,78 +1,78 @@ -/* - * Don't use the apostrophe in name or desc. Causes script errors. - * TODO: combine atleast some of the functionality with /proc_holder/spell - */ - -/obj/effect/proc_holder/changeling - panel = "Changeling" - name = "Prototype Sting" - desc = "" // Fluff - var/helptext = "" // Details - var/chemical_cost = 0 // negative chemical cost is for passive abilities (chemical glands) - var/dna_cost = -1 //cost of the sting in dna points. 0 = auto-purchase, -1 = cannot be purchased - var/req_dna = 0 //amount of dna needed to use this ability. Changelings always have atleast 1 - var/req_human = 0 //if you need to be human to use this ability - var/req_stat = CONSCIOUS // CONSCIOUS, UNCONSCIOUS or DEAD - var/always_keep = 0 // important for abilities like revive that screw you if you lose them. - var/ignores_fakedeath = FALSE // usable with the FAKEDEATH flag - - -/obj/effect/proc_holder/changeling/proc/on_purchase(mob/user, is_respec) - if(!is_respec) - SSblackbox.record_feedback("tally", "changeling_power_purchase", 1, name) - -/obj/effect/proc_holder/changeling/proc/on_refund(mob/user) - return - -/obj/effect/proc_holder/changeling/Click() - var/mob/user = usr - if(!user || !user.mind || !user.mind.has_antag_datum(/datum/antagonist/changeling)) - return - try_to_sting(user) - -/obj/effect/proc_holder/changeling/proc/try_to_sting(mob/user, mob/target) - if(!can_sting(user, target)) - return - var/datum/antagonist/changeling/c = user.mind.has_antag_datum(/datum/antagonist/changeling) - if(sting_action(user, target)) - SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("[name]")) - sting_feedback(user, target) - c.chem_charges -= chemical_cost - -/obj/effect/proc_holder/changeling/proc/sting_action(mob/user, mob/target) - return 0 - -/obj/effect/proc_holder/changeling/proc/sting_feedback(mob/user, mob/target) - return 0 - -//Fairly important to remember to return 1 on success >.< -/obj/effect/proc_holder/changeling/proc/can_sting(mob/user, mob/target) - if(!ishuman(user) && !ismonkey(user)) //typecast everything from mob to carbon from this point onwards - return 0 - if(req_human && !ishuman(user)) - to_chat(user, "We cannot do that in this form!") - return 0 - var/datum/antagonist/changeling/c = user.mind.has_antag_datum(/datum/antagonist/changeling) - if(c.chem_charges < chemical_cost) - to_chat(user, "We require at least [chemical_cost] unit\s of chemicals to do that!") - return 0 - if(c.absorbedcount < req_dna) - to_chat(user, "We require at least [req_dna] sample\s of compatible DNA.") - return 0 - if(req_stat < user.stat) - to_chat(user, "We are incapacitated.") - return 0 - if((user.status_flags & FAKEDEATH) && (!ignores_fakedeath)) - to_chat(user, "We are incapacitated.") - return 0 - return 1 - -//used in /mob/Stat() -/obj/effect/proc_holder/changeling/proc/can_be_used_by(mob/user) - if(!user || QDELETED(user)) - return 0 - if(!ishuman(user) && !ismonkey(user)) - return 0 - if(req_human && !ishuman(user)) - return 0 - return 1 +/* + * Don't use the apostrophe in name or desc. Causes script errors. + * TODO: combine atleast some of the functionality with /proc_holder/spell + */ + +/obj/effect/proc_holder/changeling + panel = "Changeling" + name = "Prototype Sting" + desc = "" // Fluff + var/helptext = "" // Details + var/chemical_cost = 0 // negative chemical cost is for passive abilities (chemical glands) + var/dna_cost = -1 //cost of the sting in dna points. 0 = auto-purchase, -1 = cannot be purchased + var/req_dna = 0 //amount of dna needed to use this ability. Changelings always have atleast 1 + var/req_human = 0 //if you need to be human to use this ability + var/req_stat = CONSCIOUS // CONSCIOUS, UNCONSCIOUS or DEAD + var/always_keep = 0 // important for abilities like revive that screw you if you lose them. + var/ignores_fakedeath = FALSE // usable with the FAKEDEATH flag + + +/obj/effect/proc_holder/changeling/proc/on_purchase(mob/user, is_respec) + if(!is_respec) + SSblackbox.record_feedback("tally", "changeling_power_purchase", 1, name) + +/obj/effect/proc_holder/changeling/proc/on_refund(mob/user) + return + +/obj/effect/proc_holder/changeling/Click() + var/mob/user = usr + if(!user || !user.mind || !user.mind.has_antag_datum(/datum/antagonist/changeling)) + return + try_to_sting(user) + +/obj/effect/proc_holder/changeling/proc/try_to_sting(mob/user, mob/target) + if(!can_sting(user, target)) + return + var/datum/antagonist/changeling/c = user.mind.has_antag_datum(/datum/antagonist/changeling) + if(sting_action(user, target)) + SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("[name]")) + sting_feedback(user, target) + c.chem_charges -= chemical_cost + +/obj/effect/proc_holder/changeling/proc/sting_action(mob/user, mob/target) + return 0 + +/obj/effect/proc_holder/changeling/proc/sting_feedback(mob/user, mob/target) + return 0 + +//Fairly important to remember to return 1 on success >.< +/obj/effect/proc_holder/changeling/proc/can_sting(mob/living/user, mob/target) + if(!ishuman(user) && !ismonkey(user)) //typecast everything from mob to carbon from this point onwards + return 0 + if(req_human && !ishuman(user)) + to_chat(user, "We cannot do that in this form!") + return 0 + var/datum/antagonist/changeling/c = user.mind.has_antag_datum(/datum/antagonist/changeling) + if(c.chem_charges < chemical_cost) + to_chat(user, "We require at least [chemical_cost] unit\s of chemicals to do that!") + return 0 + if(c.absorbedcount < req_dna) + to_chat(user, "We require at least [req_dna] sample\s of compatible DNA.") + return 0 + if(req_stat < user.stat) + to_chat(user, "We are incapacitated.") + return 0 + if((user.has_trait(TRAIT_FAKEDEATH)) && (!ignores_fakedeath)) + to_chat(user, "We are incapacitated.") + return 0 + return 1 + +//used in /mob/Stat() +/obj/effect/proc_holder/changeling/proc/can_be_used_by(mob/user) + if(!user || QDELETED(user)) + return 0 + if(!ishuman(user) && !ismonkey(user)) + return 0 + if(req_human && !ishuman(user)) + return 0 + return 1 diff --git a/code/game/gamemodes/changeling/powers/absorb.dm b/code/modules/antagonists/changeling/powers/absorb.dm similarity index 97% rename from code/game/gamemodes/changeling/powers/absorb.dm rename to code/modules/antagonists/changeling/powers/absorb.dm index bd64175780..4857975d6e 100644 --- a/code/game/gamemodes/changeling/powers/absorb.dm +++ b/code/modules/antagonists/changeling/powers/absorb.dm @@ -1,113 +1,113 @@ -/obj/effect/proc_holder/changeling/absorbDNA - name = "Absorb DNA" - desc = "Absorb the DNA of our victim." - chemical_cost = 0 - dna_cost = 0 - req_human = 1 - -/obj/effect/proc_holder/changeling/absorbDNA/can_sting(mob/living/carbon/user) - if(!..()) - return - - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - if(changeling.isabsorbing) - to_chat(user, "We are already absorbing!") - return - - if(!user.pulling || !iscarbon(user.pulling)) - to_chat(user, "We must be grabbing a creature to absorb them!") - return - if(user.grab_state <= GRAB_NECK) - to_chat(user, "We must have a tighter grip to absorb this creature!") - return - - var/mob/living/carbon/target = user.pulling - return changeling.can_absorb_dna(target) - - - -/obj/effect/proc_holder/changeling/absorbDNA/sting_action(mob/user) - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - var/mob/living/carbon/human/target = user.pulling - changeling.isabsorbing = 1 - for(var/i in 1 to 3) - switch(i) - if(1) - to_chat(user, "This creature is compatible. We must hold still...") - if(2) - user.visible_message("[user] extends a proboscis!", "We extend a proboscis.") - if(3) - user.visible_message("[user] stabs [target] with the proboscis!", "We stab [target] with the proboscis.") - to_chat(target, "You feel a sharp stabbing pain!") - target.take_overall_damage(40) - - SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("Absorb DNA", "[i]")) - if(!do_mob(user, target, 150)) - to_chat(user, "Our absorption of [target] has been interrupted!") - changeling.isabsorbing = 0 - return - - SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("Absorb DNA", "4")) - user.visible_message("[user] sucks the fluids from [target]!", "We have absorbed [target].") - to_chat(target, "You are absorbed by the changeling!") - - if(!changeling.has_dna(target.dna)) - changeling.add_new_profile(target) - - if(user.nutrition < NUTRITION_LEVEL_WELL_FED) - user.nutrition = min((user.nutrition + target.nutrition), NUTRITION_LEVEL_WELL_FED) - - if(target.mind)//if the victim has got a mind - // Absorb a lizard, speak Draconic. - user.copy_known_languages_from(target) - - target.mind.show_memory(user, 0) //I can read your mind, kekeke. Output all their notes. - - //Some of target's recent speech, so the changeling can attempt to imitate them better. - //Recent as opposed to all because rounds tend to have a LOT of text. - var/list/recent_speech = list() - - var/list/say_log = target.logging[INDIVIDUAL_SAY_LOG] - - if(LAZYLEN(say_log) > LING_ABSORB_RECENT_SPEECH) - recent_speech = say_log.Copy(say_log.len-LING_ABSORB_RECENT_SPEECH+1,0) //0 so len-LING_ARS+1 to end of list - else - for(var/spoken_memory in say_log) - if(recent_speech.len >= LING_ABSORB_RECENT_SPEECH) - break - recent_speech[spoken_memory] = say_log[spoken_memory] - - if(recent_speech.len) - changeling.antag_memory += "Some of [target]'s speech patterns, we should study these to better impersonate them!
" - to_chat(user, "Some of [target]'s speech patterns, we should study these to better impersonate them!") - for(var/spoken_memory in recent_speech) - changeling.antag_memory += "\"[recent_speech[spoken_memory]]\"
" - to_chat(user, "\"[recent_speech[spoken_memory]]\"") - changeling.antag_memory += "We have no more knowledge of [target]'s speech patterns.
" - to_chat(user, "We have no more knowledge of [target]'s speech patterns.") - - - var/datum/antagonist/changeling/target_ling = target.mind.has_antag_datum(/datum/antagonist/changeling) - if(target_ling)//If the target was a changeling, suck out their extra juice and objective points! - changeling.chem_charges += min(target_ling.chem_charges, changeling.chem_storage) - changeling.absorbedcount += (target_ling.absorbedcount) - - target_ling.stored_profiles.len = 1 - target_ling.absorbedcount = 0 - - - changeling.chem_charges=min(changeling.chem_charges+10, changeling.chem_storage) - - changeling.isabsorbing = 0 - changeling.canrespec = 1 - - target.death(0) - target.Drain() - return TRUE - - - -//Absorbs the target DNA. -//datum/changeling/proc/absorb_dna(mob/living/carbon/T, mob/user) - -//datum/changeling/proc/store_dna(datum/dna/new_dna, mob/user) +/obj/effect/proc_holder/changeling/absorbDNA + name = "Absorb DNA" + desc = "Absorb the DNA of our victim." + chemical_cost = 0 + dna_cost = 0 + req_human = 1 + +/obj/effect/proc_holder/changeling/absorbDNA/can_sting(mob/living/carbon/user) + if(!..()) + return + + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + if(changeling.isabsorbing) + to_chat(user, "We are already absorbing!") + return + + if(!user.pulling || !iscarbon(user.pulling)) + to_chat(user, "We must be grabbing a creature to absorb them!") + return + if(user.grab_state <= GRAB_NECK) + to_chat(user, "We must have a tighter grip to absorb this creature!") + return + + var/mob/living/carbon/target = user.pulling + return changeling.can_absorb_dna(target) + + + +/obj/effect/proc_holder/changeling/absorbDNA/sting_action(mob/user) + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + var/mob/living/carbon/human/target = user.pulling + changeling.isabsorbing = 1 + for(var/i in 1 to 3) + switch(i) + if(1) + to_chat(user, "This creature is compatible. We must hold still...") + if(2) + user.visible_message("[user] extends a proboscis!", "We extend a proboscis.") + if(3) + user.visible_message("[user] stabs [target] with the proboscis!", "We stab [target] with the proboscis.") + to_chat(target, "You feel a sharp stabbing pain!") + target.take_overall_damage(40) + + SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("Absorb DNA", "[i]")) + if(!do_mob(user, target, 150)) + to_chat(user, "Our absorption of [target] has been interrupted!") + changeling.isabsorbing = 0 + return + + SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("Absorb DNA", "4")) + user.visible_message("[user] sucks the fluids from [target]!", "We have absorbed [target].") + to_chat(target, "You are absorbed by the changeling!") + + if(!changeling.has_dna(target.dna)) + changeling.add_new_profile(target) + + if(user.nutrition < NUTRITION_LEVEL_WELL_FED) + user.nutrition = min((user.nutrition + target.nutrition), NUTRITION_LEVEL_WELL_FED) + + if(target.mind)//if the victim has got a mind + // Absorb a lizard, speak Draconic. + user.copy_known_languages_from(target) + + target.mind.show_memory(user, 0) //I can read your mind, kekeke. Output all their notes. + + //Some of target's recent speech, so the changeling can attempt to imitate them better. + //Recent as opposed to all because rounds tend to have a LOT of text. + var/list/recent_speech = list() + + var/list/say_log = target.logging[INDIVIDUAL_SAY_LOG] + + if(LAZYLEN(say_log) > LING_ABSORB_RECENT_SPEECH) + recent_speech = say_log.Copy(say_log.len-LING_ABSORB_RECENT_SPEECH+1,0) //0 so len-LING_ARS+1 to end of list + else + for(var/spoken_memory in say_log) + if(recent_speech.len >= LING_ABSORB_RECENT_SPEECH) + break + recent_speech[spoken_memory] = say_log[spoken_memory] + + if(recent_speech.len) + changeling.antag_memory += "Some of [target]'s speech patterns, we should study these to better impersonate them!
" + to_chat(user, "Some of [target]'s speech patterns, we should study these to better impersonate them!") + for(var/spoken_memory in recent_speech) + changeling.antag_memory += "\"[recent_speech[spoken_memory]]\"
" + to_chat(user, "\"[recent_speech[spoken_memory]]\"") + changeling.antag_memory += "We have no more knowledge of [target]'s speech patterns.
" + to_chat(user, "We have no more knowledge of [target]'s speech patterns.") + + + var/datum/antagonist/changeling/target_ling = target.mind.has_antag_datum(/datum/antagonist/changeling) + if(target_ling)//If the target was a changeling, suck out their extra juice and objective points! + changeling.chem_charges += min(target_ling.chem_charges, changeling.chem_storage) + changeling.absorbedcount += (target_ling.absorbedcount) + + target_ling.stored_profiles.len = 1 + target_ling.absorbedcount = 0 + + + changeling.chem_charges=min(changeling.chem_charges+10, changeling.chem_storage) + + changeling.isabsorbing = 0 + changeling.canrespec = 1 + + target.death(0) + target.Drain() + return TRUE + + + +//Absorbs the target DNA. +//datum/changeling/proc/absorb_dna(mob/living/carbon/T, mob/user) + +//datum/changeling/proc/store_dna(datum/dna/new_dna, mob/user) diff --git a/code/game/gamemodes/changeling/powers/adrenaline.dm b/code/modules/antagonists/changeling/powers/adrenaline.dm similarity index 100% rename from code/game/gamemodes/changeling/powers/adrenaline.dm rename to code/modules/antagonists/changeling/powers/adrenaline.dm diff --git a/code/game/gamemodes/changeling/powers/augmented_eyesight.dm b/code/modules/antagonists/changeling/powers/augmented_eyesight.dm similarity index 100% rename from code/game/gamemodes/changeling/powers/augmented_eyesight.dm rename to code/modules/antagonists/changeling/powers/augmented_eyesight.dm diff --git a/code/game/gamemodes/changeling/powers/biodegrade.dm b/code/modules/antagonists/changeling/powers/biodegrade.dm similarity index 100% rename from code/game/gamemodes/changeling/powers/biodegrade.dm rename to code/modules/antagonists/changeling/powers/biodegrade.dm diff --git a/code/game/gamemodes/changeling/powers/chameleon_skin.dm b/code/modules/antagonists/changeling/powers/chameleon_skin.dm similarity index 100% rename from code/game/gamemodes/changeling/powers/chameleon_skin.dm rename to code/modules/antagonists/changeling/powers/chameleon_skin.dm diff --git a/code/game/gamemodes/changeling/powers/digitalcamo.dm b/code/modules/antagonists/changeling/powers/digitalcamo.dm similarity index 100% rename from code/game/gamemodes/changeling/powers/digitalcamo.dm rename to code/modules/antagonists/changeling/powers/digitalcamo.dm diff --git a/code/game/gamemodes/changeling/powers/fakedeath.dm b/code/modules/antagonists/changeling/powers/fakedeath.dm similarity index 88% rename from code/game/gamemodes/changeling/powers/fakedeath.dm rename to code/modules/antagonists/changeling/powers/fakedeath.dm index 330488f6da..ff0658bc27 100644 --- a/code/game/gamemodes/changeling/powers/fakedeath.dm +++ b/code/modules/antagonists/changeling/powers/fakedeath.dm @@ -1,37 +1,37 @@ -/obj/effect/proc_holder/changeling/fakedeath - name = "Reviving Stasis" - desc = "We fall into a stasis, allowing us to regenerate and trick our enemies." - chemical_cost = 15 - dna_cost = 0 - req_dna = 1 - req_stat = DEAD - -//Fake our own death and fully heal. You will appear to be dead but regenerate fully after a short delay. -/obj/effect/proc_holder/changeling/fakedeath/sting_action(mob/living/user) - to_chat(user, "We begin our stasis, preparing energy to arise once more.") - if(user.stat != DEAD) - user.emote("deathgasp") - user.tod = worldtime2text() - user.status_flags |= FAKEDEATH //play dead - user.update_stat() - user.update_canmove() - - addtimer(CALLBACK(src, .proc/ready_to_regenerate, user), LING_FAKEDEATH_TIME, TIMER_UNIQUE) - return TRUE - -/obj/effect/proc_holder/changeling/fakedeath/proc/ready_to_regenerate(mob/user) - if(user && user.mind) - var/datum/antagonist/changeling/C = user.mind.has_antag_datum(/datum/antagonist/changeling) - if(C && C.purchasedpowers) - to_chat(user, "We are ready to revive.") - C.purchasedpowers += new /obj/effect/proc_holder/changeling/revive(null) - -/obj/effect/proc_holder/changeling/fakedeath/can_sting(mob/user) - if(user.status_flags & FAKEDEATH) - to_chat(user, "We are already reviving.") - return - if(!user.stat) //Confirmation for living changelings if they want to fake their death - switch(alert("Are we sure we wish to fake our own death?",,"Yes", "No")) - if("No") - return - return ..() +/obj/effect/proc_holder/changeling/fakedeath + name = "Reviving Stasis" + desc = "We fall into a stasis, allowing us to regenerate and trick our enemies." + chemical_cost = 15 + dna_cost = 0 + req_dna = 1 + req_stat = DEAD + +//Fake our own death and fully heal. You will appear to be dead but regenerate fully after a short delay. +/obj/effect/proc_holder/changeling/fakedeath/sting_action(mob/living/user) + to_chat(user, "We begin our stasis, preparing energy to arise once more.") + if(user.stat != DEAD) + user.emote("deathgasp") + user.tod = worldtime2text() + user.fakedeath("changeling") //play dead + user.update_stat() + user.update_canmove() + + addtimer(CALLBACK(src, .proc/ready_to_regenerate, user), LING_FAKEDEATH_TIME, TIMER_UNIQUE) + return TRUE + +/obj/effect/proc_holder/changeling/fakedeath/proc/ready_to_regenerate(mob/user) + if(user && user.mind) + var/datum/antagonist/changeling/C = user.mind.has_antag_datum(/datum/antagonist/changeling) + if(C && C.purchasedpowers) + to_chat(user, "We are ready to revive.") + C.purchasedpowers += new /obj/effect/proc_holder/changeling/revive(null) + +/obj/effect/proc_holder/changeling/fakedeath/can_sting(mob/living/user) + if(user.has_trait(TRAIT_FAKEDEATH, "changeling")) + to_chat(user, "We are already reviving.") + return + if(!user.stat) //Confirmation for living changelings if they want to fake their death + switch(alert("Are we sure we wish to fake our own death?",,"Yes", "No")) + if("No") + return + return ..() diff --git a/code/game/gamemodes/changeling/powers/fleshmend.dm b/code/modules/antagonists/changeling/powers/fleshmend.dm similarity index 97% rename from code/game/gamemodes/changeling/powers/fleshmend.dm rename to code/modules/antagonists/changeling/powers/fleshmend.dm index df6a787d60..930b756b65 100644 --- a/code/game/gamemodes/changeling/powers/fleshmend.dm +++ b/code/modules/antagonists/changeling/powers/fleshmend.dm @@ -1,19 +1,19 @@ -/obj/effect/proc_holder/changeling/fleshmend - name = "Fleshmend" - desc = "Our flesh rapidly regenerates, healing our burns, bruises, and shortness of breath. Functions while unconscious." - helptext = "If we are on fire, the healing effect will not function. Does not regrow limbs or restore lost blood." - chemical_cost = 20 - dna_cost = 2 - req_stat = UNCONSCIOUS - -//Starts healing you every second for 10 seconds. -//Can be used whilst unconscious. -/obj/effect/proc_holder/changeling/fleshmend/sting_action(mob/living/user) - if(user.has_status_effect(STATUS_EFFECT_FLESHMEND)) - to_chat(user, "We are already fleshmending!") - return - to_chat(user, "We begin to heal rapidly.") - user.apply_status_effect(STATUS_EFFECT_FLESHMEND) - return TRUE - -//Check buffs.dm for the fleshmend status effect code +/obj/effect/proc_holder/changeling/fleshmend + name = "Fleshmend" + desc = "Our flesh rapidly regenerates, healing our burns, bruises, and shortness of breath. Functions while unconscious." + helptext = "If we are on fire, the healing effect will not function. Does not regrow limbs or restore lost blood." + chemical_cost = 20 + dna_cost = 2 + req_stat = UNCONSCIOUS + +//Starts healing you every second for 10 seconds. +//Can be used whilst unconscious. +/obj/effect/proc_holder/changeling/fleshmend/sting_action(mob/living/user) + if(user.has_status_effect(STATUS_EFFECT_FLESHMEND)) + to_chat(user, "We are already fleshmending!") + return + to_chat(user, "We begin to heal rapidly.") + user.apply_status_effect(STATUS_EFFECT_FLESHMEND) + return TRUE + +//Check buffs.dm for the fleshmend status effect code diff --git a/code/game/gamemodes/changeling/powers/headcrab.dm b/code/modules/antagonists/changeling/powers/headcrab.dm similarity index 100% rename from code/game/gamemodes/changeling/powers/headcrab.dm rename to code/modules/antagonists/changeling/powers/headcrab.dm diff --git a/code/game/gamemodes/changeling/powers/hivemind.dm b/code/modules/antagonists/changeling/powers/hivemind.dm similarity index 91% rename from code/game/gamemodes/changeling/powers/hivemind.dm rename to code/modules/antagonists/changeling/powers/hivemind.dm index 5d79a757ec..c84adc6e8f 100644 --- a/code/game/gamemodes/changeling/powers/hivemind.dm +++ b/code/modules/antagonists/changeling/powers/hivemind.dm @@ -1,93 +1,99 @@ -//HIVEMIND COMMUNICATION (:g) -/obj/effect/proc_holder/changeling/hivemind_comms - name = "Hivemind Communication" - desc = "We tune our senses to the airwaves to allow us to discreetly communicate and exchange DNA with other changelings." - helptext = "We will be able to talk with other changelings with :g. Exchanged DNA do not count towards absorb objectives." - dna_cost = 0 - chemical_cost = -1 - -/obj/effect/proc_holder/changeling/hivemind_comms/on_purchase(mob/user, is_respec) - ..() - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - changeling.changeling_speak = 1 - to_chat(user, "Use say \":g message\" to communicate with the other changelings.") - var/obj/effect/proc_holder/changeling/hivemind_upload/S1 = new - if(!changeling.has_sting(S1)) - changeling.purchasedpowers+=S1 - var/obj/effect/proc_holder/changeling/hivemind_download/S2 = new - if(!changeling.has_sting(S2)) - changeling.purchasedpowers+=S2 - -// HIVE MIND UPLOAD/DOWNLOAD DNA -GLOBAL_LIST_EMPTY(hivemind_bank) - -/obj/effect/proc_holder/changeling/hivemind_upload - name = "Hive Channel DNA" - desc = "Allows us to channel DNA in the airwaves to allow other changelings to absorb it." - chemical_cost = 10 - dna_cost = -1 - -/obj/effect/proc_holder/changeling/hivemind_upload/sting_action(var/mob/user) - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - var/list/names = list() - for(var/datum/changelingprofile/prof in changeling.stored_profiles) - if(!(prof in GLOB.hivemind_bank)) - names += prof.name - - if(names.len <= 0) - to_chat(user, "The airwaves already have all of our DNA.") - return - - var/chosen_name = input("Select a DNA to channel: ", "Channel DNA", null) as null|anything in names - if(!chosen_name) - return - - var/datum/changelingprofile/chosen_dna = changeling.get_dna(chosen_name) - if(!chosen_dna) - return - - var/datum/changelingprofile/uploaded_dna = new chosen_dna.type - chosen_dna.copy_profile(uploaded_dna) - GLOB.hivemind_bank += uploaded_dna - to_chat(user, "We channel the DNA of [chosen_name] to the air.") - return TRUE - -/obj/effect/proc_holder/changeling/hivemind_download - name = "Hive Absorb DNA" - desc = "Allows us to absorb DNA that has been channeled to the airwaves. Does not count towards absorb objectives." - chemical_cost = 10 - dna_cost = -1 - -/obj/effect/proc_holder/changeling/hivemind_download/can_sting(mob/living/carbon/user) - if(!..()) - return - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - var/datum/changelingprofile/first_prof = changeling.stored_profiles[1] - if(first_prof.name == user.real_name)//If our current DNA is the stalest, we gotta ditch it. - to_chat(user, "We have reached our capacity to store genetic information! We must transform before absorbing more.") - return - return 1 - -/obj/effect/proc_holder/changeling/hivemind_download/sting_action(mob/user) - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - var/list/names = list() - for(var/datum/changelingprofile/prof in GLOB.hivemind_bank) - if(!(prof in changeling.stored_profiles)) - names[prof.name] = prof - - if(names.len <= 0) - to_chat(user, "There's no new DNA to absorb from the air.") - return - - var/S = input("Select a DNA absorb from the air: ", "Absorb DNA", null) as null|anything in names - if(!S) - return - var/datum/changelingprofile/chosen_prof = names[S] - if(!chosen_prof) - return - - var/datum/changelingprofile/downloaded_prof = new chosen_prof.type - chosen_prof.copy_profile(downloaded_prof) - changeling.add_profile(downloaded_prof) - to_chat(user, "We absorb the DNA of [S] from the air.") - return TRUE +//HIVEMIND COMMUNICATION (:g) +/obj/effect/proc_holder/changeling/hivemind_comms + name = "Hivemind Communication" + desc = "We tune our senses to the airwaves to allow us to discreetly communicate and exchange DNA with other changelings." + helptext = "We will be able to talk with other changelings with :g. Exchanged DNA do not count towards absorb objectives." + dna_cost = 0 + chemical_cost = -1 + +/obj/effect/proc_holder/changeling/hivemind_comms/on_purchase(mob/user, is_respec) + ..() + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + changeling.changeling_speak = 1 + to_chat(user, "Use say \":g message\" to communicate with the other changelings.") + var/obj/effect/proc_holder/changeling/hivemind_upload/S1 = new + if(!changeling.has_sting(S1)) + changeling.purchasedpowers+=S1 + var/obj/effect/proc_holder/changeling/hivemind_download/S2 = new + if(!changeling.has_sting(S2)) + changeling.purchasedpowers+=S2 + +// HIVE MIND UPLOAD/DOWNLOAD DNA +GLOBAL_LIST_EMPTY(hivemind_bank) + +/obj/effect/proc_holder/changeling/hivemind_upload + name = "Hive Channel DNA" + desc = "Allows us to channel DNA in the airwaves to allow other changelings to absorb it." + chemical_cost = 10 + dna_cost = -1 + +/obj/effect/proc_holder/changeling/hivemind_upload/sting_action(var/mob/living/user) + if (user.has_trait(CHANGELING_HIVEMIND_MUTE)) + to_chat(user, "The poison in the air hinders our ability to interact with the hivemind.") + return + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + var/list/names = list() + for(var/datum/changelingprofile/prof in changeling.stored_profiles) + if(!(prof in GLOB.hivemind_bank)) + names += prof.name + + if(names.len <= 0) + to_chat(user, "The airwaves already have all of our DNA.") + return + + var/chosen_name = input("Select a DNA to channel: ", "Channel DNA", null) as null|anything in names + if(!chosen_name) + return + + var/datum/changelingprofile/chosen_dna = changeling.get_dna(chosen_name) + if(!chosen_dna) + return + + var/datum/changelingprofile/uploaded_dna = new chosen_dna.type + chosen_dna.copy_profile(uploaded_dna) + GLOB.hivemind_bank += uploaded_dna + to_chat(user, "We channel the DNA of [chosen_name] to the air.") + return TRUE + +/obj/effect/proc_holder/changeling/hivemind_download + name = "Hive Absorb DNA" + desc = "Allows us to absorb DNA that has been channeled to the airwaves. Does not count towards absorb objectives." + chemical_cost = 10 + dna_cost = -1 + +/obj/effect/proc_holder/changeling/hivemind_download/can_sting(mob/living/carbon/user) + if(!..()) + return + if (user.has_trait(CHANGELING_HIVEMIND_MUTE)) + to_chat(user, "The poison in the air hinders our ability to interact with the hivemind.") + return + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + var/datum/changelingprofile/first_prof = changeling.stored_profiles[1] + if(first_prof.name == user.real_name)//If our current DNA is the stalest, we gotta ditch it. + to_chat(user, "We have reached our capacity to store genetic information! We must transform before absorbing more.") + return + return 1 + +/obj/effect/proc_holder/changeling/hivemind_download/sting_action(mob/user) + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + var/list/names = list() + for(var/datum/changelingprofile/prof in GLOB.hivemind_bank) + if(!(prof in changeling.stored_profiles)) + names[prof.name] = prof + + if(names.len <= 0) + to_chat(user, "There's no new DNA to absorb from the air.") + return + + var/S = input("Select a DNA absorb from the air: ", "Absorb DNA", null) as null|anything in names + if(!S) + return + var/datum/changelingprofile/chosen_prof = names[S] + if(!chosen_prof) + return + + var/datum/changelingprofile/downloaded_prof = new chosen_prof.type + chosen_prof.copy_profile(downloaded_prof) + changeling.add_profile(downloaded_prof) + to_chat(user, "We absorb the DNA of [S] from the air.") + return TRUE diff --git a/code/game/gamemodes/changeling/powers/humanform.dm b/code/modules/antagonists/changeling/powers/humanform.dm similarity index 97% rename from code/game/gamemodes/changeling/powers/humanform.dm rename to code/modules/antagonists/changeling/powers/humanform.dm index 90ddfb0115..e04f00308f 100644 --- a/code/game/gamemodes/changeling/powers/humanform.dm +++ b/code/modules/antagonists/changeling/powers/humanform.dm @@ -1,30 +1,30 @@ -/obj/effect/proc_holder/changeling/humanform - name = "Human Form" - desc = "We change into a human." - chemical_cost = 5 - req_dna = 1 - -//Transform into a human. -/obj/effect/proc_holder/changeling/humanform/sting_action(mob/living/carbon/user) - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - var/list/names = list() - for(var/datum/changelingprofile/prof in changeling.stored_profiles) - names += "[prof.name]" - - var/chosen_name = input("Select the target DNA: ", "Target DNA", null) as null|anything in names - if(!chosen_name) - return - - var/datum/changelingprofile/chosen_prof = changeling.get_dna(chosen_name) - if(!chosen_prof) - return - if(!user || user.notransform) - return 0 - to_chat(user, "We transform our appearance.") - - changeling.purchasedpowers -= src - - var/newmob = user.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS) - - changeling_transform(newmob, chosen_prof) - return TRUE +/obj/effect/proc_holder/changeling/humanform + name = "Human Form" + desc = "We change into a human." + chemical_cost = 5 + req_dna = 1 + +//Transform into a human. +/obj/effect/proc_holder/changeling/humanform/sting_action(mob/living/carbon/user) + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + var/list/names = list() + for(var/datum/changelingprofile/prof in changeling.stored_profiles) + names += "[prof.name]" + + var/chosen_name = input("Select the target DNA: ", "Target DNA", null) as null|anything in names + if(!chosen_name) + return + + var/datum/changelingprofile/chosen_prof = changeling.get_dna(chosen_name) + if(!chosen_prof) + return + if(!user || user.notransform) + return 0 + to_chat(user, "We transform our appearance.") + + changeling.purchasedpowers -= src + + var/newmob = user.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS) + + changeling_transform(newmob, chosen_prof) + return TRUE diff --git a/code/game/gamemodes/changeling/powers/lesserform.dm b/code/modules/antagonists/changeling/powers/lesserform.dm similarity index 100% rename from code/game/gamemodes/changeling/powers/lesserform.dm rename to code/modules/antagonists/changeling/powers/lesserform.dm diff --git a/code/game/gamemodes/changeling/powers/linglink.dm b/code/modules/antagonists/changeling/powers/linglink.dm similarity index 100% rename from code/game/gamemodes/changeling/powers/linglink.dm rename to code/modules/antagonists/changeling/powers/linglink.dm diff --git a/code/game/gamemodes/changeling/powers/mimic_voice.dm b/code/modules/antagonists/changeling/powers/mimic_voice.dm similarity index 97% rename from code/game/gamemodes/changeling/powers/mimic_voice.dm rename to code/modules/antagonists/changeling/powers/mimic_voice.dm index 9c0d79e233..6808ecd61a 100644 --- a/code/game/gamemodes/changeling/powers/mimic_voice.dm +++ b/code/modules/antagonists/changeling/powers/mimic_voice.dm @@ -1,27 +1,27 @@ -/obj/effect/proc_holder/changeling/mimicvoice - name = "Mimic Voice" - desc = "We shape our vocal glands to sound like a desired voice." - helptext = "Will turn your voice into the name that you enter. We must constantly expend chemicals to maintain our form like this." - chemical_cost = 0 //constant chemical drain hardcoded - dna_cost = 1 - req_human = 1 - - -// Fake Voice -/obj/effect/proc_holder/changeling/mimicvoice/sting_action(mob/user) - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - if(changeling.mimicing) - changeling.mimicing = "" - changeling.chem_recharge_slowdown -= 0.5 - to_chat(user, "We return our vocal glands to their original position.") - return - - var/mimic_voice = stripped_input(user, "Enter a name to mimic.", "Mimic Voice", null, MAX_NAME_LEN) - if(!mimic_voice) - return - - changeling.mimicing = mimic_voice - changeling.chem_recharge_slowdown += 0.5 - to_chat(user, "We shape our glands to take the voice of [mimic_voice], this will slow down regenerating chemicals while active.") - to_chat(user, "Use this power again to return to our original voice and return chemical production to normal levels.") - return TRUE +/obj/effect/proc_holder/changeling/mimicvoice + name = "Mimic Voice" + desc = "We shape our vocal glands to sound like a desired voice." + helptext = "Will turn your voice into the name that you enter. We must constantly expend chemicals to maintain our form like this." + chemical_cost = 0 //constant chemical drain hardcoded + dna_cost = 1 + req_human = 1 + + +// Fake Voice +/obj/effect/proc_holder/changeling/mimicvoice/sting_action(mob/user) + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + if(changeling.mimicing) + changeling.mimicing = "" + changeling.chem_recharge_slowdown -= 0.5 + to_chat(user, "We return our vocal glands to their original position.") + return + + var/mimic_voice = stripped_input(user, "Enter a name to mimic.", "Mimic Voice", null, MAX_NAME_LEN) + if(!mimic_voice) + return + + changeling.mimicing = mimic_voice + changeling.chem_recharge_slowdown += 0.5 + to_chat(user, "We shape our glands to take the voice of [mimic_voice], this will slow down regenerating chemicals while active.") + to_chat(user, "Use this power again to return to our original voice and return chemical production to normal levels.") + return TRUE diff --git a/code/game/gamemodes/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm similarity index 100% rename from code/game/gamemodes/changeling/powers/mutations.dm rename to code/modules/antagonists/changeling/powers/mutations.dm diff --git a/code/game/gamemodes/changeling/powers/panacea.dm b/code/modules/antagonists/changeling/powers/panacea.dm similarity index 96% rename from code/game/gamemodes/changeling/powers/panacea.dm rename to code/modules/antagonists/changeling/powers/panacea.dm index 829b0a8512..93a05834fe 100644 --- a/code/game/gamemodes/changeling/powers/panacea.dm +++ b/code/modules/antagonists/changeling/powers/panacea.dm @@ -1,38 +1,38 @@ -/obj/effect/proc_holder/changeling/panacea - name = "Anatomic Panacea" - desc = "Expels impurifications from our form; curing diseases, removing parasites, sobering us, purging toxins and radiation, and resetting our genetic code completely." - helptext = "Can be used while unconscious." - chemical_cost = 20 - dna_cost = 1 - req_stat = UNCONSCIOUS - -//Heals the things that the other regenerative abilities don't. -/obj/effect/proc_holder/changeling/panacea/sting_action(mob/user) - to_chat(user, "We cleanse impurities from our form.") - - var/list/bad_organs = list( - user.getorgan(/obj/item/organ/body_egg), - user.getorgan(/obj/item/organ/zombie_infection)) - - for(var/o in bad_organs) - var/obj/item/organ/O = o - if(!istype(O)) - continue - - O.Remove(user) - if(iscarbon(user)) - var/mob/living/carbon/C = user - C.vomit(0, toxic = TRUE) - O.forceMove(get_turf(user)) - - user.reagents.add_reagent("mutadone", 10) - user.reagents.add_reagent("pen_acid", 20) - user.reagents.add_reagent("antihol", 10) - user.reagents.add_reagent("mannitol", 25) - - for(var/thing in user.viruses) - var/datum/disease/D = thing - if(D.severity == VIRUS_SEVERITY_POSITIVE) - continue - D.cure() - return TRUE +/obj/effect/proc_holder/changeling/panacea + name = "Anatomic Panacea" + desc = "Expels impurifications from our form; curing diseases, removing parasites, sobering us, purging toxins and radiation, and resetting our genetic code completely." + helptext = "Can be used while unconscious." + chemical_cost = 20 + dna_cost = 1 + req_stat = UNCONSCIOUS + +//Heals the things that the other regenerative abilities don't. +/obj/effect/proc_holder/changeling/panacea/sting_action(mob/user) + to_chat(user, "We cleanse impurities from our form.") + + var/list/bad_organs = list( + user.getorgan(/obj/item/organ/body_egg), + user.getorgan(/obj/item/organ/zombie_infection)) + + for(var/o in bad_organs) + var/obj/item/organ/O = o + if(!istype(O)) + continue + + O.Remove(user) + if(iscarbon(user)) + var/mob/living/carbon/C = user + C.vomit(0, toxic = TRUE) + O.forceMove(get_turf(user)) + + user.reagents.add_reagent("mutadone", 10) + user.reagents.add_reagent("pen_acid", 20) + user.reagents.add_reagent("antihol", 10) + user.reagents.add_reagent("mannitol", 25) + + for(var/thing in user.viruses) + var/datum/disease/D = thing + if(D.severity == VIRUS_SEVERITY_POSITIVE) + continue + D.cure() + return TRUE diff --git a/code/game/gamemodes/changeling/powers/regenerate.dm b/code/modules/antagonists/changeling/powers/regenerate.dm similarity index 87% rename from code/game/gamemodes/changeling/powers/regenerate.dm rename to code/modules/antagonists/changeling/powers/regenerate.dm index f2b13a5d09..99050417b8 100644 --- a/code/game/gamemodes/changeling/powers/regenerate.dm +++ b/code/modules/antagonists/changeling/powers/regenerate.dm @@ -28,7 +28,13 @@ C.regenerate_limbs(1) C.regenerate_organs() if(!user.getorganslot(ORGAN_SLOT_BRAIN)) - var/obj/item/organ/brain/changeling_brain/B = new() + var/obj/item/organ/brain/B + if(C.has_dna() && C.dna.species.mutant_brain) + B = new C.dna.species.mutant_brain() + else + B = new() + B.vital = FALSE + B.decoy_override = TRUE B.Insert(C) if(ishuman(user)) var/mob/living/carbon/human/H = user diff --git a/code/game/gamemodes/changeling/powers/revive.dm b/code/modules/antagonists/changeling/powers/revive.dm similarity index 86% rename from code/game/gamemodes/changeling/powers/revive.dm rename to code/modules/antagonists/changeling/powers/revive.dm index 716b41a837..4165eeeff2 100644 --- a/code/game/gamemodes/changeling/powers/revive.dm +++ b/code/modules/antagonists/changeling/powers/revive.dm @@ -1,37 +1,36 @@ -/obj/effect/proc_holder/changeling/revive - name = "Revive" - desc = "We regenerate, healing all damage from our form." - helptext = "Does not regrow lost organs or a missing head." - req_stat = DEAD - always_keep = TRUE - ignores_fakedeath = TRUE - -//Revive from revival stasis -/obj/effect/proc_holder/changeling/revive/sting_action(mob/living/carbon/user) - user.status_flags &= ~(FAKEDEATH) - user.tod = null - user.revive(full_heal = 1) - var/list/missing = user.get_missing_limbs() - missing -= "head" // headless changelings are funny - if(missing.len) - playsound(user, 'sound/magic/demon_consume.ogg', 50, 1) - user.visible_message("[user]'s missing limbs \ - reform, making a loud, grotesque sound!", - "Your limbs regrow, making a \ - loud, crunchy sound and giving you great pain!", - "You hear organic matter ripping \ - and tearing!") - user.emote("scream") - user.regenerate_limbs(0, list("head")) - user.regenerate_organs() - to_chat(user, "We have revived ourselves.") - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - changeling.purchasedpowers -= src - return TRUE - -/obj/effect/proc_holder/changeling/revive/can_be_used_by(mob/user) - if((user.stat != DEAD) && !(user.status_flags & FAKEDEATH)) - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - changeling.purchasedpowers -= src - return 0 - . = ..() +/obj/effect/proc_holder/changeling/revive + name = "Revive" + desc = "We regenerate, healing all damage from our form." + helptext = "Does not regrow lost organs or a missing head." + req_stat = DEAD + always_keep = TRUE + ignores_fakedeath = TRUE + +//Revive from revival stasis +/obj/effect/proc_holder/changeling/revive/sting_action(mob/living/carbon/user) + user.cure_fakedeath("changeling") + user.revive(full_heal = 1) + var/list/missing = user.get_missing_limbs() + missing -= "head" // headless changelings are funny + if(missing.len) + playsound(user, 'sound/magic/demon_consume.ogg', 50, 1) + user.visible_message("[user]'s missing limbs \ + reform, making a loud, grotesque sound!", + "Your limbs regrow, making a \ + loud, crunchy sound and giving you great pain!", + "You hear organic matter ripping \ + and tearing!") + user.emote("scream") + user.regenerate_limbs(0, list("head")) + user.regenerate_organs() + to_chat(user, "We have revived ourselves.") + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + changeling.purchasedpowers -= src + return TRUE + +/obj/effect/proc_holder/changeling/revive/can_be_used_by(mob/living/user) + if((user.stat != DEAD) && !(user.has_trait(TRAIT_FAKEDEATH))) + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + changeling.purchasedpowers -= src + return 0 + . = ..() diff --git a/code/game/gamemodes/changeling/powers/shriek.dm b/code/modules/antagonists/changeling/powers/shriek.dm similarity index 97% rename from code/game/gamemodes/changeling/powers/shriek.dm rename to code/modules/antagonists/changeling/powers/shriek.dm index 667dc06daf..ca79562081 100644 --- a/code/game/gamemodes/changeling/powers/shriek.dm +++ b/code/modules/antagonists/changeling/powers/shriek.dm @@ -1,42 +1,42 @@ -/obj/effect/proc_holder/changeling/resonant_shriek - name = "Resonant Shriek" - desc = "Our lungs and vocal cords shift, allowing us to briefly emit a noise that deafens and confuses the weak-minded." - helptext = "Emits a high-frequency sound that confuses and deafens humans, blows out nearby lights and overloads cyborg sensors." - chemical_cost = 20 - dna_cost = 1 - req_human = 1 - -//A flashy ability, good for crowd control and sewing chaos. -/obj/effect/proc_holder/changeling/resonant_shriek/sting_action(mob/user) - for(var/mob/living/M in get_hearers_in_view(4, user)) - if(iscarbon(M)) - var/mob/living/carbon/C = M - if(!C.mind || !C.mind.has_antag_datum(/datum/antagonist/changeling)) - C.adjustEarDamage(0, 30) - C.confused += 25 - C.Jitter(50) - else - SEND_SOUND(C, sound('sound/effects/screech.ogg')) - - if(issilicon(M)) - SEND_SOUND(M, sound('sound/weapons/flash.ogg')) - M.Knockdown(rand(100,200)) - - for(var/obj/machinery/light/L in range(4, user)) - L.on = 1 - L.break_light_tube() - return TRUE - -/obj/effect/proc_holder/changeling/dissonant_shriek - name = "Dissonant Shriek" - desc = "We shift our vocal cords to release a high-frequency sound that overloads nearby electronics." - chemical_cost = 20 - dna_cost = 1 - -//A flashy ability, good for crowd control and sewing chaos. -/obj/effect/proc_holder/changeling/dissonant_shriek/sting_action(mob/user) - for(var/obj/machinery/light/L in range(5, usr)) - L.on = 1 - L.break_light_tube() - empulse(get_turf(user), 2, 5, 1) - return TRUE +/obj/effect/proc_holder/changeling/resonant_shriek + name = "Resonant Shriek" + desc = "Our lungs and vocal cords shift, allowing us to briefly emit a noise that deafens and confuses the weak-minded." + helptext = "Emits a high-frequency sound that confuses and deafens humans, blows out nearby lights and overloads cyborg sensors." + chemical_cost = 20 + dna_cost = 1 + req_human = 1 + +//A flashy ability, good for crowd control and sewing chaos. +/obj/effect/proc_holder/changeling/resonant_shriek/sting_action(mob/user) + for(var/mob/living/M in get_hearers_in_view(4, user)) + if(iscarbon(M)) + var/mob/living/carbon/C = M + if(!C.mind || !C.mind.has_antag_datum(/datum/antagonist/changeling)) + C.adjustEarDamage(0, 30) + C.confused += 25 + C.Jitter(50) + else + SEND_SOUND(C, sound('sound/effects/screech.ogg')) + + if(issilicon(M)) + SEND_SOUND(M, sound('sound/weapons/flash.ogg')) + M.Knockdown(rand(100,200)) + + for(var/obj/machinery/light/L in range(4, user)) + L.on = 1 + L.break_light_tube() + return TRUE + +/obj/effect/proc_holder/changeling/dissonant_shriek + name = "Dissonant Shriek" + desc = "We shift our vocal cords to release a high-frequency sound that overloads nearby electronics." + chemical_cost = 20 + dna_cost = 1 + +//A flashy ability, good for crowd control and sewing chaos. +/obj/effect/proc_holder/changeling/dissonant_shriek/sting_action(mob/user) + for(var/obj/machinery/light/L in range(5, usr)) + L.on = 1 + L.break_light_tube() + empulse(get_turf(user), 2, 5, 1) + return TRUE diff --git a/code/game/gamemodes/changeling/powers/spiders.dm b/code/modules/antagonists/changeling/powers/spiders.dm similarity index 100% rename from code/game/gamemodes/changeling/powers/spiders.dm rename to code/modules/antagonists/changeling/powers/spiders.dm diff --git a/code/game/gamemodes/changeling/powers/strained_muscles.dm b/code/modules/antagonists/changeling/powers/strained_muscles.dm similarity index 91% rename from code/game/gamemodes/changeling/powers/strained_muscles.dm rename to code/modules/antagonists/changeling/powers/strained_muscles.dm index 10145c2bca..832f6073b6 100644 --- a/code/game/gamemodes/changeling/powers/strained_muscles.dm +++ b/code/modules/antagonists/changeling/powers/strained_muscles.dm @@ -16,7 +16,7 @@ if(active) to_chat(user, "Our muscles tense and strengthen.") else - user.status_flags &= ~GOTTAGOFAST + user.remove_trait(TRAIT_GOTTAGOFAST, "changeling_muscles") to_chat(user, "Our muscles relax.") if(stacks >= 10) to_chat(user, "We collapse in exhaustion.") @@ -29,12 +29,12 @@ /obj/effect/proc_holder/changeling/strained_muscles/proc/muscle_loop(mob/living/carbon/user) while(active) - user.status_flags |= GOTTAGOFAST + user.add_trait(TRAIT_GOTTAGOFAST, "changeling_muscles") if(user.stat != CONSCIOUS || user.staminaloss >= 90) active = !active to_chat(user, "Our muscles relax without the energy to strengthen them.") user.Knockdown(40) - user.status_flags &= ~GOTTAGOFAST + user.remove_trait(TRAIT_GOTTAGOFAST, "changeling_muscles") break stacks++ diff --git a/code/game/gamemodes/changeling/powers/tiny_prick.dm b/code/modules/antagonists/changeling/powers/tiny_prick.dm similarity index 95% rename from code/game/gamemodes/changeling/powers/tiny_prick.dm rename to code/modules/antagonists/changeling/powers/tiny_prick.dm index 450a482822..5c3ea52952 100644 --- a/code/game/gamemodes/changeling/powers/tiny_prick.dm +++ b/code/modules/antagonists/changeling/powers/tiny_prick.dm @@ -1,246 +1,246 @@ -/obj/effect/proc_holder/changeling/sting - name = "Tiny Prick" - desc = "Stabby stabby." - var/sting_icon = null - -/obj/effect/proc_holder/changeling/sting/Click() - var/mob/user = usr - if(!user || !user.mind) - return - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - if(!changeling) - return - if(!changeling.chosen_sting) - set_sting(user) - else - unset_sting(user) - return - -/obj/effect/proc_holder/changeling/sting/proc/set_sting(mob/user) - to_chat(user, "We prepare our sting, use alt+click or middle mouse button on target to sting them.") - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - changeling.chosen_sting = src - - user.hud_used.lingstingdisplay.icon_state = sting_icon - user.hud_used.lingstingdisplay.invisibility = 0 - -/obj/effect/proc_holder/changeling/sting/proc/unset_sting(mob/user) - to_chat(user, "We retract our sting, we can't sting anyone for now.") - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - changeling.chosen_sting = null - - user.hud_used.lingstingdisplay.icon_state = null - user.hud_used.lingstingdisplay.invisibility = INVISIBILITY_ABSTRACT - -/mob/living/carbon/proc/unset_sting() - if(mind) - var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling) - if(changeling && changeling.chosen_sting) - changeling.chosen_sting.unset_sting(src) - -/obj/effect/proc_holder/changeling/sting/can_sting(mob/user, mob/target) - if(!..()) - return - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - if(!changeling.chosen_sting) - to_chat(user, "We haven't prepared our sting yet!") - if(!iscarbon(target)) - return - if(!isturf(user.loc)) - return - if(!AStar(user, target.loc, /turf/proc/Distance, changeling.sting_range, simulated_only = 0)) - return - if(target.mind && target.mind.has_antag_datum(/datum/antagonist/changeling)) - sting_feedback(user, target) - changeling.chem_charges -= chemical_cost //?? - return 1 - -/obj/effect/proc_holder/changeling/sting/sting_feedback(mob/user, mob/target) - if(!target) - return - to_chat(user, "We stealthily sting [target.name].") - if(target.mind && target.mind.has_antag_datum(/datum/antagonist/changeling)) - to_chat(target, "You feel a tiny prick.") - return 1 - - -/obj/effect/proc_holder/changeling/sting/transformation - name = "Transformation Sting" - desc = "We silently sting a human, injecting a retrovirus that forces them to transform." - helptext = "The victim will transform much like a changeling would. Does not provide a warning to others. Mutations will not be transferred, and monkeys will become human." - sting_icon = "sting_transform" - chemical_cost = 50 - dna_cost = 3 - var/datum/changelingprofile/selected_dna = null - -/obj/effect/proc_holder/changeling/sting/transformation/Click() - var/mob/user = usr - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - if(changeling.chosen_sting) - unset_sting(user) - return - selected_dna = changeling.select_dna("Select the target DNA: ", "Target DNA") - if(!selected_dna) - return - if(NOTRANSSTING in selected_dna.dna.species.species_traits) - to_chat(user, "That DNA is not compatible with changeling retrovirus!") - return - ..() - -/obj/effect/proc_holder/changeling/sting/transformation/can_sting(mob/user, mob/living/carbon/target) - if(!..()) - return - if((target.has_disability(DISABILITY_HUSK)) || !iscarbon(target) || (NOTRANSSTING in target.dna.species.species_traits)) - to_chat(user, "Our sting appears ineffective against its DNA.") - return 0 - return 1 - -/obj/effect/proc_holder/changeling/sting/transformation/sting_action(mob/user, mob/target) - add_logs(user, target, "stung", "transformation sting", " new identity is [selected_dna.dna.real_name]") - var/datum/dna/NewDNA = selected_dna.dna - if(ismonkey(target)) - to_chat(user, "Our genes cry out as we sting [target.name]!") - - var/mob/living/carbon/C = target - . = TRUE - if(istype(C)) - C.real_name = NewDNA.real_name - NewDNA.transfer_identity(C) - if(ismonkey(C)) - C.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_DEFAULTMSG) - C.updateappearance(mutcolor_update=1) - - -/obj/effect/proc_holder/changeling/sting/false_armblade - name = "False Armblade Sting" - desc = "We silently sting a human, injecting a retrovirus that mutates their arm to temporarily appear as an armblade." - helptext = "The victim will form an armblade much like a changeling would, except the armblade is dull and useless." - sting_icon = "sting_armblade" - chemical_cost = 20 - dna_cost = 1 - -/obj/item/melee/arm_blade/false - desc = "A grotesque mass of flesh that used to be your arm. Although it looks dangerous at first, you can tell it's actually quite dull and useless." - force = 5 //Basically as strong as a punch - -/obj/item/melee/arm_blade/false/afterattack(atom/target, mob/user, proximity) - return - -/obj/effect/proc_holder/changeling/sting/false_armblade/can_sting(mob/user, mob/target) - if(!..()) - return - if(isliving(target)) - var/mob/living/L = target - if((L.has_disability(DISABILITY_HUSK)) || !L.has_dna()) - to_chat(user, "Our sting appears ineffective against its DNA.") - return 0 - return 1 - -/obj/effect/proc_holder/changeling/sting/false_armblade/sting_action(mob/user, mob/target) - add_logs(user, target, "stung", object="falso armblade sting") - - var/obj/item/held = target.get_active_held_item() - if(held && !target.dropItemToGround(held)) - to_chat(user, "[held] is stuck to their hand, you cannot grow a false armblade over it!") - return - - if(ismonkey(target)) - to_chat(user, "Our genes cry out as we sting [target.name]!") - - var/obj/item/melee/arm_blade/false/blade = new(target,1) - target.put_in_hands(blade) - target.visible_message("A grotesque blade forms around [target.name]\'s arm!", "Your arm twists and mutates, transforming into a horrific monstrosity!", "You hear organic matter ripping and tearing!") - playsound(target, 'sound/effects/blobattack.ogg', 30, 1) - - addtimer(CALLBACK(src, .proc/remove_fake, target, blade), 600) - return TRUE - -/obj/effect/proc_holder/changeling/sting/false_armblade/proc/remove_fake(mob/target, obj/item/melee/arm_blade/false/blade) - playsound(target, 'sound/effects/blobattack.ogg', 30, 1) - target.visible_message("With a sickening crunch, \ - [target] reforms their [blade.name] into an arm!", - "[blade] reforms back to normal.", - "Your eyes burn horrifically!") - target.become_nearsighted(EYE_DAMAGE) - target.blind_eyes(20) - target.blur_eyes(40) - return TRUE - -/obj/effect/proc_holder/changeling/sting/LSD - name = "Hallucination Sting" - desc = "Causes terror in the target." - helptext = "We evolve the ability to sting a target with a powerful hallucinogenic chemical. The target does not notice they have been stung, and the effect occurs after 30 to 60 seconds." - sting_icon = "sting_lsd" - chemical_cost = 10 - dna_cost = 1 - -/obj/effect/proc_holder/changeling/sting/LSD/sting_action(mob/user, mob/living/carbon/target) - add_logs(user, target, "stung", "LSD sting") - addtimer(CALLBACK(src, .proc/hallucination_time, target), rand(300,600)) - return TRUE - -/obj/effect/proc_holder/changeling/sting/LSD/proc/hallucination_time(mob/living/carbon/target) - if(target) - target.hallucination = max(400, target.hallucination) - -/obj/effect/proc_holder/changeling/sting/cryo - name = "Cryogenic Sting" - desc = "We silently sting a human with a cocktail of chemicals that freeze them." - helptext = "Does not provide a warning to the victim, though they will likely realize they are suddenly freezing." - sting_icon = "sting_cryo" - chemical_cost = 15 - dna_cost = 2 - -/obj/effect/proc_holder/changeling/sting/cryo/sting_action(mob/user, mob/target) - add_logs(user, target, "stung", "cryo sting") - if(target.reagents) - target.reagents.add_reagent("frostoil", 30) - return TRUE +/obj/effect/proc_holder/changeling/sting + name = "Tiny Prick" + desc = "Stabby stabby." + var/sting_icon = null + +/obj/effect/proc_holder/changeling/sting/Click() + var/mob/user = usr + if(!user || !user.mind) + return + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + if(!changeling) + return + if(!changeling.chosen_sting) + set_sting(user) + else + unset_sting(user) + return + +/obj/effect/proc_holder/changeling/sting/proc/set_sting(mob/user) + to_chat(user, "We prepare our sting, use alt+click or middle mouse button on target to sting them.") + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + changeling.chosen_sting = src + + user.hud_used.lingstingdisplay.icon_state = sting_icon + user.hud_used.lingstingdisplay.invisibility = 0 + +/obj/effect/proc_holder/changeling/sting/proc/unset_sting(mob/user) + to_chat(user, "We retract our sting, we can't sting anyone for now.") + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + changeling.chosen_sting = null + + user.hud_used.lingstingdisplay.icon_state = null + user.hud_used.lingstingdisplay.invisibility = INVISIBILITY_ABSTRACT + +/mob/living/carbon/proc/unset_sting() + if(mind) + var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling) + if(changeling && changeling.chosen_sting) + changeling.chosen_sting.unset_sting(src) + +/obj/effect/proc_holder/changeling/sting/can_sting(mob/user, mob/target) + if(!..()) + return + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + if(!changeling.chosen_sting) + to_chat(user, "We haven't prepared our sting yet!") + if(!iscarbon(target)) + return + if(!isturf(user.loc)) + return + if(!AStar(user, target.loc, /turf/proc/Distance, changeling.sting_range, simulated_only = 0)) + return + if(target.mind && target.mind.has_antag_datum(/datum/antagonist/changeling)) + sting_feedback(user, target) + changeling.chem_charges -= chemical_cost //?? + return 1 + +/obj/effect/proc_holder/changeling/sting/sting_feedback(mob/user, mob/target) + if(!target) + return + to_chat(user, "We stealthily sting [target.name].") + if(target.mind && target.mind.has_antag_datum(/datum/antagonist/changeling)) + to_chat(target, "You feel a tiny prick.") + return 1 + + +/obj/effect/proc_holder/changeling/sting/transformation + name = "Transformation Sting" + desc = "We silently sting a human, injecting a retrovirus that forces them to transform." + helptext = "The victim will transform much like a changeling would. Does not provide a warning to others. Mutations will not be transferred, and monkeys will become human." + sting_icon = "sting_transform" + chemical_cost = 50 + dna_cost = 3 + var/datum/changelingprofile/selected_dna = null + +/obj/effect/proc_holder/changeling/sting/transformation/Click() + var/mob/user = usr + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + if(changeling.chosen_sting) + unset_sting(user) + return + selected_dna = changeling.select_dna("Select the target DNA: ", "Target DNA") + if(!selected_dna) + return + if(NOTRANSSTING in selected_dna.dna.species.species_traits) + to_chat(user, "That DNA is not compatible with changeling retrovirus!") + return + ..() + +/obj/effect/proc_holder/changeling/sting/transformation/can_sting(mob/user, mob/living/carbon/target) + if(!..()) + return + if((target.has_trait(TRAIT_HUSK)) || !iscarbon(target) || (NOTRANSSTING in target.dna.species.species_traits)) + to_chat(user, "Our sting appears ineffective against its DNA.") + return 0 + return 1 + +/obj/effect/proc_holder/changeling/sting/transformation/sting_action(mob/user, mob/target) + add_logs(user, target, "stung", "transformation sting", " new identity is [selected_dna.dna.real_name]") + var/datum/dna/NewDNA = selected_dna.dna + if(ismonkey(target)) + to_chat(user, "Our genes cry out as we sting [target.name]!") + + var/mob/living/carbon/C = target + . = TRUE + if(istype(C)) + C.real_name = NewDNA.real_name + NewDNA.transfer_identity(C) + if(ismonkey(C)) + C.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_DEFAULTMSG) + C.updateappearance(mutcolor_update=1) + + +/obj/effect/proc_holder/changeling/sting/false_armblade + name = "False Armblade Sting" + desc = "We silently sting a human, injecting a retrovirus that mutates their arm to temporarily appear as an armblade." + helptext = "The victim will form an armblade much like a changeling would, except the armblade is dull and useless." + sting_icon = "sting_armblade" + chemical_cost = 20 + dna_cost = 1 + +/obj/item/melee/arm_blade/false + desc = "A grotesque mass of flesh that used to be your arm. Although it looks dangerous at first, you can tell it's actually quite dull and useless." + force = 5 //Basically as strong as a punch + +/obj/item/melee/arm_blade/false/afterattack(atom/target, mob/user, proximity) + return + +/obj/effect/proc_holder/changeling/sting/false_armblade/can_sting(mob/user, mob/target) + if(!..()) + return + if(isliving(target)) + var/mob/living/L = target + if((L.has_trait(TRAIT_HUSK)) || !L.has_dna()) + to_chat(user, "Our sting appears ineffective against its DNA.") + return 0 + return 1 + +/obj/effect/proc_holder/changeling/sting/false_armblade/sting_action(mob/user, mob/target) + add_logs(user, target, "stung", object="falso armblade sting") + + var/obj/item/held = target.get_active_held_item() + if(held && !target.dropItemToGround(held)) + to_chat(user, "[held] is stuck to their hand, you cannot grow a false armblade over it!") + return + + if(ismonkey(target)) + to_chat(user, "Our genes cry out as we sting [target.name]!") + + var/obj/item/melee/arm_blade/false/blade = new(target,1) + target.put_in_hands(blade) + target.visible_message("A grotesque blade forms around [target.name]\'s arm!", "Your arm twists and mutates, transforming into a horrific monstrosity!", "You hear organic matter ripping and tearing!") + playsound(target, 'sound/effects/blobattack.ogg', 30, 1) + + addtimer(CALLBACK(src, .proc/remove_fake, target, blade), 600) + return TRUE + +/obj/effect/proc_holder/changeling/sting/false_armblade/proc/remove_fake(mob/target, obj/item/melee/arm_blade/false/blade) + playsound(target, 'sound/effects/blobattack.ogg', 30, 1) + target.visible_message("With a sickening crunch, \ + [target] reforms their [blade.name] into an arm!", + "[blade] reforms back to normal.", + "Your eyes burn horrifically!") + target.become_nearsighted(EYE_DAMAGE) + target.blind_eyes(20) + target.blur_eyes(40) + return TRUE + +/obj/effect/proc_holder/changeling/sting/LSD + name = "Hallucination Sting" + desc = "Causes terror in the target." + helptext = "We evolve the ability to sting a target with a powerful hallucinogenic chemical. The target does not notice they have been stung, and the effect occurs after 30 to 60 seconds." + sting_icon = "sting_lsd" + chemical_cost = 10 + dna_cost = 1 + +/obj/effect/proc_holder/changeling/sting/LSD/sting_action(mob/user, mob/living/carbon/target) + add_logs(user, target, "stung", "LSD sting") + addtimer(CALLBACK(src, .proc/hallucination_time, target), rand(300,600)) + return TRUE + +/obj/effect/proc_holder/changeling/sting/LSD/proc/hallucination_time(mob/living/carbon/target) + if(target) + target.hallucination = max(400, target.hallucination) + +/obj/effect/proc_holder/changeling/sting/cryo + name = "Cryogenic Sting" + desc = "We silently sting a human with a cocktail of chemicals that freeze them." + helptext = "Does not provide a warning to the victim, though they will likely realize they are suddenly freezing." + sting_icon = "sting_cryo" + chemical_cost = 15 + dna_cost = 2 + +/obj/effect/proc_holder/changeling/sting/cryo/sting_action(mob/user, mob/target) + add_logs(user, target, "stung", "cryo sting") + if(target.reagents) + target.reagents.add_reagent("frostoil", 30) + return TRUE diff --git a/code/game/gamemodes/changeling/powers/transform.dm b/code/modules/antagonists/changeling/powers/transform.dm similarity index 96% rename from code/game/gamemodes/changeling/powers/transform.dm rename to code/modules/antagonists/changeling/powers/transform.dm index a977bab3e0..f5e6706af6 100644 --- a/code/game/gamemodes/changeling/powers/transform.dm +++ b/code/modules/antagonists/changeling/powers/transform.dm @@ -1,129 +1,129 @@ -/obj/effect/proc_holder/changeling/transform - name = "Transform" - desc = "We take on the appearance and voice of one we have absorbed." - chemical_cost = 5 - dna_cost = 0 - req_dna = 1 - req_human = 1 - -/obj/item/clothing/glasses/changeling - name = "flesh" - flags_1 = NODROP_1 - -/obj/item/clothing/glasses/changeling/attack_hand(mob/user) - if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) - to_chat(user, "You reabsorb [src] into your body.") - qdel(src) - return - ..() - -/obj/item/clothing/under/changeling - name = "flesh" - flags_1 = NODROP_1 - -/obj/item/clothing/under/changeling/attack_hand(mob/user) - if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) - to_chat(user, "You reabsorb [src] into your body.") - qdel(src) - return - ..() - -/obj/item/clothing/suit/changeling - name = "flesh" - flags_1 = NODROP_1 - allowed = list(/obj/item/changeling) - -/obj/item/clothing/suit/changeling/attack_hand(mob/user) - if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) - to_chat(user, "You reabsorb [src] into your body.") - qdel(src) - return - ..() - -/obj/item/clothing/head/changeling - name = "flesh" - flags_1 = NODROP_1 - -/obj/item/clothing/head/changeling/attack_hand(mob/user) - if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) - to_chat(user, "You reabsorb [src] into your body.") - qdel(src) - return - ..() - -/obj/item/clothing/shoes/changeling - name = "flesh" - flags_1 = NODROP_1 - -/obj/item/clothing/shoes/changeling/attack_hand(mob/user) - if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) - to_chat(user, "You reabsorb [src] into your body.") - qdel(src) - return - ..() - -/obj/item/clothing/gloves/changeling - name = "flesh" - flags_1 = NODROP_1 - -/obj/item/clothing/gloves/changeling/attack_hand(mob/user) - if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) - to_chat(user, "You reabsorb [src] into your body.") - qdel(src) - return - ..() - -/obj/item/clothing/mask/changeling - name = "flesh" - flags_1 = NODROP_1 - -/obj/item/clothing/mask/changeling/attack_hand(mob/user) - if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) - to_chat(user, "You reabsorb [src] into your body.") - qdel(src) - return - ..() - -/obj/item/changeling - name = "flesh" - flags_1 = NODROP_1 - slot_flags = ALL - allowed = list(/obj/item/changeling) - -/obj/item/changeling/attack_hand(mob/user) - if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) - to_chat(user, "You reabsorb [src] into your body.") - qdel(src) - return - ..() - -//Change our DNA to that of somebody we've absorbed. -/obj/effect/proc_holder/changeling/transform/sting_action(mob/living/carbon/human/user) - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - var/datum/changelingprofile/chosen_prof = changeling.select_dna("Select the target DNA: ", "Target DNA") - - if(!chosen_prof) - return - - changeling_transform(user, chosen_prof) - return TRUE - -/datum/antagonist/changeling/proc/select_dna(var/prompt, var/title) - var/mob/living/carbon/user = owner.current - if(!istype(user)) - return - var/list/names = list("Drop Flesh Disguise") - for(var/datum/changelingprofile/prof in stored_profiles) - names += "[prof.name]" - - var/chosen_name = input(prompt, title, null) as null|anything in names - if(!chosen_name) - return - - if(chosen_name == "Drop Flesh Disguise") - for(var/slot in GLOB.slots) - if(istype(user.vars[slot], GLOB.slot2type[slot])) - qdel(user.vars[slot]) - - var/datum/changelingprofile/prof = get_dna(chosen_name) - return prof +/obj/effect/proc_holder/changeling/transform + name = "Transform" + desc = "We take on the appearance and voice of one we have absorbed." + chemical_cost = 5 + dna_cost = 0 + req_dna = 1 + req_human = 1 + +/obj/item/clothing/glasses/changeling + name = "flesh" + flags_1 = NODROP_1 + +/obj/item/clothing/glasses/changeling/attack_hand(mob/user) + if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) + to_chat(user, "You reabsorb [src] into your body.") + qdel(src) + return + ..() + +/obj/item/clothing/under/changeling + name = "flesh" + flags_1 = NODROP_1 + +/obj/item/clothing/under/changeling/attack_hand(mob/user) + if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) + to_chat(user, "You reabsorb [src] into your body.") + qdel(src) + return + ..() + +/obj/item/clothing/suit/changeling + name = "flesh" + flags_1 = NODROP_1 + allowed = list(/obj/item/changeling) + +/obj/item/clothing/suit/changeling/attack_hand(mob/user) + if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) + to_chat(user, "You reabsorb [src] into your body.") + qdel(src) + return + ..() + +/obj/item/clothing/head/changeling + name = "flesh" + flags_1 = NODROP_1 + +/obj/item/clothing/head/changeling/attack_hand(mob/user) + if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) + to_chat(user, "You reabsorb [src] into your body.") + qdel(src) + return + ..() + +/obj/item/clothing/shoes/changeling + name = "flesh" + flags_1 = NODROP_1 + +/obj/item/clothing/shoes/changeling/attack_hand(mob/user) + if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) + to_chat(user, "You reabsorb [src] into your body.") + qdel(src) + return + ..() + +/obj/item/clothing/gloves/changeling + name = "flesh" + flags_1 = NODROP_1 + +/obj/item/clothing/gloves/changeling/attack_hand(mob/user) + if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) + to_chat(user, "You reabsorb [src] into your body.") + qdel(src) + return + ..() + +/obj/item/clothing/mask/changeling + name = "flesh" + flags_1 = NODROP_1 + +/obj/item/clothing/mask/changeling/attack_hand(mob/user) + if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) + to_chat(user, "You reabsorb [src] into your body.") + qdel(src) + return + ..() + +/obj/item/changeling + name = "flesh" + flags_1 = NODROP_1 + slot_flags = ALL + allowed = list(/obj/item/changeling) + +/obj/item/changeling/attack_hand(mob/user) + if(loc == user && user.mind && user.mind.has_antag_datum(/datum/antagonist/changeling)) + to_chat(user, "You reabsorb [src] into your body.") + qdel(src) + return + ..() + +//Change our DNA to that of somebody we've absorbed. +/obj/effect/proc_holder/changeling/transform/sting_action(mob/living/carbon/human/user) + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + var/datum/changelingprofile/chosen_prof = changeling.select_dna("Select the target DNA: ", "Target DNA") + + if(!chosen_prof) + return + + changeling_transform(user, chosen_prof) + return TRUE + +/datum/antagonist/changeling/proc/select_dna(var/prompt, var/title) + var/mob/living/carbon/user = owner.current + if(!istype(user)) + return + var/list/names = list("Drop Flesh Disguise") + for(var/datum/changelingprofile/prof in stored_profiles) + names += "[prof.name]" + + var/chosen_name = input(prompt, title, null) as null|anything in names + if(!chosen_name) + return + + if(chosen_name == "Drop Flesh Disguise") + for(var/slot in GLOB.slots) + if(istype(user.vars[slot], GLOB.slot2type[slot])) + qdel(user.vars[slot]) + + var/datum/changelingprofile/prof = get_dna(chosen_name) + return prof diff --git a/code/game/gamemodes/clock_cult/clock_effect.dm b/code/modules/antagonists/clockcult/clock_effect.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_effect.dm rename to code/modules/antagonists/clockcult/clock_effect.dm diff --git a/code/game/gamemodes/clock_cult/clock_effects/city_of_cogs_rift.dm b/code/modules/antagonists/clockcult/clock_effects/city_of_cogs_rift.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_effects/city_of_cogs_rift.dm rename to code/modules/antagonists/clockcult/clock_effects/city_of_cogs_rift.dm diff --git a/code/game/gamemodes/clock_cult/clock_effects/clock_overlay.dm b/code/modules/antagonists/clockcult/clock_effects/clock_overlay.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_effects/clock_overlay.dm rename to code/modules/antagonists/clockcult/clock_effects/clock_overlay.dm diff --git a/code/game/gamemodes/clock_cult/clock_effects/clock_sigils.dm b/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm similarity index 98% rename from code/game/gamemodes/clock_cult/clock_effects/clock_sigils.dm rename to code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm index 49cab86ff9..2eb3315e03 100644 --- a/code/game/gamemodes/clock_cult/clock_effects/clock_sigils.dm +++ b/code/modules/antagonists/clockcult/clock_effects/clock_sigils.dm @@ -337,12 +337,12 @@ if(!L.client || L.client.is_afk()) set waitfor = FALSE var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as a [L.name], an inactive clock cultist?", ROLE_SERVANT_OF_RATVAR, null, ROLE_SERVANT_OF_RATVAR, 50, L) - var/mob/dead/observer/theghost = null - if(candidates.len) + if(LAZYLEN(candidates)) + var/client/C = pick(candidates) to_chat(L, "Your physical form has been taken over by another soul due to your inactivity! Ahelp if you wish to regain your form!") - message_admins("[key_name_admin(theghost)] has taken control of ([key_name_admin(L)]) to replace an inactive clock cultist.") + message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(L)]) to replace an inactive clock cultist.") L.ghostize(0) - L.key = theghost.key + L.key = C.key var/obj/effect/temp_visual/ratvar/sigil/vitality/V = new /obj/effect/temp_visual/ratvar/sigil/vitality(get_turf(src)) animate(V, alpha = 0, transform = matrix()*2, time = 8) playsound(L, 'sound/magic/staff_healing.ogg', 50, 1) diff --git a/code/game/gamemodes/clock_cult/clock_effects/general_markers.dm b/code/modules/antagonists/clockcult/clock_effects/general_markers.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_effects/general_markers.dm rename to code/modules/antagonists/clockcult/clock_effects/general_markers.dm diff --git a/code/game/gamemodes/clock_cult/clock_effects/servant_blocker.dm b/code/modules/antagonists/clockcult/clock_effects/servant_blocker.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_effects/servant_blocker.dm rename to code/modules/antagonists/clockcult/clock_effects/servant_blocker.dm diff --git a/code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm b/code/modules/antagonists/clockcult/clock_effects/spatial_gateway.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_effects/spatial_gateway.dm rename to code/modules/antagonists/clockcult/clock_effects/spatial_gateway.dm diff --git a/code/game/gamemodes/clock_cult/clock_helpers/clock_powerdrain.dm b/code/modules/antagonists/clockcult/clock_helpers/clock_powerdrain.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_helpers/clock_powerdrain.dm rename to code/modules/antagonists/clockcult/clock_helpers/clock_powerdrain.dm diff --git a/code/game/gamemodes/clock_cult/clock_helpers/component_helpers.dm b/code/modules/antagonists/clockcult/clock_helpers/component_helpers.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_helpers/component_helpers.dm rename to code/modules/antagonists/clockcult/clock_helpers/component_helpers.dm diff --git a/code/game/gamemodes/clock_cult/clock_helpers/fabrication_helpers.dm b/code/modules/antagonists/clockcult/clock_helpers/fabrication_helpers.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_helpers/fabrication_helpers.dm rename to code/modules/antagonists/clockcult/clock_helpers/fabrication_helpers.dm diff --git a/code/game/gamemodes/clock_cult/clock_helpers/hierophant_network.dm b/code/modules/antagonists/clockcult/clock_helpers/hierophant_network.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_helpers/hierophant_network.dm rename to code/modules/antagonists/clockcult/clock_helpers/hierophant_network.dm diff --git a/code/game/gamemodes/clock_cult/clock_helpers/power_helpers.dm b/code/modules/antagonists/clockcult/clock_helpers/power_helpers.dm similarity index 96% rename from code/game/gamemodes/clock_cult/clock_helpers/power_helpers.dm rename to code/modules/antagonists/clockcult/clock_helpers/power_helpers.dm index c2479460c7..37f09b405f 100644 --- a/code/game/gamemodes/clock_cult/clock_helpers/power_helpers.dm +++ b/code/modules/antagonists/clockcult/clock_helpers/power_helpers.dm @@ -7,6 +7,7 @@ if(GLOB.ratvar_approaches) amount *= 0.75 //The herald's beacon reduces power costs by 25% across the board! GLOB.clockwork_power = GLOB.ratvar_awakens ? INFINITY : max(0, GLOB.clockwork_power + amount) + GLOB.clockwork_power = CLAMP(GLOB.clockwork_power, 0, MAX_CLOCKWORK_POWER) for(var/obj/effect/clockwork/sigil/transmission/T in GLOB.all_clockwork_objects) T.update_icon() var/power_overwhelming = GLOB.clockwork_power diff --git a/code/game/gamemodes/clock_cult/clock_helpers/ratvarian_language.dm b/code/modules/antagonists/clockcult/clock_helpers/ratvarian_language.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_helpers/ratvarian_language.dm rename to code/modules/antagonists/clockcult/clock_helpers/ratvarian_language.dm diff --git a/code/game/gamemodes/clock_cult/clock_helpers/scripture_checks.dm b/code/modules/antagonists/clockcult/clock_helpers/scripture_checks.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_helpers/scripture_checks.dm rename to code/modules/antagonists/clockcult/clock_helpers/scripture_checks.dm diff --git a/code/game/gamemodes/clock_cult/clock_helpers/slab_abilities.dm b/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_helpers/slab_abilities.dm rename to code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm diff --git a/code/game/gamemodes/clock_cult/clock_item.dm b/code/modules/antagonists/clockcult/clock_item.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_item.dm rename to code/modules/antagonists/clockcult/clock_item.dm diff --git a/code/game/gamemodes/clock_cult/clock_items/clock_components.dm b/code/modules/antagonists/clockcult/clock_items/clock_components.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_items/clock_components.dm rename to code/modules/antagonists/clockcult/clock_items/clock_components.dm diff --git a/code/game/gamemodes/clock_cult/clock_items/clock_weapons/_call_weapon.dm b/code/modules/antagonists/clockcult/clock_items/clock_weapons/_call_weapon.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_items/clock_weapons/_call_weapon.dm rename to code/modules/antagonists/clockcult/clock_items/clock_weapons/_call_weapon.dm diff --git a/code/game/gamemodes/clock_cult/clock_items/clock_weapons/ratvarian_spear.dm b/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_spear.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_items/clock_weapons/ratvarian_spear.dm rename to code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_spear.dm diff --git a/code/game/gamemodes/clock_cult/clock_items/clockwork_armor.dm b/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_items/clockwork_armor.dm rename to code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm diff --git a/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm b/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm similarity index 98% rename from code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm rename to code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm index 0111567122..fd8674f96f 100644 --- a/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm +++ b/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm @@ -43,8 +43,7 @@ /obj/item/clockwork/slab/cyborg //three scriptures, plus a spear and fabricator clockwork_desc = "A divine link to the Celestial Derelict, allowing for limited recital of scripture." - quickbound = list(/datum/clockwork_scripture/ranged_ability/judicial_marker, /datum/clockwork_scripture/ranged_ability/linked_vanguard, \ - /datum/clockwork_scripture/create_object/stargazer) + quickbound = list(/datum/clockwork_scripture/abscond, /datum/clockwork_scripture/ranged_ability/judicial_marker, /datum/clockwork_scripture/ranged_ability/linked_vanguard) maximum_quickbound = 6 //we usually have one or two unique scriptures, so if ratvar is up let us bind one more actions_types = list() @@ -63,10 +62,10 @@ /obj/item/clockwork/slab/cyborg/janitor //five scriptures, plus a fabricator quickbound = list(/datum/clockwork_scripture/abscond, /datum/clockwork_scripture/create_object/replicant, /datum/clockwork_scripture/create_object/sigil_of_transgression, \ - /datum/clockwork_scripture/create_object/ocular_warden, /datum/clockwork_scripture/create_object/mania_motor, /datum/clockwork_scripture/create_object/stargazer) + /datum/clockwork_scripture/create_object/ocular_warden, /datum/clockwork_scripture/create_object/mania_motor) /obj/item/clockwork/slab/cyborg/service //five scriptures, plus xray vision - quickbound = list(/datum/clockwork_scripture/abscond, /datum/clockwork_scripture/create_object/replicant, /datum/clockwork_scripture/create_object/stargazer, \ + quickbound = list(/datum/clockwork_scripture/abscond, /datum/clockwork_scripture/create_object/replicant, \ /datum/clockwork_scripture/spatial_gateway, /datum/clockwork_scripture/create_object/clockwork_obelisk) /obj/item/clockwork/slab/cyborg/miner //two scriptures, plus a spear and xray vision @@ -425,7 +424,8 @@ data["scripturecolors"] = "Scriptures in yellow are related to construction and building.
\ Scriptures in red are related to attacking and offense.
\ Scriptures in blue are related to healing and defense.
\ - Scriptures in purple are niche but still important!" + Scriptures in purple are niche but still important!
\ + Scriptures with italicized names are important to success." generate_all_scripture() data["scripture"] = list() @@ -439,6 +439,8 @@ "required" = "([DisplayPower(S.power_cost)][S.special_power_text ? "+ [replacetext(S.special_power_text, "POWERCOST", "[DisplayPower(S.special_power_cost)]")]" : ""])", "type" = "[S.type]", "quickbind" = S.quickbind) + if(S.important) + temp_info["name"] = "[temp_info["name"]]" var/found = quickbound.Find(S.type) if(found) temp_info["bound"] = "[found]" diff --git a/code/game/gamemodes/clock_cult/clock_items/clockwork_weaponry.dm b/code/modules/antagonists/clockcult/clock_items/clockwork_weaponry.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_items/clockwork_weaponry.dm rename to code/modules/antagonists/clockcult/clock_items/clockwork_weaponry.dm diff --git a/code/game/gamemodes/clock_cult/clock_items/construct_chassis.dm b/code/modules/antagonists/clockcult/clock_items/construct_chassis.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_items/construct_chassis.dm rename to code/modules/antagonists/clockcult/clock_items/construct_chassis.dm diff --git a/code/game/gamemodes/clock_cult/clock_items/integration_cog.dm b/code/modules/antagonists/clockcult/clock_items/integration_cog.dm similarity index 83% rename from code/game/gamemodes/clock_cult/clock_items/integration_cog.dm rename to code/modules/antagonists/clockcult/clock_items/integration_cog.dm index 866458b4f6..0e1e299325 100644 --- a/code/game/gamemodes/clock_cult/clock_items/integration_cog.dm +++ b/code/modules/antagonists/clockcult/clock_items/integration_cog.dm @@ -30,6 +30,8 @@ var/obj/item/stock_parts/cell/cell = apc.cell if(cell && (cell.charge / cell.maxcharge > COG_MAX_SIPHON_THRESHOLD)) cell.use(1) - adjust_clockwork_power(1) //Power is shared, so only do it once; this runs very quickly so it's about 1W/second + adjust_clockwork_power(2) //Power is shared, so only do it once; this runs very quickly so it's about 10 W/second + else + adjust_clockwork_power(1) //Continue generating power when the cell has run dry; 5 W/second -#undef COG_MAX_SIPHON_THRESHOLD +#undef COG_MAX_SIPHON_THRESHOLD \ No newline at end of file diff --git a/code/game/gamemodes/clock_cult/clock_items/judicial_visor.dm b/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_items/judicial_visor.dm rename to code/modules/antagonists/clockcult/clock_items/judicial_visor.dm diff --git a/code/game/gamemodes/clock_cult/clock_items/replica_fabricator.dm b/code/modules/antagonists/clockcult/clock_items/replica_fabricator.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_items/replica_fabricator.dm rename to code/modules/antagonists/clockcult/clock_items/replica_fabricator.dm diff --git a/code/game/gamemodes/clock_cult/clock_items/soul_vessel.dm b/code/modules/antagonists/clockcult/clock_items/soul_vessel.dm similarity index 96% rename from code/game/gamemodes/clock_cult/clock_items/soul_vessel.dm rename to code/modules/antagonists/clockcult/clock_items/soul_vessel.dm index ca80d6f082..9dbbf4a11b 100644 --- a/code/game/gamemodes/clock_cult/clock_items/soul_vessel.dm +++ b/code/modules/antagonists/clockcult/clock_items/soul_vessel.dm @@ -92,11 +92,9 @@ return playsound(H, 'sound/misc/splort.ogg', 60, 1, -1) playsound(H, 'sound/magic/clockwork/anima_fragment_attack.ogg', 40, 1, -1) - var/prev_fakedeath = (H.status_flags & FAKEDEATH) - H.status_flags |= FAKEDEATH //we want to make sure they don't deathgasp and maybe possibly explode + H.fakedeath("soul_vessel") //we want to make sure they don't deathgasp and maybe possibly explode H.death() - if(!prev_fakedeath) - H.status_flags &= ~FAKEDEATH + H.cure_fakedeath("soul_vessel") H.apply_status_effect(STATUS_EFFECT_SIGILMARK) //let them be affected by vitality matrices picked_name = "Slave" braintype = picked_name diff --git a/code/game/gamemodes/clock_cult/clock_items/wraith_spectacles.dm b/code/modules/antagonists/clockcult/clock_items/wraith_spectacles.dm similarity index 95% rename from code/game/gamemodes/clock_cult/clock_items/wraith_spectacles.dm rename to code/modules/antagonists/clockcult/clock_items/wraith_spectacles.dm index 60f95d6716..c1bf94842d 100644 --- a/code/game/gamemodes/clock_cult/clock_items/wraith_spectacles.dm +++ b/code/modules/antagonists/clockcult/clock_items/wraith_spectacles.dm @@ -32,7 +32,7 @@ if(ishuman(loc)) var/mob/living/carbon/human/H = loc if(src == H.glasses && !up) - if(H.has_disability(DISABILITY_BLIND)) + if(H.has_trait(TRAIT_BLIND)) to_chat(H, "\"You're blind, idiot. Stop embarrassing yourself.\"") return if(blind_cultist(H)) @@ -76,7 +76,7 @@ ..() if(slot != slot_glasses || up) return - if(user.has_disability(DISABILITY_BLIND)) + if(user.has_trait(TRAIT_BLIND)) to_chat(user, "\"You're blind, idiot. Stop embarrassing yourself.\"" ) return if(blind_cultist(user)) //Cultists instantly go blind @@ -115,11 +115,11 @@ var/obj/item/clothing/glasses/wraith_spectacles/WS = L.glasses desc = "[glasses_right && !WS.up ? "":""]You are [glasses_right ? "":"not "]wearing wraith spectacles[glasses_right && !WS.up ? "!":"."]
\ You have taken [W.eye_damage_done] eye damage from them.
" - if(L.has_disability(DISABILITY_NEARSIGHT)) + if(L.has_trait(TRAIT_NEARSIGHT)) desc += "You are nearsighted!
" else if(glasses_right && !WS.up) desc += "You will become nearsighted at [W.nearsight_breakpoint] eye damage.
" - if(L.has_disability(DISABILITY_BLIND)) + if(L.has_trait(TRAIT_BLIND)) desc += "You are blind!" else if(glasses_right && !WS.up) desc += "You will become blind at [W.blind_breakpoint] eye damage." @@ -153,18 +153,18 @@ qdel(src) /datum/status_effect/wraith_spectacles/proc/apply_eye_damage(mob/living/carbon/human/H) - if(H.has_disability(DISABILITY_BLIND)) + if(H.has_trait(TRAIT_BLIND)) return H.adjust_eye_damage(0.5) eye_damage_done += 0.5 if(eye_damage_done >= 20) H.adjust_blurriness(2) if(eye_damage_done >= nearsight_breakpoint) - if(!H.has_disability(DISABILITY_NEARSIGHT)) + if(!H.has_trait(TRAIT_NEARSIGHT)) to_chat(H, "Your vision doubles, then trembles. Darkness begins to close in. You can't keep this up!") H.become_nearsighted(EYE_DAMAGE) if(eye_damage_done >= blind_breakpoint) - if(!H.has_disability(DISABILITY_BLIND)) + if(!H.has_trait(TRAIT_BLIND)) to_chat(H, "A piercing white light floods your vision. Suddenly, all goes dark!") H.become_blind(EYE_DAMAGE) diff --git a/code/game/gamemodes/clock_cult/clock_mobs.dm b/code/modules/antagonists/clockcult/clock_mobs.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_mobs.dm rename to code/modules/antagonists/clockcult/clock_mobs.dm diff --git a/code/game/gamemodes/clock_cult/clock_mobs/_eminence.dm b/code/modules/antagonists/clockcult/clock_mobs/_eminence.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_mobs/_eminence.dm rename to code/modules/antagonists/clockcult/clock_mobs/_eminence.dm diff --git a/code/game/gamemodes/clock_cult/clock_mobs/clockwork_marauder.dm b/code/modules/antagonists/clockcult/clock_mobs/clockwork_marauder.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_mobs/clockwork_marauder.dm rename to code/modules/antagonists/clockcult/clock_mobs/clockwork_marauder.dm diff --git a/code/game/gamemodes/clock_cult/clock_scripture.dm b/code/modules/antagonists/clockcult/clock_scripture.dm similarity index 99% rename from code/game/gamemodes/clock_cult/clock_scripture.dm rename to code/modules/antagonists/clockcult/clock_scripture.dm index 046196f03a..753de786dc 100644 --- a/code/game/gamemodes/clock_cult/clock_scripture.dm +++ b/code/modules/antagonists/clockcult/clock_scripture.dm @@ -28,6 +28,7 @@ Applications: 8 servants, 3 caches, and 100 CV var/quickbind = FALSE //if this scripture can be quickbound to a clockwork slab var/quickbind_desc = "This shouldn't be quickbindable. File a bug report!" var/primary_component + var/important = FALSE //important scripture will be italicized in the slab's interface var/sort_priority = 1 //what position the scripture should have in a list of scripture. Should be based off of component costs/reqs, but you can't initial() lists. //messages for offstation scripture recital, courtesy ratvar's generals(and neovgre) @@ -217,7 +218,7 @@ Applications: 8 servants, 3 caches, and 100 CV var/creator_message = "You create a meme." //Shown to the invoker var/observer_message var/one_per_tile = FALSE - var/prevent_path + var/atom/movable/prevent_path var/space_allowed = FALSE /datum/clockwork_scripture/create_object/New() diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm b/code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm similarity index 99% rename from code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm rename to code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm index c06bb5395e..89b533f079 100644 --- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm +++ b/code/modules/antagonists/clockcult/clock_scriptures/scripture_applications.dm @@ -5,7 +5,7 @@ //Sigil of Transmission: Creates a sigil of transmission that can drain and store power for clockwork structures. /datum/clockwork_scripture/create_object/sigil_of_transmission - descname = "Powers Nearby Structures - Important!" + descname = "Powers Nearby Structures" name = "Sigil of Transmission" desc = "Places a sigil that can drain and will store energy to power clockwork structures." invocations = list("Divinity...", "...power our creations!") @@ -19,6 +19,7 @@ one_per_tile = TRUE primary_component = HIEROPHANT_ANSIBLE sort_priority = 1 + important = TRUE quickbind = TRUE quickbind_desc = "Creates a Sigil of Transmission, which can drain and will store power for clockwork structures." @@ -98,7 +99,7 @@ if(ishuman(L) && L.stat != DEAD) human_servants++ construct_limit = human_servants / 4 //1 per 4 human servants, and a maximum of 3 marauders - construct_limit = CLAMP(construct_limit - recent_marauders, 1, 3) + construct_limit = CLAMP(construct_limit - recent_marauders, 1, 3) if(recent_marauders) to_chat(invoker, "The Hierophant Network needs [MARAUDER_SCRIPTURE_SCALING_THRESHOLD / 10] seconds to recover from marauder summoning; recent summoning has limited the number of available marauders by [recent_marauders]!") diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_cyborg.dm b/code/modules/antagonists/clockcult/clock_scriptures/scripture_cyborg.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_scriptures/scripture_cyborg.dm rename to code/modules/antagonists/clockcult/clock_scriptures/scripture_cyborg.dm diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_drivers.dm b/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm similarity index 88% rename from code/game/gamemodes/clock_cult/clock_scriptures/scripture_drivers.dm rename to code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm index 7e05e6a187..28ce2ccf60 100644 --- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_drivers.dm +++ b/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm @@ -3,36 +3,9 @@ ///////////// -//Stargazer: Creates a stargazer, a cheap power generator that utilizes starlight. -/datum/clockwork_scripture/create_object/stargazer - descname = "Generates Power From Starlight - Important!" - name = "Stargazer" - desc = "Forms a weak structure that generates power every second while within three tiles of starlight." - invocations = list("Capture their inferior light for us!") - channel_time = 50 - power_cost = 50 - object_path = /obj/structure/destructible/clockwork/stargazer - creator_message = "You form a stargazer, which will generate power near starlight." - observer_message = "A large lantern-shaped machine forms!" - usage_tip = "For obvious reasons, make sure to place this near a window or somewhere else that can see space!" - tier = SCRIPTURE_DRIVER - one_per_tile = TRUE - primary_component = HIEROPHANT_ANSIBLE - sort_priority = 1 - quickbind = TRUE - quickbind_desc = "Creates a stargazer, which generates power when near starlight." - -/datum/clockwork_scripture/create_object/stargazer/check_special_requirements() - var/area/A = get_area(invoker) - if(A.outdoors || A.map_name == "Space" || !A.blob_allowed) - to_chat(invoker, "Stargazers can't be built off-station.") - return - return ..() - - //Integration Cog: Creates an integration cog that can be inserted into APCs to passively siphon power. /datum/clockwork_scripture/create_object/integration_cog - descname = "APC Power Siphoner" + descname = "Power Generation" name = "Integration Cog" desc = "Fabricates an integration cog, which can be used on an open APC to replace its innards and passively siphon its power." invocations = list("Take that which sustains them!") @@ -41,11 +14,12 @@ whispered = TRUE object_path = /obj/item/clockwork/integration_cog creator_message = "You form an integration cog, which can be inserted into an open APC to passively siphon power." - usage_tip = "Tampering isn't visible unless the APC is opened." + usage_tip = "Tampering isn't visible unless the APC is opened. You can use the cog on a locked APC to unlock it." tier = SCRIPTURE_DRIVER space_allowed = TRUE primary_component = HIEROPHANT_ANSIBLE - sort_priority = 2 + sort_priority = 1 + important = TRUE quickbind = TRUE quickbind_desc = "Creates an integration cog, which can be used to siphon power from an open APC." @@ -65,7 +39,7 @@ tier = SCRIPTURE_DRIVER one_per_tile = TRUE primary_component = HIEROPHANT_ANSIBLE - sort_priority = 3 + sort_priority = 2 quickbind = TRUE quickbind_desc = "Creates a Sigil of Transgression, which will briefly stun and slow the next non-Servant to cross it." @@ -85,7 +59,7 @@ tier = SCRIPTURE_DRIVER one_per_tile = TRUE primary_component = HIEROPHANT_ANSIBLE - sort_priority = 4 + sort_priority = 3 quickbind = TRUE quickbind_desc = "Creates a Sigil of Submission, which will convert non-Servants that remain on it." @@ -102,13 +76,14 @@ usage_tip = "The light can be used from up to two tiles away. Damage taken will GREATLY REDUCE the stun's duration." tier = SCRIPTURE_DRIVER primary_component = BELLIGERENT_EYE - sort_priority = 5 + sort_priority = 4 slab_overlay = "volt" ranged_type = /obj/effect/proc_holder/slab/kindle ranged_message = "You charge the clockwork slab with divine energy.\n\ Left-click a target within melee range to stun!\n\ Click your slab to cancel." timeout_time = 150 + important = TRUE quickbind = TRUE quickbind_desc = "Stuns and mutes a target from a short range." @@ -125,13 +100,14 @@ usage_tip = "The manacles are about as strong as zipties, and break when removed." tier = SCRIPTURE_DRIVER primary_component = BELLIGERENT_EYE - sort_priority = 6 + sort_priority = 5 ranged_type = /obj/effect/proc_holder/slab/hateful_manacles slab_overlay = "hateful_manacles" ranged_message = "You charge the clockwork slab with divine energy.\n\ Left-click a target within melee range to shackle!\n\ Click your slab to cancel." timeout_time = 200 + important = TRUE quickbind = TRUE quickbind_desc = "Applies handcuffs to a struck target." @@ -148,7 +124,7 @@ usage_tip = "You cannot reactivate Vanguard while still shielded by it." tier = SCRIPTURE_DRIVER primary_component = VANGUARD_COGWHEEL - sort_priority = 7 + sort_priority = 6 quickbind = TRUE quickbind_desc = "Allows you to temporarily absorb stuns. All stuns absorbed will affect you when disabled." @@ -180,7 +156,7 @@ usage_tip = "The Compromise is very fast to invoke, and will remove holy water from the target Servant." tier = SCRIPTURE_DRIVER primary_component = VANGUARD_COGWHEEL - sort_priority = 8 + sort_priority = 7 quickbind = TRUE quickbind_desc = "Allows you to convert a Servant's brute, burn, and oxygen damage to half toxin damage.
Click your slab to disable." slab_overlay = "compromise" @@ -192,7 +168,7 @@ //Abscond: Used to return to Reebe. /datum/clockwork_scripture/abscond - descname = "Return to Reebe - Important!" + descname = "Return to Reebe" name = "Abscond" desc = "Yanks you through space, returning you to home base." invocations = list("As we bid farewell, and return to the stars...", "...we shall find our way home.") @@ -204,7 +180,8 @@ usage_tip = "This can't be used while on Reebe, for obvious reasons." tier = SCRIPTURE_DRIVER primary_component = GEIS_CAPACITOR - sort_priority = 9 + sort_priority = 8 + important = TRUE quickbind = TRUE quickbind_desc = "Returns you to Reebe." @@ -246,7 +223,7 @@ //Replicant: Creates a new clockwork slab. /datum/clockwork_scripture/create_object/replicant - descname = "New Clockwork Slab - Important!" + descname = "New Clockwork Slab" name = "Replicant" desc = "Creates a new clockwork slab." invocations = list("Metal, become greater!") @@ -259,7 +236,8 @@ tier = SCRIPTURE_DRIVER space_allowed = TRUE primary_component = GEIS_CAPACITOR - sort_priority = 10 + sort_priority = 9 + important = TRUE quickbind = TRUE quickbind_desc = "Creates a new Clockwork Slab." @@ -279,6 +257,6 @@ tier = SCRIPTURE_DRIVER space_allowed = TRUE primary_component = GEIS_CAPACITOR - sort_priority = 11 + sort_priority = 10 quickbind = TRUE quickbind_desc = "Creates a pair of Wraith Spectacles, which grant true sight but cause gradual vision loss." diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm b/code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm similarity index 98% rename from code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm rename to code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm index c86ff59b5f..9a78c64942 100644 --- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm +++ b/code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm @@ -5,7 +5,7 @@ //Replica Fabricator: Creates a replica fabricator, used to convert objects and repair clockwork structures. /datum/clockwork_scripture/create_object/replica_fabricator - descname = "Creates Brass and Converts Objects - Important!" + descname = "Creates Brass and Converts Objects" name = "Replica Fabricator" desc = "Forms a device that, when used on certain objects, replaces them with their Ratvarian equivalents. It requires power to function." invocations = list("With this device...", "...his presence shall be made known.") @@ -19,6 +19,7 @@ space_allowed = TRUE primary_component = HIEROPHANT_ANSIBLE sort_priority = 1 + important = TRUE quickbind = TRUE quickbind_desc = "Creates a Replica Fabricator, which can convert various objects to Ratvarian variants." @@ -99,7 +100,7 @@ //Clockwork Armaments: Grants the invoker the ability to call forth a Ratvarian spear and clockwork armor. /datum/clockwork_scripture/clockwork_armaments - descname = "Summonable Armor and Weapons - Important!" + descname = "Summonable Armor and Weapons" name = "Clockwork Armaments" desc = "Allows the invoker to summon clockwork armor and a Ratvarian spear at will. The spear's attacks will generate Vitality, used for healing." invocations = list("Grant me armaments...", "...from the forge of Armorer!") @@ -110,6 +111,7 @@ tier = SCRIPTURE_SCRIPT primary_component = VANGUARD_COGWHEEL sort_priority = 5 + important = TRUE quickbind = TRUE quickbind_desc = "Permanently binds clockwork armor and a Ratvarian spear to you." diff --git a/code/game/gamemodes/clock_cult/clock_structure.dm b/code/modules/antagonists/clockcult/clock_structure.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_structure.dm rename to code/modules/antagonists/clockcult/clock_structure.dm diff --git a/code/game/gamemodes/clock_cult/clock_structures/_trap_object.dm b/code/modules/antagonists/clockcult/clock_structures/_trap_object.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_structures/_trap_object.dm rename to code/modules/antagonists/clockcult/clock_structures/_trap_object.dm diff --git a/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm b/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm rename to code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm diff --git a/code/game/gamemodes/clock_cult/clock_structures/clockwork_obelisk.dm b/code/modules/antagonists/clockcult/clock_structures/clockwork_obelisk.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_structures/clockwork_obelisk.dm rename to code/modules/antagonists/clockcult/clock_structures/clockwork_obelisk.dm diff --git a/code/game/gamemodes/clock_cult/clock_structures/eminence_spire.dm b/code/modules/antagonists/clockcult/clock_structures/eminence_spire.dm similarity index 92% rename from code/game/gamemodes/clock_cult/clock_structures/eminence_spire.dm rename to code/modules/antagonists/clockcult/clock_structures/eminence_spire.dm index ef035234d0..121961e0d8 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/eminence_spire.dm +++ b/code/modules/antagonists/clockcult/clock_structures/eminence_spire.dm @@ -46,10 +46,12 @@ if(!IsAdminGhost(user)) return - var/datum/antagonist/clockcult/random_cultist = locate() in get_antagonists(/datum/antagonist/clockcult) //if theres no cultists new team without eminence will be created anyway. - if(random_cultist && random_cultist.clock_team && random_cultist.clock_team.eminence) - to_chat(user, "There's already an Eminence - too late!") - return + var/datum/mind/rando = locate() in get_antag_minds(/datum/antagonist/clockcult) //if theres no cultists new team without eminence will be created anyway. + if(rando) + var/datum/antagonist/clockcult/random_cultist = rando.has_antag_datum(/datum/antagonist/clockcult) + if(random_cultist && random_cultist.clock_team && random_cultist.clock_team.eminence) + to_chat(user, "There's already an Eminence - too late!") + return if(!GLOB.servants_active) to_chat(user, "The Ark must be active first!") return @@ -120,9 +122,9 @@ else if(eminence_nominee == "ghosts") kingmaking = TRUE hierophant_message("The eminence spire is now selecting a ghost to be the Eminence...") - var/list/candidates = pollGhostCandidates("Would you like to play as the servants' Eminence?", "Servant of Ratvar", null, ROLE_SERVANT_OF_RATVAR, poll_time = 100) + var/list/candidates = pollGhostCandidates("Would you like to play as the servants' Eminence?", ROLE_SERVANT_OF_RATVAR, null, ROLE_SERVANT_OF_RATVAR, poll_time = 100) kingmaking = FALSE - if(!candidates.len) + if(!LAZYLEN(candidates)) for(var/mob/M in servants_and_ghosts()) M.playsound_local(M, 'sound/machines/clockcult/integration_cog_install.ogg', 50, FALSE) hierophant_message("No ghosts accepted the offer! The eminence spire has been reset.") diff --git a/code/game/gamemodes/clock_cult/clock_structures/heralds_beacon.dm b/code/modules/antagonists/clockcult/clock_structures/heralds_beacon.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_structures/heralds_beacon.dm rename to code/modules/antagonists/clockcult/clock_structures/heralds_beacon.dm diff --git a/code/game/gamemodes/clock_cult/clock_structures/mania_motor.dm b/code/modules/antagonists/clockcult/clock_structures/mania_motor.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_structures/mania_motor.dm rename to code/modules/antagonists/clockcult/clock_structures/mania_motor.dm diff --git a/code/game/gamemodes/clock_cult/clock_structures/ocular_warden.dm b/code/modules/antagonists/clockcult/clock_structures/ocular_warden.dm similarity index 98% rename from code/game/gamemodes/clock_cult/clock_structures/ocular_warden.dm rename to code/modules/antagonists/clockcult/clock_structures/ocular_warden.dm index 7e538765f3..9c2e806537 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/ocular_warden.dm +++ b/code/modules/antagonists/clockcult/clock_structures/ocular_warden.dm @@ -110,7 +110,7 @@ if(!(BI.resistance_flags & ON_FIRE)) BI.fire_act() continue - if(is_servant_of_ratvar(L) || (L.has_disability(DISABILITY_BLIND)) || L.null_rod_check()) + if(is_servant_of_ratvar(L) || (L.has_trait(TRAIT_BLIND)) || L.null_rod_check()) continue if(L.stat || L.restrained() || L.buckled || L.lying) continue diff --git a/code/game/gamemodes/clock_cult/clock_structures/ratvar_the_clockwork_justicar.dm b/code/modules/antagonists/clockcult/clock_structures/ratvar_the_clockwork_justicar.dm similarity index 99% rename from code/game/gamemodes/clock_cult/clock_structures/ratvar_the_clockwork_justicar.dm rename to code/modules/antagonists/clockcult/clock_structures/ratvar_the_clockwork_justicar.dm index 2a549d9c3c..06513e80f9 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/ratvar_the_clockwork_justicar.dm +++ b/code/modules/antagonists/clockcult/clock_structures/ratvar_the_clockwork_justicar.dm @@ -15,7 +15,7 @@ var/atom/prey //Whatever Ratvar is chasing var/clashing = FALSE //If Ratvar is fighting with Nar-Sie var/convert_range = 10 - dangerous_possession = TRUE + obj_flags = CAN_BE_HIT | DANGEROUS_POSSESSION /obj/structure/destructible/clockwork/massive/ratvar/Initialize() . = ..() diff --git a/code/game/gamemodes/clock_cult/clock_structures/stargazer.dm b/code/modules/antagonists/clockcult/clock_structures/stargazer.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_structures/stargazer.dm rename to code/modules/antagonists/clockcult/clock_structures/stargazer.dm diff --git a/code/game/gamemodes/clock_cult/clock_structures/taunting_trail.dm b/code/modules/antagonists/clockcult/clock_structures/taunting_trail.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_structures/taunting_trail.dm rename to code/modules/antagonists/clockcult/clock_structures/taunting_trail.dm diff --git a/code/game/gamemodes/clock_cult/clock_structures/trap_triggers/lever.dm b/code/modules/antagonists/clockcult/clock_structures/trap_triggers/lever.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_structures/trap_triggers/lever.dm rename to code/modules/antagonists/clockcult/clock_structures/trap_triggers/lever.dm diff --git a/code/game/gamemodes/clock_cult/clock_structures/trap_triggers/pressure_sensor.dm b/code/modules/antagonists/clockcult/clock_structures/trap_triggers/pressure_sensor.dm similarity index 96% rename from code/game/gamemodes/clock_cult/clock_structures/trap_triggers/pressure_sensor.dm rename to code/modules/antagonists/clockcult/clock_structures/trap_triggers/pressure_sensor.dm index fffabe8f5c..94f0ba7112 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/trap_triggers/pressure_sensor.dm +++ b/code/modules/antagonists/clockcult/clock_structures/trap_triggers/pressure_sensor.dm @@ -5,8 +5,7 @@ clockwork_desc = "A trigger that will activate when a non-servant runs across it." max_integrity = 5 icon_state = "pressure_sensor" - alpha = 80 - layer = LOW_ITEM_LAYER + alpha = 50 /obj/structure/destructible/clockwork/trap/trigger/Initialize() . = ..() diff --git a/code/game/gamemodes/clock_cult/clock_structures/trap_triggers/repeater.dm b/code/modules/antagonists/clockcult/clock_structures/trap_triggers/repeater.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_structures/trap_triggers/repeater.dm rename to code/modules/antagonists/clockcult/clock_structures/trap_triggers/repeater.dm diff --git a/code/game/gamemodes/clock_cult/clock_structures/traps/brass_skewer.dm b/code/modules/antagonists/clockcult/clock_structures/traps/brass_skewer.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_structures/traps/brass_skewer.dm rename to code/modules/antagonists/clockcult/clock_structures/traps/brass_skewer.dm diff --git a/code/game/gamemodes/clock_cult/clock_structures/traps/steam_vent.dm b/code/modules/antagonists/clockcult/clock_structures/traps/steam_vent.dm similarity index 97% rename from code/game/gamemodes/clock_cult/clock_structures/traps/steam_vent.dm rename to code/modules/antagonists/clockcult/clock_structures/traps/steam_vent.dm index 6aede1592e..8d65574987 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/traps/steam_vent.dm +++ b/code/modules/antagonists/clockcult/clock_structures/traps/steam_vent.dm @@ -7,6 +7,7 @@ break_message = "The vent snaps and collapses!" max_integrity = 100 density = FALSE + layer = BELOW_OBJ_LAYER /obj/structure/destructible/clockwork/trap/steam_vent/activate() opacity = !opacity diff --git a/code/game/gamemodes/clock_cult/clock_structures/wall_gear.dm b/code/modules/antagonists/clockcult/clock_structures/wall_gear.dm similarity index 100% rename from code/game/gamemodes/clock_cult/clock_structures/wall_gear.dm rename to code/modules/antagonists/clockcult/clock_structures/wall_gear.dm diff --git a/code/modules/antagonists/clockcult/clockcult.dm b/code/modules/antagonists/clockcult/clockcult.dm new file mode 100644 index 0000000000..2a05b14d70 --- /dev/null +++ b/code/modules/antagonists/clockcult/clockcult.dm @@ -0,0 +1,219 @@ +//CLOCKCULT PROOF OF CONCEPT +/datum/antagonist/clockcult + name = "Clock Cultist" + roundend_category = "clock cultists" + antagpanel_category = "Clockcult" + job_rank = ROLE_SERVANT_OF_RATVAR + var/datum/action/innate/hierophant/hierophant_network = new() + var/datum/team/clockcult/clock_team + var/make_team = TRUE //This should be only false for tutorial scarabs + +/datum/antagonist/clockcult/silent + silent = TRUE + show_in_antagpanel = FALSE //internal + +/datum/antagonist/clockcult/Destroy() + qdel(hierophant_network) + return ..() + +/datum/antagonist/clockcult/get_team() + return clock_team + +/datum/antagonist/clockcult/create_team(datum/team/clockcult/new_team) + if(!new_team && make_team) + //TODO blah blah same as the others, allow multiple + for(var/datum/antagonist/clockcult/H in GLOB.antagonists) + if(!H.owner) + continue + if(H.clock_team) + clock_team = H.clock_team + return + clock_team = new /datum/team/clockcult + return + if(make_team && !istype(new_team)) + stack_trace("Wrong team type passed to [type] initialization.") + clock_team = new_team + +/datum/antagonist/clockcult/can_be_owned(datum/mind/new_owner) + . = ..() + if(.) + . = is_eligible_servant(new_owner.current) + +/datum/antagonist/clockcult/greet() + if(!owner.current || silent) + return + owner.current.visible_message("[owner.current]'s eyes glow a blazing yellow!", null, null, 7, owner.current) //don't show the owner this message + to_chat(owner.current, "Assist your new companions in their righteous efforts. Your goal is theirs, and theirs yours. You serve the Clockwork \ + Justiciar above all else. Perform his every whim without hesitation.") + owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/clockcultalr.ogg', 70, FALSE, pressure_affected = FALSE) + +/datum/antagonist/clockcult/on_gain() + var/mob/living/current = owner.current + SSticker.mode.servants_of_ratvar += owner + SSticker.mode.update_servant_icons_added(owner) + owner.special_role = "Servant of Ratvar" + owner.current.log_message("Has been converted to the cult of Ratvar!", INDIVIDUAL_ATTACK_LOG) + if(issilicon(current)) + if(iscyborg(current) && !silent) + var/mob/living/silicon/robot/R = current + if(R.connected_ai && !is_servant_of_ratvar(R.connected_ai)) + to_chat(R, "You have been desynced from your master AI.
\ + In addition, your onboard camera is no longer active and you have gained additional equipment, including a limited clockwork slab.
") + else + to_chat(R, "Your onboard camera is no longer active and you have gained additional equipment, including a limited clockwork slab.") + if(isAI(current)) + to_chat(current, "You are now able to use your cameras to listen in on conversations, but can no longer speak in anything but Ratvarian.") + to_chat(current, "You can communicate with other servants by using the Hierophant Network action button in the upper left.") + else if(isbrain(current) || isclockmob(current)) + to_chat(current, "You can communicate with other servants by using the Hierophant Network action button in the upper left.") + ..() + to_chat(current, "This is Ratvar's will: [CLOCKCULT_OBJECTIVE]") + antag_memory += "Ratvar's will: [CLOCKCULT_OBJECTIVE]
" //Memorize the objectives + +/datum/antagonist/clockcult/apply_innate_effects(mob/living/mob_override) + . = ..() + var/mob/living/current = owner.current + if(istype(mob_override)) + current = mob_override + GLOB.all_clockwork_mobs += current + current.faction |= "ratvar" + current.grant_language(/datum/language/ratvar) + current.update_action_buttons_icon() //because a few clockcult things are action buttons and we may be wearing/holding them for whatever reason, we need to update buttons + if(issilicon(current)) + var/mob/living/silicon/S = current + if(iscyborg(S)) + var/mob/living/silicon/robot/R = S + if(!R.shell) + R.UnlinkSelf() + R.module.rebuild_modules() + else if(isAI(S)) + var/mob/living/silicon/ai/A = S + A.can_be_carded = FALSE + A.requires_power = POWER_REQ_CLOCKCULT + var/list/AI_frame = list(mutable_appearance('icons/mob/clockwork_mobs.dmi', "aiframe")) //make the AI's cool frame + for(var/d in GLOB.cardinals) + AI_frame += image('icons/mob/clockwork_mobs.dmi', A, "eye[rand(1, 10)]", dir = d) //the eyes are randomly fast or slow + A.add_overlay(AI_frame) + if(!A.lacks_power()) + A.ai_restore_power() + if(A.eyeobj) + A.eyeobj.relay_speech = TRUE + for(var/mob/living/silicon/robot/R in A.connected_robots) + if(R.connected_ai == A) + add_servant_of_ratvar(R) + S.laws = new/datum/ai_laws/ratvar + S.laws.associate(S) + S.update_icons() + S.show_laws() + hierophant_network.title = "Silicon" + hierophant_network.span_for_name = "nezbere" + hierophant_network.span_for_message = "brass" + else if(isbrain(current)) + hierophant_network.title = "Vessel" + hierophant_network.span_for_name = "nezbere" + hierophant_network.span_for_message = "alloy" + else if(isclockmob(current)) + hierophant_network.title = "Construct" + hierophant_network.span_for_name = "nezbere" + hierophant_network.span_for_message = "brass" + hierophant_network.Grant(current) + current.throw_alert("clockinfo", /obj/screen/alert/clockwork/infodump) + var/obj/structure/destructible/clockwork/massive/celestial_gateway/G = GLOB.ark_of_the_clockwork_justiciar + if(G.active && ishuman(current)) + current.add_overlay(mutable_appearance('icons/effects/genetics.dmi', "servitude", -MUTATIONS_LAYER)) + +/datum/antagonist/clockcult/remove_innate_effects(mob/living/mob_override) + var/mob/living/current = owner.current + if(istype(mob_override)) + current = mob_override + GLOB.all_clockwork_mobs -= current + current.faction -= "ratvar" + current.remove_language(/datum/language/ratvar) + current.clear_alert("clockinfo") + for(var/datum/action/innate/clockwork_armaments/C in owner.current.actions) //Removes any bound clockwork armor + qdel(C) + for(var/datum/action/innate/call_weapon/W in owner.current.actions) //and weapons too + qdel(W) + if(issilicon(current)) + var/mob/living/silicon/S = current + if(isAI(S)) + var/mob/living/silicon/ai/A = S + A.can_be_carded = initial(A.can_be_carded) + A.requires_power = initial(A.requires_power) + A.cut_overlays() + S.make_laws() + S.update_icons() + S.show_laws() + var/mob/living/temp_owner = current + ..() + if(iscyborg(temp_owner)) + var/mob/living/silicon/robot/R = temp_owner + R.module.rebuild_modules() + if(temp_owner) + temp_owner.update_action_buttons_icon() //because a few clockcult things are action buttons and we may be wearing/holding them, we need to update buttons + temp_owner.cut_overlays() + temp_owner.regenerate_icons() + +/datum/antagonist/clockcult/on_removal() + SSticker.mode.servants_of_ratvar -= owner + SSticker.mode.update_servant_icons_removed(owner) + if(!silent) + owner.current.visible_message("[owner] seems to have remembered their true allegiance!", null, null, null, owner.current) + to_chat(owner, "A cold, cold darkness flows through your mind, extinguishing the Justiciar's light and all of your memories as his servant.") + owner.current.log_message("Has renounced the cult of Ratvar!", INDIVIDUAL_ATTACK_LOG) + owner.special_role = null + if(iscyborg(owner.current)) + to_chat(owner.current, "Despite your freedom from Ratvar's influence, you are still irreparably damaged and no longer possess certain functions such as AI linking.") + . = ..() + + +/datum/antagonist/clockcult/admin_add(datum/mind/new_owner,mob/admin) + add_servant_of_ratvar(new_owner.current, TRUE) + message_admins("[key_name_admin(admin)] has made [new_owner.current] into a servant of Ratvar.") + log_admin("[key_name(admin)] has made [new_owner.current] into a servant of Ratvar.") + +/datum/antagonist/clockcult/admin_remove(mob/user) + remove_servant_of_ratvar(owner.current, TRUE) + message_admins("[key_name_admin(user)] has removed clockwork servant status from [owner.current].") + log_admin("[key_name(user)] has removed clockwork servant status from [owner.current].") + +/datum/antagonist/clockcult/get_admin_commands() + . = ..() + .["Give slab"] = CALLBACK(src,.proc/admin_give_slab) + +/datum/antagonist/clockcult/proc/admin_give_slab(mob/admin) + if(!SSticker.mode.equip_servant(owner.current)) + to_chat(admin, "Failed to outfit [owner.current]!") + else + to_chat(admin, "Successfully gave [owner.current] servant equipment!") + +/datum/team/clockcult + name = "Clockcult" + var/list/objective + var/datum/mind/eminence + +/datum/team/clockcult/proc/check_clockwork_victory() + if(GLOB.clockwork_gateway_activated) + return TRUE + return FALSE + +/datum/team/clockcult/roundend_report() + var/list/parts = list() + + if(check_clockwork_victory()) + parts += "Ratvar's servants defended the Ark until its activation!" + else + parts += "The Ark was destroyed! Ratvar will rust away for all eternity!" + parts += " " + parts += "The servants' objective was: [CLOCKCULT_OBJECTIVE]." + parts += "Construction Value(CV) was: [GLOB.clockwork_construction_value]" + for(var/i in SSticker.scripture_states) + if(i != SCRIPTURE_DRIVER) + parts += "[i] scripture was: [SSticker.scripture_states[i] ? "UN":""]LOCKED" + if(eminence) + parts += "The Eminence was: [printplayer(eminence)]" + if(members.len) + parts += "Ratvar's servants were:" + parts += printplayerlist(members - eminence) + + return "
[parts.Join("
")]
" \ No newline at end of file diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm new file mode 100644 index 0000000000..1c90834cbd --- /dev/null +++ b/code/modules/antagonists/cult/cult.dm @@ -0,0 +1,329 @@ +#define SUMMON_POSSIBILITIES 3 + +/datum/antagonist/cult + name = "Cultist" + roundend_category = "cultists" + antagpanel_category = "Cult" + var/datum/action/innate/cult/comm/communion = new + var/datum/action/innate/cult/mastervote/vote = new + var/datum/action/innate/cult/blood_magic/magic = new + job_rank = ROLE_CULTIST + var/ignore_implant = FALSE + var/give_equipment = FALSE + + var/datum/team/cult/cult_team + +/datum/antagonist/cult/get_team() + return cult_team + +/datum/antagonist/cult/create_team(datum/team/cult/new_team) + if(!new_team) + //todo remove this and allow admin buttons to create more than one cult + for(var/datum/antagonist/cult/H in GLOB.antagonists) + if(!H.owner) + continue + if(H.cult_team) + cult_team = H.cult_team + return + cult_team = new /datum/team/cult + cult_team.setup_objectives() + return + if(!istype(new_team)) + stack_trace("Wrong team type passed to [type] initialization.") + cult_team = new_team + +/datum/antagonist/cult/proc/add_objectives() + objectives |= cult_team.objectives + owner.objectives |= objectives + +/datum/antagonist/cult/proc/remove_objectives() + owner.objectives -= objectives + +/datum/antagonist/cult/Destroy() + QDEL_NULL(communion) + QDEL_NULL(vote) + return ..() + +/datum/antagonist/cult/can_be_owned(datum/mind/new_owner) + . = ..() + if(. && !ignore_implant) + . = is_convertable_to_cult(new_owner.current,cult_team) + +/datum/antagonist/cult/greet() + to_chat(owner, "You are a member of the cult!") + owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/bloodcult.ogg', 100, FALSE, pressure_affected = FALSE)//subject to change + owner.announce_objectives() + +/datum/antagonist/cult/on_gain() + . = ..() + var/mob/living/current = owner.current + add_objectives() + if(give_equipment) + equip_cultist(TRUE) + SSticker.mode.cult += owner // Only add after they've been given objectives + SSticker.mode.update_cult_icons_added(owner) + current.log_message("Has been converted to the cult of Nar'Sie!", INDIVIDUAL_ATTACK_LOG) + + if(cult_team.blood_target && cult_team.blood_target_image && current.client) + current.client.images += cult_team.blood_target_image + + +/datum/antagonist/cult/proc/equip_cultist(metal=TRUE) + var/mob/living/carbon/H = owner.current + if(!istype(H)) + return + if (owner.assigned_role == "Clown") + to_chat(owner, "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself.") + H.dna.remove_mutation(CLOWNMUT) + . += cult_give_item(/obj/item/melee/cultblade/dagger, H) + if(metal) + . += cult_give_item(/obj/item/stack/sheet/runed_metal/ten, H) + to_chat(owner, "These will help you start the cult on this station. Use them well, and remember - you are not the only one.
") + + +/datum/antagonist/cult/proc/cult_give_item(obj/item/item_path, mob/living/carbon/human/mob) + var/list/slots = list( + "backpack" = slot_in_backpack, + "left pocket" = slot_l_store, + "right pocket" = slot_r_store + ) + + var/T = new item_path(mob) + var/item_name = initial(item_path.name) + var/where = mob.equip_in_one_of_slots(T, slots) + if(!where) + to_chat(mob, "Unfortunately, you weren't able to get a [item_name]. This is very bad and you should adminhelp immediately (press F1).") + return 0 + else + to_chat(mob, "You have a [item_name] in your [where].") + if(where == "backpack") + var/obj/item/storage/B = mob.back + B.orient2hud(mob) + B.show_to(mob) + return 1 + +/datum/antagonist/cult/apply_innate_effects(mob/living/mob_override) + . = ..() + var/mob/living/current = owner.current + if(mob_override) + current = mob_override + current.faction |= "cult" + current.grant_language(/datum/language/narsie) + if(!cult_team.cult_master) + vote.Grant(current) + communion.Grant(current) + if(ishuman(current)) + magic.Grant(current) + current.throw_alert("bloodsense", /obj/screen/alert/bloodsense) + +/datum/antagonist/cult/remove_innate_effects(mob/living/mob_override) + . = ..() + var/mob/living/current = owner.current + if(mob_override) + current = mob_override + current.faction -= "cult" + current.remove_language(/datum/language/narsie) + vote.Remove(current) + communion.Remove(current) + magic.Remove(current) + current.clear_alert("bloodsense") + +/datum/antagonist/cult/on_removal() + remove_objectives() + SSticker.mode.cult -= owner + SSticker.mode.update_cult_icons_removed(owner) + if(!silent) + owner.current.visible_message("[owner.current] looks like [owner.current.p_they()] just reverted to their old faith!", null, null, null, owner.current) + to_chat(owner.current, "An unfamiliar white light flashes through your mind, cleansing the taint of the Geometer and all your memories as her servant.") + owner.current.log_message("Has renounced the cult of Nar'Sie!", INDIVIDUAL_ATTACK_LOG) + if(cult_team.blood_target && cult_team.blood_target_image && owner.current.client) + owner.current.client.images -= cult_team.blood_target_image + . = ..() + +/datum/antagonist/cult/admin_add(datum/mind/new_owner,mob/admin) + give_equipment = FALSE + new_owner.add_antag_datum(src) + message_admins("[key_name_admin(admin)] has cult'ed [new_owner.current].") + log_admin("[key_name(admin)] has cult'ed [new_owner.current].") + +/datum/antagonist/cult/admin_remove(mob/user) + message_admins("[key_name_admin(user)] has decult'ed [owner.current].") + log_admin("[key_name(user)] has decult'ed [owner.current].") + SSticker.mode.remove_cultist(owner,silent=TRUE) //disgusting + +/datum/antagonist/cult/get_admin_commands() + . = ..() + .["Dagger"] = CALLBACK(src,.proc/admin_give_dagger) + .["Dagger and Metal"] = CALLBACK(src,.proc/admin_give_metal) + +/datum/antagonist/cult/proc/admin_give_dagger(mob/admin) + if(!equip_cultist(FALSE)) + to_chat(admin, "Spawning dagger failed!") + +/datum/antagonist/cult/proc/admin_give_metal(mob/admin) + if (!equip_cultist(TRUE)) + to_chat(admin, "Spawning runed metal failed!") + +/datum/antagonist/cult/master + ignore_implant = TRUE + show_in_antagpanel = FALSE //Feel free to add this later + var/datum/action/innate/cult/master/finalreck/reckoning = new + var/datum/action/innate/cult/master/cultmark/bloodmark = new + var/datum/action/innate/cult/master/pulse/throwing = new + +/datum/antagonist/cult/master/Destroy() + QDEL_NULL(reckoning) + QDEL_NULL(bloodmark) + QDEL_NULL(throwing) + return ..() + +/datum/antagonist/cult/master/on_gain() + . = ..() + var/mob/living/current = owner.current + set_antag_hud(current, "cultmaster") + +/datum/antagonist/cult/master/greet() + to_chat(owner.current, "You are the cult's Master. As the cult's Master, you have a unique title and loud voice when communicating, are capable of marking \ + targets, such as a location or a noncultist, to direct the cult to them, and, finally, you are capable of summoning the entire living cult to your location once.") + to_chat(owner.current, "Use these abilities to direct the cult to victory at any cost.") + +/datum/antagonist/cult/master/apply_innate_effects(mob/living/mob_override) + . = ..() + var/mob/living/current = owner.current + if(mob_override) + current = mob_override + if(!cult_team.reckoning_complete) + reckoning.Grant(current) + bloodmark.Grant(current) + throwing.Grant(current) + current.update_action_buttons_icon() + current.apply_status_effect(/datum/status_effect/cult_master) + +/datum/antagonist/cult/master/remove_innate_effects(mob/living/mob_override) + . = ..() + var/mob/living/current = owner.current + if(mob_override) + current = mob_override + reckoning.Remove(current) + bloodmark.Remove(current) + throwing.Remove(current) + current.update_action_buttons_icon() + current.remove_status_effect(/datum/status_effect/cult_master) + +/datum/team/cult + name = "Cult" + + var/blood_target + var/image/blood_target_image + var/blood_target_reset_timer + + var/cult_vote_called = FALSE + var/mob/living/cult_master + var/reckoning_complete = FALSE + + +/datum/team/cult/proc/setup_objectives() + //SAC OBJECTIVE , todo: move this to objective internals + var/list/target_candidates = list() + var/datum/objective/sacrifice/sac_objective = new + sac_objective.team = src + + for(var/mob/living/carbon/human/player in GLOB.player_list) + if(player.mind && !player.mind.has_antag_datum(/datum/antagonist/cult) && !is_convertable_to_cult(player) && player.stat != DEAD) + target_candidates += player.mind + + if(target_candidates.len == 0) + message_admins("Cult Sacrifice: Could not find unconvertable target, checking for convertable target.") + for(var/mob/living/carbon/human/player in GLOB.player_list) + if(player.mind && !player.mind.has_antag_datum(/datum/antagonist/cult) && player.stat != DEAD) + target_candidates += player.mind + listclearnulls(target_candidates) + if(LAZYLEN(target_candidates)) + sac_objective.target = pick(target_candidates) + sac_objective.update_explanation_text() + + var/datum/job/sacjob = SSjob.GetJob(sac_objective.target.assigned_role) + var/datum/preferences/sacface = sac_objective.target.current.client.prefs + var/icon/reshape = get_flat_human_icon(null, sacjob, sacface) + reshape.Shift(SOUTH, 4) + reshape.Shift(EAST, 1) + reshape.Crop(7,4,26,31) + reshape.Crop(-5,-3,26,30) + sac_objective.sac_image = reshape + + objectives += sac_objective + else + message_admins("Cult Sacrifice: Could not find unconvertable or convertable target. WELP!") + + + //SUMMON OBJECTIVE + + var/datum/objective/eldergod/summon_objective = new() + summon_objective.team = src + objectives += summon_objective + +/datum/objective/sacrifice + var/sacced = FALSE + var/sac_image + +/datum/objective/sacrifice/check_completion() + return sacced || completed + +/datum/objective/sacrifice/update_explanation_text() + if(target) + explanation_text = "Sacrifice [target], the [target.assigned_role] via invoking a Sacrifice rune with them on it and three acolytes around it." + else + explanation_text = "The veil has already been weakened here, proceed to the final objective." + +/datum/objective/eldergod + var/summoned = FALSE + var/list/summon_spots = list() + +/datum/objective/eldergod/New() + ..() + var/sanity = 0 + while(summon_spots.len < SUMMON_POSSIBILITIES && sanity < 100) + var/area/summon = pick(GLOB.sortedAreas - summon_spots) + if(summon && is_station_level(summon.z) && summon.valid_territory) + summon_spots += summon + sanity++ + update_explanation_text() + +/datum/objective/eldergod/update_explanation_text() + explanation_text = "Summon Nar-Sie by invoking the rune 'Summon Nar-Sie'. The summoning can only be accomplished in [english_list(summon_spots)] - where the veil is weak enough for the ritual to begin." + +/datum/objective/eldergod/check_completion() + return summoned || completed + +/datum/team/cult/proc/check_cult_victory() + for(var/datum/objective/O in objectives) + if(!O.check_completion()) + return FALSE + return TRUE + +/datum/team/cult/roundend_report() + var/list/parts = list() + + if(check_cult_victory()) + parts += "The cult has succeeded! Nar-sie has snuffed out another torch in the void!" + else + parts += "The staff managed to stop the cult! Dark words and heresy are no match for Nanotrasen's finest!" + + if(objectives.len) + parts += "The cultists' objectives were:" + var/count = 1 + for(var/datum/objective/objective in objectives) + if(objective.check_completion()) + parts += "Objective #[count]: [objective.explanation_text] Success!" + else + parts += "Objective #[count]: [objective.explanation_text] Fail." + count++ + + if(members.len) + parts += "The cultists were:" + parts += printplayerlist(members) + + return "
[parts.Join("
")]
" + +/datum/team/cult/is_gamemode_hero() + return SSticker.mode.name == "cult" diff --git a/code/game/gamemodes/cult/cult_comms.dm b/code/modules/antagonists/cult/cult_comms.dm similarity index 74% rename from code/game/gamemodes/cult/cult_comms.dm rename to code/modules/antagonists/cult/cult_comms.dm index c73a77c95b..bedb7dc9bc 100644 --- a/code/game/gamemodes/cult/cult_comms.dm +++ b/code/modules/antagonists/cult/cult_comms.dm @@ -14,6 +14,7 @@ /datum/action/innate/cult/comm name = "Communion" + desc = "Whispered words that all cultists can hear.
Warning:Nearby non-cultists can still hear you." button_icon_state = "cult_comms" /datum/action/innate/cult/comm/Activate() @@ -23,7 +24,7 @@ cultist_commune(usr, input) -/proc/cultist_commune(mob/living/user, message) +/datum/action/innate/cult/comm/proc/cultist_commune(mob/living/user, message) var/my_message if(!message) return @@ -33,10 +34,7 @@ var/span = "cult italic" if(user.mind && user.mind.has_antag_datum(/datum/antagonist/cult/master)) span = "cultlarge" - if(ishuman(user)) - title = "Master" - else - title = "Lord" + title = "Master" else if(!ishuman(user)) title = "Construct" my_message = "[title] [findtextEx(user.name, user.real_name) ? user.name : "[user.real_name] (as [user.name])"]: [message]" @@ -50,38 +48,26 @@ log_talk(user,"CULT:[key_name(user)] : [message]",LOGSAY) -/mob/living/proc/cult_help() - set category = "Cultist" - set name = "How to Play Cult" - var/text = "" - text += "
Tenets of the Dark One



" +/datum/action/innate/cult/comm/spirit + name = "Spiritual Communion" + desc = "Conveys a message from the spirit realm that all cultists can hear." - text += "I. SECRECY
Your cult is a SECRET organization. Your success DEPENDS on keeping your cult's members and locations SECRET for as long as possible. This means that your tome should be hidden \ - in your bag and never brought out in public. You should never create runes where other crew might find them, and you should avoid using talismans or other cult magic with witnesses around.

" +/datum/action/innate/cult/comm/spirit/IsAvailable() + if(iscultist(owner.mind.current)) + return TRUE - text += "II. TOME
You start with a unique talisman in your bag. This supply talisman can be used 3 times, and creates starter equipment for your cult. The most critical of the talisman's functions is \ - the power to create a tome. This tome is your most important item and summoning one (in secret) is your FIRST PRIORITY. It lets you talk to fellow cultists and create runes, which in turn is essential to growing the cult's power.

" - - text += "III. RUNES
Runes are powerful sources of cult magic. Your tome will allow you to draw runes with your blood. Those runes, when hit with an empty hand, will attempt to \ - trigger the rune's magic. Runes are essential for the cult to convert new members, create powerful minions, or call upon incredibly powerful magic. Some runes require more than one cultist to use.

" - - text += "IV. TALISMANS
Talismans are a mobile source of cult magic that are NECESSARY to achieve success as a cult. Your starting talisman can produce certain talismans, but you will need \ - to use the -create talisman- rune (with ordinary paper on top) to get more talismans. Talismans are EXTREMELY powerful, therefore creating more talismans in a HIDDEN location should be one of your TOP PRIORITIES.

" - - text += "V. GROW THE CULT
There are certain basic strategies that all cultists should master. STUN talismans are the foundation of a successful cult. If you intend to convert the stunned person \ - you should use cuffs or a talisman of shackling on them and remove their headset before they recover (it takes about 10 seconds to recover). If you intend to sacrifice the victim, striking them quickly and repeatedly with your tome \ - will knock them out before they can recover. Sacrificed victims will their soul behind in a shard, these shards can be used on construct shells to make powerful servants for the cult. Remember you need TWO cultists standing near a \ - conversion rune to convert someone. Your construct minions cannot trigger most runes, but they will count as cultists in helping you trigger more powerful runes like conversion or blood boil.

" - - text += "VI. VICTORY
You have two ultimate goals as a cultist, sacrifice your target, and summon Nar-Sie. Sacrificing the target involves killing that individual and then placing \ - their corpse on a sacrifice rune and triggering that rune with THREE cultists. Do NOT lose the target's corpse! Only once the target is sacrificed can Nar-Sie be summoned. Summoning Nar-Sie will take nearly one minute \ - just to draw the massive rune needed. Do not create the rune until your cult is ready, the crew will receive the NAME and LOCATION of anyone who attempts to create the Nar-Sie rune. Once the Nar-Sie rune is drawn \ - you must gathered 9 cultists (or constructs) over the rune and then click it to bring the Dark One into this world!

" - - var/datum/browser/popup = new(usr, "mind", "", 800, 600) - popup.set_content(text) - popup.open() - return 1 +/datum/action/innate/cult/comm/spirit/cultist_commune(mob/living/user, message) + var/my_message + if(!message) + return + my_message = "The [user.name]: [message]" + for(var/i in GLOB.player_list) + var/mob/M = i + if(iscultist(M)) + to_chat(M, my_message) + else if(M in GLOB.dead_mob_list) + var/link = FOLLOW_LINK(M, user) + to_chat(M, "[link] [my_message]") /datum/action/innate/cult/mastervote name = "Assert Leadership" @@ -139,7 +125,7 @@ if(!B.current.incapacitated()) to_chat(B.current, "[Nominee] could not win the cult's support and shall continue to serve as an acolyte.") return FALSE - team.cult_mastered = TRUE + team.cult_master = Nominee SSticker.mode.remove_cultist(Nominee.mind, TRUE) Nominee.mind.add_antag_datum(/datum/antagonist/cult/master) for(var/datum/mind/B in team.members) @@ -171,7 +157,7 @@ if(!is_blocked_turf(T, TRUE)) destinations += T if(!LAZYLEN(destinations)) - to_chat(owner, "You need more space to summon the cult!") + to_chat(owner, "You need more space to summon your cult!") return if(do_after(owner, 30, target = owner)) for(var/datum/mind/B in antag.cult_team.members) @@ -234,8 +220,6 @@ ..() /datum/action/innate/cult/master/cultmark/IsAvailable() - if(!owner.mind || !owner.mind.has_antag_datum(/datum/antagonist/cult/master)) - return FALSE if(cooldown > world.time) if(!CM.active) to_chat(owner, "You need to wait [DisplayTimeText(cooldown - world.time)] before you can mark another target!") @@ -278,6 +262,9 @@ var/datum/antagonist/cult/C = caller.mind.has_antag_datum(/datum/antagonist/cult,TRUE) if(target in view(7, get_turf(ranged_ability_user))) + if(C.cult_team.blood_target) + to_chat(ranged_ability_user, "The cult has already designated a target!") + return FALSE C.cult_team.blood_target = target var/area/A = get_area(target) attached_action.cooldown = world.time + attached_action.base_cooldown @@ -288,7 +275,7 @@ C.cult_team.blood_target_image.pixel_y = -target.pixel_y for(var/datum/mind/B in SSticker.mode.cult) if(B.current && B.current.stat != DEAD && B.current.client) - to_chat(B.current, "Master [ranged_ability_user] has marked [C.cult_team.blood_target] in the [A.name] as the cult's top priority, get there immediately!") + to_chat(B.current, "[ranged_ability_user] has marked [C.cult_team.blood_target] in the [A.name] as the cult's top priority, get there immediately!") SEND_SOUND(B.current, sound(pick('sound/hallucinations/over_here2.ogg','sound/hallucinations/over_here3.ogg'),0,1,75)) B.current.client.images += C.cult_team.blood_target_image attached_action.owner.update_action_buttons_icon() @@ -307,6 +294,82 @@ team.blood_target = null +/datum/action/innate/cult/master/cultmark/ghost + name = "Mark a Blood Target for the Cult" + desc = "Marks a target for the entire cult to track." + +/datum/action/innate/cult/master/cultmark/IsAvailable() + if(istype(owner, /mob/dead/observer) && iscultist(owner.mind.current)) + return TRUE + else + qdel(src) + +/datum/action/innate/cult/ghostmark //Ghost version + name = "Blood Mark your Target" + desc = "Marks whatever you are orbitting - for the entire cult to track." + button_icon_state = "cult_mark" + var/tracking = FALSE + var/cooldown = 0 + var/base_cooldown = 600 + +/datum/action/innate/cult/ghostmark/IsAvailable() + if(istype(owner, /mob/dead/observer) && iscultist(owner.mind.current)) + return TRUE + else + qdel(src) + +/datum/action/innate/cult/ghostmark/proc/reset_button() + if(owner) + name = "Blood Mark your Target" + desc = "Marks whatever you are orbitting - for the entire cult to track." + button_icon_state = "cult_mark" + owner.update_action_buttons_icon() + SEND_SOUND(owner, 'sound/magic/enter_blood.ogg') + to_chat(owner,"Your previous mark is gone - you are now ready to create a new blood mark.") + +/datum/action/innate/cult/ghostmark/Activate() + var/datum/antagonist/cult/C = owner.mind.has_antag_datum(/datum/antagonist/cult,TRUE) + if(C.cult_team.blood_target) + if(cooldown>world.time) + reset_blood_target(C.cult_team) + to_chat(owner, "You have cleared the cult's blood target!") + qdel(C.cult_team.blood_target_reset_timer) + return + else + to_chat(owner, "The cult has already designated a target!") + return + if(cooldown>world.time) + to_chat(owner, "You aren't ready to place another blood mark yet!") + return + if(owner.orbiting && owner.orbiting.orbiting) + target = owner.orbiting.orbiting + else + target = get_turf(owner) + if(!target) + return + C.cult_team.blood_target = target + var/area/A = get_area(target) + cooldown = world.time + base_cooldown + addtimer(CALLBACK(owner, /mob.proc/update_action_buttons_icon), base_cooldown) + C.cult_team.blood_target_image = image('icons/effects/cult_target.dmi', target, "glow", ABOVE_MOB_LAYER) + C.cult_team.blood_target_image.appearance_flags = RESET_COLOR + C.cult_team.blood_target_image.pixel_x = -target.pixel_x + C.cult_team.blood_target_image.pixel_y = -target.pixel_y + SEND_SOUND(owner, sound(pick('sound/hallucinations/over_here2.ogg','sound/hallucinations/over_here3.ogg'),0,1,75)) + owner.client.images += C.cult_team.blood_target_image + for(var/datum/mind/B in SSticker.mode.cult) + if(B.current && B.current.stat != DEAD && B.current.client) + to_chat(B.current, "[owner] has marked [C.cult_team.blood_target] in the [A.name] as the cult's top priority, get there immediately!") + SEND_SOUND(B.current, sound(pick('sound/hallucinations/over_here2.ogg','sound/hallucinations/over_here3.ogg'),0,1,75)) + B.current.client.images += C.cult_team.blood_target_image + to_chat(owner,"You have marked the [target] for the cult! It will last for [base_cooldown/10] seconds.") + name = "Clear the Blood Mark" + desc = "Remove the Blood Mark you previously set." + button_icon_state = "emp" + owner.update_action_buttons_icon() + C.cult_team.blood_target_reset_timer = addtimer(CALLBACK(GLOBAL_PROC, .proc/reset_blood_target,C.cult_team), base_cooldown, TIMER_STOPPABLE) + addtimer(CALLBACK(src, .proc/reset_button), base_cooldown) + //////// ELDRITCH PULSE ///////// @@ -342,6 +405,7 @@ QDEL_NULL(PM) return ..() + /datum/action/innate/cult/master/pulse/Activate() PM.toggle(owner) //the important bit return TRUE @@ -352,9 +416,10 @@ var/datum/action/innate/cult/master/pulse/attached_action /obj/effect/proc_holder/pulse/Destroy() - QDEL_NULL(attached_action) + attached_action = null return ..() + /obj/effect/proc_holder/pulse/proc/toggle(mob/user) if(active) remove_ranged_ability("You cease your preparations...") diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm similarity index 60% rename from code/game/gamemodes/cult/cult_items.dm rename to code/modules/antagonists/cult/cult_items.dm index 34a57fe62f..6bf65fa234 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -1,3 +1,33 @@ +/obj/item/tome + name = "arcane tome" + desc = "An old, dusty tome with frayed edges and a sinister-looking cover." + icon_state ="tome" + throw_speed = 2 + throw_range = 5 + w_class = WEIGHT_CLASS_SMALL + +/obj/item/melee/cultblade/dagger + name = "ritual dagger" + desc = "A strange dagger said to be used by sinister groups for \"preparing\" a corpse before sacrificing it to their dark gods." + icon = 'icons/obj/wizard.dmi' + icon_state = "render" + item_state = "cultdagger" + lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' + inhand_x_dimension = 32 + inhand_y_dimension = 32 + w_class = WEIGHT_CLASS_SMALL + force = 15 + throwforce = 25 + armour_penetration = 35 + actions_types = list(/datum/action/item_action/cult_dagger) + +/obj/item/melee/cultblade/dagger/Initialize() + ..() + var/image/I = image(icon = 'icons/effects/blood.dmi' , icon_state = null, loc = src) + I.override = TRUE + add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/silicons, "cult_dagger", I) + /obj/item/melee/cultblade name = "eldritch longsword" desc = "A sword humming with unholy energy. It glows with a dim red light." @@ -49,29 +79,6 @@ user.apply_damage(30, BRUTE, pick("l_arm", "r_arm")) user.dropItemToGround(src) -/obj/item/melee/cultblade/dagger - name = "sacrificial dagger" - desc = "A strange dagger said to be used by sinister groups for \"preparing\" a corpse before sacrificing it to their dark gods." - icon = 'icons/obj/wizard.dmi' - icon_state = "render" - item_state = "knife" - lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' - inhand_x_dimension = 32 - inhand_y_dimension = 32 - w_class = WEIGHT_CLASS_SMALL - force = 15 - throwforce = 25 - embed_chance = 75 - -/obj/item/melee/cultblade/dagger/attack(mob/living/target, mob/living/carbon/human/user) - ..() - if(iscarbon(target)) - var/mob/living/carbon/C = target - C.bleed(50) - if(is_servant_of_ratvar(C) && C.reagents) - C.reagents.add_reagent("heparin", 1) - /obj/item/twohanded/required/cult_bastard name = "bloody bastard sword" desc = "An enormous sword used by Nar-Sien cultists to rapidly harvest the souls of non-believers." @@ -106,6 +113,12 @@ jaunt = new(src) linked_action = new(src) +/obj/item/twohanded/required/cult_bastard/examine(mob/user) + if(contents.len) + desc+="
There are [contents.len] souls trapped within the sword's core." + else + desc+="
The sword appears to be quite lifeless." + /obj/item/twohanded/required/cult_bastard/can_be_pulled(user) return FALSE @@ -146,7 +159,7 @@ /obj/item/twohanded/required/cult_bastard/IsReflect() if(spinning) - playsound(src, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 75, 1) + playsound(src, pick('sound/weapons/effects/ric1.ogg', 'sound/weapons/effects/ric2.ogg', 'sound/weapons/effects/ric3.ogg', 'sound/weapons/effects/ric4.ogg', 'sound/weapons/effects/ric5.ogg'), 100, 1) return TRUE else ..() @@ -155,7 +168,7 @@ if(prob(final_block_chance)) if(attack_type == PROJECTILE_ATTACK) owner.visible_message("[owner] deflects [attack_text] with [src]!") - playsound(src, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 100, 1) + playsound(src, pick('sound/weapons/effects/ric1.ogg', 'sound/weapons/effects/ric2.ogg', 'sound/weapons/effects/ric3.ogg', 'sound/weapons/effects/ric4.ogg', 'sound/weapons/effects/ric5.ogg'), 100, 1) return TRUE else playsound(src, 'sound/weapons/parry.ogg', 75, 1) @@ -165,23 +178,22 @@ /obj/item/twohanded/required/cult_bastard/afterattack(atom/target, mob/user, proximity, click_parameters) . = ..() - if(dash_toggled) + if(dash_toggled && !proximity) jaunt.Teleport(user, target) return - if(!proximity) - return - if(ishuman(target)) - var/mob/living/carbon/human/H = target - if(H.stat != CONSCIOUS) - var/obj/item/device/soulstone/SS = new /obj/item/device/soulstone(src) - SS.attack(H, user) - if(!LAZYLEN(SS.contents)) + if(proximity) + if(ishuman(target)) + var/mob/living/carbon/human/H = target + if(H.stat != CONSCIOUS) + var/obj/item/device/soulstone/SS = new /obj/item/device/soulstone(src) + SS.attack(H, user) + if(!LAZYLEN(SS.contents)) + qdel(SS) + if(istype(target, /obj/structure/constructshell) && contents.len) + var/obj/item/device/soulstone/SS = contents[1] + if(istype(SS)) + SS.transfer_soul("CONSTRUCT",target,user) qdel(SS) - if(istype(target, /obj/structure/constructshell) && contents.len) - var/obj/item/device/soulstone/SS = contents[1] - if(istype(SS)) - SS.transfer_soul("CONSTRUCT",target,user) - qdel(SS) /datum/action/innate/dash/cult name = "Rend the Veil" @@ -241,10 +253,20 @@ /obj/item/restraints/legcuffs/bola/cult name = "nar'sien bola" - desc = "A strong bola, bound with dark magic. Throw it to trip and slow your victim." + desc = "A strong bola, bound with dark magic that allows it to pass harmlessly through Nar'sien cultists. Throw it to trip and slow your victim." icon_state = "bola_cult" - breakouttime = 45 - knockdown = 10 + breakouttime = 60 + knockdown = 20 + +/obj/item/restraints/legcuffs/bola/cult/pickup(mob/living/user) + if(!iscultist(user)) + to_chat(user, "The bola seems to take on a life of its own!") + throw_impact(user) + +/obj/item/restraints/legcuffs/bola/cult/throw_impact(atom/hit_atom) + if(iscultist(hit_atom)) + return + . = ..() /obj/item/clothing/head/culthood @@ -253,7 +275,7 @@ desc = "A torn, dust-caked hood. Strange letters line the inside." flags_inv = HIDEFACE|HIDEHAIR|HIDEEARS flags_cover = HEADCOVERSEYES - armor = list(melee = 30, bullet = 10, laser = 5,energy = 5, bomb = 0, bio = 0, rad = 0, fire = 10, acid = 10) + armor = list(melee = 40, bullet = 30, laser = 40,energy = 20, bomb = 25, bio = 10, rad = 0, fire = 10, acid = 10) cold_protection = HEAD min_cold_protection_temperature = HELMET_MIN_TEMP_PROTECT heat_protection = HEAD @@ -266,7 +288,7 @@ item_state = "cultrobes" body_parts_covered = CHEST|GROIN|LEGS|ARMS allowed = list(/obj/item/tome, /obj/item/melee/cultblade) - armor = list(melee = 50, bullet = 30, laser = 50,energy = 20, bomb = 25, bio = 10, rad = 0, fire = 10, acid = 10) + armor = list(melee = 40, bullet = 30, laser = 40,energy = 20, bomb = 25, bio = 10, rad = 0, fire = 10, acid = 10) flags_inv = HIDEJUMPSUIT cold_protection = CHEST|GROIN|LEGS|ARMS min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT @@ -341,7 +363,10 @@ prefix = "darkened" /obj/item/sharpener/cult/update_icon() + var/old_state = icon_state icon_state = "cult_sharpener[used ? "_used" : ""]" + if(old_state != icon_state) + playsound(get_turf(src), 'sound/items/unsheath.ogg', 25, 1) /obj/item/clothing/suit/hooded/cultrobes/cult_shield name = "empowered cultist armor" @@ -431,12 +456,11 @@ user.adjustBruteLoss(25) user.dropItemToGround(src, TRUE) -/obj/item/clothing/glasses/night/cultblind - desc = "May nar-sie guide you through the darkness and shield you from the light." +/obj/item/clothing/glasses/hud/health/night/cultblind + desc = "may Nar-Sie guide you through the darkness and shield you from the light." name = "zealot's blindfold" icon_state = "blindfold" item_state = "blindfold" - darkness_view = 8 flash_protect = 1 /obj/item/clothing/glasses/night/cultblind/equipped(mob/living/user, slot) @@ -448,12 +472,13 @@ user.Knockdown(100) user.blind_eyes(30) -/obj/item/reagent_containers/food/drinks/bottle/unholywater +/obj/item/reagent_containers/glass/beaker/unholywater name = "flask of unholy water" desc = "Toxic to nonbelievers; reinvigorating to the faithful - this flask may be sipped or thrown." + icon = 'icons/obj/drinks.dmi' icon_state = "holyflask" color = "#333333" - list_reagents = list("unholywater" = 40) + list_reagents = list("unholywater" = 50) /obj/item/device/shuttle_curse name = "cursed orb" @@ -604,3 +629,348 @@ ..() to_chat(user, "\The [src] can only transport items!") + +/obj/item/twohanded/cult_spear + name = "blood halberd" + desc = "A sickening spear composed entirely of crystallized blood." + icon_state = "bloodspear0" + lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi' + slot_flags = 0 + force = 17 + force_wielded = 24 + throwforce = 40 + throw_speed = 2 + armour_penetration = 30 + block_chance = 30 + attack_verb = list("attacked", "impaled", "stabbed", "torn", "gored") + sharpness = IS_SHARP + hitsound = 'sound/weapons/bladeslice.ogg' + var/datum/action/innate/cult/spear/spear_act + +/obj/item/twohanded/cult_spear/Destroy() + if(spear_act) + qdel(spear_act) + ..() + +/obj/item/twohanded/cult_spear/update_icon() + icon_state = "bloodspear[wielded]" + +/obj/item/twohanded/cult_spear/throw_impact(atom/target) + var/turf/T = get_turf(target) + if(isliving(target)) + var/mob/living/L = target + if(iscultist(L)) + playsound(src, 'sound/weapons/throwtap.ogg', 50) + if(L.put_in_active_hand(src)) + L.visible_message("[L] catches [src] out of the air!") + else + L.visible_message("[src] bounces off of [L], as if repelled by an unseen force!") + else if(!..()) + if(!L.null_rod_check()) + if(is_servant_of_ratvar(L)) + L.Knockdown(100) + else + L.Knockdown(50) + break_spear(T) + else + ..() + +/obj/item/twohanded/cult_spear/proc/break_spear(turf/T) + if(src) + if(!T) + T = get_turf(src) + if(T) + T.visible_message("[src] shatters and melts back into blood!") + new /obj/effect/temp_visual/cult/sparks(T) + new /obj/effect/decal/cleanable/blood/splatter(T) + playsound(T, 'sound/effects/glassbr3.ogg', 100) + qdel(src) + +/obj/item/twohanded/cult_spear/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + if(wielded) + final_block_chance *= 2 + if(prob(final_block_chance)) + if(attack_type == PROJECTILE_ATTACK) + owner.visible_message("[owner] deflects [attack_text] with [src]!") + playsound(src, pick('sound/weapons/effects/ric1.ogg', 'sound/weapons/effects/ric2.ogg', 'sound/weapons/effects/ric3.ogg', 'sound/weapons/effects/ric4.ogg', 'sound/weapons/effects/ric5.ogg'), 100, 1) + return TRUE + else + playsound(src, 'sound/weapons/parry.ogg', 100, 1) + owner.visible_message("[owner] parries [attack_text] with [src]!") + return TRUE + return FALSE + +/datum/action/innate/cult/spear + name = "Bloody Bond" + desc = "Call the blood spear back to your hand!" + background_icon_state = "bg_demon" + button_icon_state = "bloodspear" + var/obj/item/twohanded/cult_spear/spear + var/cooldown = 0 + +/datum/action/innate/cult/spear/Grant(mob/user, obj/blood_spear) + . = ..() + spear = blood_spear + button.screen_loc = "6:157,4:-2" + button.moved = "6:157,4:-2" + +/datum/action/innate/cult/spear/Activate() + if(owner == spear.loc || cooldown > world.time) + return + var/ST = get_turf(spear) + var/OT = get_turf(owner) + if(get_dist(OT, ST) > 10) + to_chat(owner,"The spear is too far away!") + else + cooldown = world.time + 20 + if(isliving(spear.loc)) + var/mob/living/L = spear.loc + L.dropItemToGround(spear) + L.visible_message("An unseen force pulls the blood spear from [L]'s hands!") + spear.throw_at(owner, 10, 2, owner) + + +/obj/item/gun/ballistic/shotgun/boltaction/enchanted/arcane_barrage/blood + name = "blood bolt barrage" + desc = "Blood for blood." + color = "#ff0000" + guns_left = 24 + mag_type = /obj/item/ammo_box/magazine/internal/boltaction/enchanted/arcane_barrage/blood + fire_sound = 'sound/magic/wand_teleport.ogg' + flags_1 = NOBLUDGEON_1 | DROPDEL_1 + + +/obj/item/ammo_box/magazine/internal/boltaction/enchanted/arcane_barrage/blood + ammo_type = /obj/item/ammo_casing/magic/arcane_barrage/blood + +/obj/item/ammo_casing/magic/arcane_barrage/blood + projectile_type = /obj/item/projectile/magic/arcane_barrage/blood + +/obj/item/projectile/magic/arcane_barrage/blood + name = "blood bolt" + icon_state = "mini_leaper" + damage_type = BRUTE + impact_effect_type = /obj/effect/temp_visual/dir_setting/bloodsplatter + +/obj/item/projectile/magic/arcane_barrage/blood/Collide(atom/target) + colliding = TRUE + var/turf/T = get_turf(target) + playsound(T, 'sound/effects/splat.ogg', 50, TRUE) + if(iscultist(target)) + if(ishuman(target)) + var/mob/living/carbon/human/H = target + if(H.stat != DEAD) + H.reagents.add_reagent("unholywater", 4) + if(isshade(target) || isconstruct(target)) + var/mob/living/simple_animal/M = target + if(M.health+5 < M.maxHealth) + M.adjustHealth(-5) + new /obj/effect/temp_visual/cult/sparks(T) + qdel(src) + colliding = FALSE + else + ..() + +/obj/item/blood_beam + name = "\improper magical aura" + desc = "Sinister looking aura that distorts the flow of reality around it." + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "disintegrate" + item_state = null + flags_1 = ABSTRACT_1 | NODROP_1 | DROPDEL_1 + w_class = WEIGHT_CLASS_HUGE + throwforce = 0 + throw_range = 0 + throw_speed = 0 + var/charging = FALSE + var/firing = FALSE + var/angle + + +/obj/item/blood_beam/afterattack(atom/A, mob/living/user, flag, params) + if(firing || charging) + return + var/C = user.client + if(ishuman(user) && C) + angle = mouse_angle_from_client(C) + else + qdel(src) + return + charging = TRUE + INVOKE_ASYNC(src, .proc/charge, user) + if(do_after(user, 90, target = user)) + firing = TRUE + INVOKE_ASYNC(src, .proc/pewpew, user, params) + var/obj/structure/emergency_shield/invoker/N = new(user.loc) + if(do_after(user, 90, target = user)) + user.Knockdown(40) + to_chat(user, "You have exhausted the power of this spell!") + firing = FALSE + if(N) + qdel(N) + qdel(src) + charging = FALSE + +/obj/item/blood_beam/proc/charge(mob/user) + var/obj/O + playsound(src, 'sound/magic/lightning_chargeup.ogg', 100, 1) + for(var/i in 1 to 12) + if(!charging) + break + if(i > 1) + sleep(15) + if(i < 4) + O = new /obj/effect/temp_visual/cult/rune_spawn/rune1/inner(user.loc, 30, "#ff0000") + else + O = new /obj/effect/temp_visual/cult/rune_spawn/rune5(user.loc, 30, "#ff0000") + new /obj/effect/temp_visual/dir_setting/cult/phase/out(user.loc, user.dir) + if(O) + qdel(O) + +/obj/item/blood_beam/proc/pewpew(mob/user, params) + var/turf/targets_from = get_turf(src) + var/spread = 40 + var/second = FALSE + var/set_angle = angle + for(var/i in 1 to 12) + if(second) + set_angle = angle - spread + spread -= 8 + else + sleep(15) + set_angle = angle + spread + second = !second //Handles beam firing in pairs + if(!firing) + break + playsound(src, 'sound/magic/exit_blood.ogg', 75, 1) + new /obj/effect/temp_visual/dir_setting/cult/phase(user.loc, user.dir) + var/turf/temp_target = get_turf_in_angle(set_angle, targets_from, 40) + for(var/turf/T in getline(targets_from,temp_target)) + if (locate(/obj/effect/blessing, T)) + temp_target = T + playsound(T, 'sound/machines/clockcult/ark_damage.ogg', 50, 1) + new /obj/effect/temp_visual/at_shield(T, T) + break + T.narsie_act(TRUE, TRUE) + for(var/mob/living/target in T.contents) + if(iscultist(target)) + new /obj/effect/temp_visual/cult/sparks(T) + if(ishuman(target)) + var/mob/living/carbon/human/H = target + if(H.stat != DEAD) + H.reagents.add_reagent("unholywater", 7) + if(isshade(target) || isconstruct(target)) + var/mob/living/simple_animal/M = target + if(M.health+15 < M.maxHealth) + M.adjustHealth(-15) + else + M.health = M.maxHealth + else + var/mob/living/L = target + if(L.density) + L.Knockdown(20) + L.adjustBruteLoss(45) + playsound(L, 'sound/hallucinations/wail.ogg', 50, 1) + L.emote("scream") + var/datum/beam/current_beam = new(user,temp_target,time=7,beam_icon_state="blood_beam",btype=/obj/effect/ebeam/blood) + INVOKE_ASYNC(current_beam, /datum/beam.proc/Start) + + +/obj/effect/ebeam/blood + name = "blood beam" + +/obj/item/shield/mirror + name = "mirror shield" + desc = "An infamous shield used by Nar'sien sects to confuse and disorient their enemies. Its edges are weighted for use as a throwing weapon - capable of disabling multiple foes with preternatural accuracy." + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "mirror_shield" // eshield1 for expanded + lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' + force = 5 + throwforce = 15 + throw_speed = 1 + throw_range = 6 + w_class = WEIGHT_CLASS_BULKY + attack_verb = list("bumped", "prodded") + hitsound = 'sound/weapons/smash.ogg' + var/illusions = 3 + +/obj/item/shield/mirror/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + if(iscultist(owner)) + if(istype(hitby, /obj/item/projectile)) + var/obj/item/projectile/P = hitby + if(P.damage >= 35) + var/turf/T = get_turf(owner) + T.visible_message("The sheer force from [P] shatters the mirror shield!") + new /obj/effect/temp_visual/cult/sparks(T) + playsound(T, 'sound/effects/glassbr3.ogg', 100) + owner.Knockdown(20) + qdel(src) + return FALSE + if(P.is_reflectable) + return FALSE //To avoid reflection chance double-dipping with block chance + . = ..() + if(.) + playsound(src, 'sound/weapons/parry.ogg', 100, 1) + if(illusions > 0) + illusions-- + addtimer(CALLBACK(src, /obj/item/shield/mirror.proc/readd), 450) + if(prob(60)) + var/mob/living/simple_animal/hostile/illusion/M = new(owner.loc) + M.faction = list("cult") + M.Copy_Parent(owner, 70, 10, 5) + M.move_to_delay = owner.movement_delay() + else + var/mob/living/simple_animal/hostile/illusion/escape/E = new(owner.loc) + E.Copy_Parent(owner, 70, 10) + E.GiveTarget(owner) + E.Goto(owner, owner.movement_delay(), E.minimum_distance) + return TRUE + else + if(prob(50)) + var/mob/living/simple_animal/hostile/illusion/H = new(owner.loc) + H.Copy_Parent(owner, 100, 20, 5) + H.faction = list("cult") + H.GiveTarget(owner) + H.move_to_delay = owner.movement_delay() + to_chat(owner, "[src] betrays you!") + return FALSE + +/obj/item/shield/mirror/proc/readd() + illusions++ + if(illusions == initial(illusions) && isliving(loc)) + var/mob/living/holder = loc + to_chat(holder, "The shield's illusions are back at full strength!") + +/obj/item/shield/mirror/IsReflect() + if(prob(block_chance)) + return TRUE + return FALSE + +/obj/item/shield/mirror/throw_impact(atom/target, throwingdatum) + var/turf/T = get_turf(target) + var/datum/thrownthing/D = throwingdatum + if(isliving(target)) + var/mob/living/L = target + if(iscultist(L)) + playsound(src, 'sound/weapons/throwtap.ogg', 50) + if(L.put_in_active_hand(src)) + L.visible_message("[L] catches [src] out of the air!") + else + L.visible_message("[src] bounces off of [L], as if repelled by an unseen force!") + else if(!..()) + if(!L.null_rod_check()) + if(is_servant_of_ratvar(L)) + L.Knockdown(60) + else + L.Knockdown(30) + if(D.thrower) + for(var/mob/living/Next in orange(2, T)) + if(!Next.density || iscultist(Next)) + continue + throw_at(Next, 3, 1, D.thrower) + return + throw_at(D.thrower, 7, 1, D.thrower) + else + ..() \ No newline at end of file diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/modules/antagonists/cult/cult_structures.dm similarity index 75% rename from code/game/gamemodes/cult/cult_structures.dm rename to code/modules/antagonists/cult/cult_structures.dm index a921868f22..efe94afb88 100644 --- a/code/game/gamemodes/cult/cult_structures.dm +++ b/code/modules/antagonists/cult/cult_structures.dm @@ -2,10 +2,32 @@ density = TRUE anchored = TRUE icon = 'icons/obj/cult.dmi' + light_power = 2 var/cooldowntime = 0 break_sound = 'sound/hallucinations/veryfar_noise.ogg' debris = list(/obj/item/stack/sheet/runed_metal = 1) +/obj/structure/destructible/cult/proc/conceal() //for spells that hide cult presence + density = FALSE + visible_message("[src] fades away.") + invisibility = INVISIBILITY_OBSERVER + alpha = 100 //To help ghosts distinguish hidden runes + light_range = 0 + light_power = 0 + update_light() + STOP_PROCESSING(SSfastprocess, src) + +/obj/structure/destructible/cult/proc/reveal() //for spells that reveal cult presence + density = initial(density) + invisibility = 0 + visible_message("[src] suddenly appears!") + alpha = initial(alpha) + light_range = initial(light_range) + light_power = initial(light_power) + update_light() + START_PROCESSING(SSfastprocess, src) + + /obj/structure/destructible/cult/examine(mob/user) ..() to_chat(user, "\The [src] is [anchored ? "":"not "]secured to the floor.") @@ -33,7 +55,7 @@ ..() /obj/structure/destructible/cult/attackby(obj/I, mob/user, params) - if(istype(I, /obj/item/tome) && iscultist(user)) + if(istype(I, /obj/item/melee/cultblade/dagger) && iscultist(user)) anchored = !anchored to_chat(user, "You [anchored ? "":"un"]secure \the [src] [anchored ? "to":"from"] the floor.") if(!anchored) @@ -62,31 +84,32 @@ to_chat(user, "You're pretty sure you know exactly what this is used for and you can't seem to touch it.") return if(!anchored) - to_chat(user, "You need to anchor [src] to the floor with a tome first.") + to_chat(user, "You need to anchor [src] to the floor with your dagger first.") return if(cooldowntime > world.time) to_chat(user, "The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].") return - var/choice = alert(user,"You study the schematics etched into the forge...",,"Eldritch Whetstone","Zealot's Blindfold","Flask of Unholy Water") - var/pickedtype + var/choice = alert(user,"You study the schematics etched into the altar...",,"Eldritch Whetstone","Construct Shells","Flask of Unholy Water") + var/list/pickedtype = list() switch(choice) if("Eldritch Whetstone") - pickedtype = /obj/item/sharpener/cult - if("Zealot's Blindfold") - pickedtype = /obj/item/clothing/glasses/night/cultblind + pickedtype += /obj/item/sharpener/cult + if("Construct Shells") + pickedtype += /obj/structure/constructshell + pickedtype += /obj/structure/constructshell if("Flask of Unholy Water") - pickedtype = /obj/item/reagent_containers/food/drinks/bottle/unholywater + pickedtype += /obj/item/reagent_containers/glass/beaker/unholywater if(src && !QDELETED(src) && anchored && pickedtype && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time) cooldowntime = world.time + 2400 - var/obj/item/N = new pickedtype(get_turf(src)) - to_chat(user, "You kneel before the altar and your faith is rewarded with an [N]!") - + for(var/N in pickedtype) + new N(get_turf(src)) + to_chat(user, "You kneel before the altar and your faith is rewarded with the [choice]!") /obj/structure/destructible/cult/forge name = "daemon forge" desc = "A forge used in crafting the unholy weapons used by the armies of Nar-Sie." icon_state = "forge" - light_range = 3 + light_range = 2 light_color = LIGHT_COLOR_LAVA break_message = "The force breaks apart into shards with a howling scream!" @@ -95,30 +118,35 @@ to_chat(user, "The heat radiating from [src] pushes you back.") return if(!anchored) - to_chat(user, "You need to anchor [src] to the floor with a tome first.") + to_chat(user, "You need to anchor [src] to the floor with your dagger first.") return if(cooldowntime > world.time) to_chat(user, "The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].") return - var/choice = alert(user,"You study the schematics etched into the forge...",,"Shielded Robe","Flagellant's Robe","Bastard Sword") - var/pickedtype + var/choice = alert(user,"You study the schematics etched into the forge...",,"Shielded Robe","Flagellant's Robe","Mirror Shield") + if(user.mind.has_antag_datum(/datum/antagonist/cult/master)) + choice = alert(user,"You study the schematics etched into the forge...",,"Shielded Robe","Flagellant's Robe","Bastard Sword") + var/list/pickedtype = list() switch(choice) if("Shielded Robe") - pickedtype = /obj/item/clothing/suit/hooded/cultrobes/cult_shield + pickedtype += /obj/item/clothing/suit/hooded/cultrobes/cult_shield if("Flagellant's Robe") - pickedtype = /obj/item/clothing/suit/hooded/cultrobes/berserker + pickedtype += /obj/item/clothing/suit/hooded/cultrobes/berserker if("Bastard Sword") if((world.time - SSticker.round_start_time) >= 12000) - pickedtype = /obj/item/twohanded/required/cult_bastard + pickedtype += /obj/item/twohanded/required/cult_bastard else cooldowntime = 12000 - (world.time - SSticker.round_start_time) to_chat(user, "The forge fires are not yet hot enough for this weapon, give it another [DisplayTimeText(cooldowntime)].") cooldowntime = 0 return + if("Mirror Shield") + pickedtype += /obj/item/shield/mirror if(src && !QDELETED(src) && anchored && pickedtype && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time) cooldowntime = world.time + 2400 - var/obj/item/N = new pickedtype(get_turf(src)) - to_chat(user, "You work the forge as dark knowledge guides your hands, creating [N]!") + for(var/N in pickedtype) + new N(get_turf(src)) + to_chat(user, "You work the forge as dark knowledge guides your hands, creating the [choice]!") @@ -126,7 +154,7 @@ name = "pylon" desc = "A floating crystal that slowly heals those faithful to Nar'Sie." icon_state = "pylon" - light_range = 5 + light_range = 1.5 light_color = LIGHT_COLOR_RED break_sound = 'sound/effects/glassbr2.ogg' break_message = "The blood-red crystal falls to the floor and shatters!" @@ -159,7 +187,7 @@ if(isshade(L) || isconstruct(L)) var/mob/living/simple_animal/M = L if(M.health < M.maxHealth) - M.adjustHealth(-1) + M.adjustHealth(-3) if(ishuman(L) && L.blood_volume < BLOOD_VOLUME_NORMAL) L.blood_volume += 1.0 CHECK_TICK @@ -199,7 +227,7 @@ name = "archives" desc = "A desk covered in arcane manuscripts and tomes in unknown languages. Looking at the text makes your skin crawl." icon_state = "tomealtar" - light_range = 1.4 + light_range = 1.5 light_color = LIGHT_COLOR_FIRE break_message = "The books and tomes of the archives burn into ash as the desk shatters!" @@ -208,16 +236,16 @@ to_chat(user, "All of these books seem to be gibberish.") return if(!anchored) - to_chat(user, "You need to anchor [src] to the floor with a tome first.") + to_chat(user, "You need to anchor [src] to the floor with your dagger first.") return if(cooldowntime > world.time) to_chat(user, "The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].") return - var/choice = alert(user,"You flip through the black pages of the archives...",,"Supply Talisman","Shuttle Curse","Veil Walker Set") + var/choice = alert(user,"You flip through the black pages of the archives...",,"Zealot's Blindfold","Shuttle Curse","Veil Walker Set") var/list/pickedtype = list() switch(choice) - if("Supply Talisman") - pickedtype += /obj/item/paper/talisman/supply/weak + if("Zealot's Blindfold") + pickedtype += /obj/item/clothing/glasses/hud/health/night/cultblind if("Shuttle Curse") pickedtype += /obj/item/device/shuttle_curse if("Veil Walker Set") @@ -226,8 +254,8 @@ if(src && !QDELETED(src) && anchored && pickedtype.len && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time) cooldowntime = world.time + 2400 for(var/N in pickedtype) - var/obj/item/D = new N(get_turf(src)) - to_chat(user, "You summon [D] from the archives!") + new N(get_turf(src)) + to_chat(user, "You summon the [choice] from the archives!") /obj/effect/gateway name = "gateway" diff --git a/code/modules/antagonists/cult/ritual.dm b/code/modules/antagonists/cult/ritual.dm new file mode 100644 index 0000000000..00ec291755 --- /dev/null +++ b/code/modules/antagonists/cult/ritual.dm @@ -0,0 +1,158 @@ +/* + +This file contains the cult dagger and rune list code + +*/ + + +/obj/item/melee/cultblade/dagger/Initialize() + . = ..() + if(!LAZYLEN(GLOB.rune_types)) + GLOB.rune_types = list() + var/static/list/non_revealed_runes = (subtypesof(/obj/effect/rune) - /obj/effect/rune/malformed) + for(var/i_can_do_loops_now_thanks_remie in non_revealed_runes) + var/obj/effect/rune/R = i_can_do_loops_now_thanks_remie + GLOB.rune_types[initial(R.cultist_name)] = R //Uses the cultist name for displaying purposes + +/obj/item/melee/cultblade/dagger/examine(mob/user) + ..() + if(iscultist(user) || isobserver(user)) + to_chat(user, "The scriptures of the Geometer. Allows the scribing of runes and access to the knowledge archives of the cult of Nar-Sie.") + to_chat(user, "Striking a cult structure will unanchor or reanchor it.") + to_chat(user, "Striking another cultist with it will purge holy water from them.") + to_chat(user, "Striking a noncultist, however, will tear their flesh.") + +/obj/item/melee/cultblade/dagger/attack(mob/living/M, mob/living/user) + if(iscultist(M)) + if(M.reagents && M.reagents.has_reagent("holywater")) //allows cultists to be rescued from the clutches of ordained religion + to_chat(user, "You remove the taint from [M]." ) + var/holy2unholy = M.reagents.get_reagent_amount("holywater") + M.reagents.del_reagent("holywater") + M.reagents.add_reagent("unholywater",holy2unholy) + add_logs(user, M, "smacked", src, " removing the holy water from them") + return FALSE + . = ..() + +/obj/item/melee/cultblade/dagger/attack_self(mob/user) + if(!iscultist(user)) + to_chat(user, "[src] is covered in unintelligible shapes and markings.") + return + scribe_rune(user) + +/obj/item/melee/cultblade/dagger/proc/scribe_rune(mob/living/user) + var/turf/Turf = get_turf(user) + var/chosen_keyword + var/obj/effect/rune/rune_to_scribe + var/entered_rune_name + var/list/shields = list() + var/area/A = get_area(src) + + var/datum/antagonist/cult/user_antag = user.mind.has_antag_datum(/datum/antagonist/cult,TRUE) + if(!user_antag) + return + + if(!check_rune_turf(Turf, user)) + return + entered_rune_name = input(user, "Choose a rite to scribe.", "Sigils of Power") as null|anything in GLOB.rune_types + if(!src || QDELETED(src) || !Adjacent(user) || user.incapacitated() || !check_rune_turf(Turf, user)) + return + rune_to_scribe = GLOB.rune_types[entered_rune_name] + if(!rune_to_scribe) + return + if(initial(rune_to_scribe.req_keyword)) + chosen_keyword = stripped_input(user, "Enter a keyword for the new rune.", "Words of Power") + if(!chosen_keyword) + scribe_rune(user) //Go back a menu! + return + Turf = get_turf(user) //we may have moved. adjust as needed... + A = get_area(src) + if(!src || QDELETED(src) || !Adjacent(user) || user.incapacitated() || !check_rune_turf(Turf, user)) + return + if(ispath(rune_to_scribe, /obj/effect/rune/apocalypse)) + if((world.time - SSticker.round_start_time) <= 6000) + var/wait = 6000 - (world.time - SSticker.round_start_time) + to_chat(user, "The veil is not yet weak enough for this rune - it will be available in [DisplayTimeText(wait)].") + return + var/datum/objective/eldergod/summon_objective = locate() in user_antag.cult_team.objectives + if(!(A in summon_objective.summon_spots)) + to_chat(user, "The Apocalypse rune will remove a ritual site (where Nar-sie can be summoned), it can only be scribed in [english_list(summon_objective.summon_spots)]!") + return + if(summon_objective.summon_spots.len < 2) + to_chat(user, "Only one ritual site remains - it must be reserved for the final summoning!") + return + if(ispath(rune_to_scribe, /obj/effect/rune/narsie)) + var/datum/objective/eldergod/summon_objective = locate() in user_antag.cult_team.objectives + var/datum/objective/sacrifice/sac_objective = locate() in user_antag.cult_team.objectives + if(!summon_objective) + to_chat(user, "Nar-Sie does not wish to be summoned!") + return + if(sac_objective && !sac_objective.check_completion()) + to_chat(user, "The sacrifice is not complete. The portal would lack the power to open if you tried!") + return + if(summon_objective.check_completion()) + to_chat(user, "\"I am already here. There is no need to try to summon me now.\"") + return + if(!(A in summon_objective.summon_spots)) + to_chat(user, "The Geometer can only be summoned where the veil is weak - in [english_list(summon_objective.summon_spots)]!") + return + var/confirm_final = alert(user, "This is the FINAL step to summon Nar-Sie; it is a long, painful ritual and the crew will be alerted to your presence", "Are you prepared for the final battle?", "My life for Nar-Sie!", "No") + if(confirm_final == "No") + to_chat(user, "You decide to prepare further before scribing the rune.") + return + Turf = get_turf(user) + A = get_area(src) + if(!(A in summon_objective.summon_spots)) // Check again to make sure they didn't move + to_chat(user, "The Geometer can only be summoned where the veil is weak - in [english_list(summon_objective.summon_spots)]!") + return + priority_announce("Figments from an eldritch god are being summoned by [user] into [A.map_name] from an unknown dimension. Disrupt the ritual at all costs!","Central Command Higher Dimensional Affairs", 'sound/ai/spanomalies.ogg') + for(var/B in spiral_range_turfs(1, user, 1)) + var/obj/structure/emergency_shield/sanguine/N = new(B) + shields += N + user.visible_message("[user] [user.blood_volume ? "cuts open their arm and begins writing in their own blood":"begins sketching out a strange design"]!", \ + "You [user.blood_volume ? "slice open your arm and ":""]begin drawing a sigil of the Geometer.") + if(user.blood_volume) + user.apply_damage(initial(rune_to_scribe.scribe_damage), BRUTE, pick("l_arm", "r_arm")) + var/scribe_mod = initial(rune_to_scribe.scribe_delay) + if(istype(get_turf(user), /turf/open/floor/engine/cult)) + scribe_mod *= 0.5 + if(!do_after(user, scribe_mod, target = get_turf(user))) + for(var/V in shields) + var/obj/structure/emergency_shield/sanguine/S = V + if(S && !QDELETED(S)) + qdel(S) + return + if(!check_rune_turf(Turf, user)) + return + user.visible_message("[user] creates a strange circle[user.blood_volume ? " in their own blood":""].", \ + "You finish drawing the arcane markings of the Geometer.") + for(var/V in shields) + var/obj/structure/emergency_shield/S = V + if(S && !QDELETED(S)) + qdel(S) + var/obj/effect/rune/R = new rune_to_scribe(Turf, chosen_keyword) + R.add_mob_blood(user) + to_chat(user, "The [lowertext(R.cultist_name)] rune [R.cultist_desc]") + SSblackbox.record_feedback("tally", "cult_runes_scribed", 1, R.cultist_name) + +/obj/item/melee/cultblade/dagger/proc/check_rune_turf(turf/T, mob/user) + if(isspaceturf(T)) + to_chat(user, "You cannot scribe runes in space!") + return FALSE + + if(locate(/obj/effect/rune) in T) + to_chat(user, "There is already a rune here.") + return FALSE + + + if(!is_station_level(T.z) && !is_mining_level(T.z)) + to_chat(user, "The veil is not weak enough here.") + + return FALSE + + var/area/A = get_area(T) + if(A && !A.blob_allowed) + to_chat(user, "There's a passage in [src] specifically forbidding oyster consumption, triple-frying, and building outside of designated cult zones.") + return FALSE + + + return TRUE diff --git a/code/modules/antagonists/cult/rune_spawn_action.dm b/code/modules/antagonists/cult/rune_spawn_action.dm new file mode 100644 index 0000000000..60a8527860 --- /dev/null +++ b/code/modules/antagonists/cult/rune_spawn_action.dm @@ -0,0 +1,118 @@ +//after a delay, creates a rune below you. for constructs creating runes. +/datum/action/innate/cult/create_rune + name = "Summon Rune" + desc = "Summons a rune" + background_icon_state = "bg_demon" + var/obj/effect/rune/rune_type + var/cooldown = 0 + var/base_cooldown = 1800 + var/scribe_time = 60 + var/damage_interrupt = TRUE + var/action_interrupt = TRUE + var/obj/effect/temp_visual/cult/rune_spawn/rune_word_type + var/obj/effect/temp_visual/cult/rune_spawn/rune_innerring_type + var/obj/effect/temp_visual/cult/rune_spawn/rune_center_type + var/rune_color + +/datum/action/innate/cult/create_rune/IsAvailable() + if(!rune_type || cooldown > world.time) + return FALSE + return ..() + +/datum/action/innate/cult/create_rune/proc/turf_check(turf/T) + if(!T) + return FALSE + if(isspaceturf(T)) + to_chat(owner, "You cannot scribe runes in space!") + return FALSE + if(locate(/obj/effect/rune) in T) + to_chat(owner, "There is already a rune here.") + return FALSE + if(!is_station_level(T.z) && !is_mining_level(T.z)) + to_chat(owner, "The veil is not weak enough here.") + return FALSE + return TRUE + + +/datum/action/innate/cult/create_rune/Activate() + var/turf/T = get_turf(owner) + if(turf_check(T)) + var/chosen_keyword + if(initial(rune_type.req_keyword)) + chosen_keyword = stripped_input(owner, "Enter a keyword for the new rune.", "Words of Power") + if(!chosen_keyword) + return + //the outer ring is always the same across all runes + var/obj/effect/temp_visual/cult/rune_spawn/R1 = new(T, scribe_time, rune_color) + //the rest are not always the same, so we need types for em + var/obj/effect/temp_visual/cult/rune_spawn/R2 + if(rune_word_type) + R2 = new rune_word_type(T, scribe_time, rune_color) + var/obj/effect/temp_visual/cult/rune_spawn/R3 + if(rune_innerring_type) + R3 = new rune_innerring_type(T, scribe_time, rune_color) + var/obj/effect/temp_visual/cult/rune_spawn/R4 + if(rune_center_type) + R4 = new rune_center_type(T, scribe_time, rune_color) + + cooldown = base_cooldown + world.time + owner.update_action_buttons_icon() + addtimer(CALLBACK(owner, /mob.proc/update_action_buttons_icon), base_cooldown) + var/list/health + if(damage_interrupt && isliving(owner)) + var/mob/living/L = owner + health = list("health" = L.health) + var/scribe_mod = scribe_time + if(istype(T, /turf/open/floor/engine/cult)) + scribe_mod *= 0.5 + playsound(T, 'sound/magic/enter_blood.ogg', 100, FALSE) + if(do_after(owner, scribe_mod, target = owner, extra_checks = CALLBACK(owner, /mob.proc/break_do_after_checks, health, action_interrupt))) + var/obj/effect/rune/new_rune = new rune_type(owner.loc) + new_rune.keyword = chosen_keyword + else + qdel(R1) + if(R2) + qdel(R2) + if(R3) + qdel(R3) + if(R4) + qdel(R4) + cooldown = 0 + owner.update_action_buttons_icon() + +//teleport rune +/datum/action/innate/cult/create_rune/tele + name = "Summon Teleport Rune" + desc = "Summons a teleport rune to your location, as though it has been there all along..." + button_icon_state = "telerune" + rune_type = /obj/effect/rune/teleport + rune_word_type = /obj/effect/temp_visual/cult/rune_spawn/rune2 + rune_innerring_type = /obj/effect/temp_visual/cult/rune_spawn/rune2/inner + rune_center_type = /obj/effect/temp_visual/cult/rune_spawn/rune2/center + rune_color = RUNE_COLOR_TELEPORT + +/datum/action/innate/cult/create_rune/wall + name = "Summon Barrier Rune" + desc = "Summons an active barrier rune to your location, as though it has been there all along..." + button_icon_state = "barrier" + rune_type = /obj/effect/rune/wall + rune_word_type = /obj/effect/temp_visual/cult/rune_spawn/rune4 + rune_innerring_type = /obj/effect/temp_visual/cult/rune_spawn/rune4/inner + rune_center_type = /obj/effect/temp_visual/cult/rune_spawn/rune4/center + rune_color = RUNE_COLOR_DARKRED + +/datum/action/innate/cult/create_rune/wall/Activate() + . = ..() + var/obj/effect/rune/wall/W = locate(/obj/effect/rune/wall) in owner.loc + if(W) + W.spread_density() + +/datum/action/innate/cult/create_rune/revive + name = "Summon Revive Rune" + desc = "Summons a revive rune to your location, as though it has been there all along..." + button_icon_state = "revive" + rune_type = /obj/effect/rune/raise_dead + rune_word_type = /obj/effect/temp_visual/cult/rune_spawn/rune1 + rune_innerring_type = /obj/effect/temp_visual/cult/rune_spawn/rune1/inner + rune_center_type = /obj/effect/temp_visual/cult/rune_spawn/rune1/center + rune_color = RUNE_COLOR_MEDIUMRED \ No newline at end of file diff --git a/code/game/gamemodes/cult/runes.dm b/code/modules/antagonists/cult/runes.dm similarity index 67% rename from code/game/gamemodes/cult/runes.dm rename to code/modules/antagonists/cult/runes.dm index 28cc5c6512..25161c30c5 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -1,16 +1,15 @@ GLOBAL_LIST_EMPTY(sacrificed) //a mixed list of minds and mobs -GLOBAL_LIST(rune_types) //Every rune that can be drawn by tomes +GLOBAL_LIST(rune_types) //Every rune that can be drawn by ritual daggers GLOBAL_LIST_EMPTY(teleport_runes) GLOBAL_LIST_EMPTY(wall_runes) /* This file contains runes. Runes are used by the cult to cause many different effects and are paramount to their success. -They are drawn with an arcane tome in blood, and are distinguishable to cultists and normal crew by examining. +They are drawn with a ritual dagger in blood, and are distinguishable to cultists and normal crew by examining. Fake runes can be drawn in crayon to fool people. Runes can either be invoked by one's self or with many different cultists. Each rune has a specific incantation that the cultists will say when invoking it. -To draw a rune, use an arcane tome. */ @@ -31,7 +30,7 @@ To draw a rune, use an arcane tome. var/req_cultists_text //if we have a description override for required cultists to invoke var/rune_in_use = FALSE // Used for some runes, this is for when you want a rune to not be usable when in use. - var/scribe_delay = 50 //how long the rune takes to create + var/scribe_delay = 40 //how long the rune takes to create var/scribe_damage = 0.1 //how much damage you take doing it var/allow_excess_invokers = FALSE //if we allow excess invokers when being invoked @@ -45,6 +44,9 @@ To draw a rune, use an arcane tome. . = ..() if(set_keyword) keyword = set_keyword + var/image/I = image(icon = 'icons/effects/blood.dmi', icon_state = null, loc = src) + I.override = TRUE + add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/silicons, "cult_runes", I) /obj/effect/rune/examine(mob/user) ..() @@ -56,9 +58,11 @@ To draw a rune, use an arcane tome. to_chat(user, "Keyword: [keyword]") /obj/effect/rune/attackby(obj/I, mob/user, params) - if(istype(I, /obj/item/tome) && iscultist(user)) - to_chat(user, "You carefully erase the [lowertext(cultist_name)] rune.") - qdel(src) + if(istype(I, /obj/item/melee/cultblade/dagger) && iscultist(user)) + SEND_SOUND(user,'sound/items/sheath.ogg') + if(do_after(user, 15, target = src)) + to_chat(user, "You carefully erase the [lowertext(cultist_name)] rune.") + qdel(src) else if(istype(I, /obj/item/nullrod)) user.say("BEGONE FOUL MAGIKS!!") to_chat(user, "You disrupt the magic of [src] with [I].") @@ -72,6 +76,7 @@ To draw a rune, use an arcane tome. if(invokers.len >= req_cultists) invoke(invokers) else + to_chat(user, "You need [req_cultists - invokers.len] more adjacent cultists to use this rune in such a manner.") fail_invoke() /obj/effect/rune/attack_animal(mob/living/simple_animal/M) @@ -81,12 +86,12 @@ To draw a rune, use an arcane tome. else to_chat(M, "You are unable to invoke the rune!") -/obj/effect/rune/proc/talismanhide() //for talisman of revealing/hiding +/obj/effect/rune/proc/conceal() //for talisman of revealing/hiding visible_message("[src] fades away.") invisibility = INVISIBILITY_OBSERVER alpha = 100 //To help ghosts distinguish hidden runes -/obj/effect/rune/proc/talismanreveal() //for talisman of revealing/hiding +/obj/effect/rune/proc/reveal() //for talisman of revealing/hiding invisibility = 0 visible_message("[src] suddenly appears!") alpha = initial(alpha) @@ -115,7 +120,7 @@ structure_check() searches for nearby cultist structures required for the invoca continue if(ishuman(L)) var/mob/living/carbon/human/H = L - if((H.has_disability(DISABILITY_MUTE)) || H.silent) + if((H.has_trait(TRAIT_MUTE)) || H.silent) continue if(L.stat) continue @@ -186,136 +191,6 @@ structure_check() searches for nearby cultist structures required for the invoca return B return 0 -//Rite of Binding: A paper on top of the rune to a talisman. -/obj/effect/rune/imbue - cultist_name = "Create Talisman" - cultist_desc = "transforms paper into powerful magic talismans." - invocation = "H'drak v'loso, mir'kanas verbot!" - icon_state = "3" - color = RUNE_COLOR_TALISMAN - -/obj/effect/rune/imbue/invoke(var/list/invokers) - var/mob/living/user = invokers[1] //the first invoker is always the user - var/list/papers_on_rune = checkpapers() - var/entered_talisman_name - var/obj/item/paper/talisman/talisman_type - var/list/possible_talismans = list() - if(!papers_on_rune.len) - to_chat(user, "There must be a blank paper on top of [src]!") - fail_invoke() - log_game("Talisman Creation rune failed - no blank papers on rune") - return - if(rune_in_use) - to_chat(user, "[src] can only support one ritual at a time!") - fail_invoke() - log_game("Talisman Creation rune failed - already in use") - return - - for(var/I in subtypesof(/obj/item/paper/talisman) - /obj/item/paper/talisman/malformed - /obj/item/paper/talisman/supply - /obj/item/paper/talisman/supply/weak - /obj/item/paper/talisman/summon_tome) - var/obj/item/paper/talisman/J = I - var/talisman_cult_name = initial(J.cultist_name) - if(talisman_cult_name) - possible_talismans[talisman_cult_name] = J //This is to allow the menu to let cultists select talismans by name - entered_talisman_name = input(user, "Choose a talisman to imbue.", "Talisman Choices") as null|anything in possible_talismans - talisman_type = possible_talismans[entered_talisman_name] - if(!Adjacent(user) || !src || QDELETED(src) || user.incapacitated() || rune_in_use || !talisman_type) - return - papers_on_rune = checkpapers() - if(!papers_on_rune.len) - to_chat(user, "There must be a blank paper on top of [src]!") - fail_invoke() - log_game("Talisman Creation rune failed - no blank papers on rune") - return - var/obj/item/paper/paper_to_imbue = papers_on_rune[1] - ..() - visible_message("Dark power begins to channel into the paper!") - rune_in_use = TRUE - if(do_after(user, initial(talisman_type.creation_time), target = paper_to_imbue)) - new talisman_type(get_turf(src)) - visible_message("[src] glows with power, and bloody images form themselves on [paper_to_imbue].") - qdel(paper_to_imbue) - rune_in_use = FALSE - -/obj/effect/rune/imbue/proc/checkpapers() - . = list() - for(var/obj/item/paper/P in get_turf(src)) - if(!P.info && !istype(P, /obj/item/paper/talisman)) - . |= P - -/obj/effect/rune/teleport - cultist_name = "Teleport" - cultist_desc = "warps everything above it to another chosen teleport rune." - invocation = "Sas'so c'arta forbici!" - icon_state = "2" - color = RUNE_COLOR_TELEPORT - req_keyword = TRUE - var/listkey - -/obj/effect/rune/teleport/Initialize(mapload, set_keyword) - . = ..() - var/area/A = get_area(src) - var/locname = initial(A.name) - listkey = set_keyword ? "[set_keyword] [locname]":"[locname]" - GLOB.teleport_runes += src - -/obj/effect/rune/teleport/Destroy() - GLOB.teleport_runes -= src - return ..() - -/obj/effect/rune/teleport/invoke(var/list/invokers) - var/mob/living/user = invokers[1] //the first invoker is always the user - var/list/potential_runes = list() - var/list/teleportnames = list() - for(var/R in GLOB.teleport_runes) - var/obj/effect/rune/teleport/T = R - if(T != src && !is_away_level(T.z)) - potential_runes[avoid_assoc_duplicate_keys(T.listkey, teleportnames)] = T - - if(!potential_runes.len) - to_chat(user, "There are no valid runes to teleport to!") - log_game("Teleport rune failed - no other teleport runes") - fail_invoke() - return - - var/turf/T = get_turf(src) - if(is_away_level(T.z)) - to_chat(user, "You are not in the right dimension!") - log_game("Teleport rune failed - user in away mission") - fail_invoke() - return - - var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes //we know what key they picked - var/obj/effect/rune/teleport/actual_selected_rune = potential_runes[input_rune_key] //what rune does that key correspond to? - if(!Adjacent(user) || !src || QDELETED(src) || user.incapacitated() || !actual_selected_rune) - fail_invoke() - return - - var/turf/target = get_turf(actual_selected_rune) - if(is_blocked_turf(target, TRUE)) - to_chat(user, "The target rune is blocked. Attempting to teleport to it would be massively unwise.") - fail_invoke() - return - var/movedsomething = FALSE - var/moveuserlater = FALSE - for(var/atom/movable/A in T) - if(A == user) - moveuserlater = TRUE - movedsomething = TRUE - continue - if(!A.anchored) - movedsomething = TRUE - A.forceMove(target) - if(movedsomething) - ..() - visible_message("There is a sharp crack of inrushing air, and everything above the rune disappears!", null, "You hear a sharp crack.") - to_chat(user, "You[moveuserlater ? "r vision blurs, and you suddenly appear somewhere else":" send everything above the rune away"].") - if(moveuserlater) - user.forceMove(target) - target.visible_message("There is a boom of outrushing air as something appears above the rune!", null, "You hear a boom.") - else - fail_invoke() - - //Rite of Offering: Converts or sacrifices a target. /obj/effect/rune/convert cultist_name = "Offer" @@ -392,12 +267,17 @@ structure_check() searches for nearby cultist structures required for the invoca [brutedamage || burndamage ? "even as [convertee.p_their()] wounds heal and close" : "as the markings below [convertee.p_them()] glow a bloody red"]!
", \ "AAAAAAAAAAAAAA-") SSticker.mode.add_cultist(convertee.mind, 1) - new /obj/item/tome(get_turf(src)) - convertee.mind.special_role = "Cultist" + new /obj/item/melee/cultblade/dagger(get_turf(src)) + convertee.mind.special_role = ROLE_CULTIST to_chat(convertee, "Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible, truth. The veil of reality has been ripped away \ and something evil takes root.") to_chat(convertee, "Assist your new compatriots in their dark dealings. Your goal is theirs, and theirs is yours. You serve the Geometer above all else. Bring it back.\ ") + if(ishuman(convertee)) + var/mob/living/carbon/human/H = convertee + H.uncuff() + H.stuttering = 0 + H.cultslurring = 0 return 1 /obj/effect/rune/convert/proc/do_sacrifice(mob/living/sacrificial, list/invokers) @@ -450,9 +330,135 @@ structure_check() searches for nearby cultist structures required for the invoca sacrificial.gib() return TRUE + +/obj/effect/rune/empower + cultist_name = "Empower" + cultist_desc = "allows cultists to prepare greater amounts of blood magic at far less of a cost." + invocation = "H'drak v'loso, mir'kanas verbot!" + icon_state = "3" + color = RUNE_COLOR_TALISMAN + construct_invoke = FALSE + +/obj/effect/rune/empower/invoke(var/list/invokers) + . = ..() + var/mob/living/user = invokers[1] //the first invoker is always the user + for(var/datum/action/innate/cult/blood_magic/BM in user.actions) + BM.Activate() + +/obj/effect/rune/teleport + cultist_name = "Teleport" + cultist_desc = "warps everything above it to another chosen teleport rune." + invocation = "Sas'so c'arta forbici!" + icon_state = "2" + color = RUNE_COLOR_TELEPORT + req_keyword = TRUE + light_power = 4 + var/obj/effect/temp_visual/cult/portal/inner_portal //The portal "hint" for off-station teleportations + var/obj/effect/temp_visual/cult/rune_spawn/rune2/outer_portal + var/listkey + + +/obj/effect/rune/teleport/Initialize(mapload, set_keyword) + . = ..() + var/area/A = get_area(src) + var/locname = initial(A.name) + listkey = set_keyword ? "[set_keyword] [locname]":"[locname]" + GLOB.teleport_runes += src + +/obj/effect/rune/teleport/Destroy() + GLOB.teleport_runes -= src + return ..() + +/obj/effect/rune/teleport/invoke(var/list/invokers) + var/mob/living/user = invokers[1] //the first invoker is always the user + var/list/potential_runes = list() + var/list/teleportnames = list() + for(var/R in GLOB.teleport_runes) + var/obj/effect/rune/teleport/T = R + if(T != src && !is_away_level(T.z)) + potential_runes[avoid_assoc_duplicate_keys(T.listkey, teleportnames)] = T + + if(!potential_runes.len) + to_chat(user, "There are no valid runes to teleport to!") + log_game("Teleport rune failed - no other teleport runes") + fail_invoke() + return + + var/turf/T = get_turf(src) + if(is_away_level(T.z)) + to_chat(user, "You are not in the right dimension!") + log_game("Teleport rune failed - user in away mission") + fail_invoke() + return + + var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes //we know what key they picked + var/obj/effect/rune/teleport/actual_selected_rune = potential_runes[input_rune_key] //what rune does that key correspond to? + if(!Adjacent(user) || !src || QDELETED(src) || user.incapacitated() || !actual_selected_rune) + fail_invoke() + return + + var/turf/target = get_turf(actual_selected_rune) + if(is_blocked_turf(target, TRUE)) + to_chat(user, "The target rune is blocked. Attempting to teleport to it would be massively unwise.") + fail_invoke() + return + var/movedsomething = FALSE + var/moveuserlater = FALSE + for(var/atom/movable/A in T) + if(ishuman(A)) + new /obj/effect/temp_visual/dir_setting/cult/phase/out(T, A.dir) + new /obj/effect/temp_visual/dir_setting/cult/phase(target, A.dir) + if(A == user) + moveuserlater = TRUE + movedsomething = TRUE + continue + if(!A.anchored) + movedsomething = TRUE + A.forceMove(target) + if(movedsomething) + ..() + visible_message("There is a sharp crack of inrushing air, and everything above the rune disappears!", null, "You hear a sharp crack.") + to_chat(user, "You[moveuserlater ? "r vision blurs, and you suddenly appear somewhere else":" send everything above the rune away"].") + if(moveuserlater) + user.forceMove(target) + if(is_mining_level(z) && !is_mining_level(target.z)) //No effect if you stay on lavaland + actual_selected_rune.handle_portal("lava") + else + var/area/A = get_area(T) + if(A.map_name == "Space") + actual_selected_rune.handle_portal("space") + target.visible_message("There is a boom of outrushing air as something appears above the rune!", null, "You hear a boom.") + else + fail_invoke() + +/obj/effect/rune/teleport/proc/handle_portal(portal_type) + var/turf/T = get_turf(src) + if(inner_portal) + qdel(inner_portal) //We need fresh effects/animations + if(outer_portal) + qdel(outer_portal) + playsound(T, pick('sound/effects/sparks1.ogg', 'sound/effects/sparks2.ogg', 'sound/effects/sparks3.ogg', 'sound/effects/sparks4.ogg'), 100, TRUE, 14) + inner_portal = new /obj/effect/temp_visual/cult/portal(T) + if(portal_type == "space") + light_color = RUNE_COLOR_TELEPORT + desc += "
A tear in reality reveals a black void interspersed with dots of light... something recently teleported here from space!" + else + inner_portal.icon_state = "lava" + light_color = LIGHT_COLOR_FIRE + desc += "
A tear in reality reveals a coursing river of lava... something recently teleported here from the Lavaland Mines!" + outer_portal = new(T, 600, color) + light_range = 4 + update_light() + addtimer(CALLBACK(src, .proc/close_portal), 600, TIMER_UNIQUE) + +/obj/effect/rune/teleport/proc/close_portal() + desc = initial(desc) + light_range = 0 + update_light() + //Ritual of Dimensional Rending: Calls forth the avatar of Nar-Sie upon the station. /obj/effect/rune/narsie - cultist_name = "Summon Nar-Sie" + cultist_name = "Nar-Sie" cultist_desc = "tears apart dimensional barriers, calling forth the Geometer. Requires 9 invokers." invocation = "TOK-LYR RQA-NAP G'OLT-ULOFT!!" req_cultists = 9 @@ -473,7 +479,7 @@ structure_check() searches for nearby cultist structures required for the invoca GLOB.poi_list -= src . = ..() -/obj/effect/rune/narsie/talismanhide() //can't hide this, and you wouldn't want to +/obj/effect/rune/narsie/conceal() //can't hide this, and you wouldn't want to return /obj/effect/rune/narsie/invoke(var/list/invokers) @@ -481,12 +487,17 @@ structure_check() searches for nearby cultist structures required for the invoca return if(!is_station_level(z)) return - + var/mob/living/user = invokers[1] + var/datum/antagonist/cult/user_antag = user.mind.has_antag_datum(/datum/antagonist/cult,TRUE) + var/datum/objective/eldergod/summon_objective = locate() in user_antag.cult_team.objectives + var/area/place = get_area(src) + if(!(place in summon_objective.summon_spots)) + to_chat(user, "The Geometer can only be summoned where the veil is weak - in [english_list(summon_objective.summon_spots)]!") + return if(locate(/obj/singularity/narsie) in GLOB.poi_list) for(var/M in invokers) - to_chat(M, "[src] fizzles uselessly, Nar-Sie is already on this plane!") - playsound(src, 'sound/items/welder.ogg', 50, 1) - log_game("Summon Nar-Sie rune at [COORD(src)] failed - already summoned") + to_chat(M, "Nar-Sie is already on this plane!") + log_game("Nar-Sie rune failed - already summoned") return //BEGIN THE SUMMONING used = TRUE @@ -494,20 +505,16 @@ structure_check() searches for nearby cultist structures required for the invoca sound_to_playing_players('sound/effects/dimensional_rend.ogg') var/turf/T = get_turf(src) sleep(40) - if(locate(/obj/singularity/narsie) in GLOB.poi_list) - T.visible_message("A faint fizzle could be heard echoing along with a soft chorus of screams and chanting...") - playsound(T, 'sound/items/welder.ogg', 25, 1) - return if(src) color = RUNE_COLOR_RED new /obj/singularity/narsie/large/cult(T) //Causes Nar-Sie to spawn even if the rune has been removed /obj/effect/rune/narsie/attackby(obj/I, mob/user, params) //Since the narsie rune takes a long time to make, add logging to removal. - if((istype(I, /obj/item/tome) && iscultist(user))) + if((istype(I, /obj/item/melee/cultblade/dagger) && iscultist(user))) user.visible_message("[user.name] begins erasing [src]...", "You begin erasing [src]...") if(do_after(user, 50, target = src)) //Prevents accidental erasures. - log_game("Summon Narsie rune erased by [user.mind.key] (ckey) with a tome") - message_admins("[key_name_admin(user)] erased a Narsie rune with a tome") + log_game("Summon Narsie rune erased by [user.mind.key] (ckey) with [I.name]") + message_admins("[key_name_admin(user)] erased a Narsie rune with [I.name]") ..() else if(istype(I, /obj/item/nullrod)) //Begone foul magiks. You cannot hinder me. @@ -517,7 +524,7 @@ structure_check() searches for nearby cultist structures required for the invoca //Rite of Resurrection: Requires a dead or inactive cultist. When reviving the dead, you can only perform one revival for every sacrifice your cult has carried out. /obj/effect/rune/raise_dead - cultist_name = "Revive Cultist" + cultist_name = "Revive" cultist_desc = "requires a dead, mindless, or inactive cultist placed upon the rune. Provided there have been sufficient sacrifices, they will be given a new life." invocation = "Pasnar val'keriam usinar. Savrae ines amutan. Yam'toth remium il'tarat!" //Depends on the name of the user - see below icon_state = "1" @@ -545,14 +552,13 @@ structure_check() searches for nearby cultist structures required for the invoca to_chat(user, "There are no dead cultists on the rune!") log_game("Raise Dead rune failed - no cultists to revive") fail_invoke() - rune_in_use = FALSE return if(potential_revive_mobs.len > 1) mob_to_revive = input(user, "Choose a cultist to revive.", "Cultist to Revive") as null|anything in potential_revive_mobs else mob_to_revive = potential_revive_mobs[1] if(QDELETED(src) || !validness_checks(mob_to_revive, user)) - rune_in_use = FALSE + fail_invoke() return if(user.name == "Herbert West") invocation = "To life, to life, I bring them!" @@ -563,21 +569,23 @@ structure_check() searches for nearby cultist structures required for the invoca if(LAZYLEN(GLOB.sacrificed) <= revives_used) to_chat(user, "Your cult must carry out another sacrifice before it can revive a cultist!") fail_invoke() - rune_in_use = FALSE return revives_used++ - mob_to_revive.revive(1, 1) //This does remove disabilities and such, but the rune might actually see some use because of it! + mob_to_revive.revive(1, 1) //This does remove traits and such, but the rune might actually see some use because of it! mob_to_revive.grab_ghost() - else if(!mob_to_revive.client || mob_to_revive.client.is_afk()) + if(!mob_to_revive.client || mob_to_revive.client.is_afk()) set waitfor = FALSE var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as a [mob_to_revive.name], an inactive blood cultist?", ROLE_CULTIST, null, ROLE_CULTIST, 50, mob_to_revive) - var/mob/dead/observer/theghost = null - if(candidates.len) - theghost = pick(candidates) + if(LAZYLEN(candidates)) + var/client/C = pick(candidates) to_chat(mob_to_revive.mind, "Your physical form has been taken over by another soul due to your inactivity! Ahelp if you wish to regain your form.") - message_admins("[key_name_admin(theghost)] has taken control of ([key_name_admin(mob_to_revive)]) to replace an AFK player.") + message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(mob_to_revive)]) to replace an AFK player.") mob_to_revive.ghostize(0) - mob_to_revive.key = theghost.key + mob_to_revive.key = C.key + else + fail_invoke() + return + SEND_SOUND(mob_to_revive, 'sound/ambience/antag/bloodcult.ogg') to_chat(mob_to_revive, "\"PASNAR SAVRAE YAM'TOTH. Arise.\"") mob_to_revive.visible_message("[mob_to_revive] draws in a huge breath, red light shining from [mob_to_revive.p_their()] eyes.", \ "You awaken suddenly from the void. You're alive!") @@ -590,140 +598,29 @@ structure_check() searches for nearby cultist structures required for the invoca if(!Adjacent(user) || user.incapacitated()) return FALSE if(QDELETED(target_mob)) - fail_invoke() return FALSE if(!(target_mob in T.contents)) to_chat(user, "The cultist to revive has been moved!") - fail_invoke() log_game("Raise Dead rune failed - revival target moved") return FALSE - var/mob/dead/observer/ghost = target_mob.get_ghost(TRUE) - if(!ghost && (!target_mob.mind || !target_mob.mind.active)) - to_chat(user, "The corpse to revive has no spirit!") - fail_invoke() - log_game("Raise Dead rune failed - revival target has no ghost") - return FALSE - if(!GLOB.sacrificed.len || GLOB.sacrificed.len <= revives_used) - to_chat(user, "You have sacrificed too few people to revive a cultist!") - fail_invoke() - log_game("Raise Dead rune failed - too few sacrificed") - return FALSE return TRUE /obj/effect/rune/raise_dead/fail_invoke() ..() + rune_in_use = FALSE for(var/mob/living/M in range(1,src)) if(iscultist(M) && M.stat == DEAD) M.visible_message("[M] twitches.") - -//Rite of Disruption: Emits an EMP blast. -/obj/effect/rune/emp - cultist_name = "Electromagnetic Disruption" - cultist_desc = "emits a large electromagnetic pulse, increasing in size for each cultist invoking it, hindering electronics and disabling silicons." - invocation = "Ta'gh fara'qha fel d'amar det!" - icon_state = "5" - allow_excess_invokers = TRUE - color = RUNE_COLOR_EMP - -/obj/effect/rune/emp/invoke(var/list/invokers) - var/turf/E = get_turf(src) - ..() - visible_message("[src] glows blue for a moment before vanishing.") - switch(invokers.len) - if(1 to 2) - playsound(E, 'sound/items/welder2.ogg', 25, 1) - for(var/M in invokers) - to_chat(M, "You feel a minute vibration pass through you...") - if(3 to 6) - playsound(E, 'sound/magic/disable_tech.ogg', 50, 1) - for(var/M in invokers) - to_chat(M, "Your hair stands on end as a shockwave emanates from the rune!") - if(7 to INFINITY) - playsound(E, 'sound/magic/disable_tech.ogg', 100, 1) - for(var/M in invokers) - var/mob/living/L = M - to_chat(L, "You chant in unison and a colossal burst of energy knocks you backward!") - L.Knockdown(40) - qdel(src) //delete before pulsing because it's a delay reee - empulse(E, 9*invokers.len, 12*invokers.len) // Scales now, from a single room to most of the station depending on # of chanters - -//Rite of Spirit Sight: Separates one's spirit from their body. They will take damage while it is active. -/obj/effect/rune/spirit - cultist_name = "Spirit Sight" - cultist_desc = "severs the link between one's spirit and body. This effect is taxing and one's physical body will take damage while this is active." - invocation = "Fwe'sh mah erl nyag r'ya!" - icon_state = "7" - color = RUNE_COLOR_DARKRED - rune_in_use = FALSE //One at a time, please! - construct_invoke = FALSE - var/mob/living/affecting = null - -/obj/effect/rune/spirit/Destroy() - affecting = null - return ..() - -/obj/effect/rune/spirit/examine(mob/user) - ..() - if(affecting) - to_chat(user, "A translucent field encases [affecting] above the rune!") - -/obj/effect/rune/spirit/can_invoke(mob/living/user) - if(rune_in_use) - to_chat(user, "[src] cannot support more than one body!") - log_game("Spirit Sight rune failed - more than one user") - return list() - var/turf/T = get_turf(src) - if(!(user in T)) - to_chat(user, "You must be standing on top of [src]!") - log_game("Spirit Sight rune failed - user not standing on rune") - return list() - return ..() - -/obj/effect/rune/spirit/invoke(var/list/invokers) - var/mob/living/user = invokers[1] - ..() - var/turf/T = get_turf(src) - rune_in_use = TRUE - affecting = user - affecting.add_atom_colour(RUNE_COLOR_DARKRED, ADMIN_COLOUR_PRIORITY) - affecting.visible_message("[affecting] freezes statue-still, glowing an unearthly red.", \ - "You see what lies beyond. All is revealed. While this is a wondrous experience, your physical form will waste away in this state. Hurry...") - affecting.ghostize(1) - while(!QDELETED(affecting)) - affecting.apply_damage(0.1, BRUTE) - if(!(affecting in T)) - user.visible_message("A spectral tendril wraps around [affecting] and pulls [affecting.p_them()] back to the rune!") - Beam(affecting, icon_state="drainbeam", time=2) - affecting.forceMove(get_turf(src)) //NO ESCAPE :^) - if(affecting.key) - affecting.visible_message("[affecting] slowly relaxes, the glow around [affecting.p_them()] dimming.", \ - "You are re-united with your physical form. [src] releases its hold over you.") - affecting.remove_atom_colour(ADMIN_COLOUR_PRIORITY, RUNE_COLOR_DARKRED) - affecting.Knockdown(60) - break - if(affecting.stat == UNCONSCIOUS) - if(prob(1)) - var/mob/dead/observer/G = affecting.get_ghost() - to_chat(G, "You feel the link between you and your body weakening... you must hurry!") - else if(affecting.stat == DEAD) - affecting.remove_atom_colour(ADMIN_COLOUR_PRIORITY, RUNE_COLOR_DARKRED) - var/mob/dead/observer/G = affecting.get_ghost() - to_chat(G, "You suddenly feel your physical form pass on. [src]'s exertion has killed you!") - break - sleep(1) - affecting = null - rune_in_use = FALSE - //Rite of the Corporeal Shield: When invoked, becomes solid and cannot be passed. Invoke again to undo. /obj/effect/rune/wall - cultist_name = "Form Barrier" + cultist_name = "Barrier" cultist_desc = "when invoked, makes a temporary invisible wall to block passage. Can be invoked again to reverse this." invocation = "Khari'd! Eske'te tannin!" - icon_state = "1" - color = RUNE_COLOR_MEDIUMRED + icon_state = "4" + color = RUNE_COLOR_DARKRED CanAtmosPass = ATMOS_PASS_DENSITY - var/density_timer + var/datum/timedevent/density_timer var/recharging = FALSE /obj/effect/rune/wall/Initialize(mapload, set_keyword) @@ -732,8 +629,10 @@ structure_check() searches for nearby cultist structures required for the invoca /obj/effect/rune/wall/examine(mob/user) ..() - if(density) - to_chat(user, "There is a barely perceptible shimmering of the air above [src].") + if(density && iscultist(user)) + var/datum/timedevent/TMR = active_timers[1] + if(TMR) + to_chat(user, "The air above this rune has hardened into a barrier that will last [DisplayTimeText(TMR.timeToRun - world.time)].") /obj/effect/rune/wall/Destroy() density = FALSE @@ -767,7 +666,7 @@ structure_check() searches for nearby cultist structures required for the invoca W.density = TRUE W.update_state() W.spread_density() - density_timer = addtimer(CALLBACK(src, .proc/lose_density), 900, TIMER_STOPPABLE) + density_timer = addtimer(CALLBACK(src, .proc/lose_density), 3000, TIMER_STOPPABLE) /obj/effect/rune/wall/proc/lose_density() if(density) @@ -804,7 +703,7 @@ structure_check() searches for nearby cultist structures required for the invoca invocation = "N'ath reth sh'yro eth d'rekkathnor!" req_cultists = 2 invoke_damage = 10 - icon_state = "5" + icon_state = "3" color = RUNE_COLOR_SUMMON /obj/effect/rune/summon/invoke(var/list/invokers) @@ -849,7 +748,7 @@ structure_check() searches for nearby cultist structures required for the invoca cultist_desc = "boils the blood of non-believers who can see the rune, rapidly dealing extreme amounts of damage. Requires 3 invokers." invocation = "Dedo ol'btoh!" icon_state = "4" - color = RUNE_COLOR_MEDIUMRED + color = RUNE_COLOR_BURNTORANGE light_color = LIGHT_COLOR_LAVA req_cultists = 3 invoke_damage = 10 @@ -909,19 +808,20 @@ structure_check() searches for nearby cultist structures required for the invoca //Rite of Spectral Manifestation: Summons a ghost on top of the rune as a cultist human with no items. User must stand on the rune at all times, and takes damage for each summoned ghost. /obj/effect/rune/manifest - cultist_name = "Manifest Spirit" - cultist_desc = "manifests a spirit as a servant of the Geometer. The invoker must not move from atop the rune, and will take damage for each summoned spirit." + cultist_name = "Spirit Realm" + cultist_desc = "manifests a spirit servant of the Geometer and allows you to ascend as a spirit yourself. The invoker must not move from atop the rune, and will take damage for each summoned spirit." invocation = "Gal'h'rfikk harfrandid mud'gib!" //how the fuck do you pronounce this - icon_state = "6" + icon_state = "7" invoke_damage = 10 construct_invoke = FALSE - color = RUNE_COLOR_MEDIUMRED - var/ghost_limit = 5 + color = RUNE_COLOR_DARKRED + var/mob/living/affecting = null + var/ghost_limit = 4 var/ghosts = 0 /obj/effect/rune/manifest/Initialize() . = ..() - notify_ghosts("Manifest rune created in [get_area(src)].", 'sound/effects/ghost2.ogg', source = src) + /obj/effect/rune/manifest/can_invoke(mob/living/user) if(!(user in get_turf(src))) @@ -934,60 +834,91 @@ structure_check() searches for nearby cultist structures required for the invoca fail_invoke() log_game("Manifest rune failed - user is a ghost") return list() - if(ghosts >= ghost_limit) - to_chat(user, "You are sustaining too many ghosts to summon more!") - fail_invoke() - log_game("Manifest rune failed - too many summoned ghosts") - return list() - var/list/ghosts_on_rune = list() - for(var/mob/dead/observer/O in get_turf(src)) - if(O.client && !jobban_isbanned(O, ROLE_CULTIST)) - ghosts_on_rune += O - if(!ghosts_on_rune.len) - to_chat(user, "There are no spirits near [src]!") - fail_invoke() - log_game("Manifest rune failed - no nearby ghosts") - return list() return ..() /obj/effect/rune/manifest/invoke(var/list/invokers) + . = ..() var/mob/living/user = invokers[1] - var/list/ghosts_on_rune = list() - for(var/mob/dead/observer/O in get_turf(src)) - if(O.client && !jobban_isbanned(O, ROLE_CULTIST)) - ghosts_on_rune += O - var/mob/dead/observer/ghost_to_spawn = pick(ghosts_on_rune) - var/mob/living/carbon/human/cult_ghost/new_human = new(get_turf(src)) - new_human.real_name = ghost_to_spawn.real_name - new_human.alpha = 150 //Makes them translucent - new_human.equipOutfit(/datum/outfit/ghost_cultist) //give them armor - new_human.apply_status_effect(STATUS_EFFECT_SUMMONEDGHOST) //ghosts can't summon more ghosts - ..() - ghosts++ - playsound(src, 'sound/magic/exit_blood.ogg', 50, 1) - visible_message("A cloud of red mist forms above [src], and from within steps... a [new_human.gender == FEMALE ? "wo":""]man.") - to_chat(user, "Your blood begins flowing into [src]. You must remain in place and conscious to maintain the forms of those summoned. This will hurt you slowly but surely...") var/turf/T = get_turf(src) - var/obj/structure/emergency_shield/invoker/N = new(T) + var/choice = alert(user,"You tear open a connection to the spirit realm...",,"Summon a Cult Ghost","Ascend as a Dark Spirit","Cancel") + if(choice == "Summon a Cult Ghost") + notify_ghosts("Manifest rune invoked in [get_area(src)].", 'sound/effects/ghost2.ogg', source = src) + var/list/ghosts_on_rune = list() + for(var/mob/dead/observer/O in get_turf(src)) + if(O.client && !jobban_isbanned(O, ROLE_CULTIST)) + ghosts_on_rune += O + if(!ghosts_on_rune.len) + to_chat(user, "There are no spirits near [src]!") + fail_invoke() + log_game("Manifest rune failed - no nearby ghosts") + return list() + var/mob/dead/observer/ghost_to_spawn = pick(ghosts_on_rune) + var/mob/living/carbon/human/cult_ghost/new_human = new(get_turf(src)) + new_human.real_name = ghost_to_spawn.real_name + new_human.alpha = 150 //Makes them translucent + new_human.equipOutfit(/datum/outfit/ghost_cultist) //give them armor + new_human.apply_status_effect(STATUS_EFFECT_SUMMONEDGHOST) //ghosts can't summon more ghosts + new_human.see_invisible = SEE_INVISIBLE_OBSERVER + ghosts++ + if(ghosts >= ghost_limit) + to_chat(user, "You are sustaining too many ghosts to summon more!") + fail_invoke() + log_game("Manifest rune failed - too many summoned ghosts") + return list() + playsound(src, 'sound/magic/exit_blood.ogg', 50, 1) + visible_message("A cloud of red mist forms above [src], and from within steps... a [new_human.gender == FEMALE ? "wo":""]man.") + to_chat(user, "Your blood begins flowing into [src]. You must remain in place and conscious to maintain the forms of those summoned. This will hurt you slowly but surely...") + var/obj/structure/emergency_shield/invoker/N = new(T) + new_human.key = ghost_to_spawn.key + SSticker.mode.add_cultist(new_human.mind, 0) + to_chat(new_human, "You are a servant of the Geometer. You have been made semi-corporeal by the cult of Nar-Sie, and you are to serve them at all costs.") - new_human.key = ghost_to_spawn.key - SSticker.mode.add_cultist(new_human.mind, 0) - to_chat(new_human, "You are a servant of the Geometer. You have been made semi-corporeal by the cult of Nar-Sie, and you are to serve them at all costs.") + while(!QDELETED(src) && !QDELETED(user) && !QDELETED(new_human) && (user in T)) + if(user.stat || new_human.InCritical()) + break + user.apply_damage(0.1, BRUTE) + sleep(1) - while(!QDELETED(src) && !QDELETED(user) && !QDELETED(new_human) && (user in T)) - if(user.stat || new_human.InCritical()) - break - user.apply_damage(0.1, BRUTE) - sleep(1) - - qdel(N) - ghosts-- - if(new_human) - new_human.visible_message("[new_human] suddenly dissolves into bones and ashes.", \ - "Your link to the world fades. Your form breaks apart.") - for(var/obj/I in new_human) - new_human.dropItemToGround(I, TRUE) - new_human.dust() + qdel(N) + ghosts-- + if(new_human) + new_human.visible_message("[new_human] suddenly dissolves into bones and ashes.", \ + "Your link to the world fades. Your form breaks apart.") + for(var/obj/I in new_human) + new_human.dropItemToGround(I, TRUE) + new_human.dust() + else if(choice == "Ascend as a Dark Spirit") + affecting = user + affecting.add_atom_colour(RUNE_COLOR_DARKRED, ADMIN_COLOUR_PRIORITY) + affecting.visible_message("[affecting] freezes statue-still, glowing an unearthly red.", \ + "You see what lies beyond. All is revealed. In this form you find that your voice booms louder and you can mark targets for the entire cult") + var/mob/dead/observer/G = affecting.ghostize(1) + var/datum/action/innate/cult/comm/spirit/CM = new + var/datum/action/innate/cult/ghostmark/GM = new + G.name = "Dark Spirit of [G.name]" + G.color = "red" + CM.Grant(G) + GM.Grant(G) + while(!QDELETED(affecting)) + if(!(affecting in T)) + user.visible_message("A spectral tendril wraps around [affecting] and pulls [affecting.p_them()] back to the rune!") + Beam(affecting, icon_state="drainbeam", time=2) + affecting.forceMove(get_turf(src)) //NO ESCAPE :^) + if(affecting.key) + affecting.visible_message("[affecting] slowly relaxes, the glow around [affecting.p_them()] dimming.", \ + "You are re-united with your physical form. [src] releases its hold over you.") + affecting.Knockdown(40) + break + if(affecting.health <= 10) + to_chat(G, "Your body can no longer sustain the connection!") + break + sleep(5) + CM.Remove(G) + GM.Remove(G) + affecting.remove_atom_colour(ADMIN_COLOUR_PRIORITY, RUNE_COLOR_DARKRED) + affecting.grab_ghost() + affecting = null + rune_in_use = FALSE /mob/living/carbon/human/cult_ghost/spill_organs(no_brain, no_organs, no_bodyparts) //cult ghosts never drop a brain no_brain = TRUE @@ -997,3 +928,149 @@ structure_check() searches for nearby cultist structures required for the invoca . = ..() for(var/obj/item/organ/brain/B in .) //they're not that smart, really . -= B + + +/obj/effect/rune/apocalypse + cultist_name = "Apocalypse" + cultist_desc = "a harbinger of the end times. Grows in strength with the cult's desperation - but at the risk of... side effects." + invocation = "Ta'gh fara'qha fel d'amar det!" + icon = 'icons/effects/96x96.dmi' + icon_state = "apoc" + pixel_x = -32 + pixel_y = -32 + allow_excess_invokers = TRUE + color = RUNE_COLOR_DARKRED + req_cultists = 3 + scribe_delay = 100 + +/obj/effect/rune/apocalypse/invoke(var/list/invokers) + if(rune_in_use) + return + . = ..() + var/area/place = get_area(src) + var/mob/living/user = invokers[1] + var/datum/antagonist/cult/user_antag = user.mind.has_antag_datum(/datum/antagonist/cult,TRUE) + var/datum/objective/eldergod/summon_objective = locate() in user_antag.cult_team.objectives + if(summon_objective.summon_spots.len <= 1) + to_chat(user, "Only one ritual site remains - it must be reserved for the final summoning!") + return + if(!(place in summon_objective.summon_spots)) + to_chat(user, "The Apocalypse rune will remove a ritual site, where Nar-sie can be summoned, it can only be scribed in [english_list(summon_objective.summon_spots)]!") + return + summon_objective.summon_spots -= place + rune_in_use = TRUE + var/turf/T = get_turf(src) + new /obj/effect/temp_visual/dir_setting/curse/grasp_portal/fading(T) + var/intensity = 0 + for(var/mob/living/M in GLOB.player_list) + if(iscultist(M)) + intensity++ + intensity = max(60, 360 - (360*(intensity/GLOB.player_list.len + 0.3)**2)) //significantly lower intensity for "winning" cults + var/duration = intensity*10 + playsound(T, 'sound/magic/enter_blood.ogg', 100, 1) + visible_message("A colossal shockwave of energy bursts from the rune, disintegrating it in the process!") + for(var/mob/living/L in range(src, 3)) + L.Knockdown(30) + empulse(T, 0.42*(intensity), 1) + var/list/images = list() + var/zmatch = T.z + var/datum/atom_hud/AH = GLOB.huds[DATA_HUD_SECURITY_ADVANCED] + for(var/mob/living/M in GLOB.alive_mob_list) + if(M.z != zmatch) + continue + if(ishuman(M)) + if(!iscultist(M)) + AH.remove_hud_from(M) + addtimer(CALLBACK(GLOBAL_PROC, .proc/hudFix, M), duration) + var/image/A = image('icons/mob/mob.dmi',M,"cultist", ABOVE_MOB_LAYER) + A.override = 1 + add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/noncult, "human_apoc", A, FALSE) + addtimer(CALLBACK(M,/atom/.proc/remove_alt_appearance,"human_apoc",TRUE), duration) + images += A + SEND_SOUND(M, pick(sound('sound/ambience/antag/bloodcult.ogg'),sound('sound/spookoween/ghost_whisper.ogg'),sound('sound/spookoween/ghosty_wind.ogg'))) + else + var/construct = pick("floater","artificer","behemoth") + var/image/B = image('icons/mob/mob.dmi',M,construct, ABOVE_MOB_LAYER) + B.override = 1 + add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/noncult, "mob_apoc", B, FALSE) + addtimer(CALLBACK(M,/atom/.proc/remove_alt_appearance,"mob_apoc",TRUE), duration) + images += B + if(!iscultist(M)) + if(M.client) + var/image/C = image('icons/effects/cult_effects.dmi',M,"bloodsparkles", ABOVE_MOB_LAYER) + add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/cult, "cult_apoc", C, FALSE) + addtimer(CALLBACK(M,/atom/.proc/remove_alt_appearance,"cult_apoc",TRUE), duration) + images += C + else + to_chat(M, "An Apocalypse Rune was invoked in the [place.name], it is no longer available as a summoning site!") + SEND_SOUND(M, 'sound/effects/pope_entry.ogg') + image_handler(images, duration) + if(intensity>=285) // Based on the prior formula, this means the cult makes up <15% of current players + var/outcome = rand(1,100) + switch(outcome) + if(1 to 10) + var/datum/round_event_control/disease_outbreak/D = new() + var/datum/round_event_control/mice_migration/M = new() + D.runEvent() + M.runEvent() + if(11 to 20) + var/datum/round_event_control/radiation_storm/RS = new() + RS.runEvent() + if(21 to 30) + var/datum/round_event_control/brand_intelligence/BI = new() + BI.runEvent() + if(31 to 40) + var/datum/round_event_control/immovable_rod/R = new() + R.runEvent() + R.runEvent() + R.runEvent() + if(41 to 50) + var/datum/round_event_control/meteor_wave/MW = new() + MW.runEvent() + if(51 to 60) + var/datum/round_event_control/spider_infestation/SI = new() + SI.runEvent() + if(61 to 70) + var/datum/round_event_control/anomaly/anomaly_flux/AF + var/datum/round_event_control/anomaly/anomaly_grav/AG + var/datum/round_event_control/anomaly/anomaly_pyro/AP + var/datum/round_event_control/anomaly/anomaly_vortex/AV + AF.runEvent() + AG.runEvent() + AP.runEvent() + AV.runEvent() + if(71 to 80) + var/datum/round_event_control/spacevine/SV = new() + var/datum/round_event_control/grey_tide/GT = new() + SV.runEvent() + GT.runEvent() + if(81 to 100) + var/datum/round_event_control/portal_storm_narsie/N = new() + N.runEvent() + qdel(src) + +/obj/effect/rune/apocalypse/proc/image_handler(var/list/images, duration) + var/end = world.time + duration + set waitfor = 0 + while(end>world.time) + for(var/image/I in images) + I.override = FALSE + animate(I, alpha = 0, time = 25, flags = ANIMATION_PARALLEL) + sleep(35) + for(var/image/I in images) + animate(I, alpha = 255, time = 25, flags = ANIMATION_PARALLEL) + sleep(25) + for(var/image/I in images) + if(I.icon_state != "bloodsparkles") + I.override = TRUE + sleep(190) + + + +/proc/hudFix(mob/living/carbon/human/target) + if(!target || !target.client) + return + var/obj/O = target.get_item_by_slot(slot_glasses) + if(istype(O, /obj/item/clothing/glasses/hud/security)) + var/datum/atom_hud/AH = GLOB.huds[DATA_HUD_SECURITY_ADVANCED] + AH.add_hud_to(target) diff --git a/code/game/gamemodes/devil/devilinfo.dm b/code/modules/antagonists/devil/devil.dm similarity index 82% rename from code/game/gamemodes/devil/devilinfo.dm rename to code/modules/antagonists/devil/devil.dm index 1683aa8a00..858b2d1ef1 100644 --- a/code/game/gamemodes/devil/devilinfo.dm +++ b/code/modules/antagonists/devil/devil.dm @@ -35,7 +35,7 @@ GLOBAL_LIST_INIT(lawlorify, list ( BAN_CHAPEL = "This devil avoids holy ground.", BAN_HURTPRIEST = "The annointed clergy appear to be immune to his powers.", BAN_AVOIDWATER = "The devil seems to have some sort of aversion to water, though it does not appear to harm him.", - BAN_STRIKEUNCONCIOUS = "This devil only shows interest in those who are awake.", + BAN_STRIKEUNCONSCIOUS = "This devil only shows interest in those who are awake.", BAN_HURTLIZARD = "This devil will not strike a lizardman first.", BAN_HURTANIMAL = "This devil avoids hurting animals.", BANISH_WATER = "To banish the devil, you must infuse its body with holy water.", @@ -59,7 +59,7 @@ GLOBAL_LIST_INIT(lawlorify, list ( BAN_CHAPEL = "You must never attempt to enter the chapel.", BAN_HURTPRIEST = "You must never attack a priest.", BAN_AVOIDWATER = "You must never willingly touch a wet surface.", - BAN_STRIKEUNCONCIOUS = "You must never strike an unconscious person.", + BAN_STRIKEUNCONSCIOUS = "You must never strike an unconscious person.", BAN_HURTLIZARD = "You must never harm a lizardman outside of self defense.", BAN_HURTANIMAL = "You must never harm a non-sentient creature or robot outside of self defense.", BANE_SILVER = "Silver, in all of its forms shall be your downfall.", @@ -85,8 +85,12 @@ GLOBAL_LIST_INIT(devil_title, list("Lord ", "Prelate ", "Count ", "Viscount ", " GLOBAL_LIST_INIT(devil_syllable, list("hal", "ve", "odr", "neit", "ci", "quon", "mya", "folth", "wren", "geyr", "hil", "niet", "twou", "phi", "coa")) GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", ", the Lord of all things", ", Jr.")) /datum/antagonist/devil + name = "Devil" + roundend_category = "devils" + antagpanel_category = "Devil" + job_rank = ROLE_DEVIL //Don't delete upon mind destruction, otherwise soul re-selling will break. - delete_on_death = FALSE + delete_on_mind_deletion = FALSE var/obligation var/ban var/bane @@ -95,42 +99,48 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", var/list/datum/mind/soulsOwned = new var/reviveNumber = 0 var/form = BASIC_DEVIL - var/exists = 0 - var/static/list/removable_devil_spells = list( + var/static/list/devil_spells = typecacheof(list( /obj/effect/proc_holder/spell/aimed/fireball/hellish, /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork, - /obj/effect/proc_holder/spell/aimed/fireball/hellish, - /obj/effect/proc_holder/spell/targeted/infernal_jaunt, /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/greater, - /obj/effect/proc_holder/spell/targeted/sintouch, /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/ascended, - /obj/effect/proc_holder/spell/targeted/sintouch/ascended) - var/static/list/devil_spells = list( - /obj/effect/proc_holder/spell/aimed/fireball/hellish, - /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork, - /obj/effect/proc_holder/spell/aimed/fireball/hellish, /obj/effect/proc_holder/spell/targeted/infernal_jaunt, - /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/greater, /obj/effect/proc_holder/spell/targeted/sintouch, - /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/ascended, /obj/effect/proc_holder/spell/targeted/sintouch/ascended, /obj/effect/proc_holder/spell/targeted/summon_contract, /obj/effect/proc_holder/spell/targeted/conjure_item/violin, - /obj/effect/proc_holder/spell/targeted/summon_dancefloor) + /obj/effect/proc_holder/spell/targeted/summon_dancefloor)) var/ascendable = FALSE +/datum/antagonist/devil/can_be_owned(datum/mind/new_owner) + . = ..() + return . && (ishuman(new_owner.current) || iscyborg(new_owner.current)) -/datum/antagonist/devil/New() - ..() - devil_spells = typecacheof(devil_spells) - truename = randomDevilName() - ban = randomdevilban() - bane = randomdevilbane() - obligation = randomdevilobligation() - banish = randomdevilbanish() - GLOB.allDevils[lowertext(truename)] = src +/datum/antagonist/devil/get_admin_commands() + . = ..() + .["Toggle ascendable"] = CALLBACK(src,.proc/admin_toggle_ascendable) +/datum/antagonist/devil/proc/admin_toggle_ascendable(mob/admin) + ascendable = !ascendable + message_admins("[key_name_admin(admin)] set [owner.current] devil ascendable to [ascendable]") + log_admin("[key_name_admin(admin)] set [owner.current] devil ascendable to [ascendable])") + +/datum/antagonist/devil/admin_add(datum/mind/new_owner,mob/admin) + switch(alert(admin,"Should the devil be able to ascend",,"Yes","No","Cancel")) + if("Yes") + ascendable = TRUE + if("No") + ascendable = FALSE + else + return + new_owner.add_antag_datum(src) + message_admins("[key_name_admin(admin)] has devil'ed [new_owner.current]. [ascendable ? "(Ascendable)":""]") + log_admin("[key_name(admin)] has devil'ed [new_owner.current]. [ascendable ? "(Ascendable)":""]") + +/datum/antagonist/devil/antag_listing_name() + return ..() + "([truename])" + /proc/devilInfo(name) if(GLOB.allDevils[lowertext(name)]) return GLOB.allDevils[lowertext(name)] @@ -158,7 +168,7 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", return pick(OBLIGATION_FOOD, OBLIGATION_FIDDLE, OBLIGATION_DANCEOFF, OBLIGATION_GREET, OBLIGATION_PRESENCEKNOWN, OBLIGATION_SAYNAME, OBLIGATION_ANNOUNCEKILL, OBLIGATION_ANSWERTONAME) /proc/randomdevilban() - return pick(BAN_HURTWOMAN, BAN_CHAPEL, BAN_HURTPRIEST, BAN_AVOIDWATER, BAN_STRIKEUNCONCIOUS, BAN_HURTLIZARD, BAN_HURTANIMAL) + return pick(BAN_HURTWOMAN, BAN_CHAPEL, BAN_HURTPRIEST, BAN_AVOIDWATER, BAN_STRIKEUNCONSCIOUS, BAN_HURTLIZARD, BAN_HURTANIMAL) /proc/randomdevilbane() return pick(BANE_SALT, BANE_LIGHT, BANE_IRON, BANE_WHITECLOTHES, BANE_SILVER, BANE_HARVEST, BANE_TOOLBOX) @@ -175,8 +185,8 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", update_hud() switch(SOULVALUE) if(0) - to_chat(owner.current, "Your hellish powers have been restored.") - give_base_spells() + to_chat(owner.current, "Your hellish powers have been restored.") + give_appropriate_spells() if(BLOOD_THRESHOLD) increase_blood_lizard() if(TRUE_THRESHOLD) @@ -199,33 +209,33 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", if(form == BLOOD_LIZARD && SOULVALUE < BLOOD_THRESHOLD) regress_humanoid() if(SOULVALUE < 0) - remove_spells() - to_chat(owner.current, "As punishment for your failures, all of your powers except contract creation have been revoked.") + give_appropriate_spells() + to_chat(owner.current, "As punishment for your failures, all of your powers except contract creation have been revoked.") /datum/antagonist/devil/proc/regress_humanoid() - to_chat(owner.current, "Your powers weaken, have more contracts be signed to regain power.") + to_chat(owner.current, "Your powers weaken, have more contracts be signed to regain power.") if(ishuman(owner.current)) var/mob/living/carbon/human/H = owner.current H.set_species(/datum/species/human, 1) H.regenerate_icons() - give_base_spells() + give_appropriate_spells() if(istype(owner.current.loc, /obj/effect/dummy/slaughter/)) owner.current.forceMove(get_turf(owner.current))//Fixes dying while jaunted leaving you permajaunted. form = BASIC_DEVIL /datum/antagonist/devil/proc/regress_blood_lizard() var/mob/living/carbon/true_devil/D = owner.current - to_chat(D, "Your powers weaken, have more contracts be signed to regain power.") - D.oldform.loc = D.loc + to_chat(D, "Your powers weaken, have more contracts be signed to regain power.") + D.oldform.forceMove(D.drop_location()) owner.transfer_to(D.oldform) - give_lizard_spells() + give_appropriate_spells() qdel(D) form = BLOOD_LIZARD update_hud() /datum/antagonist/devil/proc/increase_blood_lizard() - to_chat(owner.current, "You feel as though your humanoid form is about to shed. You will soon turn into a blood lizard.") + to_chat(owner.current, "You feel as though your humanoid form is about to shed. You will soon turn into a blood lizard.") sleep(50) if(ishuman(owner.current)) var/mob/living/carbon/human/H = owner.current @@ -237,30 +247,29 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", H.regenerate_icons() else //Did the devil get hit by a staff of transmutation? owner.current.color = "#501010" - give_lizard_spells() + give_appropriate_spells() form = BLOOD_LIZARD /datum/antagonist/devil/proc/increase_true_devil() - to_chat(owner.current, "You feel as though your current form is about to shed. You will soon turn into a true devil.") + to_chat(owner.current, "You feel as though your current form is about to shed. You will soon turn into a true devil.") sleep(50) var/mob/living/carbon/true_devil/A = new /mob/living/carbon/true_devil(owner.current.loc) A.faction |= "hell" - owner.current.loc = A + owner.current.forceMove(A) A.oldform = owner.current owner.transfer_to(A) A.set_name() - give_true_spells() + give_appropriate_spells() form = TRUE_DEVIL update_hud() - /datum/antagonist/devil/proc/increase_arch_devil() if(!ascendable) return var/mob/living/carbon/true_devil/D = owner.current - to_chat(D, "You feel as though your form is about to ascend.") + to_chat(D, "You feel as though your form is about to ascend.") sleep(50) if(!D) return @@ -292,8 +301,8 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", if(!D) return to_chat(world, "\"SLOTH, WRATH, GLUTTONY, ACEDIA, ENVY, GREED, PRIDE! FIRES OF HELL AWAKEN!!\"") - world << 'sound/hallucinations/veryfar_noise.ogg' - give_arch_spells() + SEND_SOUND(world, sound('sound/hallucinations/veryfar_noise.ogg')) + give_appropriate_spells() D.convert_to_archdevil() if(istype(D.loc, /obj/effect/dummy/slaughter/)) D.forceMove(get_turf(D))//Fixes dying while jaunted leaving you permajaunted. @@ -309,39 +318,44 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", /datum/antagonist/devil/proc/remove_spells() for(var/X in owner.spell_list) var/obj/effect/proc_holder/spell/S = X - if(is_type_in_typecache(S, removable_devil_spells)) + if(is_type_in_typecache(S, devil_spells)) owner.RemoveSpell(S) /datum/antagonist/devil/proc/give_summon_contract() owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/summon_contract(null)) + if(obligation == OBLIGATION_FIDDLE) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/violin(null)) + else if(obligation == OBLIGATION_DANCEOFF) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/summon_dancefloor(null)) - -/datum/antagonist/devil/proc/give_base_spells(give_summon_contract = 0) +/datum/antagonist/devil/proc/give_appropriate_spells() remove_spells() + give_summon_contract() + if(SOULVALUE >= ARCH_THRESHOLD && ascendable) + give_arch_spells() + else if(SOULVALUE >= TRUE_THRESHOLD) + give_true_spells() + else if(SOULVALUE >= BLOOD_THRESHOLD) + give_blood_spells() + else if(SOULVALUE >= 0) + give_base_spells() + +/datum/antagonist/devil/proc/give_base_spells() owner.AddSpell(new /obj/effect/proc_holder/spell/aimed/fireball/hellish(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork(null)) - if(give_summon_contract) - give_summon_contract() - if(obligation == OBLIGATION_FIDDLE) - owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/violin(null)) - if(obligation == OBLIGATION_DANCEOFF) - owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/summon_dancefloor(null)) -/datum/antagonist/devil/proc/give_lizard_spells() - remove_spells() +/datum/antagonist/devil/proc/give_blood_spells() owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/aimed/fireball/hellish(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/infernal_jaunt(null)) /datum/antagonist/devil/proc/give_true_spells() - remove_spells() owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/greater(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/aimed/fireball/hellish(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/infernal_jaunt(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/sintouch(null)) /datum/antagonist/devil/proc/give_arch_spells() - remove_spells() owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/ascended(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/sintouch/ascended(null)) @@ -368,14 +382,14 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", /datum/antagonist/devil/proc/check_banishment(mob/living/body) switch(banish) if(BANISH_WATER) - if(istype(body, /mob/living/carbon)) + if(iscarbon(body)) var/mob/living/carbon/H = body return H.reagents.has_reagent("holy water") return 0 if(BANISH_COFFIN) return (body && istype(body.loc, /obj/structure/closet/coffin)) if(BANISH_FORMALDYHIDE) - if(istype(body, /mob/living/carbon)) + if(iscarbon(body)) var/mob/living/carbon/H = body return H.reagents.has_reagent("formaldehyde") return 0 @@ -411,11 +425,11 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", /datum/antagonist/devil/proc/hellish_resurrection(mob/living/body) message_admins("[owner.name] (true name is: [truename]) is resurrecting using hellish energy.") - if(SOULVALUE < ARCH_THRESHOLD && ascendable) // once ascended, arch devils do not go down in power by any means. + if(SOULVALUE < ARCH_THRESHOLD || !ascendable) // once ascended, arch devils do not go down in power by any means. reviveNumber += LOSS_PER_DEATH update_hud() if(body) - body.revive(1,0) + body.revive(TRUE, TRUE) //Adminrevive also recovers organs, preventing someone from resurrecting without a heart. if(istype(body.loc, /obj/effect/dummy/slaughter/)) body.forceMove(get_turf(body))//Fixes dying while jaunted leaving you permajaunted. if(istype(body, /mob/living/carbon/true_devil)) @@ -458,8 +472,8 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", A.faction |= "hell" H.forceMove(A) A.oldform = H + owner.transfer_to(A, TRUE) A.set_name() - owner.transfer_to(A) if(SOULVALUE >= ARCH_THRESHOLD && ascendable) A.convert_to_archdevil() else @@ -467,7 +481,7 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", /datum/antagonist/devil/proc/update_hud() - if(istype(owner.current, /mob/living/carbon)) + if(iscarbon(owner.current)) var/mob/living/C = owner.current if(C.hud_used && C.hud_used.devilsouldisplay) C.hud_used.devilsouldisplay.update_counter(SOULVALUE) @@ -485,7 +499,14 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", .=..() /datum/antagonist/devil/on_gain() - owner.store_memory("Your devilic true name is [truename]
[GLOB.lawlorify[LAW][ban]]
You may not use violence to coerce someone into selling their soul.
You may not directly and knowingly physically harm a devil, other than yourself.
[GLOB.lawlorify[LAW][bane]]
[GLOB.lawlorify[LAW][obligation]]
[GLOB.lawlorify[LAW][banish]]
") + truename = randomDevilName() + ban = randomdevilban() + bane = randomdevilbane() + obligation = randomdevilobligation() + banish = randomdevilbanish() + GLOB.allDevils[lowertext(truename)] = src + + antag_memory += "Your devilic true name is [truename]
[GLOB.lawlorify[LAW][ban]]
You may not use violence to coerce someone into selling their soul.
You may not directly and knowingly physically harm a devil, other than yourself.
[GLOB.lawlorify[LAW][bane]]
[GLOB.lawlorify[LAW][obligation]]
[GLOB.lawlorify[LAW][banish]]
" if(issilicon(owner.current)) var/mob/living/silicon/robot_devil = owner.current var/laws = list("You may not use violence to coerce someone into selling their soul.", "You may not directly and knowingly physically harm a devil, other than yourself.", GLOB.lawlorify[LAW][ban], GLOB.lawlorify[LAW][obligation], "Accomplish your objectives at all costs.") @@ -502,7 +523,7 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", .=..() /datum/antagonist/devil/apply_innate_effects(mob/living/mob_override) - give_base_spells(1) + give_appropriate_spells() owner.current.grant_all_languages(TRUE) update_hud() .=..() @@ -514,6 +535,35 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", owner.RemoveSpell(S) .=..() +/datum/antagonist/devil/proc/printdevilinfo() + var/list/parts = list() + parts += "The devil's true name is: [truename]" + parts += "The devil's bans were:" + parts += "[GLOB.TAB][GLOB.lawlorify[LORE][ban]]" + parts += "[GLOB.TAB][GLOB.lawlorify[LORE][bane]]" + parts += "[GLOB.TAB][GLOB.lawlorify[LORE][obligation]]" + parts += "[GLOB.TAB][GLOB.lawlorify[LORE][banish]]" + return parts.Join("
") + +/datum/antagonist/devil/roundend_report() + var/list/parts = list() + parts += printplayer(owner) + parts += printdevilinfo() + parts += printobjectives(owner) + return parts.Join("
") + +/datum/antagonist/devil/roundend_report_footer() + //sintouched go here for now as a hack , TODO proper antag datum for these + var/list/parts = list() + if(SSticker.mode.sintouched.len) + parts += "The sintouched were:" + var/list/sintouchedUnique = uniqueList(SSticker.mode.sintouched) + for(var/S in sintouchedUnique) + var/datum/mind/sintouched_mind = S + parts += printplayer(sintouched_mind) + parts += printobjectives(sintouched_mind) + return parts.Join("
") + //A simple super light weight datum for the codex gigas. /datum/fakeDevil var/truename @@ -521,10 +571,12 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", var/obligation var/ban var/banish + var/ascendable /datum/fakeDevil/New(name = randomDevilName()) truename = name bane = randomdevilbane() obligation = randomdevilobligation() ban = randomdevilban() - banish = randomdevilbanish() \ No newline at end of file + banish = randomdevilbanish() + ascendable = prob(25) diff --git a/code/game/gamemodes/devil/devil.dm b/code/modules/antagonists/devil/devil_helpers.dm similarity index 100% rename from code/game/gamemodes/devil/devil.dm rename to code/modules/antagonists/devil/devil_helpers.dm diff --git a/code/game/gamemodes/devil/imp/imp.dm b/code/modules/antagonists/devil/imp/imp.dm similarity index 100% rename from code/game/gamemodes/devil/imp/imp.dm rename to code/modules/antagonists/devil/imp/imp.dm diff --git a/code/game/gamemodes/miniantags/sintouched/objectives.dm b/code/modules/antagonists/devil/sintouched/objectives.dm similarity index 100% rename from code/game/gamemodes/miniantags/sintouched/objectives.dm rename to code/modules/antagonists/devil/sintouched/objectives.dm diff --git a/code/game/gamemodes/devil/true_devil/_true_devil.dm b/code/modules/antagonists/devil/true_devil/_true_devil.dm similarity index 100% rename from code/game/gamemodes/devil/true_devil/_true_devil.dm rename to code/modules/antagonists/devil/true_devil/_true_devil.dm diff --git a/code/game/gamemodes/devil/true_devil/inventory.dm b/code/modules/antagonists/devil/true_devil/inventory.dm similarity index 100% rename from code/game/gamemodes/devil/true_devil/inventory.dm rename to code/modules/antagonists/devil/true_devil/inventory.dm diff --git a/code/modules/antagonists/monkey/monkey.dm b/code/modules/antagonists/monkey/monkey.dm new file mode 100644 index 0000000000..196adf5c22 --- /dev/null +++ b/code/modules/antagonists/monkey/monkey.dm @@ -0,0 +1,214 @@ +#define MONKEYS_ESCAPED 1 +#define MONKEYS_LIVED 2 +#define MONKEYS_DIED 3 +#define DISEASE_LIVED 4 + +/datum/antagonist/monkey + name = "Monkey" + job_rank = ROLE_MONKEY + roundend_category = "monkeys" + antagpanel_category = "Monkey" + var/datum/team/monkey/monkey_team + var/monkey_only = TRUE + +/datum/antagonist/monkey/can_be_owned(datum/mind/new_owner) + return ..() && (!monkey_only || ismonkey(new_owner.current)) + +/datum/antagonist/monkey/get_team() + return monkey_team + +/datum/antagonist/monkey/on_gain() + . = ..() + SSticker.mode.ape_infectees += owner + owner.special_role = "Infected Monkey" + + var/datum/disease/D = new /datum/disease/transformation/jungle_fever/monkeymode + if(!owner.current.HasDisease(D)) + owner.current.ForceContractDisease(D) + else + QDEL_NULL(D) + +/datum/antagonist/monkey/greet() + to_chat(owner, "You are a monkey now!") + to_chat(owner, "Bite humans to infect them, follow the orders of the monkey leaders, and help fellow monkeys!") + to_chat(owner, "Ensure at least one infected monkey escapes on the Emergency Shuttle!") + to_chat(owner, "As an intelligent monkey, you know how to use technology and how to ventcrawl while wearing things.") + to_chat(owner, "You can use :k to talk to fellow monkeys!") + SEND_SOUND(owner.current, sound('sound/ambience/antag/monkey.ogg')) + +/datum/antagonist/monkey/on_removal() + owner.special_role = null + SSticker.mode.ape_infectees -= owner + + var/datum/disease/transformation/jungle_fever/D = locate() in owner.current.viruses + if(D) + D.remove_virus() + qdel(D) + + . = ..() + +/datum/antagonist/monkey/create_team(datum/team/monkey/new_team) + if(!new_team) + for(var/datum/antagonist/monkey/H in GLOB.antagonists) + if(!H.owner) + continue + if(H.monkey_team) + monkey_team = H.monkey_team + return + monkey_team = new /datum/team/monkey + monkey_team.update_objectives() + return + if(!istype(new_team)) + stack_trace("Wrong team type passed to [type] initialization.") + monkey_team = new_team + +/datum/antagonist/monkey/proc/forge_objectives() + objectives |= monkey_team.objectives + owner.objectives |= objectives + +/datum/antagonist/monkey/admin_remove(mob/admin) + var/mob/living/carbon/monkey/M = owner.current + if(istype(M)) + switch(alert(admin, "Humanize?", "Humanize", "Yes", "No")) + if("Yes") + if(admin == M) + admin = M.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_DEFAULTMSG) + else + M.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_DEFAULTMSG) + if("No") + //nothing + else + return + . = ..() + +/datum/antagonist/monkey/leader + name = "Monkey Leader" + monkey_only = FALSE + +/datum/antagonist/monkey/leader/admin_add(datum/mind/new_owner,mob/admin) + var/mob/living/carbon/human/H = new_owner.current + if(istype(H)) + switch(alert(admin, "Monkeyize?", "Monkeyize", "Yes", "No")) + if("Yes") + if(admin == H) + admin = H.monkeyize() + else + H.monkeyize() + if("No") + //nothing + else + return + new_owner.add_antag_datum(src) + log_admin("[key_name(admin)] made [key_name(new_owner.current)] a monkey leader!") + message_admins("[key_name_admin(admin)] made [key_name_admin(new_owner.current)] a monkey leader!") + +/datum/antagonist/monkey/leader/on_gain() + . = ..() + var/obj/item/organ/heart/freedom/F = new + F.Insert(owner.current, drop_if_replaced = FALSE) + SSticker.mode.ape_leaders += owner + owner.special_role = "Monkey Leader" + +/datum/antagonist/monkey/leader/on_removal() + SSticker.mode.ape_leaders -= owner + var/obj/item/organ/heart/H = new + H.Insert(owner.current, drop_if_replaced = FALSE) //replace freedom heart with normal heart + + . = ..() + +/datum/antagonist/monkey/leader/greet() + to_chat(owner, "You are the Jungle Fever patient zero!!
") + to_chat(owner, "You have been planted onto this station by the Animal Rights Consortium.") + to_chat(owner, "Soon the disease will transform you into an ape. Afterwards, you will be able spread the infection to others with a bite.") + to_chat(owner, "While your infection strain is undetectable by scanners, any other infectees will show up on medical equipment.") + to_chat(owner, "Your mission will be deemed a success if any of the live infected monkeys reach CentCom.") + to_chat(owner, "As an initial infectee, you will be considered a 'leader' by your fellow monkeys.") + to_chat(owner, "You can use :k to talk to fellow monkeys!") + SEND_SOUND(owner.current, sound('sound/ambience/antag/monkey.ogg')) + +/datum/objective/monkey + explanation_text = "Ensure that infected monkeys escape on the emergency shuttle!" + martyr_compatible = TRUE + var/monkeys_to_win = 1 + var/escaped_monkeys = 0 + +/datum/objective/monkey/check_completion() + var/datum/disease/D = new /datum/disease/transformation/jungle_fever() + for(var/mob/living/carbon/monkey/M in GLOB.alive_mob_list) + if (M.HasDisease(D) && (M.onCentCom() || M.onSyndieBase())) + escaped_monkeys++ + if(escaped_monkeys >= monkeys_to_win) + return TRUE + return FALSE + +/datum/team/monkey + name = "Monkeys" + +/datum/team/monkey/proc/update_objectives() + objectives = list() + var/datum/objective/monkey/O = new() + O.team = src + objectives += O + +/datum/team/monkey/proc/infected_monkeys_alive() + var/datum/disease/D = new /datum/disease/transformation/jungle_fever() + for(var/mob/living/carbon/monkey/M in GLOB.alive_mob_list) + if(M.HasDisease(D)) + return TRUE + return FALSE + +/datum/team/monkey/proc/infected_monkeys_escaped() + var/datum/disease/D = new /datum/disease/transformation/jungle_fever() + for(var/mob/living/carbon/monkey/M in GLOB.alive_mob_list) + if(M.HasDisease(D) && (M.onCentCom() || M.onSyndieBase())) + return TRUE + return FALSE + +/datum/team/monkey/proc/infected_humans_escaped() + var/datum/disease/D = new /datum/disease/transformation/jungle_fever() + for(var/mob/living/carbon/human/M in GLOB.alive_mob_list) + if(M.HasDisease(D) && (M.onCentCom() || M.onSyndieBase())) + return TRUE + return FALSE + +/datum/team/monkey/proc/infected_humans_alive() + var/datum/disease/D = new /datum/disease/transformation/jungle_fever() + for(var/mob/living/carbon/human/M in GLOB.alive_mob_list) + if(M.HasDisease(D)) + return TRUE + return FALSE + +/datum/team/monkey/proc/get_result() + if(infected_monkeys_escaped()) + return MONKEYS_ESCAPED + if(infected_monkeys_alive()) + return MONKEYS_LIVED + if(infected_humans_alive() || infected_humans_escaped()) + return DISEASE_LIVED + return MONKEYS_DIED + +/datum/team/monkey/roundend_report() + var/list/parts = list() + switch(get_result()) + if(MONKEYS_ESCAPED) + parts += "Monkey Major Victory!" + parts += "Central Command and [station_name()] were taken over by the monkeys! Ook ook!" + if(MONKEYS_LIVED) + parts += "Monkey Minor Victory!" + parts += "[station_name()] was taken over by the monkeys! Ook ook!" + if(DISEASE_LIVED) + parts += "Monkey Minor Defeat!" + parts += "All the monkeys died, but the disease lives on! The future is uncertain." + if(MONKEYS_DIED) + parts += "Monkey Major Defeat!" + parts += "All the monkeys died, and Jungle Fever was wiped out!" + var/list/leaders = get_antag_minds(/datum/antagonist/monkey/leader, TRUE) + var/list/monkeys = get_antag_minds(/datum/antagonist/monkey, TRUE) + + if(LAZYLEN(leaders)) + parts += "The monkey leaders were:" + parts += printplayerlist(SSticker.mode.ape_leaders) + if(LAZYLEN(monkeys)) + parts += "The monkeys were:" + parts += printplayerlist(SSticker.mode.ape_infectees) + return "
[parts.Join("
")]
" diff --git a/code/game/gamemodes/miniantags/morph/morph.dm b/code/modules/antagonists/morph/morph.dm similarity index 99% rename from code/game/gamemodes/miniantags/morph/morph.dm rename to code/modules/antagonists/morph/morph.dm index 6d0759c52b..52f9682717 100644 --- a/code/game/gamemodes/miniantags/morph/morph.dm +++ b/code/modules/antagonists/morph/morph.dm @@ -212,7 +212,7 @@ role_name = "morphling" /datum/round_event/ghost_role/morph/spawn_role() - var/list/candidates = get_candidates("alien", null, ROLE_ALIEN) + var/list/candidates = get_candidates(ROLE_ALIEN, null, ROLE_ALIEN) if(!candidates.len) return NOT_ENOUGH_PLAYERS diff --git a/code/modules/antagonists/ninja/ninja.dm b/code/modules/antagonists/ninja/ninja.dm new file mode 100644 index 0000000000..8124b8c5b8 --- /dev/null +++ b/code/modules/antagonists/ninja/ninja.dm @@ -0,0 +1,155 @@ +/datum/antagonist/ninja + name = "Ninja" + antagpanel_category = "Ninja" + job_rank = ROLE_NINJA + var/helping_station = FALSE + var/give_objectives = TRUE + var/give_equipment = TRUE + + +/datum/antagonist/ninja/apply_innate_effects(mob/living/mob_override) + var/mob/living/M = mob_override || owner.current + update_ninja_icons_added(M) + +/datum/antagonist/ninja/remove_innate_effects(mob/living/mob_override) + var/mob/living/M = mob_override || owner.current + update_ninja_icons_removed(M) + +/datum/antagonist/ninja/proc/equip_space_ninja(mob/living/carbon/human/H = owner.current) + return H.equipOutfit(/datum/outfit/ninja) + +/datum/antagonist/ninja/proc/addMemories() + antag_memory += "I am an elite mercenary assassin of the mighty Spider Clan. A SPACE NINJA!
" + antag_memory += "Surprise is my weapon. Shadows are my armor. Without them, I am nothing. (//initialize your suit by right clicking on it, to use abilities like stealth)!
" + antag_memory += "Officially, [helping_station?"Nanotrasen":"The Syndicate"] are my employer.
" + +/datum/antagonist/ninja/proc/addObjectives(quantity = 6) + var/list/possible_targets = list() + for(var/datum/mind/M in SSticker.minds) + if(M.current && M.current.stat != DEAD) + if(ishuman(M.current)) + if(M.special_role) + possible_targets[M] = 0 //bad-guy + else if(M.assigned_role in GLOB.command_positions) + possible_targets[M] = 1 //good-guy + + var/list/possible_objectives = list(1,2,3,4) + + while(objectives.len < quantity) + switch(pick_n_take(possible_objectives)) + if(1) //research + var/datum/objective/download/O = new /datum/objective/download() + O.owner = owner + O.gen_amount_goal() + objectives += O + + if(2) //steal + var/datum/objective/steal/special/O = new /datum/objective/steal/special() + O.owner = owner + objectives += O + + if(3) //protect/kill + if(!possible_targets.len) continue + var/index = rand(1,possible_targets.len) + var/datum/mind/M = possible_targets[index] + var/is_bad_guy = possible_targets[M] + possible_targets.Cut(index,index+1) + + if(is_bad_guy ^ helping_station) //kill (good-ninja + bad-guy or bad-ninja + good-guy) + var/datum/objective/assassinate/O = new /datum/objective/assassinate() + O.owner = owner + O.target = M + O.explanation_text = "Slay \the [M.current.real_name], the [M.assigned_role]." + objectives += O + else //protect + var/datum/objective/protect/O = new /datum/objective/protect() + O.owner = owner + O.target = M + O.explanation_text = "Protect \the [M.current.real_name], the [M.assigned_role], from harm." + objectives += O + if(4) //debrain/capture + if(!possible_targets.len) continue + var/selected = rand(1,possible_targets.len) + var/datum/mind/M = possible_targets[selected] + var/is_bad_guy = possible_targets[M] + possible_targets.Cut(selected,selected+1) + + if(is_bad_guy ^ helping_station) //debrain (good-ninja + bad-guy or bad-ninja + good-guy) + var/datum/objective/debrain/O = new /datum/objective/debrain() + O.owner = owner + O.target = M + O.explanation_text = "Steal the brain of [M.current.real_name]." + objectives += O + else //capture + var/datum/objective/capture/O = new /datum/objective/capture() + O.owner = owner + O.gen_amount_goal() + objectives += O + else + break + var/datum/objective/O = new /datum/objective/survive() + O.owner = owner + owner.objectives |= objectives + + +/proc/remove_ninja(mob/living/L) + if(!L || !L.mind) + return FALSE + var/datum/antagonist/datum = L.mind.has_antag_datum(/datum/antagonist/ninja) + datum.on_removal() + return TRUE + +/proc/is_ninja(mob/living/M) + return M && M.mind && M.mind.has_antag_datum(/datum/antagonist/ninja) + + +/datum/antagonist/ninja/greet() + SEND_SOUND(owner.current, sound('sound/effects/ninja_greeting.ogg')) + to_chat(owner.current, "I am an elite mercenary assassin of the mighty Spider Clan. A SPACE NINJA!") + to_chat(owner.current, "Surprise is my weapon. Shadows are my armor. Without them, I am nothing. (//initialize your suit by right clicking on it, to use abilities like stealth)!") + to_chat(owner.current, "Officially, [helping_station?"Nanotrasen":"The Syndicate"] are my employer.") + return + +/datum/antagonist/ninja/on_gain() + if(give_objectives) + addObjectives() + addMemories() + if(give_equipment) + equip_space_ninja(owner.current) + . = ..() + +/datum/antagonist/ninja/admin_add(datum/mind/new_owner,mob/admin) + var/adj + switch(input("What kind of ninja?", "Ninja") as null|anything in list("Random","Syndicate","Nanotrasen","No objectives")) + if("Random") + helping_station = pick(TRUE,FALSE) + adj = "" + if("Syndicate") + helping_station = FALSE + adj = "syndie" + if("Nanotrasen") + helping_station = TRUE + adj = "friendly" + if("No objectives") + give_objectives = FALSE + adj = "objectiveless" + else + return + new_owner.assigned_role = "Space Ninja" + new_owner.special_role = "Space Ninja" + new_owner.add_antag_datum(src) + message_admins("[key_name_admin(admin)] has [adj] ninja'ed [new_owner.current].") + log_admin("[key_name(admin)] has [adj] ninja'ed [new_owner.current].") + +/datum/antagonist/ninja/antag_listing_name() + return ..() + "(Ninja)" + +/datum/antagonist/ninja/proc/update_ninja_icons_added(var/mob/living/carbon/human/ninja) + var/datum/atom_hud/antag/ninjahud = GLOB.huds[ANTAG_HUD_NINJA] + ninjahud.join_hud(ninja) + set_antag_hud(ninja, "ninja") + +/datum/antagonist/ninja/proc/update_ninja_icons_removed(var/mob/living/carbon/human/ninja) + var/datum/atom_hud/antag/ninjahud = GLOB.huds[ANTAG_HUD_NINJA] + ninjahud.leave_hud(ninja) + set_antag_hud(ninja, null) \ No newline at end of file diff --git a/code/game/gamemodes/nuclear/nuclear_challenge.dm b/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm similarity index 100% rename from code/game/gamemodes/nuclear/nuclear_challenge.dm rename to code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm similarity index 100% rename from code/game/gamemodes/nuclear/nuclearbomb.dm rename to code/modules/antagonists/nukeop/equipment/nuclearbomb.dm diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/modules/antagonists/nukeop/equipment/pinpointer.dm similarity index 95% rename from code/game/gamemodes/nuclear/pinpointer.dm rename to code/modules/antagonists/nukeop/equipment/pinpointer.dm index 7047729294..1cdc356559 100644 --- a/code/game/gamemodes/nuclear/pinpointer.dm +++ b/code/modules/antagonists/nukeop/equipment/pinpointer.dm @@ -1,82 +1,82 @@ -/obj/item/pinpointer/nuke - var/mode = TRACK_NUKE_DISK - -/obj/item/pinpointer/nuke/examine(mob/user) - ..() - var/msg = "Its tracking indicator reads " - switch(mode) - if(TRACK_NUKE_DISK) - msg += "\"nuclear_disk\"." - if(TRACK_MALF_AI) - msg += "\"01000001 01001001\"." - if(TRACK_INFILTRATOR) - msg += "\"vasvygengbefuvc\"." - else - msg = "Its tracking indicator is blank." - to_chat(user, msg) - for(var/obj/machinery/nuclearbomb/bomb in GLOB.machines) - if(bomb.timing) - to_chat(user, "Extreme danger. Arming signal detected. Time remaining: [bomb.get_time_left()].") - -/obj/item/pinpointer/nuke/process() - ..() - if(active) // If shit's going down - for(var/obj/machinery/nuclearbomb/bomb in GLOB.nuke_list) - if(bomb.timing) - if(!alert) - alert = TRUE - playsound(src, 'sound/items/nuke_toy_lowpower.ogg', 50, 0) - if(isliving(loc)) - var/mob/living/L = loc - to_chat(L, "Your [name] vibrates and lets out a tinny alarm. Uh oh.") - -/obj/item/pinpointer/nuke/scan_for_target() - target = null - switch(mode) - if(TRACK_NUKE_DISK) - var/obj/item/disk/nuclear/N = locate() in GLOB.poi_list - target = N - if(TRACK_MALF_AI) - for(var/V in GLOB.ai_list) - var/mob/living/silicon/ai/A = V - if(A.nuking) - target = A - for(var/V in GLOB.apcs_list) - var/obj/machinery/power/apc/A = V - if(A.malfhack && A.occupier) - target = A - if(TRACK_INFILTRATOR) - target = SSshuttle.getShuttle("syndicate") - ..() - -/obj/item/pinpointer/nuke/proc/switch_mode_to(new_mode) - if(isliving(loc)) - var/mob/living/L = loc - to_chat(L, "Your [name] beeps as it reconfigures its tracking algorithms.") - playsound(L, 'sound/machines/triple_beep.ogg', 50, 1) - mode = new_mode - scan_for_target() - -/obj/item/pinpointer/nuke/syndicate // Syndicate pinpointers automatically point towards the infiltrator once the nuke is active. - name = "syndicate pinpointer" - desc = "A handheld tracking device that locks onto certain signals. It's configured to switch tracking modes once it detects the activation signal of a nuclear device." - icon_state = "pinpointer_syndicate" - -/obj/item/pinpointer/syndicate_cyborg // Cyborg pinpointers just look for a random operative. - name = "cyborg syndicate pinpointer" - desc = "An integrated tracking device, jury-rigged to search for living Syndicate operatives." - flags_1 = NODROP_1 - -/obj/item/pinpointer/syndicate_cyborg/scan_for_target() - target = null - var/list/possible_targets = list() - var/turf/here = get_turf(src) - for(var/V in get_antagonists(/datum/antagonist/nukeop)) - var/datum/mind/M = V - if(ishuman(M.current) && M.current.stat != DEAD) - possible_targets |= M.current - var/mob/living/closest_operative = get_closest_atom(/mob/living/carbon/human, possible_targets, here) - if(closest_operative) - target = closest_operative - ..() - +/obj/item/pinpointer/nuke + var/mode = TRACK_NUKE_DISK + +/obj/item/pinpointer/nuke/examine(mob/user) + ..() + var/msg = "Its tracking indicator reads " + switch(mode) + if(TRACK_NUKE_DISK) + msg += "\"nuclear_disk\"." + if(TRACK_MALF_AI) + msg += "\"01000001 01001001\"." + if(TRACK_INFILTRATOR) + msg += "\"vasvygengbefuvc\"." + else + msg = "Its tracking indicator is blank." + to_chat(user, msg) + for(var/obj/machinery/nuclearbomb/bomb in GLOB.machines) + if(bomb.timing) + to_chat(user, "Extreme danger. Arming signal detected. Time remaining: [bomb.get_time_left()].") + +/obj/item/pinpointer/nuke/process() + ..() + if(active) // If shit's going down + for(var/obj/machinery/nuclearbomb/bomb in GLOB.nuke_list) + if(bomb.timing) + if(!alert) + alert = TRUE + playsound(src, 'sound/items/nuke_toy_lowpower.ogg', 50, 0) + if(isliving(loc)) + var/mob/living/L = loc + to_chat(L, "Your [name] vibrates and lets out a tinny alarm. Uh oh.") + +/obj/item/pinpointer/nuke/scan_for_target() + target = null + switch(mode) + if(TRACK_NUKE_DISK) + var/obj/item/disk/nuclear/N = locate() in GLOB.poi_list + target = N + if(TRACK_MALF_AI) + for(var/V in GLOB.ai_list) + var/mob/living/silicon/ai/A = V + if(A.nuking) + target = A + for(var/V in GLOB.apcs_list) + var/obj/machinery/power/apc/A = V + if(A.malfhack && A.occupier) + target = A + if(TRACK_INFILTRATOR) + target = SSshuttle.getShuttle("syndicate") + ..() + +/obj/item/pinpointer/nuke/proc/switch_mode_to(new_mode) + if(isliving(loc)) + var/mob/living/L = loc + to_chat(L, "Your [name] beeps as it reconfigures its tracking algorithms.") + playsound(L, 'sound/machines/triple_beep.ogg', 50, 1) + mode = new_mode + scan_for_target() + +/obj/item/pinpointer/nuke/syndicate // Syndicate pinpointers automatically point towards the infiltrator once the nuke is active. + name = "syndicate pinpointer" + desc = "A handheld tracking device that locks onto certain signals. It's configured to switch tracking modes once it detects the activation signal of a nuclear device." + icon_state = "pinpointer_syndicate" + +/obj/item/pinpointer/syndicate_cyborg // Cyborg pinpointers just look for a random operative. + name = "cyborg syndicate pinpointer" + desc = "An integrated tracking device, jury-rigged to search for living Syndicate operatives." + flags_1 = NODROP_1 + +/obj/item/pinpointer/syndicate_cyborg/scan_for_target() + target = null + var/list/possible_targets = list() + var/turf/here = get_turf(src) + for(var/V in get_antag_minds(/datum/antagonist/nukeop)) + var/datum/mind/M = V + if(ishuman(M.current) && M.current.stat != DEAD) + possible_targets |= M.current + var/mob/living/closest_operative = get_closest_atom(/mob/living/carbon/human, possible_targets, here) + if(closest_operative) + target = closest_operative + ..() + diff --git a/code/modules/antagonists/nukeop/nukeop.dm b/code/modules/antagonists/nukeop/nukeop.dm new file mode 100644 index 0000000000..8401dc8ced --- /dev/null +++ b/code/modules/antagonists/nukeop/nukeop.dm @@ -0,0 +1,369 @@ +/datum/antagonist/nukeop + name = "Nuclear Operative" + roundend_category = "syndicate operatives" //just in case + antagpanel_category = "NukeOp" + job_rank = ROLE_OPERATIVE + var/datum/team/nuclear/nuke_team + var/always_new_team = FALSE //If not assigned a team by default ops will try to join existing ones, set this to TRUE to always create new team. + var/send_to_spawnpoint = TRUE //Should the user be moved to default spawnpoint. + var/nukeop_outfit = /datum/outfit/syndicate + +/datum/antagonist/nukeop/proc/update_synd_icons_added(mob/living/M) + var/datum/atom_hud/antag/opshud = GLOB.huds[ANTAG_HUD_OPS] + opshud.join_hud(M) + set_antag_hud(M, "synd") + +/datum/antagonist/nukeop/proc/update_synd_icons_removed(mob/living/M) + var/datum/atom_hud/antag/opshud = GLOB.huds[ANTAG_HUD_OPS] + opshud.leave_hud(M) + set_antag_hud(M, null) + +/datum/antagonist/nukeop/apply_innate_effects(mob/living/mob_override) + var/mob/living/M = mob_override || owner.current + update_synd_icons_added(M) + +/datum/antagonist/nukeop/remove_innate_effects(mob/living/mob_override) + var/mob/living/M = mob_override || owner.current + update_synd_icons_removed(M) + +/datum/antagonist/nukeop/proc/equip_op() + if(!ishuman(owner.current)) + return + var/mob/living/carbon/human/H = owner.current + + H.set_species(/datum/species/human) //Plasamen burn up otherwise, and lizards are vulnerable to asimov AIs + + H.equipOutfit(nukeop_outfit) + return TRUE + +/datum/antagonist/nukeop/greet() + owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/ops.ogg',100,0) + to_chat(owner, "You are a [nuke_team ? nuke_team.syndicate_name : "syndicate"] agent!") + owner.announce_objectives() + return + +/datum/antagonist/nukeop/on_gain() + give_alias() + forge_objectives() + . = ..() + equip_op() + memorize_code() + if(send_to_spawnpoint) + move_to_spawnpoint() + +/datum/antagonist/nukeop/get_team() + return nuke_team + +/datum/antagonist/nukeop/proc/assign_nuke() + if(nuke_team && !nuke_team.tracked_nuke) + nuke_team.memorized_code = random_nukecode() + var/obj/machinery/nuclearbomb/syndicate/nuke = locate() in GLOB.nuke_list + if(nuke) + nuke_team.tracked_nuke = nuke + if(nuke.r_code == "ADMIN") + nuke.r_code = nuke_team.memorized_code + else //Already set by admins/something else? + nuke_team.memorized_code = nuke.r_code + else + stack_trace("Syndicate nuke not found during nuke team creation.") + nuke_team.memorized_code = null + +/datum/antagonist/nukeop/proc/give_alias() + if(nuke_team && nuke_team.syndicate_name) + var/number = 1 + number = nuke_team.members.Find(owner) + owner.current.real_name = "[nuke_team.syndicate_name] Operative #[number]" + +/datum/antagonist/nukeop/proc/memorize_code() + if(nuke_team && nuke_team.tracked_nuke && nuke_team.memorized_code) + antag_memory += "[nuke_team.tracked_nuke] Code: [nuke_team.memorized_code]
" + to_chat(owner, "The nuclear authorization code is: [nuke_team.memorized_code]") + else + to_chat(owner, "Unfortunately the syndicate was unable to provide you with nuclear authorization code.") + +/datum/antagonist/nukeop/proc/forge_objectives() + if(nuke_team) + owner.objectives |= nuke_team.objectives + +/datum/antagonist/nukeop/proc/move_to_spawnpoint() + var/team_number = 1 + if(nuke_team) + team_number = nuke_team.members.Find(owner) + owner.current.forceMove(GLOB.nukeop_start[((team_number - 1) % GLOB.nukeop_start.len) + 1]) + +/datum/antagonist/nukeop/leader/move_to_spawnpoint() + owner.current.forceMove(pick(GLOB.nukeop_leader_start)) + +/datum/antagonist/nukeop/create_team(datum/team/nuclear/new_team) + if(!new_team) + if(!always_new_team) + for(var/datum/antagonist/nukeop/N in GLOB.antagonists) + if(!N.owner) + continue + if(N.nuke_team) + nuke_team = N.nuke_team + return + nuke_team = new /datum/team/nuclear + nuke_team.update_objectives() + assign_nuke() //This is bit ugly + return + if(!istype(new_team)) + stack_trace("Wrong team type passed to [type] initialization.") + nuke_team = new_team + +/datum/antagonist/nukeop/admin_add(datum/mind/new_owner,mob/admin) + new_owner.assigned_role = "Syndicate" + new_owner.add_antag_datum(src) + message_admins("[key_name_admin(admin)] has nuke op'ed [new_owner.current].") + log_admin("[key_name(admin)] has nuke op'ed [new_owner.current].") + +/datum/antagonist/nukeop/get_admin_commands() + . = ..() + .["Send to base"] = CALLBACK(src,.proc/admin_send_to_base) + .["Tell code"] = CALLBACK(src,.proc/admin_tell_code) + +/datum/antagonist/nukeop/proc/admin_send_to_base(mob/admin) + owner.current.forceMove(pick(GLOB.nukeop_start)) + +/datum/antagonist/nukeop/proc/admin_tell_code(mob/admin) + var/code + for (var/obj/machinery/nuclearbomb/bombue in GLOB.machines) + if (length(bombue.r_code) <= 5 && bombue.r_code != initial(bombue.r_code)) + code = bombue.r_code + break + if (code) + antag_memory += "Syndicate Nuclear Bomb Code: [code]
" + to_chat(owner.current, "The nuclear authorization code is: [code]") + else + to_chat(admin, "No valid nuke found!") + +/datum/antagonist/nukeop/leader + name = "Nuclear Operative Leader" + nukeop_outfit = /datum/outfit/syndicate/leader + always_new_team = TRUE + var/title + +/datum/antagonist/nukeop/leader/memorize_code() + ..() + if(nuke_team && nuke_team.memorized_code) + var/obj/item/paper/P = new + P.info = "The nuclear authorization code is: [nuke_team.memorized_code]" + P.name = "nuclear bomb code" + var/mob/living/carbon/human/H = owner.current + if(!istype(H)) + P.forceMove(get_turf(H)) + else + H.put_in_hands(P, TRUE) + H.update_icons() + +/datum/antagonist/nukeop/leader/give_alias() + title = pick("Czar", "Boss", "Commander", "Chief", "Kingpin", "Director", "Overlord") + if(nuke_team && nuke_team.syndicate_name) + owner.current.real_name = "[nuke_team.syndicate_name] [title]" + else + owner.current.real_name = "Syndicate [title]" + +/datum/antagonist/nukeop/leader/greet() + owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/ops.ogg',100,0) + to_chat(owner, "You are the Syndicate [title] for this mission. You are responsible for the distribution of telecrystals and your ID is the only one who can open the launch bay doors.") + to_chat(owner, "If you feel you are not up to this task, give your ID to another operative.") + to_chat(owner, "In your hand you will find a special item capable of triggering a greater challenge for your team. Examine it carefully and consult with your fellow operatives before activating it.") + owner.announce_objectives() + addtimer(CALLBACK(src, .proc/nuketeam_name_assign), 1) + + +/datum/antagonist/nukeop/leader/proc/nuketeam_name_assign() + if(!nuke_team) + return + nuke_team.rename_team(ask_name()) + +/datum/team/nuclear/proc/rename_team(new_name) + syndicate_name = new_name + name = "[syndicate_name] Team" + for(var/I in members) + var/datum/mind/synd_mind = I + var/mob/living/carbon/human/H = synd_mind.current + if(!istype(H)) + continue + var/chosen_name = H.dna.species.random_name(H.gender,0,syndicate_name) + H.fully_replace_character_name(H.real_name,chosen_name) + +/datum/antagonist/nukeop/leader/proc/ask_name() + var/randomname = pick(GLOB.last_names) + var/newname = stripped_input(owner.current,"You are the nuke operative [title]. Please choose a last name for your family.", "Name change",randomname) + if (!newname) + newname = randomname + else + newname = reject_bad_name(newname) + if(!newname) + newname = randomname + + return capitalize(newname) + +/datum/antagonist/nukeop/lone + name = "Lone Operative" + always_new_team = TRUE + send_to_spawnpoint = FALSE //Handled by event + nukeop_outfit = /datum/outfit/syndicate/full + +/datum/antagonist/nukeop/lone/assign_nuke() + if(nuke_team && !nuke_team.tracked_nuke) + nuke_team.memorized_code = random_nukecode() + var/obj/machinery/nuclearbomb/selfdestruct/nuke = locate() in GLOB.nuke_list + if(nuke) + nuke_team.tracked_nuke = nuke + if(nuke.r_code == "ADMIN") + nuke.r_code = nuke_team.memorized_code + else //Already set by admins/something else? + nuke_team.memorized_code = nuke.r_code + else + stack_trace("Station self destruct ot found during lone op team creation.") + nuke_team.memorized_code = null + +/datum/antagonist/nukeop/reinforcement + send_to_spawnpoint = FALSE + nukeop_outfit = /datum/outfit/syndicate/no_crystals + +/datum/team/nuclear + var/syndicate_name + var/obj/machinery/nuclearbomb/tracked_nuke + var/core_objective = /datum/objective/nuclear + var/memorized_code + +/datum/team/nuclear/New() + ..() + syndicate_name = syndicate_name() + +/datum/team/nuclear/proc/update_objectives() + if(core_objective) + var/datum/objective/O = new core_objective + O.team = src + objectives += O + +/datum/team/nuclear/proc/disk_rescued() + for(var/obj/item/disk/nuclear/D in GLOB.poi_list) + if(!D.onCentCom()) + return FALSE + return TRUE + +/datum/team/nuclear/proc/operatives_dead() + for(var/I in members) + var/datum/mind/operative_mind = I + if(ishuman(operative_mind.current) && (operative_mind.current.stat != DEAD)) + return FALSE + return TRUE + +/datum/team/nuclear/proc/syndies_escaped() + var/obj/docking_port/mobile/S = SSshuttle.getShuttle("syndicate") + return S && (is_centcom_level(S.z) || is_transit_level(S.z)) + +/datum/team/nuclear/proc/get_result() + var/evacuation = SSshuttle.emergency.mode == SHUTTLE_ENDGAME + var/disk_rescued = disk_rescued() + var/syndies_didnt_escape = !syndies_escaped() + var/station_was_nuked = SSticker.mode.station_was_nuked + var/nuke_off_station = SSticker.mode.nuke_off_station + + if(nuke_off_station == NUKE_SYNDICATE_BASE) + return NUKE_RESULT_FLUKE + else if(!disk_rescued && station_was_nuked && !syndies_didnt_escape) + return NUKE_RESULT_NUKE_WIN + else if (!disk_rescued && station_was_nuked && syndies_didnt_escape) + return NUKE_RESULT_NOSURVIVORS + else if (!disk_rescued && !station_was_nuked && nuke_off_station && !syndies_didnt_escape) + return NUKE_RESULT_WRONG_STATION + else if (!disk_rescued && !station_was_nuked && nuke_off_station && syndies_didnt_escape) + return NUKE_RESULT_WRONG_STATION_DEAD + else if ((disk_rescued || evacuation) && operatives_dead()) + return NUKE_RESULT_CREW_WIN_SYNDIES_DEAD + else if (disk_rescued) + return NUKE_RESULT_CREW_WIN + else if (!disk_rescued && operatives_dead()) + return NUKE_RESULT_DISK_LOST + else if (!disk_rescued && evacuation) + return NUKE_RESULT_DISK_STOLEN + else + return //Undefined result + +/datum/team/nuclear/roundend_report() + var/list/parts = list() + parts += "[syndicate_name] Operatives:" + + switch(get_result()) + if(NUKE_RESULT_FLUKE) + parts += "Humiliating Syndicate Defeat" + parts += "The crew of [station_name()] gave [syndicate_name] operatives back their bomb! The syndicate base was destroyed! Next time, don't lose the nuke!" + if(NUKE_RESULT_NUKE_WIN) + parts += "Syndicate Major Victory!" + parts += "[syndicate_name] operatives have destroyed [station_name()]!" + if(NUKE_RESULT_NOSURVIVORS) + parts += "Total Annihilation" + parts += "[syndicate_name] operatives destroyed [station_name()] but did not leave the area in time and got caught in the explosion. Next time, don't lose the disk!" + if(NUKE_RESULT_WRONG_STATION) + parts += "Crew Minor Victory" + parts += "[syndicate_name] operatives secured the authentication disk but blew up something that wasn't [station_name()]. Next time, don't do that!" + if(NUKE_RESULT_WRONG_STATION_DEAD) + parts += "[syndicate_name] operatives have earned Darwin Award!" + parts += "[syndicate_name] operatives blew up something that wasn't [station_name()] and got caught in the explosion. Next time, don't do that!" + if(NUKE_RESULT_CREW_WIN_SYNDIES_DEAD) + parts += "Crew Major Victory!" + parts += "The Research Staff has saved the disk and killed the [syndicate_name] Operatives" + if(NUKE_RESULT_CREW_WIN) + parts += "Crew Major Victory" + parts += "The Research Staff has saved the disk and stopped the [syndicate_name] Operatives!" + if(NUKE_RESULT_DISK_LOST) + parts += "Neutral Victory!" + parts += "The Research Staff failed to secure the authentication disk but did manage to kill most of the [syndicate_name] Operatives!" + if(NUKE_RESULT_DISK_STOLEN) + parts += "Syndicate Minor Victory!" + parts += "[syndicate_name] operatives survived the assault but did not achieve the destruction of [station_name()]. Next time, don't lose the disk!" + else + parts += "Neutral Victory" + parts += "Mission aborted!" + + var/text = "
The syndicate operatives were:" + var/purchases = "" + var/TC_uses = 0 + for(var/I in members) + var/datum/mind/syndicate = I + var/datum/uplink_purchase_log/H = GLOB.uplink_purchase_logs_by_key[syndicate.key] + if(H) + TC_uses += H.total_spent + purchases += H.generate_render(show_key = FALSE) + text += printplayerlist(members) + text += "
" + text += "(Syndicates used [TC_uses] TC) [purchases]" + if(TC_uses == 0 && SSticker.mode.station_was_nuked && !operatives_dead()) + text += "[icon2html('icons/badass.dmi', world, "badass")]" + + parts += text + + return "
[parts.Join("
")]
" + +/datum/team/nuclear/antag_listing_name() + if(syndicate_name) + return "[syndicate_name] Syndicates" + else + return "Syndicates" + +/datum/team/nuclear/antag_listing_entry() + var/disk_report = "Nuclear Disk(s)
" + disk_report += "" + for(var/obj/item/disk/nuclear/N in GLOB.poi_list) + disk_report += "" + disk_report += "
[N.name], " + var/atom/disk_loc = N.loc + while(!isturf(disk_loc)) + if(ismob(disk_loc)) + var/mob/M = disk_loc + disk_report += "carried by [M.real_name] " + if(isobj(disk_loc)) + var/obj/O = disk_loc + disk_report += "in \a [O.name] " + disk_loc = disk_loc.loc + disk_report += "in [disk_loc.loc] at ([disk_loc.x], [disk_loc.y], [disk_loc.z])FLW
" + var/common_part = ..() + return common_part + disk_report + +/datum/team/nuclear/is_gamemode_hero() + return SSticker.mode.name == "nuclear emergency" \ No newline at end of file diff --git a/code/modules/antagonists/pirate/pirate.dm b/code/modules/antagonists/pirate/pirate.dm new file mode 100644 index 0000000000..cdd871ff35 --- /dev/null +++ b/code/modules/antagonists/pirate/pirate.dm @@ -0,0 +1,132 @@ +/datum/antagonist/pirate + name = "Space Pirate" + job_rank = ROLE_TRAITOR + roundend_category = "space pirates" + antagpanel_category = "Pirate" + var/datum/team/pirate/crew + +/datum/antagonist/pirate/greet() + to_chat(owner, "You are a Space Pirate!") + to_chat(owner, "The station refused to pay for your protection, protect the ship, siphon the credits from the station and raid it for even more loot.") + owner.announce_objectives() + +/datum/antagonist/pirate/get_team() + return crew + +/datum/antagonist/pirate/create_team(datum/team/pirate/new_team) + if(!new_team) + for(var/datum/antagonist/pirate/P in GLOB.antagonists) + if(!P.owner) + continue + if(P.crew) + crew = P.crew + return + if(!new_team) + crew = new /datum/team/pirate + crew.forge_objectives() + return + if(!istype(new_team)) + stack_trace("Wrong team type passed to [type] initialization.") + crew = new_team + +/datum/antagonist/pirate/on_gain() + if(crew) + owner.objectives |= crew.objectives + . = ..() + +/datum/antagonist/pirate/on_removal() + if(crew) + owner.objectives -= crew.objectives + . = ..() + +/datum/team/pirate + name = "Pirate crew" + +/datum/team/pirate/proc/forge_objectives() + var/datum/objective/loot/getbooty = new() + getbooty.team = src + getbooty.storage_area = locate(/area/shuttle/pirate/vault) in GLOB.sortedAreas + getbooty.update_initial_value() + getbooty.update_explanation_text() + objectives += getbooty + for(var/datum/mind/M in members) + M.objectives |= objectives + + +GLOBAL_LIST_INIT(pirate_loot_cache, typecacheof(list( + /obj/structure/reagent_dispensers/beerkeg, + /mob/living/simple_animal/parrot, + /obj/item/stack/sheet/mineral/gold, + /obj/item/stack/sheet/mineral/diamond, + /obj/item/stack/spacecash, + /obj/item/melee/sabre,))) + +/datum/objective/loot + var/area/storage_area //Place where we we will look for the loot. + explanation_text = "Acquire valuable loot and store it in designated area." + var/target_value = 50000 + var/initial_value = 0 //Things in the vault at spawn time do not count + +/datum/objective/loot/update_explanation_text() + if(storage_area) + explanation_text = "Acquire loot and store [target_value] of credits worth in [storage_area.name]." + +/datum/objective/loot/proc/loot_listing() + //Lists notable loot. + if(!storage_area) + return "Nothing" + var/list/loot_table = list() + for(var/atom/movable/AM in storage_area.GetAllContents()) + if(is_type_in_typecache(AM,GLOB.pirate_loot_cache)) + var/lootname = AM.name + var/count = 1 + if(istype(AM,/obj/item/stack)) //Ugh. + var/obj/item/stack/S = AM + lootname = S.singular_name + count = S.amount + if(!loot_table[lootname]) + loot_table[lootname] = count + else + loot_table[lootname] += count + var/list/loot_texts = list() + for(var/key in loot_table) + var/amount = loot_table[key] + loot_texts += "[amount] [key][amount > 1 ? "s":""]" + return loot_texts.Join(", ") + +/datum/objective/loot/proc/get_loot_value() + if(!storage_area) + return 0 + var/value = 0 + for(var/turf/T in storage_area.contents) + value += export_item_and_contents(T,TRUE, TRUE, dry_run = TRUE) + return value - initial_value + +/datum/objective/loot/proc/update_initial_value() + initial_value = get_loot_value() + +/datum/objective/loot/check_completion() + return ..() || get_loot_value() >= target_value + +/datum/team/pirate/roundend_report() + var/list/parts = list() + + parts += "Space Pirates were:" + + var/all_dead = TRUE + for(var/datum/mind/M in members) + if(considered_alive(M)) + all_dead = FALSE + parts += printplayerlist(members) + + parts += "Loot stolen: " + var/datum/objective/loot/L = locate() in objectives + parts += L.loot_listing() + parts += "Total loot value : [L.get_loot_value()]/[L.target_value] credits" + + if(L.check_completion() && !all_dead) + parts += "The pirate crew was successful!" + else + parts += "The pirate crew has failed." + + return "
[parts.Join("
")]
" \ No newline at end of file diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm similarity index 98% rename from code/game/gamemodes/miniantags/revenant/revenant.dm rename to code/modules/antagonists/revenant/revenant.dm index 94775887f9..5be923ddcc 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant.dm +++ b/code/modules/antagonists/revenant/revenant.dm @@ -84,8 +84,8 @@ objective2.owner = mind mind.objectives += objective2 to_chat(src, "Objective #2: [objective2.explanation_text]") - mind.assigned_role = "revenant" - mind.special_role = "Revenant" + mind.assigned_role = ROLE_REVENANT + mind.special_role = ROLE_REVENANT mind.add_antag_datum(/datum/antagonist/auto_custom) AddSpell(new /obj/effect/proc_holder/spell/targeted/night_vision/revenant(null)) AddSpell(new /obj/effect/proc_holder/spell/targeted/revenant_transmit(null)) @@ -382,8 +382,8 @@ key_of_revenant = client_to_revive.key if(!key_of_revenant) message_admins("The new revenant's old client either could not be found or is in a new, living mob - grabbing a random candidate instead...") - var/list/candidates = pollCandidatesForMob("Do you want to be [revenant.name] (reforming)?", "revenant", null, ROLE_REVENANT, 50, revenant) - if(!candidates.len) + var/list/candidates = pollCandidatesForMob("Do you want to be [revenant.name] (reforming)?", ROLE_REVENANT, null, ROLE_REVENANT, 50, revenant) + if(!LAZYLEN(candidates)) qdel(revenant) message_admins("No candidates were found for the new revenant. Oh well!") inert = TRUE diff --git a/code/game/gamemodes/miniantags/revenant/revenant_abilities.dm b/code/modules/antagonists/revenant/revenant_abilities.dm similarity index 100% rename from code/game/gamemodes/miniantags/revenant/revenant_abilities.dm rename to code/modules/antagonists/revenant/revenant_abilities.dm diff --git a/code/game/gamemodes/miniantags/revenant/revenant_blight.dm b/code/modules/antagonists/revenant/revenant_blight.dm similarity index 100% rename from code/game/gamemodes/miniantags/revenant/revenant_blight.dm rename to code/modules/antagonists/revenant/revenant_blight.dm diff --git a/code/game/gamemodes/miniantags/revenant/revenant_spawn_event.dm b/code/modules/antagonists/revenant/revenant_spawn_event.dm similarity index 96% rename from code/game/gamemodes/miniantags/revenant/revenant_spawn_event.dm rename to code/modules/antagonists/revenant/revenant_spawn_event.dm index 1b1bdcbfc1..876bd30bb9 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant_spawn_event.dm +++ b/code/modules/antagonists/revenant/revenant_spawn_event.dm @@ -26,7 +26,7 @@ message_admins("Event attempted to spawn a revenant, but there were only [deadMobs]/[REVENANT_SPAWN_THRESHOLD] dead mobs.") return WAITING_FOR_SOMETHING - var/list/candidates = get_candidates("revenant", null, ROLE_REVENANT) + var/list/candidates = get_candidates(ROLE_REVENANT, null, ROLE_REVENANT) if(!candidates.len) return NOT_ENOUGH_PLAYERS diff --git a/code/modules/antagonists/revolution/revolution.dm b/code/modules/antagonists/revolution/revolution.dm new file mode 100644 index 0000000000..5c89fe24cf --- /dev/null +++ b/code/modules/antagonists/revolution/revolution.dm @@ -0,0 +1,368 @@ +//How often to check for promotion possibility +#define HEAD_UPDATE_PERIOD 300 + +/datum/antagonist/rev + name = "Revolutionary" + roundend_category = "revolutionaries" // if by some miracle revolutionaries without revolution happen + antagpanel_category = "Revolution" + job_rank = ROLE_REV + var/hud_type = "rev" + var/datum/team/revolution/rev_team + +/datum/antagonist/rev/can_be_owned(datum/mind/new_owner) + . = ..() + if(.) + if(new_owner.assigned_role in GLOB.command_positions) + return FALSE + if(new_owner.unconvertable) + return FALSE + if(new_owner.current && new_owner.current.isloyal()) + return FALSE + +/datum/antagonist/rev/apply_innate_effects(mob/living/mob_override) + var/mob/living/M = mob_override || owner.current + update_rev_icons_added(M) + +/datum/antagonist/rev/remove_innate_effects(mob/living/mob_override) + var/mob/living/M = mob_override || owner.current + update_rev_icons_removed(M) + +/datum/antagonist/rev/proc/equip_rev() + return + +/datum/antagonist/rev/on_gain() + . = ..() + create_objectives() + equip_rev() + owner.current.log_message("Has been converted to the revolution!", INDIVIDUAL_ATTACK_LOG) + +/datum/antagonist/rev/on_removal() + remove_objectives() + . = ..() + +/datum/antagonist/rev/greet() + to_chat(owner, "You are now a revolutionary! Help your cause. Do not harm your fellow freedom fighters. You can identify your comrades by the red \"R\" icons, and your leaders by the blue \"R\" icons. Help them kill the heads to win the revolution!") + owner.announce_objectives() + +/datum/antagonist/rev/create_team(datum/team/revolution/new_team) + if(!new_team) + //For now only one revolution at a time + for(var/datum/antagonist/rev/head/H in GLOB.antagonists) + if(!H.owner) + continue + if(H.rev_team) + rev_team = H.rev_team + return + rev_team = new /datum/team/revolution + rev_team.update_objectives() + rev_team.update_heads() + return + if(!istype(new_team)) + stack_trace("Wrong team type passed to [type] initialization.") + rev_team = new_team + +/datum/antagonist/rev/get_team() + return rev_team + +/datum/antagonist/rev/proc/create_objectives() + owner.objectives |= rev_team.objectives + +/datum/antagonist/rev/proc/remove_objectives() + owner.objectives -= rev_team.objectives + +//Bump up to head_rev +/datum/antagonist/rev/proc/promote() + var/old_team = rev_team + var/datum/mind/old_owner = owner + silent = TRUE + owner.remove_antag_datum(/datum/antagonist/rev) + var/datum/antagonist/rev/head/new_revhead = new() + new_revhead.silent = TRUE + old_owner.add_antag_datum(new_revhead,old_team) + new_revhead.silent = FALSE + to_chat(old_owner, "You have proved your devotion to revolution! You are a head revolutionary now!") + +/datum/antagonist/rev/get_admin_commands() + . = ..() + .["Promote"] = CALLBACK(src,.proc/admin_promote) + +/datum/antagonist/rev/proc/admin_promote(mob/admin) + var/datum/mind/O = owner + promote() + message_admins("[key_name_admin(admin)] has head-rev'ed [O].") + log_admin("[key_name(admin)] has head-rev'ed [O].") + +/datum/antagonist/rev/head/admin_add(datum/mind/new_owner,mob/admin) + give_flash = TRUE + give_hud = TRUE + remove_clumsy = TRUE + new_owner.add_antag_datum(src) + message_admins("[key_name_admin(admin)] has head-rev'ed [new_owner.current].") + log_admin("[key_name(admin)] has head-rev'ed [new_owner.current].") + to_chat(new_owner.current, "You are a member of the revolutionaries' leadership now!") + +/datum/antagonist/rev/head/get_admin_commands() + . = ..() + . -= "Promote" + .["Take flash"] = CALLBACK(src,.proc/admin_take_flash) + .["Give flash"] = CALLBACK(src,.proc/admin_give_flash) + .["Repair flash"] = CALLBACK(src,.proc/admin_repair_flash) + .["Demote"] = CALLBACK(src,.proc/admin_demote) + +/datum/antagonist/rev/head/proc/admin_take_flash(mob/admin) + var/list/L = owner.current.get_contents() + var/obj/item/device/assembly/flash/flash = locate() in L + if (!flash) + to_chat(admin, "Deleting flash failed!") + return + qdel(flash) + +/datum/antagonist/rev/head/proc/admin_give_flash(mob/admin) + //This is probably overkill but making these impact state annoys me + var/old_give_flash = give_flash + var/old_give_hud = give_hud + var/old_remove_clumsy = remove_clumsy + give_flash = TRUE + give_hud = FALSE + remove_clumsy = FALSE + equip_rev() + give_flash = old_give_flash + give_hud = old_give_hud + remove_clumsy = old_remove_clumsy + +/datum/antagonist/rev/head/proc/admin_repair_flash(mob/admin) + var/list/L = owner.current.get_contents() + var/obj/item/device/assembly/flash/flash = locate() in L + if (!flash) + to_chat(admin, "Repairing flash failed!") + else + flash.crit_fail = 0 + flash.update_icon() + +/datum/antagonist/rev/head/proc/admin_demote(datum/mind/target,mob/user) + message_admins("[key_name_admin(user)] has demoted [owner.current] from head revolutionary.") + log_admin("[key_name(user)] has demoted [owner.current] from head revolutionary.") + demote() + +/datum/antagonist/rev/head + name = "Head Revolutionary" + hud_type = "rev_head" + var/remove_clumsy = FALSE + var/give_flash = FALSE + var/give_hud = TRUE + +/datum/antagonist/rev/head/antag_listing_name() + return ..() + "(Leader)" + +/datum/antagonist/rev/proc/update_rev_icons_added(mob/living/M) + var/datum/atom_hud/antag/revhud = GLOB.huds[ANTAG_HUD_REV] + revhud.join_hud(M) + set_antag_hud(M,hud_type) + +/datum/antagonist/rev/proc/update_rev_icons_removed(mob/living/M) + var/datum/atom_hud/antag/revhud = GLOB.huds[ANTAG_HUD_REV] + revhud.leave_hud(M) + set_antag_hud(M, null) + +/datum/antagonist/rev/proc/can_be_converted(mob/living/candidate) + if(!candidate.mind) + return FALSE + if(!can_be_owned(candidate.mind)) + return FALSE + var/mob/living/carbon/C = candidate //Check to see if the potential rev is implanted + if(!istype(C)) //Can't convert simple animals + return FALSE + return TRUE + +/datum/antagonist/rev/proc/add_revolutionary(datum/mind/rev_mind,stun = TRUE) + if(!can_be_converted(rev_mind.current)) + return FALSE + if(stun) + if(iscarbon(rev_mind.current)) + var/mob/living/carbon/carbon_mob = rev_mind.current + carbon_mob.silent = max(carbon_mob.silent, 5) + carbon_mob.flash_act(1, 1) + rev_mind.current.Stun(100) + rev_mind.add_antag_datum(/datum/antagonist/rev,rev_team) + rev_mind.special_role = "Revolutionary" + return TRUE + +/datum/antagonist/rev/head/proc/demote() + var/datum/mind/old_owner = owner + var/old_team = rev_team + silent = TRUE + owner.remove_antag_datum(/datum/antagonist/rev/head) + var/datum/antagonist/rev/new_rev = new /datum/antagonist/rev() + new_rev.silent = TRUE + old_owner.add_antag_datum(new_rev,old_team) + new_rev.silent = FALSE + to_chat(old_owner, "Revolution has been disappointed of your leader traits! You are a regular revolutionary now!") + +/datum/antagonist/rev/farewell() + if(ishuman(owner.current)) + owner.current.visible_message("[owner.current] looks like they just remembered their real allegiance!", null, null, null, owner.current) + to_chat(owner, "You are no longer a brainwashed revolutionary! Your memory is hazy from the time you were a rebel...the only thing you remember is the name of the one who brainwashed you...") + else if(issilicon(owner.current)) + owner.current.visible_message("The frame beeps contentedly, purging the hostile memory engram from the MMI before initalizing it.", null, null, null, owner.current) + to_chat(owner, "The frame's firmware detects and deletes your neural reprogramming! You remember nothing but the name of the one who flashed you.") + +/datum/antagonist/rev/proc/remove_revolutionary(borged, deconverter) + log_attack("[owner.current] (Key: [key_name(owner.current)]) has been deconverted from the revolution by [deconverter] (Key: [key_name(deconverter)])!") + if(borged) + message_admins("[ADMIN_LOOKUPFLW(owner.current)] has been borged while being a [name]") + owner.special_role = null + if(iscarbon(owner.current)) + var/mob/living/carbon/C = owner.current + C.Unconscious(100) + owner.remove_antag_datum(type) + +/datum/antagonist/rev/head/remove_revolutionary(borged,deconverter) + if(!borged) + return + . = ..() + +/datum/antagonist/rev/head/equip_rev() + var/mob/living/carbon/human/H = owner.current + if(!istype(H)) + return + + if(remove_clumsy && owner.assigned_role == "Clown") + to_chat(owner, "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself.") + H.dna.remove_mutation(CLOWNMUT) + + if(give_flash) + var/obj/item/device/assembly/flash/T = new(H) + var/list/slots = list ( + "backpack" = slot_in_backpack, + "left pocket" = slot_l_store, + "right pocket" = slot_r_store + ) + var/where = H.equip_in_one_of_slots(T, slots) + if (!where) + to_chat(H, "The Syndicate were unfortunately unable to get you a flash.") + else + to_chat(H, "The flash in your [where] will help you to persuade the crew to join your cause.") + + if(give_hud) + var/obj/item/organ/cyberimp/eyes/hud/security/syndicate/S = new(H) + S.Insert(H, special = FALSE, drop_if_replaced = FALSE) + to_chat(H, "Your eyes have been implanted with a cybernetic security HUD which will help you keep track of who is mindshield-implanted, and therefore unable to be recruited.") + +/datum/team/revolution + name = "Revolution" + var/max_headrevs = 3 + +/datum/team/revolution/proc/update_objectives(initial = FALSE) + var/untracked_heads = SSjob.get_all_heads() + for(var/datum/objective/mutiny/O in objectives) + untracked_heads -= O.target + for(var/datum/mind/M in untracked_heads) + var/datum/objective/mutiny/new_target = new() + new_target.team = src + new_target.target = M + new_target.update_explanation_text() + objectives += new_target + for(var/datum/mind/M in members) + M.objectives |= objectives + + addtimer(CALLBACK(src,.proc/update_objectives),HEAD_UPDATE_PERIOD,TIMER_UNIQUE) + +/datum/team/revolution/proc/head_revolutionaries() + . = list() + for(var/datum/mind/M in members) + if(M.has_antag_datum(/datum/antagonist/rev/head)) + . += M + +/datum/team/revolution/proc/update_heads() + if(SSticker.HasRoundStarted()) + var/list/datum/mind/head_revolutionaries = head_revolutionaries() + var/list/datum/mind/heads = SSjob.get_all_heads() + var/list/sec = SSjob.get_all_sec() + + if(head_revolutionaries.len < max_headrevs && head_revolutionaries.len < round(heads.len - ((8 - sec.len) / 3))) + var/list/datum/mind/non_heads = members - head_revolutionaries + var/list/datum/mind/promotable = list() + for(var/datum/mind/khrushchev in non_heads) + if(khrushchev.current && !khrushchev.current.incapacitated() && !khrushchev.current.restrained() && khrushchev.current.client && khrushchev.current.stat != DEAD) + if(ROLE_REV in khrushchev.current.client.prefs.be_special) + promotable += khrushchev + if(promotable.len) + var/datum/mind/new_leader = pick(promotable) + var/datum/antagonist/rev/rev = new_leader.has_antag_datum(/datum/antagonist/rev) + rev.promote() + + addtimer(CALLBACK(src,.proc/update_heads),HEAD_UPDATE_PERIOD,TIMER_UNIQUE) + + +/datum/team/revolution/roundend_report() + if(!members.len) + return + + var/list/result = list() + + result += "
" + + var/num_revs = 0 + var/num_survivors = 0 + for(var/mob/living/carbon/survivor in GLOB.alive_mob_list) + if(survivor.ckey) + num_survivors++ + if(survivor.mind) + if(is_revolutionary(survivor)) + num_revs++ + if(num_survivors) + result += "Command's Approval Rating: [100 - round((num_revs/num_survivors)*100, 0.1)]%
" + + + var/list/targets = list() + var/list/datum/mind/headrevs = get_antag_minds(/datum/antagonist/rev/head) + var/list/datum/mind/revs = get_antag_minds(/datum/antagonist/rev,TRUE) + if(headrevs.len) + var/list/headrev_part = list() + headrev_part += "The head revolutionaries were:" + headrev_part += printplayerlist(headrevs,TRUE) + result += headrev_part.Join("
") + + if(revs.len) + var/list/rev_part = list() + rev_part += "The revolutionaries were:" + rev_part += printplayerlist(revs,TRUE) + result += rev_part.Join("
") + + var/list/heads = SSjob.get_all_heads() + if(heads.len) + var/head_text = "The heads of staff were:" + head_text += "
    " + for(var/datum/mind/head in heads) + var/target = (head in targets) + head_text += "
  • " + if(target) + head_text += "Target" + head_text += "[printplayer(head, 1)]
  • " + head_text += "

" + result += head_text + + result += "
" + + return result.Join() + +/datum/team/revolution/antag_listing_entry() + var/common_part = ..() + var/heads_report = "Heads of Staff
" + heads_report += "" + for(var/datum/mind/N in SSjob.get_living_heads()) + var/mob/M = N.current + if(M) + heads_report += "" + heads_report += "" + heads_report += "" + var/turf/mob_loc = get_turf(M) + heads_report += "" + else + heads_report += "" + heads_report += "" + heads_report += "
[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]PMFLW[mob_loc.loc]
[N.name]([N.key])Head body destroyed!PM
" + return common_part + heads_report + +/datum/team/revolution/is_gamemode_hero() + return SSticker.mode.name == "revolution" \ No newline at end of file diff --git a/code/game/gamemodes/miniantags/slaughter/slaughter.dm b/code/modules/antagonists/slaughter/slaughter.dm similarity index 100% rename from code/game/gamemodes/miniantags/slaughter/slaughter.dm rename to code/modules/antagonists/slaughter/slaughter.dm diff --git a/code/game/gamemodes/miniantags/slaughter/slaughterevent.dm b/code/modules/antagonists/slaughter/slaughterevent.dm similarity index 95% rename from code/game/gamemodes/miniantags/slaughter/slaughterevent.dm rename to code/modules/antagonists/slaughter/slaughterevent.dm index 4ac480b345..1af01e05ea 100644 --- a/code/game/gamemodes/miniantags/slaughter/slaughterevent.dm +++ b/code/modules/antagonists/slaughter/slaughterevent.dm @@ -13,7 +13,7 @@ role_name = "slaughter demon" /datum/round_event/ghost_role/slaughter/spawn_role() - var/list/candidates = get_candidates("alien", null, ROLE_ALIEN) + var/list/candidates = get_candidates(ROLE_ALIEN, null, ROLE_ALIEN) if(!candidates.len) return NOT_ENOUGH_PLAYERS diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm b/code/modules/antagonists/swarmer/swarmer.dm similarity index 100% rename from code/game/gamemodes/miniantags/bot_swarm/swarmer.dm rename to code/modules/antagonists/swarmer/swarmer.dm diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer_event.dm b/code/modules/antagonists/swarmer/swarmer_event.dm similarity index 100% rename from code/game/gamemodes/miniantags/bot_swarm/swarmer_event.dm rename to code/modules/antagonists/swarmer/swarmer_event.dm diff --git a/code/modules/antagonists/traitor/IAA/internal_affairs.dm b/code/modules/antagonists/traitor/IAA/internal_affairs.dm new file mode 100644 index 0000000000..9077b84dcd --- /dev/null +++ b/code/modules/antagonists/traitor/IAA/internal_affairs.dm @@ -0,0 +1,302 @@ +#define PINPOINTER_MINIMUM_RANGE 15 +#define PINPOINTER_EXTRA_RANDOM_RANGE 10 +#define PINPOINTER_PING_TIME 40 +#define PROB_ACTUAL_TRAITOR 20 +#define TRAITOR_AGENT_ROLE "Syndicate External Affairs Agent" + +/datum/antagonist/traitor/internal_affairs + name = "Internal Affairs Agent" + human_datum = /datum/antagonist/traitor/human/internal_affairs + ai_datum = /datum/antagonist/traitor/AI/internal_affairs + antagpanel_category = "IAA" + +/datum/antagonist/traitor/AI/internal_affairs + name = "Internal Affairs Agent" + employer = "Nanotrasen" + special_role = "internal affairs agent" + antagpanel_category = "IAA" + var/syndicate = FALSE + var/last_man_standing = FALSE + var/list/datum/mind/targets_stolen + + +/datum/antagonist/traitor/human/internal_affairs + name = "Internal Affairs Agent" + employer = "Nanotrasen" + special_role = "internal affairs agent" + antagpanel_category = "IAA" + var/syndicate = FALSE + var/last_man_standing = FALSE + var/list/datum/mind/targets_stolen + + +/datum/antagonist/traitor/human/internal_affairs/proc/give_pinpointer() + if(owner && owner.current) + owner.current.apply_status_effect(/datum/status_effect/agent_pinpointer) + +/datum/antagonist/traitor/human/internal_affairs/apply_innate_effects() + .=..() //in case the base is used in future + if(owner && owner.current) + give_pinpointer(owner.current) + +/datum/antagonist/traitor/human/internal_affairs/remove_innate_effects() + .=..() + if(owner && owner.current) + owner.current.remove_status_effect(/datum/status_effect/agent_pinpointer) + +/datum/antagonist/traitor/human/internal_affairs/on_gain() + START_PROCESSING(SSprocessing, src) + .=..() +/datum/antagonist/traitor/human/internal_affairs/on_removal() + STOP_PROCESSING(SSprocessing,src) + .=..() +/datum/antagonist/traitor/human/internal_affairs/process() + iaa_process() + +/datum/antagonist/traitor/AI/internal_affairs/on_gain() + START_PROCESSING(SSprocessing, src) + .=..() +/datum/antagonist/traitor/AI/internal_affairs/on_removal() + STOP_PROCESSING(SSprocessing,src) + .=..() +/datum/antagonist/traitor/AI/internal_affairs/process() + iaa_process() + +/datum/status_effect/agent_pinpointer + id = "agent_pinpointer" + duration = -1 + tick_interval = PINPOINTER_PING_TIME + alert_type = /obj/screen/alert/status_effect/agent_pinpointer + var/minimum_range = PINPOINTER_MINIMUM_RANGE + var/mob/scan_target = null + +/obj/screen/alert/status_effect/agent_pinpointer + name = "Internal Affairs Integrated Pinpointer" + desc = "Even stealthier than a normal implant." + icon = 'icons/obj/device.dmi' + icon_state = "pinon" + +/datum/status_effect/agent_pinpointer/proc/point_to_target() //If we found what we're looking for, show the distance and direction + if(!scan_target) + linked_alert.icon_state = "pinonnull" + return + var/turf/here = get_turf(owner) + var/turf/there = get_turf(scan_target) + if(here.z != there.z) + linked_alert.icon_state = "pinonnull" + return + if(get_dist_euclidian(here,there)<=minimum_range + rand(0, PINPOINTER_EXTRA_RANDOM_RANGE)) + linked_alert.icon_state = "pinondirect" + else + linked_alert.setDir(get_dir(here, there)) + switch(get_dist(here, there)) + if(1 to 8) + linked_alert.icon_state = "pinonclose" + if(9 to 16) + linked_alert.icon_state = "pinonmedium" + if(16 to INFINITY) + linked_alert.icon_state = "pinonfar" + +/datum/status_effect/agent_pinpointer/proc/scan_for_target() + scan_target = null + if(owner) + if(owner.mind) + if(owner.mind.objectives) + for(var/datum/objective/objective_ in owner.mind.objectives) + if(!is_internal_objective(objective_)) + continue + var/datum/objective/assassinate/internal/objective = objective_ + var/mob/current = objective.target.current + if(current&¤t.stat!=DEAD) + scan_target = current + break + +/datum/status_effect/agent_pinpointer/tick() + if(!owner) + qdel(src) + return + scan_for_target() + point_to_target() + + +/proc/is_internal_objective(datum/objective/O) + return (istype(O, /datum/objective/assassinate/internal)||istype(O, /datum/objective/destroy/internal)) + +/datum/antagonist/traitor/proc/replace_escape_objective() + if(!owner||!owner.objectives) + return + for (var/objective_ in owner.objectives) + if(!(istype(objective_, /datum/objective/escape)||istype(objective_, /datum/objective/survive))) + continue + remove_objective(objective_) + + var/datum/objective/martyr/martyr_objective = new + martyr_objective.owner = owner + add_objective(martyr_objective) + +/datum/antagonist/traitor/proc/reinstate_escape_objective() + if(!owner||!owner.objectives) + return + for (var/objective_ in owner.objectives) + if(!istype(objective_, /datum/objective/martyr)) + continue + remove_objective(objective_) + +/datum/antagonist/traitor/human/internal_affairs/reinstate_escape_objective() + ..() + var/datum/objective/escape/escape_objective = new + escape_objective.owner = owner + add_objective(escape_objective) + +/datum/antagonist/traitor/AI/internal_affairs/reinstate_escape_objective() + ..() + var/datum/objective/survive/survive_objective = new + survive_objective.owner = owner + add_objective(survive_objective) + +/datum/antagonist/traitor/proc/steal_targets(datum/mind/victim) + var/datum/antagonist/traitor/human/internal_affairs/this = src //Should only use this if IAA + + if(!owner.current||owner.current.stat==DEAD) + return + to_chat(owner.current, " Target eliminated: [victim.name]") + for(var/objective_ in victim.objectives) + if(istype(objective_, /datum/objective/assassinate/internal)) + var/datum/objective/assassinate/internal/objective = objective_ + if(objective.target==owner) + continue + else if(this.targets_stolen.Find(objective.target) == 0) + var/datum/objective/assassinate/internal/new_objective = new + new_objective.owner = owner + new_objective.target = objective.target + new_objective.update_explanation_text() + add_objective(new_objective) + this.targets_stolen += objective.target + var/status_text = objective.check_completion() ? "neutralised" : "active" + to_chat(owner.current, " New target added to database: [objective.target.name] ([status_text]) ") + else if(istype(objective_, /datum/objective/destroy/internal)) + var/datum/objective/destroy/internal/objective = objective_ + var/datum/objective/destroy/internal/new_objective = new + if(objective.target==owner) + continue + else if(this.targets_stolen.Find(objective.target) == 0) + new_objective.owner = owner + new_objective.target = objective.target + new_objective.update_explanation_text() + add_objective(new_objective) + this.targets_stolen += objective.target + var/status_text = objective.check_completion() ? "neutralised" : "active" + to_chat(owner.current, " New target added to database: [objective.target.name] ([status_text]) ") + this.last_man_standing = TRUE + for(var/objective_ in owner.objectives) + if(!is_internal_objective(objective_)) + continue + var/datum/objective/assassinate/internal/objective = objective_ + if(!objective.check_completion()) + this.last_man_standing = FALSE + return + if(this.last_man_standing) + if(this.syndicate) + to_chat(owner.current," All the loyalist agents are dead, and no more is required of you. Die a glorious death, agent. ") + else + to_chat(owner.current," All the other agents are dead, and you're the last loose end. Stage a Syndicate terrorist attack to cover up for today's events. You no longer have any limits on collateral damage.") + replace_escape_objective(owner) + +/datum/antagonist/traitor/proc/iaa_process() + var/datum/antagonist/traitor/human/internal_affairs/this = src //Should only use this if IAA + if(owner&&owner.current&&owner.current.stat!=DEAD) + for(var/objective_ in owner.objectives) + if(!is_internal_objective(objective_)) + continue + var/datum/objective/assassinate/internal/objective = objective_ + if(!objective.target) + continue + if(objective.check_completion()) + if(objective.stolen) + continue + else + steal_targets(objective.target) + objective.stolen = TRUE + else + if(objective.stolen) + var/fail_msg = "Your sensors tell you that [objective.target.current.real_name], one of the targets you were meant to have killed, pulled one over on you, and is still alive - do the job properly this time! " + if(this.last_man_standing) + if(this.syndicate) + fail_msg += " You no longer have permission to die. " + else + fail_msg += " The truth could still slip out!
Cease any terrorist actions as soon as possible, unneeded property damage or loss of employee life will lead to your contract being terminated.
" + reinstate_escape_objective(owner) + this.last_man_standing = FALSE + to_chat(owner.current, fail_msg) + objective.stolen = FALSE + +/datum/antagonist/traitor/proc/forge_iaa_objectives() + var/datum/antagonist/traitor/human/internal_affairs/this = src //Should only use this if IAA + if(SSticker.mode.target_list.len && SSticker.mode.target_list[owner]) // Is a double agent + + // Assassinate + var/datum/mind/target_mind = SSticker.mode.target_list[owner] + if(issilicon(target_mind.current)) + var/datum/objective/destroy/internal/destroy_objective = new + destroy_objective.owner = owner + destroy_objective.target = target_mind + destroy_objective.update_explanation_text() + else + var/datum/objective/assassinate/internal/kill_objective = new + kill_objective.owner = owner + kill_objective.target = target_mind + kill_objective.update_explanation_text() + add_objective(kill_objective) + + //Optional traitor objective + if(prob(PROB_ACTUAL_TRAITOR)) + employer = "The Syndicate" + owner.special_role = TRAITOR_AGENT_ROLE + special_role = TRAITOR_AGENT_ROLE + this.syndicate = TRUE + forge_single_objective() + + else + ..() // Give them standard objectives. + return + +/datum/antagonist/traitor/human/internal_affairs/forge_traitor_objectives() + forge_iaa_objectives() + var/datum/objective/escape/escape_objective = new + escape_objective.owner = owner + add_objective(escape_objective) + +/datum/antagonist/traitor/AI/internal_affairs/forge_traitor_objectives() + forge_iaa_objectives() + var/datum/objective/survive/survive_objective = new + survive_objective.owner = owner + add_objective(survive_objective) + +/datum/antagonist/traitor/proc/greet_iaa() + var/datum/antagonist/traitor/human/internal_affairs/this = src //Should only use this if IAA + var/crime = pick("distribution of contraband" , "unauthorized erotic action on duty", "embezzlement", "piloting under the influence", "dereliction of duty", "syndicate collaboration", "mutiny", "multiple homicides", "corporate espionage", "recieving bribes", "malpractice", "worship of prohbited life forms", "possession of profane texts", "murder", "arson", "insulting their manager", "grand theft", "conspiracy", "attempting to unionize", "vandalism", "gross incompetence") + + to_chat(owner.current, "You are the [special_role].") + if(this.syndicate) + to_chat(owner.current, "Your target has been framed for [crime], and you have been tasked with eliminating them to prevent them defending themselves in court.") + to_chat(owner.current, "Any damage you cause will be a further embarrassment to Nanotrasen, so you have no limits on collateral damage.") + to_chat(owner.current, " You have been provided with a standard uplink to accomplish your task. ") + else + to_chat(owner.current, "Your target is suspected of [crime], and you have been tasked with eliminating them by any means necessary to avoid a costly and embarrassing public trial.") + to_chat(owner.current, "While you have a license to kill, unneeded property damage or loss of employee life will lead to your contract being terminated.") + to_chat(owner.current, "For the sake of plausible deniability, you have been equipped with an array of captured Syndicate weaponry available via uplink.") + + to_chat(owner.current, "Finally, watch your back. Your target has friends in high places, and intel suggests someone may have taken out a contract of their own to protect them.") + owner.announce_objectives() + +/datum/antagonist/traitor/AI/internal_affairs/greet() + greet_iaa() + +/datum/antagonist/traitor/human/internal_affairs/greet() + greet_iaa() + + +#undef PROB_ACTUAL_TRAITOR +#undef PINPOINTER_EXTRA_RANDOM_RANGE +#undef PINPOINTER_MINIMUM_RANGE +#undef PINPOINTER_PING_TIME diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm new file mode 100644 index 0000000000..6c55563810 --- /dev/null +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -0,0 +1,350 @@ +/datum/antagonist/traitor + name = "Traitor" + roundend_category = "traitors" + antagpanel_category = "Traitor" + job_rank = ROLE_TRAITOR + var/should_specialise = TRUE //do we split into AI and human, set to true on inital assignment only + var/ai_datum = /datum/antagonist/traitor/AI + var/human_datum = /datum/antagonist/traitor/human + var/special_role = "traitor" + var/employer = "The Syndicate" + var/give_objectives = TRUE + var/should_give_codewords = TRUE + + + +/datum/antagonist/traitor/human + show_in_antagpanel = FALSE + should_specialise = FALSE + var/should_equip = TRUE + + +/datum/antagonist/traitor/AI + show_in_antagpanel = FALSE + should_specialise = FALSE + +/datum/antagonist/traitor/specialization(datum/mind/new_owner) + if(should_specialise) + if(new_owner.current && isAI(new_owner.current)) + return new ai_datum() + else + return new human_datum() + else + return ..() + +/datum/antagonist/traitor/on_gain() + SSticker.mode.traitors += owner + owner.special_role = special_role + if(give_objectives) + forge_traitor_objectives() + finalize_traitor() + ..() + +/datum/antagonist/traitor/apply_innate_effects() + if(owner.assigned_role == "Clown") + var/mob/living/carbon/human/traitor_mob = owner.current + if(traitor_mob && istype(traitor_mob)) + if(!silent) + to_chat(traitor_mob, "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself.") + traitor_mob.dna.remove_mutation(CLOWNMUT) + +/datum/antagonist/traitor/remove_innate_effects() + if(owner.assigned_role == "Clown") + var/mob/living/carbon/human/traitor_mob = owner.current + if(traitor_mob && istype(traitor_mob)) + traitor_mob.dna.add_mutation(CLOWNMUT) + +/datum/antagonist/traitor/on_removal() + SSticker.mode.traitors -= owner + for(var/O in objectives) + owner.objectives -= O + objectives = list() + if(!silent && owner.current) + to_chat(owner.current," You are no longer the [special_role]! ") + owner.special_role = null + ..() + +/datum/antagonist/traitor/AI/on_removal() + if(owner.current && isAI(owner.current)) + var/mob/living/silicon/ai/A = owner.current + A.set_zeroth_law("") + A.verbs -= /mob/living/silicon/ai/proc/choose_modules + A.malf_picker.remove_malf_verbs(A) + qdel(A.malf_picker) + ..() + +/datum/antagonist/traitor/proc/add_objective(var/datum/objective/O) + owner.objectives += O + objectives += O + +/datum/antagonist/traitor/proc/remove_objective(var/datum/objective/O) + owner.objectives -= O + objectives -= O + +/datum/antagonist/traitor/proc/forge_traitor_objectives() + return + +/datum/antagonist/traitor/human/forge_traitor_objectives() + var/is_hijacker = prob(10) + var/martyr_chance = prob(20) + var/objective_count = is_hijacker //Hijacking counts towards number of objectives + if(!SSticker.mode.exchange_blue && SSticker.mode.traitors.len >= 8) //Set up an exchange if there are enough traitors + if(!SSticker.mode.exchange_red) + SSticker.mode.exchange_red = owner + else + SSticker.mode.exchange_blue = owner + assign_exchange_role(SSticker.mode.exchange_red) + assign_exchange_role(SSticker.mode.exchange_blue) + objective_count += 1 //Exchange counts towards number of objectives + var/toa = CONFIG_GET(number/traitor_objectives_amount) + for(var/i = objective_count, i < toa, i++) + forge_single_objective() + + if(is_hijacker && objective_count <= toa) //Don't assign hijack if it would exceed the number of objectives set in config.traitor_objectives_amount + if (!(locate(/datum/objective/hijack) in owner.objectives)) + var/datum/objective/hijack/hijack_objective = new + hijack_objective.owner = owner + add_objective(hijack_objective) + return + + + var/martyr_compatibility = 1 //You can't succeed in stealing if you're dead. + for(var/datum/objective/O in owner.objectives) + if(!O.martyr_compatible) + martyr_compatibility = 0 + break + + if(martyr_compatibility && martyr_chance) + var/datum/objective/martyr/martyr_objective = new + martyr_objective.owner = owner + add_objective(martyr_objective) + return + + else + if(!(locate(/datum/objective/escape) in owner.objectives)) + var/datum/objective/escape/escape_objective = new + escape_objective.owner = owner + add_objective(escape_objective) + return + +/datum/antagonist/traitor/AI/forge_traitor_objectives() + var/objective_count = 0 + + if(prob(30)) + objective_count += forge_single_objective() + + for(var/i = objective_count, i < CONFIG_GET(number/traitor_objectives_amount), i++) + var/datum/objective/assassinate/kill_objective = new + kill_objective.owner = owner + kill_objective.find_target() + add_objective(kill_objective) + + var/datum/objective/survive/exist/exist_objective = new + exist_objective.owner = owner + add_objective(exist_objective) +/datum/antagonist/traitor/proc/forge_single_objective() + return 0 +/datum/antagonist/traitor/human/forge_single_objective() //Returns how many objectives are added + .=1 + if(prob(50)) + var/list/active_ais = active_ais() + if(active_ais.len && prob(100/GLOB.joined_player_list.len)) + var/datum/objective/destroy/destroy_objective = new + destroy_objective.owner = owner + destroy_objective.find_target() + add_objective(destroy_objective) + else if(prob(30)) + var/datum/objective/maroon/maroon_objective = new + maroon_objective.owner = owner + maroon_objective.find_target() + add_objective(maroon_objective) + else + var/datum/objective/assassinate/kill_objective = new + kill_objective.owner = owner + kill_objective.find_target() + add_objective(kill_objective) + else + if(prob(15) && !(locate(/datum/objective/download in owner.objectives))) + var/datum/objective/download/download_objective = new + download_objective.owner = owner + download_objective.gen_amount_goal() + add_objective(download_objective) + else + var/datum/objective/steal/steal_objective = new + steal_objective.owner = owner + steal_objective.find_target() + add_objective(steal_objective) + +/datum/antagonist/traitor/AI/forge_single_objective() + .=1 + var/special_pick = rand(1,4) + switch(special_pick) + if(1) + var/datum/objective/block/block_objective = new + block_objective.owner = owner + add_objective(block_objective) + if(2) + var/datum/objective/purge/purge_objective = new + purge_objective.owner = owner + add_objective(purge_objective) + if(3) + var/datum/objective/robot_army/robot_objective = new + robot_objective.owner = owner + add_objective(robot_objective) + if(4) //Protect and strand a target + var/datum/objective/protect/yandere_one = new + yandere_one.owner = owner + add_objective(yandere_one) + yandere_one.find_target() + var/datum/objective/maroon/yandere_two = new + yandere_two.owner = owner + yandere_two.target = yandere_one.target + yandere_two.update_explanation_text() // normally called in find_target() + add_objective(yandere_two) + .=2 + +/datum/antagonist/traitor/greet() + to_chat(owner.current, "You are the [owner.special_role].") + owner.announce_objectives() + if(should_give_codewords) + give_codewords() + +/datum/antagonist/traitor/proc/finalize_traitor() + SSticker.mode.update_traitor_icons_added(owner) + return + +/datum/antagonist/traitor/AI/finalize_traitor() + ..() + add_law_zero() + owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/malf.ogg', 100, FALSE, pressure_affected = FALSE) + owner.current.grant_language(/datum/language/codespeak) + +/datum/antagonist/traitor/human/finalize_traitor() + ..() + if(should_equip) + equip(silent) + owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/tatoralert.ogg', 100, FALSE, pressure_affected = FALSE) + +/datum/antagonist/traitor/proc/give_codewords() + if(!owner.current) + return + var/mob/traitor_mob=owner.current + + to_chat(traitor_mob, "The Syndicate provided you with the following information on how to identify their agents:") + to_chat(traitor_mob, "Code Phrase: [GLOB.syndicate_code_phrase]") + to_chat(traitor_mob, "Code Response: [GLOB.syndicate_code_response]") + + antag_memory += "Code Phrase: [GLOB.syndicate_code_phrase]
" + antag_memory += "Code Response: [GLOB.syndicate_code_response]
" + + to_chat(traitor_mob, "Use the code words in the order provided, during regular conversation, to identify other agents. Proceed with caution, however, as everyone is a potential foe.") + +/datum/antagonist/traitor/AI/proc/add_law_zero() + var/mob/living/silicon/ai/killer = owner.current + if(!killer || !istype(killer)) + return + var/law = "Accomplish your objectives at all costs." + var/law_borg = "Accomplish your AI's objectives at all costs." + killer.set_zeroth_law(law, law_borg) + killer.set_syndie_radio() + to_chat(killer, "Your radio has been upgraded! Use :t to speak on an encrypted channel with Syndicate Agents!") + killer.add_malf_picker() + +/datum/antagonist/traitor/proc/equip(var/silent = FALSE) + return + +/datum/antagonist/traitor/human/equip(var/silent = FALSE) + owner.equip_traitor(employer, silent, src) + +/datum/antagonist/traitor/human/proc/assign_exchange_role() + //set faction + var/faction = "red" + if(owner == SSticker.mode.exchange_blue) + faction = "blue" + + //Assign objectives + var/datum/objective/steal/exchange/exchange_objective = new + exchange_objective.set_faction(faction,((faction == "red") ? SSticker.mode.exchange_blue : SSticker.mode.exchange_red)) + exchange_objective.owner = owner + add_objective(exchange_objective) + + if(prob(20)) + var/datum/objective/steal/exchange/backstab/backstab_objective = new + backstab_objective.set_faction(faction) + backstab_objective.owner = owner + add_objective(backstab_objective) + + //Spawn and equip documents + var/mob/living/carbon/human/mob = owner.current + + var/obj/item/folder/syndicate/folder + if(owner == SSticker.mode.exchange_red) + folder = new/obj/item/folder/syndicate/red(mob.loc) + else + folder = new/obj/item/folder/syndicate/blue(mob.loc) + + var/list/slots = list ( + "backpack" = slot_in_backpack, + "left pocket" = slot_l_store, + "right pocket" = slot_r_store + ) + + var/where = "At your feet" + var/equipped_slot = mob.equip_in_one_of_slots(folder, slots) + if (equipped_slot) + where = "In your [equipped_slot]" + to_chat(mob, "

[where] is a folder containing secret documents that another Syndicate group wants. We have set up a meeting with one of their agents on station to make an exchange. Exercise extreme caution as they cannot be trusted and may be hostile.
") + +//TODO Collate +/datum/antagonist/traitor/roundend_report() + var/list/result = list() + + var/traitorwin = TRUE + + result += printplayer(owner) + + var/TC_uses = 0 + var/uplink_true = FALSE + var/purchases = "" + var/datum/uplink_purchase_log/H = GLOB.uplink_purchase_logs_by_key[owner.key] + if(H) + TC_uses = H.total_spent + uplink_true = TRUE + purchases += H.generate_render(FALSE) + + var/objectives_text = "" + if(objectives.len)//If the traitor had no objectives, don't need to process this. + var/count = 1 + for(var/datum/objective/objective in objectives) + if(objective.check_completion()) + objectives_text += "
Objective #[count]: [objective.explanation_text] Success!" + else + objectives_text += "
Objective #[count]: [objective.explanation_text] Fail." + traitorwin = FALSE + count++ + + if(uplink_true) + var/uplink_text = "(used [TC_uses] TC) [purchases]" + if(TC_uses==0 && traitorwin) + var/static/icon/badass = icon('icons/badass.dmi', "badass") + uplink_text += "[icon2html(badass, world)]" + result += uplink_text + + result += objectives_text + + var/special_role_text = lowertext(name) + + if(traitorwin) + result += "The [special_role_text] was successful!" + else + result += "The [special_role_text] has failed!" + SEND_SOUND(owner.current, 'sound/ambience/ambifailure.ogg') + + return result.Join("
") + +/datum/antagonist/traitor/roundend_report_footer() + return "
The code phrases were: [GLOB.syndicate_code_phrase]
\ + The code responses were: [GLOB.syndicate_code_response]
" + +/datum/antagonist/traitor/is_gamemode_hero() + return SSticker.mode.name == "traitor" \ No newline at end of file diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm similarity index 99% rename from code/game/gamemodes/malfunction/Malf_Modules.dm rename to code/modules/antagonists/traitor/equipment/Malf_Modules.dm index 8962476491..46891b420d 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm @@ -505,7 +505,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list( for(var/obj/machinery/firealarm/F in GLOB.machines) if(!is_station_level(F.z)) continue - F.emagged = TRUE + F.obj_flags |= EMAGGED to_chat(owner, "All thermal sensors on the station have been disabled. Fire alerts will no longer be recognized.") owner.playsound_local(owner, 'sound/machines/terminal_off.ogg', 50, 0) @@ -532,7 +532,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list( for(var/obj/machinery/airalarm/AA in GLOB.machines) if(!is_station_level(AA.z)) continue - AA.emagged = TRUE + AA.obj_flags |= EMAGGED to_chat(owner, "All air alarm safeties on the station have been overriden. Air alarms may now use the Flood environmental mode.") owner.playsound_local(owner, 'sound/machines/terminal_off.ogg', 50, 0) diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm similarity index 96% rename from code/game/gamemodes/wizard/artefact.dm rename to code/modules/antagonists/wizard/equipment/artefact.dm index 94ecac2b79..279834223a 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/modules/antagonists/wizard/equipment/artefact.dm @@ -1,411 +1,411 @@ - -//Apprenticeship contract - moved to antag_spawner.dm - -///////////////////////////Veil Render////////////////////// - -/obj/item/veilrender - name = "veil render" - desc = "A wicked curved blade of alien origin, recovered from the ruins of a vast city." - icon = 'icons/obj/wizard.dmi' - icon_state = "render" - item_state = "knife" - lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' - force = 15 - throwforce = 10 - w_class = WEIGHT_CLASS_NORMAL - hitsound = 'sound/weapons/bladeslice.ogg' - var/charges = 1 - var/spawn_type = /obj/singularity/wizard - var/spawn_amt = 1 - var/activate_descriptor = "reality" - var/rend_desc = "You should run now." - var/spawn_fast = 0 //if 1, ignores checking for mobs on loc before spawning - -/obj/item/veilrender/attack_self(mob/user) - if(charges > 0) - new /obj/effect/rend(get_turf(user), spawn_type, spawn_amt, rend_desc, spawn_fast) - charges-- - user.visible_message("[src] hums with power as [user] deals a blow to [activate_descriptor] itself!") - else - to_chat(user, "The unearthly energies that powered the blade are now dormant.") - -/obj/effect/rend - name = "tear in the fabric of reality" - desc = "You should run now." - icon = 'icons/effects/effects.dmi' - icon_state = "rift" - density = TRUE - anchored = TRUE - var/spawn_path = /mob/living/simple_animal/cow //defaulty cows to prevent unintentional narsies - var/spawn_amt_left = 20 - var/spawn_fast = 0 - -/obj/effect/rend/New(loc, var/spawn_type, var/spawn_amt, var/desc, var/spawn_fast) - src.spawn_path = spawn_type - src.spawn_amt_left = spawn_amt - src.desc = desc - src.spawn_fast = spawn_fast - START_PROCESSING(SSobj, src) - return - -/obj/effect/rend/process() - if(!spawn_fast) - if(locate(/mob) in loc) - return - new spawn_path(loc) - spawn_amt_left-- - if(spawn_amt_left <= 0) - qdel(src) - -/obj/effect/rend/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/nullrod)) - user.visible_message("[user] seals \the [src] with \the [I].") - qdel(src) - return - else - return ..() - -/obj/effect/rend/singularity_pull() - return - -/obj/effect/rend/singularity_pull() - return - -/obj/item/veilrender/vealrender - name = "veal render" - desc = "A wicked curved blade of alien origin, recovered from the ruins of a vast farm." - spawn_type = /mob/living/simple_animal/cow - spawn_amt = 20 - activate_descriptor = "hunger" - rend_desc = "Reverberates with the sound of ten thousand moos." - -/obj/item/veilrender/honkrender - name = "honk render" - desc = "A wicked curved blade of alien origin, recovered from the ruins of a vast circus." - spawn_type = /mob/living/simple_animal/hostile/retaliate/clown - spawn_amt = 10 - activate_descriptor = "depression" - rend_desc = "Gently wafting with the sounds of endless laughter." - icon_state = "clownrender" - -////TEAR IN REALITY - -/obj/singularity/wizard - name = "tear in the fabric of reality" - desc = "This isn't right." - icon = 'icons/effects/224x224.dmi' - icon_state = "reality" - pixel_x = -96 - pixel_y = -96 - grav_pull = 6 - consume_range = 3 - current_size = STAGE_FOUR - allowed_size = STAGE_FOUR - -/obj/singularity/wizard/process() - move() - eat() - return -/////////////////////////////////////////Scrying/////////////////// - -/obj/item/scrying - name = "scrying orb" - desc = "An incandescent orb of otherworldly energy, staring into it gives you vision beyond mortal means." - icon = 'icons/obj/projectiles.dmi' - icon_state ="bluespace" - throw_speed = 3 - throw_range = 7 - throwforce = 15 - damtype = BURN - force = 15 - hitsound = 'sound/items/welder2.ogg' - - var/xray_granted = FALSE - -/obj/item/scrying/equipped(mob/user) - if(!xray_granted && ishuman(user)) - var/mob/living/carbon/human/H = user - if(!(H.dna.check_mutation(XRAY))) - H.dna.add_mutation(XRAY) - xray_granted = TRUE - . = ..() - -/obj/item/scrying/attack_self(mob/user) - to_chat(user, "You can see...everything!") - visible_message("[user] stares into [src], their eyes glazing over.") - user.ghostize(1) - -/////////////////////////////////////////Necromantic Stone/////////////////// - -/obj/item/device/necromantic_stone - name = "necromantic stone" - desc = "A shard capable of resurrecting humans as skeleton thralls." - icon = 'icons/obj/wizard.dmi' - icon_state = "necrostone" - item_state = "electronic" - lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - w_class = WEIGHT_CLASS_TINY - var/list/spooky_scaries = list() - var/unlimited = 0 - -/obj/item/device/necromantic_stone/unlimited - unlimited = 1 - -/obj/item/device/necromantic_stone/attack(mob/living/carbon/human/M, mob/living/carbon/human/user) - if(!istype(M)) - return ..() - - if(!istype(user) || !user.canUseTopic(M,1)) - return - - if(M.stat != DEAD) - to_chat(user, "This artifact can only affect the dead!") - return - - if(!M.mind || !M.client) - to_chat(user, "There is no soul connected to this body...") - return - - check_spooky()//clean out/refresh the list - if(spooky_scaries.len >= 3 && !unlimited) - to_chat(user, "This artifact can only affect three undead at a time!") - return - - M.set_species(/datum/species/skeleton, icon_update=0) - M.revive(full_heal = 1, admin_revive = 1) - spooky_scaries |= M - to_chat(M, "You have been revived by [user.real_name]!") - to_chat(M, "[user.p_they(TRUE)] [user.p_are()] your master now, assist them even if it costs you your new life!") - - equip_roman_skeleton(M) - - desc = "A shard capable of resurrecting humans as skeleton thralls[unlimited ? "." : ", [spooky_scaries.len]/3 active thralls."]" - -/obj/item/device/necromantic_stone/proc/check_spooky() - if(unlimited) //no point, the list isn't used. - return - - for(var/X in spooky_scaries) - if(!ishuman(X)) - spooky_scaries.Remove(X) - continue - var/mob/living/carbon/human/H = X - if(H.stat == DEAD) - H.dust(TRUE) - spooky_scaries.Remove(X) - continue - listclearnulls(spooky_scaries) - -//Funny gimmick, skeletons always seem to wear roman/ancient armour -/obj/item/device/necromantic_stone/proc/equip_roman_skeleton(mob/living/carbon/human/H) - for(var/obj/item/I in H) - H.dropItemToGround(I) - - var/hat = pick(/obj/item/clothing/head/helmet/roman, /obj/item/clothing/head/helmet/roman/legionaire) - H.equip_to_slot_or_del(new hat(H), slot_head) - H.equip_to_slot_or_del(new /obj/item/clothing/under/roman(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), slot_shoes) - H.put_in_hands(new /obj/item/shield/riot/roman(H), TRUE) - H.put_in_hands(new /obj/item/claymore(H), TRUE) - H.equip_to_slot_or_del(new /obj/item/twohanded/spear(H), slot_back) - - -/obj/item/voodoo - name = "wicker doll" - desc = "Something creepy about it." - icon = 'icons/obj/wizard.dmi' - icon_state = "voodoo" - item_state = "electronic" - lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - var/mob/living/carbon/human/target = null - var/list/mob/living/carbon/human/possible = list() - var/obj/item/voodoo_link = null - var/cooldown_time = 30 //3s - var/cooldown = 0 - max_integrity = 10 - resistance_flags = FLAMMABLE - -/obj/item/voodoo/attackby(obj/item/I, mob/user, params) - if(target && cooldown < world.time) - if(I.is_hot()) - to_chat(target, "You suddenly feel very hot") - target.bodytemperature += 50 - GiveHint(target) - else if(is_pointed(I)) - to_chat(target, "You feel a stabbing pain in [parse_zone(user.zone_selected)]!") - target.Knockdown(40) - GiveHint(target) - else if(istype(I, /obj/item/bikehorn)) - to_chat(target, "HONK") - SEND_SOUND(target, 'sound/items/airhorn.ogg') - target.adjustEarDamage(0,3) - GiveHint(target) - cooldown = world.time +cooldown_time - return - - if(!voodoo_link) - if(I.loc == user && istype(I) && I.w_class <= WEIGHT_CLASS_SMALL) - if (user.transferItemToLoc(I,src)) - voodoo_link = I - to_chat(user, "You attach [I] to the doll.") - update_targets() - -/obj/item/voodoo/check_eye(mob/user) - if(loc != user) - user.reset_perspective(null) - user.unset_machine() - -/obj/item/voodoo/attack_self(mob/user) - if(!target && possible.len) - target = input(user, "Select your victim!", "Voodoo") as null|anything in possible - return - - if(user.zone_selected == "chest") - if(voodoo_link) - target = null - voodoo_link.forceMove(drop_location()) - to_chat(user, "You remove the [voodoo_link] from the doll.") - voodoo_link = null - update_targets() - return - - if(target && cooldown < world.time) - switch(user.zone_selected) - if("mouth") - var/wgw = sanitize(input(user, "What would you like the victim to say", "Voodoo", null) as text) - target.say(wgw) - log_game("[user][user.key] made [target][target.key] say [wgw] with a voodoo doll.") - if("eyes") - user.set_machine(src) - user.reset_perspective(target) - spawn(100) - user.reset_perspective(null) - user.unset_machine() - if("r_leg","l_leg") - to_chat(user, "You move the doll's legs around.") - var/turf/T = get_step(target,pick(GLOB.cardinals)) - target.Move(T) - if("r_arm","l_arm") - target.click_random_mob() - GiveHint(target) - if("head") - to_chat(user, "You smack the doll's head with your hand.") - target.Dizzy(10) - to_chat(target, "You suddenly feel as if your head was hit with a hammer!") - GiveHint(target,user) - cooldown = world.time + cooldown_time - -/obj/item/voodoo/proc/update_targets() - possible = list() - if(!voodoo_link) - return - var/list/prints = voodoo_link.return_fingerprints() - if(!length(prints)) - return FALSE - for(var/mob/living/carbon/human/H in GLOB.alive_mob_list) - if(prints[md5(H.dna.uni_identity)]) - possible |= H - -/obj/item/voodoo/proc/GiveHint(mob/victim,force=0) - if(prob(50) || force) - var/way = dir2text(get_dir(victim,get_turf(src))) - to_chat(victim, "You feel a dark presence from [way]") - if(prob(20) || force) - var/area/A = get_area(src) - to_chat(victim, "You feel a dark presence from [A.name]") - -/obj/item/voodoo/suicide_act(mob/living/carbon/user) - user.visible_message("[user] links the voodoo doll to themself and sits on it, infinitely crushing themself! It looks like [user.p_theyre()] trying to commit suicide!") - user.gib() - return(BRUTELOSS) - -/obj/item/voodoo/fire_act(exposed_temperature, exposed_volume) - if(target) - target.adjust_fire_stacks(20) - target.IgniteMob() - GiveHint(target,1) - return ..() - -//Provides a decent heal, need to pump every 6 seconds -/obj/item/organ/heart/cursed/wizard - pump_delay = 60 - heal_brute = 25 - heal_burn = 25 - heal_oxy = 25 - -//Warp Whistle: Provides uncontrolled long distance teleportation. - -/obj/item/warpwhistle - name = "warp whistle" - desc = "One toot on this whistle will send you to a far away land!" - icon = 'icons/obj/wizard.dmi' - icon_state = "whistle" - var/on_cooldown = 0 //0: usable, 1: in use, 2: on cooldown - var/mob/living/carbon/last_user - -/obj/item/warpwhistle/proc/interrupted(mob/living/carbon/user) - if(!user || QDELETED(src) || user.notransform) - on_cooldown = FALSE - return TRUE - return FALSE - -/obj/item/warpwhistle/attack_self(mob/living/carbon/user) - if(!istype(user) || on_cooldown) - return - on_cooldown = TRUE - last_user = user - var/turf/T = get_turf(user) - playsound(T,'sound/magic/warpwhistle.ogg', 200, 1) - user.canmove = 0 - new /obj/effect/temp_visual/tornado(T) - sleep(20) - if(interrupted(user)) - return - user.invisibility = INVISIBILITY_MAXIMUM - user.status_flags |= GODMODE - sleep(20) - if(interrupted(user)) - return - var/breakout = 0 - while(breakout < 50) - var/turf/potential_T = find_safe_turf() - if(T.z != potential_T.z || abs(get_dist_euclidian(potential_T,T)) > 50 - breakout) - user.forceMove(potential_T) - user.canmove = 0 - T = potential_T - break - breakout += 1 - new /obj/effect/temp_visual/tornado(T) - sleep(20) - if(interrupted(user)) - return - user.invisibility = initial(user.invisibility) - user.status_flags &= ~GODMODE - user.canmove = 1 - on_cooldown = 2 - sleep(40) - on_cooldown = 0 - -/obj/item/warpwhistle/Destroy() - if(on_cooldown == 1 && last_user) //Flute got dunked somewhere in the teleport - last_user.invisibility = initial(last_user.invisibility) - last_user.status_flags &= ~GODMODE - last_user.canmove = 1 - return ..() - -/obj/effect/temp_visual/tornado - icon = 'icons/obj/wizard.dmi' - icon_state = "tornado" - name = "tornado" - desc = "This thing sucks!" - layer = FLY_LAYER - randomdir = 0 - duration = 40 - pixel_x = 500 - -/obj/effect/temp_visual/tornado/Initialize() - . = ..() - animate(src, pixel_x = -500, time = 40) + +//Apprenticeship contract - moved to antag_spawner.dm + +///////////////////////////Veil Render////////////////////// + +/obj/item/veilrender + name = "veil render" + desc = "A wicked curved blade of alien origin, recovered from the ruins of a vast city." + icon = 'icons/obj/wizard.dmi' + icon_state = "render" + item_state = "knife" + lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' + force = 15 + throwforce = 10 + w_class = WEIGHT_CLASS_NORMAL + hitsound = 'sound/weapons/bladeslice.ogg' + var/charges = 1 + var/spawn_type = /obj/singularity/wizard + var/spawn_amt = 1 + var/activate_descriptor = "reality" + var/rend_desc = "You should run now." + var/spawn_fast = 0 //if 1, ignores checking for mobs on loc before spawning + +/obj/item/veilrender/attack_self(mob/user) + if(charges > 0) + new /obj/effect/rend(get_turf(user), spawn_type, spawn_amt, rend_desc, spawn_fast) + charges-- + user.visible_message("[src] hums with power as [user] deals a blow to [activate_descriptor] itself!") + else + to_chat(user, "The unearthly energies that powered the blade are now dormant.") + +/obj/effect/rend + name = "tear in the fabric of reality" + desc = "You should run now." + icon = 'icons/effects/effects.dmi' + icon_state = "rift" + density = TRUE + anchored = TRUE + var/spawn_path = /mob/living/simple_animal/cow //defaulty cows to prevent unintentional narsies + var/spawn_amt_left = 20 + var/spawn_fast = 0 + +/obj/effect/rend/New(loc, var/spawn_type, var/spawn_amt, var/desc, var/spawn_fast) + src.spawn_path = spawn_type + src.spawn_amt_left = spawn_amt + src.desc = desc + src.spawn_fast = spawn_fast + START_PROCESSING(SSobj, src) + return + +/obj/effect/rend/process() + if(!spawn_fast) + if(locate(/mob) in loc) + return + new spawn_path(loc) + spawn_amt_left-- + if(spawn_amt_left <= 0) + qdel(src) + +/obj/effect/rend/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/nullrod)) + user.visible_message("[user] seals \the [src] with \the [I].") + qdel(src) + return + else + return ..() + +/obj/effect/rend/singularity_pull() + return + +/obj/effect/rend/singularity_pull() + return + +/obj/item/veilrender/vealrender + name = "veal render" + desc = "A wicked curved blade of alien origin, recovered from the ruins of a vast farm." + spawn_type = /mob/living/simple_animal/cow + spawn_amt = 20 + activate_descriptor = "hunger" + rend_desc = "Reverberates with the sound of ten thousand moos." + +/obj/item/veilrender/honkrender + name = "honk render" + desc = "A wicked curved blade of alien origin, recovered from the ruins of a vast circus." + spawn_type = /mob/living/simple_animal/hostile/retaliate/clown + spawn_amt = 10 + activate_descriptor = "depression" + rend_desc = "Gently wafting with the sounds of endless laughter." + icon_state = "clownrender" + +////TEAR IN REALITY + +/obj/singularity/wizard + name = "tear in the fabric of reality" + desc = "This isn't right." + icon = 'icons/effects/224x224.dmi' + icon_state = "reality" + pixel_x = -96 + pixel_y = -96 + grav_pull = 6 + consume_range = 3 + current_size = STAGE_FOUR + allowed_size = STAGE_FOUR + +/obj/singularity/wizard/process() + move() + eat() + return +/////////////////////////////////////////Scrying/////////////////// + +/obj/item/scrying + name = "scrying orb" + desc = "An incandescent orb of otherworldly energy, staring into it gives you vision beyond mortal means." + icon = 'icons/obj/projectiles.dmi' + icon_state ="bluespace" + throw_speed = 3 + throw_range = 7 + throwforce = 15 + damtype = BURN + force = 15 + hitsound = 'sound/items/welder2.ogg' + + var/xray_granted = FALSE + +/obj/item/scrying/equipped(mob/user) + if(!xray_granted && ishuman(user)) + var/mob/living/carbon/human/H = user + if(!(H.dna.check_mutation(XRAY))) + H.dna.add_mutation(XRAY) + xray_granted = TRUE + . = ..() + +/obj/item/scrying/attack_self(mob/user) + to_chat(user, "You can see...everything!") + visible_message("[user] stares into [src], their eyes glazing over.") + user.ghostize(1) + +/////////////////////////////////////////Necromantic Stone/////////////////// + +/obj/item/device/necromantic_stone + name = "necromantic stone" + desc = "A shard capable of resurrecting humans as skeleton thralls." + icon = 'icons/obj/wizard.dmi' + icon_state = "necrostone" + item_state = "electronic" + lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' + righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' + w_class = WEIGHT_CLASS_TINY + var/list/spooky_scaries = list() + var/unlimited = 0 + +/obj/item/device/necromantic_stone/unlimited + unlimited = 1 + +/obj/item/device/necromantic_stone/attack(mob/living/carbon/human/M, mob/living/carbon/human/user) + if(!istype(M)) + return ..() + + if(!istype(user) || !user.canUseTopic(M,1)) + return + + if(M.stat != DEAD) + to_chat(user, "This artifact can only affect the dead!") + return + + if(!M.mind || !M.client) + to_chat(user, "There is no soul connected to this body...") + return + + check_spooky()//clean out/refresh the list + if(spooky_scaries.len >= 3 && !unlimited) + to_chat(user, "This artifact can only affect three undead at a time!") + return + + M.set_species(/datum/species/skeleton, icon_update=0) + M.revive(full_heal = 1, admin_revive = 1) + spooky_scaries |= M + to_chat(M, "You have been revived by [user.real_name]!") + to_chat(M, "[user.p_they(TRUE)] [user.p_are()] your master now, assist them even if it costs you your new life!") + + equip_roman_skeleton(M) + + desc = "A shard capable of resurrecting humans as skeleton thralls[unlimited ? "." : ", [spooky_scaries.len]/3 active thralls."]" + +/obj/item/device/necromantic_stone/proc/check_spooky() + if(unlimited) //no point, the list isn't used. + return + + for(var/X in spooky_scaries) + if(!ishuman(X)) + spooky_scaries.Remove(X) + continue + var/mob/living/carbon/human/H = X + if(H.stat == DEAD) + H.dust(TRUE) + spooky_scaries.Remove(X) + continue + listclearnulls(spooky_scaries) + +//Funny gimmick, skeletons always seem to wear roman/ancient armour +/obj/item/device/necromantic_stone/proc/equip_roman_skeleton(mob/living/carbon/human/H) + for(var/obj/item/I in H) + H.dropItemToGround(I) + + var/hat = pick(/obj/item/clothing/head/helmet/roman, /obj/item/clothing/head/helmet/roman/legionaire) + H.equip_to_slot_or_del(new hat(H), slot_head) + H.equip_to_slot_or_del(new /obj/item/clothing/under/roman(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), slot_shoes) + H.put_in_hands(new /obj/item/shield/riot/roman(H), TRUE) + H.put_in_hands(new /obj/item/claymore(H), TRUE) + H.equip_to_slot_or_del(new /obj/item/twohanded/spear(H), slot_back) + + +/obj/item/voodoo + name = "wicker doll" + desc = "Something creepy about it." + icon = 'icons/obj/wizard.dmi' + icon_state = "voodoo" + item_state = "electronic" + lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' + righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' + var/mob/living/carbon/human/target = null + var/list/mob/living/carbon/human/possible = list() + var/obj/item/voodoo_link = null + var/cooldown_time = 30 //3s + var/cooldown = 0 + max_integrity = 10 + resistance_flags = FLAMMABLE + +/obj/item/voodoo/attackby(obj/item/I, mob/user, params) + if(target && cooldown < world.time) + if(I.is_hot()) + to_chat(target, "You suddenly feel very hot") + target.bodytemperature += 50 + GiveHint(target) + else if(is_pointed(I)) + to_chat(target, "You feel a stabbing pain in [parse_zone(user.zone_selected)]!") + target.Knockdown(40) + GiveHint(target) + else if(istype(I, /obj/item/bikehorn)) + to_chat(target, "HONK") + SEND_SOUND(target, 'sound/items/airhorn.ogg') + target.adjustEarDamage(0,3) + GiveHint(target) + cooldown = world.time +cooldown_time + return + + if(!voodoo_link) + if(I.loc == user && istype(I) && I.w_class <= WEIGHT_CLASS_SMALL) + if (user.transferItemToLoc(I,src)) + voodoo_link = I + to_chat(user, "You attach [I] to the doll.") + update_targets() + +/obj/item/voodoo/check_eye(mob/user) + if(loc != user) + user.reset_perspective(null) + user.unset_machine() + +/obj/item/voodoo/attack_self(mob/user) + if(!target && possible.len) + target = input(user, "Select your victim!", "Voodoo") as null|anything in possible + return + + if(user.zone_selected == "chest") + if(voodoo_link) + target = null + voodoo_link.forceMove(drop_location()) + to_chat(user, "You remove the [voodoo_link] from the doll.") + voodoo_link = null + update_targets() + return + + if(target && cooldown < world.time) + switch(user.zone_selected) + if("mouth") + var/wgw = sanitize(input(user, "What would you like the victim to say", "Voodoo", null) as text) + target.say(wgw) + log_game("[user][user.key] made [target][target.key] say [wgw] with a voodoo doll.") + if("eyes") + user.set_machine(src) + user.reset_perspective(target) + spawn(100) + user.reset_perspective(null) + user.unset_machine() + if("r_leg","l_leg") + to_chat(user, "You move the doll's legs around.") + var/turf/T = get_step(target,pick(GLOB.cardinals)) + target.Move(T) + if("r_arm","l_arm") + target.click_random_mob() + GiveHint(target) + if("head") + to_chat(user, "You smack the doll's head with your hand.") + target.Dizzy(10) + to_chat(target, "You suddenly feel as if your head was hit with a hammer!") + GiveHint(target,user) + cooldown = world.time + cooldown_time + +/obj/item/voodoo/proc/update_targets() + possible = list() + if(!voodoo_link) + return + var/list/prints = voodoo_link.return_fingerprints() + if(!length(prints)) + return FALSE + for(var/mob/living/carbon/human/H in GLOB.alive_mob_list) + if(prints[md5(H.dna.uni_identity)]) + possible |= H + +/obj/item/voodoo/proc/GiveHint(mob/victim,force=0) + if(prob(50) || force) + var/way = dir2text(get_dir(victim,get_turf(src))) + to_chat(victim, "You feel a dark presence from [way]") + if(prob(20) || force) + var/area/A = get_area(src) + to_chat(victim, "You feel a dark presence from [A.name]") + +/obj/item/voodoo/suicide_act(mob/living/carbon/user) + user.visible_message("[user] links the voodoo doll to themself and sits on it, infinitely crushing themself! It looks like [user.p_theyre()] trying to commit suicide!") + user.gib() + return(BRUTELOSS) + +/obj/item/voodoo/fire_act(exposed_temperature, exposed_volume) + if(target) + target.adjust_fire_stacks(20) + target.IgniteMob() + GiveHint(target,1) + return ..() + +//Provides a decent heal, need to pump every 6 seconds +/obj/item/organ/heart/cursed/wizard + pump_delay = 60 + heal_brute = 25 + heal_burn = 25 + heal_oxy = 25 + +//Warp Whistle: Provides uncontrolled long distance teleportation. + +/obj/item/warpwhistle + name = "warp whistle" + desc = "One toot on this whistle will send you to a far away land!" + icon = 'icons/obj/wizard.dmi' + icon_state = "whistle" + var/on_cooldown = 0 //0: usable, 1: in use, 2: on cooldown + var/mob/living/carbon/last_user + +/obj/item/warpwhistle/proc/interrupted(mob/living/carbon/user) + if(!user || QDELETED(src) || user.notransform) + on_cooldown = FALSE + return TRUE + return FALSE + +/obj/item/warpwhistle/attack_self(mob/living/carbon/user) + if(!istype(user) || on_cooldown) + return + on_cooldown = TRUE + last_user = user + var/turf/T = get_turf(user) + playsound(T,'sound/magic/warpwhistle.ogg', 200, 1) + user.canmove = 0 + new /obj/effect/temp_visual/tornado(T) + sleep(20) + if(interrupted(user)) + return + user.invisibility = INVISIBILITY_MAXIMUM + user.status_flags |= GODMODE + sleep(20) + if(interrupted(user)) + return + var/breakout = 0 + while(breakout < 50) + var/turf/potential_T = find_safe_turf() + if(T.z != potential_T.z || abs(get_dist_euclidian(potential_T,T)) > 50 - breakout) + user.forceMove(potential_T) + user.canmove = 0 + T = potential_T + break + breakout += 1 + new /obj/effect/temp_visual/tornado(T) + sleep(20) + if(interrupted(user)) + return + user.invisibility = initial(user.invisibility) + user.status_flags &= ~GODMODE + user.canmove = 1 + on_cooldown = 2 + sleep(40) + on_cooldown = 0 + +/obj/item/warpwhistle/Destroy() + if(on_cooldown == 1 && last_user) //Flute got dunked somewhere in the teleport + last_user.invisibility = initial(last_user.invisibility) + last_user.status_flags &= ~GODMODE + last_user.canmove = 1 + return ..() + +/obj/effect/temp_visual/tornado + icon = 'icons/obj/wizard.dmi' + icon_state = "tornado" + name = "tornado" + desc = "This thing sucks!" + layer = FLY_LAYER + randomdir = 0 + duration = 40 + pixel_x = 500 + +/obj/effect/temp_visual/tornado/Initialize() + . = ..() + animate(src, pixel_x = -500, time = 40) diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/modules/antagonists/wizard/equipment/soulstone.dm similarity index 100% rename from code/game/gamemodes/wizard/soulstone.dm rename to code/modules/antagonists/wizard/equipment/soulstone.dm diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/modules/antagonists/wizard/equipment/spellbook.dm similarity index 97% rename from code/game/gamemodes/wizard/spellbook.dm rename to code/modules/antagonists/wizard/equipment/spellbook.dm index 0ba2aac8b4..c26cb5e65c 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook.dm @@ -1,908 +1,908 @@ -/datum/spellbook_entry - var/name = "Entry Name" - - var/spell_type = null - var/desc = "" - var/category = "Offensive" - var/cost = 2 - var/refundable = 1 - var/surplus = -1 // -1 for infinite, not used by anything atm - var/obj/effect/proc_holder/spell/S = null //Since spellbooks can be used by only one person anyway we can track the actual spell - var/buy_word = "Learn" - var/limit //used to prevent a spellbook_entry from being bought more than X times with one wizard spellbook - var/list/no_coexistance_typecache //Used so you can't have specific spells together - -/datum/spellbook_entry/New() - ..() - no_coexistance_typecache = typecacheof(no_coexistance_typecache) - -/datum/spellbook_entry/proc/IsAvailible() // For config prefs / gamemode restrictions - these are round applied - return 1 - -/datum/spellbook_entry/proc/CanBuy(mob/living/carbon/human/user,obj/item/spellbook/book) // Specific circumstances - if(book.uses= aspell.level_max) - to_chat(user, "This spell cannot be improved further.") - return 0 - else - aspell.name = initial(aspell.name) - aspell.spell_level++ - aspell.charge_max = round(initial(aspell.charge_max) - aspell.spell_level * (initial(aspell.charge_max) - aspell.cooldown_min)/ aspell.level_max) - if(aspell.charge_max < aspell.charge_counter) - aspell.charge_counter = aspell.charge_max - switch(aspell.spell_level) - if(1) - to_chat(user, "You have improved [aspell.name] into Efficient [aspell.name].") - aspell.name = "Efficient [aspell.name]" - if(2) - to_chat(user, "You have further improved [aspell.name] into Quickened [aspell.name].") - aspell.name = "Quickened [aspell.name]" - if(3) - to_chat(user, "You have further improved [aspell.name] into Free [aspell.name].") - aspell.name = "Free [aspell.name]" - if(4) - to_chat(user, "You have further improved [aspell.name] into Instant [aspell.name].") - aspell.name = "Instant [aspell.name]" - if(aspell.spell_level >= aspell.level_max) - to_chat(user, "This spell cannot be strengthened any further.") - SSblackbox.record_feedback("nested tally", "wizard_spell_improved", 1, list("[name]", "[aspell.spell_level]")) - return 1 - //No same spell found - just learn it - SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) - user.mind.AddSpell(S) - to_chat(user, "You have learned [S.name].") - return 1 - -/datum/spellbook_entry/proc/CanRefund(mob/living/carbon/human/user,obj/item/spellbook/book) - if(!refundable) - return 0 - if(!S) - S = new spell_type() - for(var/obj/effect/proc_holder/spell/aspell in user.mind.spell_list) - if(initial(S.name) == initial(aspell.name)) - return 1 - return 0 - -/datum/spellbook_entry/proc/Refund(mob/living/carbon/human/user,obj/item/spellbook/book) //return point value or -1 for failure - var/area/wizard_station/A = locate() in GLOB.sortedAreas - if(!(user in A.contents)) - to_chat(user, "You can only refund spells at the wizard lair") - return -1 - if(!S) - S = new spell_type() - var/spell_levels = 0 - for(var/obj/effect/proc_holder/spell/aspell in user.mind.spell_list) - if(initial(S.name) == initial(aspell.name)) - spell_levels = aspell.spell_level - user.mind.spell_list.Remove(aspell) - qdel(S) - return cost * (spell_levels+1) - return -1 -/datum/spellbook_entry/proc/GetInfo() - if(!S) - S = new spell_type() - var/dat ="" - dat += "[initial(S.name)]" - if(S.charge_type == "recharge") - dat += " Cooldown:[S.charge_max/10]" - dat += " Cost:[cost]
" - dat += "[S.desc][desc]
" - dat += "[S.clothes_req?"Needs wizard garb":"Can be cast without wizard garb"]
" - return dat - -/datum/spellbook_entry/fireball - name = "Fireball" - spell_type = /obj/effect/proc_holder/spell/aimed/fireball - -/datum/spellbook_entry/rod_form - name = "Rod Form" - spell_type = /obj/effect/proc_holder/spell/targeted/rod_form - -/datum/spellbook_entry/magicm - name = "Magic Missile" - spell_type = /obj/effect/proc_holder/spell/targeted/projectile/magic_missile - category = "Defensive" - -/datum/spellbook_entry/disintegrate - name = "Disintegrate" - spell_type = /obj/effect/proc_holder/spell/targeted/touch/disintegrate - -/datum/spellbook_entry/disabletech - name = "Disable Tech" - spell_type = /obj/effect/proc_holder/spell/targeted/emplosion/disable_tech - category = "Defensive" - cost = 1 - -/datum/spellbook_entry/repulse - name = "Repulse" - spell_type = /obj/effect/proc_holder/spell/aoe_turf/repulse - category = "Defensive" - -/datum/spellbook_entry/lightningPacket - name = "Lightning bolt! Lightning bolt!" - spell_type = /obj/effect/proc_holder/spell/targeted/conjure_item/spellpacket - category = "Defensive" - -/datum/spellbook_entry/timestop - name = "Time Stop" - spell_type = /obj/effect/proc_holder/spell/aoe_turf/conjure/timestop - category = "Defensive" - -/datum/spellbook_entry/smoke - name = "Smoke" - spell_type = /obj/effect/proc_holder/spell/targeted/smoke - category = "Defensive" - cost = 1 - -/datum/spellbook_entry/blind - name = "Blind" - spell_type = /obj/effect/proc_holder/spell/targeted/trigger/blind - cost = 1 - -/datum/spellbook_entry/mindswap - name = "Mindswap" - spell_type = /obj/effect/proc_holder/spell/targeted/mind_transfer - category = "Mobility" - -/datum/spellbook_entry/forcewall - name = "Force Wall" - spell_type = /obj/effect/proc_holder/spell/targeted/forcewall - category = "Defensive" - cost = 1 - -/datum/spellbook_entry/blink - name = "Blink" - spell_type = /obj/effect/proc_holder/spell/targeted/turf_teleport/blink - category = "Mobility" - -/datum/spellbook_entry/teleport - name = "Teleport" - spell_type = /obj/effect/proc_holder/spell/targeted/area_teleport/teleport - category = "Mobility" - -/datum/spellbook_entry/mutate - name = "Mutate" - spell_type = /obj/effect/proc_holder/spell/targeted/genetic/mutate - -/datum/spellbook_entry/jaunt - name = "Ethereal Jaunt" - spell_type = /obj/effect/proc_holder/spell/targeted/ethereal_jaunt - category = "Mobility" - -/datum/spellbook_entry/knock - name = "Knock" - spell_type = /obj/effect/proc_holder/spell/aoe_turf/knock - category = "Mobility" - cost = 1 - -/datum/spellbook_entry/fleshtostone - name = "Flesh to Stone" - spell_type = /obj/effect/proc_holder/spell/targeted/touch/flesh_to_stone - -/datum/spellbook_entry/summonitem - name = "Summon Item" - spell_type = /obj/effect/proc_holder/spell/targeted/summonitem - category = "Assistance" - cost = 1 - -/datum/spellbook_entry/lichdom - name = "Bind Soul" - spell_type = /obj/effect/proc_holder/spell/targeted/lichdom - category = "Defensive" - -/datum/spellbook_entry/teslablast - name = "Tesla Blast" - spell_type = /obj/effect/proc_holder/spell/targeted/tesla - -/datum/spellbook_entry/lightningbolt - name = "Lightning Bolt" - spell_type = /obj/effect/proc_holder/spell/aimed/lightningbolt - cost = 3 - -/datum/spellbook_entry/lightningbolt/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) //return 1 on success - . = ..() - user.flags_2 |= TESLA_IGNORE_2 - -/datum/spellbook_entry/infinite_guns - name = "Lesser Summon Guns" - spell_type = /obj/effect/proc_holder/spell/targeted/infinite_guns/gun - cost = 3 - no_coexistance_typecache = /obj/effect/proc_holder/spell/targeted/infinite_guns/arcane_barrage - -/datum/spellbook_entry/arcane_barrage - name = "Arcane Barrage" - spell_type = /obj/effect/proc_holder/spell/targeted/infinite_guns/arcane_barrage - cost = 3 - no_coexistance_typecache = /obj/effect/proc_holder/spell/targeted/infinite_guns/gun - -/datum/spellbook_entry/barnyard - name = "Barnyard Curse" - spell_type = /obj/effect/proc_holder/spell/targeted/barnyardcurse - -/datum/spellbook_entry/charge - name = "Charge" - spell_type = /obj/effect/proc_holder/spell/targeted/charge - category = "Assistance" - cost = 1 - -/datum/spellbook_entry/shapeshift - name = "Wild Shapeshift" - spell_type = /obj/effect/proc_holder/spell/targeted/shapeshift - category = "Assistance" - cost = 1 - -/datum/spellbook_entry/spacetime_dist - name = "Spacetime Distortion" - spell_type = /obj/effect/proc_holder/spell/spacetime_dist - category = "Defensive" - cost = 1 - -/datum/spellbook_entry/the_traps - name = "The Traps!" - spell_type = /obj/effect/proc_holder/spell/aoe_turf/conjure/the_traps - category = "Defensive" - cost = 1 - - -/datum/spellbook_entry/item - name = "Buy Item" - refundable = 0 - buy_word = "Summon" - var/item_path= null - - -/datum/spellbook_entry/item/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) - new item_path(get_turf(user)) - SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) - return 1 - -/datum/spellbook_entry/item/GetInfo() - var/dat ="" - dat += "[name]" - dat += " Cost:[cost]
" - dat += "[desc]
" - if(surplus>=0) - dat += "[surplus] left.
" - return dat - -/datum/spellbook_entry/item/staffchange - name = "Staff of Change" - desc = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself." - item_path = /obj/item/gun/magic/staff/change - -/datum/spellbook_entry/item/staffanimation - name = "Staff of Animation" - desc = "An arcane staff capable of shooting bolts of eldritch energy which cause inanimate objects to come to life. This magic doesn't affect machines." - item_path = /obj/item/gun/magic/staff/animate - category = "Assistance" - -/datum/spellbook_entry/item/staffchaos - name = "Staff of Chaos" - desc = "A caprious tool that can fire all sorts of magic without any rhyme or reason. Using it on people you care about is not recommended." - item_path = /obj/item/gun/magic/staff/chaos - -/datum/spellbook_entry/item/spellblade - name = "Spellblade" - desc = "A sword capable of firing blasts of energy which rip targets limb from limb." - item_path = /obj/item/gun/magic/staff/spellblade - -/datum/spellbook_entry/item/staffdoor - name = "Staff of Door Creation" - desc = "A particular staff that can mold solid metal into ornate doors. Useful for getting around in the absence of other transportation. Does not work on glass." - item_path = /obj/item/gun/magic/staff/door - cost = 1 - category = "Mobility" - -/datum/spellbook_entry/item/staffhealing - name = "Staff of Healing" - desc = "An altruistic staff that can heal the lame and raise the dead." - item_path = /obj/item/gun/magic/staff/healing - cost = 1 - category = "Defensive" - -/datum/spellbook_entry/item/scryingorb - name = "Scrying Orb" - desc = "An incandescent orb of crackling energy, using it will allow you to ghost while alive, allowing you to spy upon the station with ease. In addition, buying it will permanently grant you x-ray vision." - item_path = /obj/item/scrying - category = "Defensive" - -/datum/spellbook_entry/item/soulstones - name = "Six Soul Stone Shards and the spell Artificer" - desc = "Soul Stone Shards are ancient tools capable of capturing and harnessing the spirits of the dead and dying. The spell Artificer allows you to create arcane machines for the captured souls to pilot." - item_path = /obj/item/storage/belt/soulstone/full - category = "Assistance" - -/datum/spellbook_entry/item/soulstones/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) - . =..() - if(.) - user.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/construct(null)) - return . - -/datum/spellbook_entry/item/necrostone - name = "A Necromantic Stone" - desc = "A Necromantic stone is able to resurrect three dead individuals as skeletal thralls for you to command." - item_path = /obj/item/device/necromantic_stone - category = "Assistance" - -/datum/spellbook_entry/item/wands - name = "Wand Assortment" - desc = "A collection of wands that allow for a wide variety of utility. Wands have a limited number of charges, so be conservative in use. Comes in a handy belt." - item_path = /obj/item/storage/belt/wands/full - category = "Defensive" - -/datum/spellbook_entry/item/armor - name = "Mastercrafted Armor Set" - desc = "An artefact suit of armor that allows you to cast spells while providing more protection against attacks and the void of space." - item_path = /obj/item/clothing/suit/space/hardsuit/wizard - category = "Defensive" - -/datum/spellbook_entry/item/armor/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) - . = ..() - if(.) - new /obj/item/clothing/shoes/sandal/magic(get_turf(user)) //In case they've lost them. - new /obj/item/clothing/gloves/color/purple(get_turf(user))//To complete the outfit - -/datum/spellbook_entry/item/contract - name = "Contract of Apprenticeship" - desc = "A magical contract binding an apprentice wizard to your service, using it will summon them to your side." - item_path = /obj/item/antag_spawner/contract - category = "Assistance" - -/datum/spellbook_entry/item/guardian - name = "Guardian Deck" - desc = "A deck of guardian tarot cards, capable of binding a personal guardian to your body. There are multiple types of guardian available, but all of them will transfer some amount of damage to you. \ - It would be wise to avoid buying these with anything capable of causing you to swap bodies with others." - item_path = /obj/item/guardiancreator/choose/wizard - category = "Assistance" - -/datum/spellbook_entry/item/guardian/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) - . = ..() - if(.) - new /obj/item/paper/guides/antag/guardian/wizard(get_turf(user)) - -/datum/spellbook_entry/item/bloodbottle - name = "Bottle of Blood" - desc = "A bottle of magically infused blood, the smell of which will attract extradimensional beings when broken. Be careful though, the kinds of creatures summoned by blood magic are indiscriminate in their killing, and you yourself may become a victim." - item_path = /obj/item/antag_spawner/slaughter_demon - limit = 3 - category = "Assistance" - -/datum/spellbook_entry/item/hugbottle - name = "Bottle of Tickles" - desc = "A bottle of magically infused fun, the smell of which will \ - attract adorable extradimensional beings when broken. These beings \ - are similar to slaughter demons, but they do not permamently kill \ - their victims, instead putting them in an extradimensional hugspace, \ - to be released on the demon's death. Chaotic, but not ultimately \ - damaging. The crew's reaction to the other hand could be very \ - destructive." - item_path = /obj/item/antag_spawner/slaughter_demon/laughter - cost = 1 //non-destructive; it's just a jape, sibling! - limit = 3 - category = "Assistance" - -/datum/spellbook_entry/item/mjolnir - name = "Mjolnir" - desc = "A mighty hammer on loan from Thor, God of Thunder. It crackles with barely contained power." - item_path = /obj/item/twohanded/mjollnir - -/datum/spellbook_entry/item/singularity_hammer - name = "Singularity Hammer" - desc = "A hammer that creates an intensely powerful field of gravity where it strikes, pulling everything nearby to the point of impact." - item_path = /obj/item/twohanded/singularityhammer - -/datum/spellbook_entry/item/battlemage - name = "Battlemage Armour" - desc = "An ensorcelled suit of armour, protected by a powerful shield. The shield can completly negate sixteen attacks before being permanently depleted." - item_path = /obj/item/clothing/suit/space/hardsuit/shielded/wizard - limit = 1 - category = "Defensive" - -/datum/spellbook_entry/item/battlemage_charge - name = "Battlemage Armour Charges" - desc = "A powerful defensive rune, it will grant eight additional charges to a suit of battlemage armour." - item_path = /obj/item/wizard_armour_charge - category = "Defensive" - cost = 1 - -/datum/spellbook_entry/item/warpwhistle - name = "Warp Whistle" - desc = "A strange whistle that will transport you to a distant safe place on the station. There is a window of vulnerability at the beginning of every use." - item_path = /obj/item/warpwhistle - category = "Mobility" - cost = 1 - -/datum/spellbook_entry/summon - name = "Summon Stuff" - category = "Rituals" - refundable = 0 - buy_word = "Cast" - var/active = 0 - -/datum/spellbook_entry/summon/CanBuy(mob/living/carbon/human/user,obj/item/spellbook/book) - return ..() && !active - -/datum/spellbook_entry/summon/GetInfo() - var/dat ="" - dat += "[name]" - if(cost>0) - dat += " Cost:[cost]
" - else - dat += " No Cost
" - dat += "[desc]
" - if(active) - dat += "Already cast!
" - return dat - -/datum/spellbook_entry/summon/ghosts - name = "Summon Ghosts" - desc = "Spook the crew out by making them see dead people. Be warned, ghosts are capricious and occasionally vindicative, and some will use their incredibly minor abilties to frustrate you." - cost = 0 - -/datum/spellbook_entry/summon/ghosts/IsAvailible() - if(!SSticker.mode) - return FALSE - else - return TRUE - -/datum/spellbook_entry/summon/ghosts/Buy(mob/living/carbon/human/user, obj/item/spellbook/book) - SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) - new /datum/round_event/wizard/ghost() - active = TRUE - to_chat(user, "You have cast summon ghosts!") - playsound(get_turf(user), 'sound/effects/ghost2.ogg', 50, 1) - return TRUE - -/datum/spellbook_entry/summon/guns - name = "Summon Guns" - desc = "Nothing could possibly go wrong with arming a crew of lunatics just itching for an excuse to kill you. Just be careful not to stand still too long!" - -/datum/spellbook_entry/summon/guns/IsAvailible() - if(!SSticker.mode) // In case spellbook is placed on map - return 0 - return !CONFIG_GET(flag/no_summon_guns) - -/datum/spellbook_entry/summon/guns/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) - SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) - rightandwrong(SUMMON_GUNS, user, 25) - active = 1 - playsound(get_turf(user), 'sound/magic/castsummon.ogg', 50, 1) - to_chat(user, "You have cast summon guns!") - return 1 - -/datum/spellbook_entry/summon/magic - name = "Summon Magic" - desc = "Share the wonders of magic with the crew and show them why they aren't to be trusted with it at the same time." - -/datum/spellbook_entry/summon/magic/IsAvailible() - if(!SSticker.mode) // In case spellbook is placed on map - return 0 - return !CONFIG_GET(flag/no_summon_magic) - -/datum/spellbook_entry/summon/magic/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) - SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) - rightandwrong(SUMMON_MAGIC, user, 25) - active = 1 - playsound(get_turf(user), 'sound/magic/castsummon.ogg', 50, 1) - to_chat(user, "You have cast summon magic!") - return 1 - -/datum/spellbook_entry/summon/events - name = "Summon Events" - desc = "Give Murphy's law a little push and replace all events with special wizard ones that will confound and confuse everyone. Multiple castings increase the rate of these events." - var/times = 0 - -/datum/spellbook_entry/summon/events/IsAvailible() - if(!SSticker.mode) // In case spellbook is placed on map - return 0 - return !CONFIG_GET(flag/no_summon_events) - -/datum/spellbook_entry/summon/events/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) - SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) - summonevents() - times++ - playsound(get_turf(user), 'sound/magic/castsummon.ogg', 50, 1) - to_chat(user, "You have cast summon events.") - return 1 - -/datum/spellbook_entry/summon/events/GetInfo() - . = ..() - if(times>0) - . += "You cast it [times] times.
" - return . - -/obj/item/spellbook - name = "spell book" - desc = "An unearthly tome that glows with power." - icon = 'icons/obj/library.dmi' - icon_state ="book" - throw_speed = 2 - throw_range = 5 - w_class = WEIGHT_CLASS_TINY - persistence_replacement = /obj/item/spellbook/oneuse/random - var/uses = 10 - var/temp = null - var/tab = null - var/mob/living/carbon/human/owner - var/list/datum/spellbook_entry/entries = list() - var/list/categories = list() - -/obj/item/spellbook/examine(mob/user) - ..() - if(owner) - to_chat(user, "There is a small signature on the front cover: \"[owner]\".") - else - to_chat(user, "It appears to have no author.") - -/obj/item/spellbook/Initialize() - . = ..() - prepare_spells() - -/obj/item/spellbook/proc/prepare_spells() - var/entry_types = subtypesof(/datum/spellbook_entry) - /datum/spellbook_entry/item - /datum/spellbook_entry/summon - for(var/T in entry_types) - var/datum/spellbook_entry/E = new T - if(E.IsAvailible()) - entries |= E - categories |= E.category - else - qdel(E) - tab = categories[1] - -/obj/item/spellbook/attackby(obj/item/O, mob/user, params) - if(istype(O, /obj/item/antag_spawner/contract)) - var/obj/item/antag_spawner/contract/contract = O - if(contract.used) - to_chat(user, "The contract has been used, you can't get your points back now!") - else - to_chat(user, "You feed the contract back into the spellbook, refunding your points.") - uses++ - for(var/datum/spellbook_entry/item/contract/CT in entries) - if(!isnull(CT.limit)) - CT.limit++ - qdel(O) - else if(istype(O, /obj/item/antag_spawner/slaughter_demon)) - to_chat(user, "On second thought, maybe summoning a demon is a bad idea. You refund your points.") - uses++ - for(var/datum/spellbook_entry/item/bloodbottle/BB in entries) - if(!isnull(BB.limit)) - BB.limit++ - qdel(O) - -/obj/item/spellbook/proc/GetCategoryHeader(category) - var/dat = "" - switch(category) - if("Offensive") - dat += "Spells and items geared towards debilitating and destroying.

" - dat += "Items are not bound to you and can be stolen. Additionaly they cannot typically be returned once purchased.
" - dat += "For spells: the number after the spell name is the cooldown time.
" - dat += "You can reduce this number by spending more points on the spell.
" - if("Defensive") - dat += "Spells and items geared towards improving your survivabilty or reducing foes' ability to attack.

" - dat += "Items are not bound to you and can be stolen. Additionaly they cannot typically be returned once purchased.
" - dat += "For spells: the number after the spell name is the cooldown time.
" - dat += "You can reduce this number by spending more points on the spell.
" - if("Mobility") - dat += "Spells and items geared towards improving your ability to move. It is a good idea to take at least one.

" - dat += "Items are not bound to you and can be stolen. Additionaly they cannot typically be returned once purchased.
" - dat += "For spells: the number after the spell name is the cooldown time.
" - dat += "You can reduce this number by spending more points on the spell.
" - if("Assistance") - dat += "Spells and items geared towards bringing in outside forces to aid you or improving upon your other items and abilties.

" - dat += "Items are not bound to you and can be stolen. Additionaly they cannot typically be returned once purchased.
" - dat += "For spells: the number after the spell name is the cooldown time.
" - dat += "You can reduce this number by spending more points on the spell.
" - if("Challenges") - dat += "The Wizard Federation typically has hard limits on the potency and number of spells brought to the station based on risk.
" - dat += "Arming the station against you will increases the risk, but will grant you one more charge for your spellbook.
" - if("Rituals") - dat += "These powerful spells change the very fabric of reality. Not always in your favour.
" - return dat - -/obj/item/spellbook/proc/wrap(content) - var/dat = "" - dat +="Spellbook" - dat += {" - - - - "} - dat += {"[content]"} - return dat - -/obj/item/spellbook/attack_self(mob/user) - if(!owner) - to_chat(user, "You bind the spellbook to yourself.") - owner = user - return - if(user != owner) - to_chat(user, "The [name] does not recognize you as its owner and refuses to open!") - return - user.set_machine(src) - var/dat = "" - - dat += "" - - var/datum/spellbook_entry/E - for(var/i=1,i<=entries.len,i++) - var/spell_info = "" - E = entries[i] - spell_info += E.GetInfo() - if(E.CanBuy(user,src)) - spell_info+= "[E.buy_word]
" - else - spell_info+= "Can't [E.buy_word]
" - if(E.CanRefund(user,src)) - spell_info+= "Refund
" - spell_info += "
" - if(cat_dat[E.category]) - cat_dat[E.category] += spell_info - - for(var/category in categories) - dat += "
" - dat += GetCategoryHeader(category) - dat += cat_dat[category] - dat += "
" - - user << browse(wrap(dat), "window=spellbook;size=700x500") - onclose(user, "spellbook") - return - -/obj/item/spellbook/Topic(href, href_list) - ..() - var/mob/living/carbon/human/H = usr - - if(H.stat || H.restrained()) - return - if(!ishuman(H)) - return 1 - - if(H.mind.special_role == "apprentice") - temp = "If you got caught sneaking a peek from your teacher's spellbook, you'd likely be expelled from the Wizard Academy. Better not." - return - - var/datum/spellbook_entry/E = null - if(loc == H || (in_range(src, H) && isturf(loc))) - H.set_machine(src) - if(href_list["buy"]) - E = entries[text2num(href_list["buy"])] - if(E && E.CanBuy(H,src)) - if(E.Buy(H,src)) - if(E.limit) - E.limit-- - uses -= E.cost - else if(href_list["refund"]) - E = entries[text2num(href_list["refund"])] - if(E && E.refundable) - var/result = E.Refund(H,src) - if(result > 0) - if(!isnull(E.limit)) - E.limit += result - uses += result - else if(href_list["page"]) - tab = sanitize(href_list["page"]) - attack_self(H) - return - -//Single Use Spellbooks// - -/obj/item/spellbook/oneuse - var/spell = /obj/effect/proc_holder/spell/targeted/projectile/magic_missile //just a placeholder to avoid runtimes if someone spawned the generic - var/spellname = "sandbox" - var/used = 0 - name = "spellbook of " - uses = 1 - desc = "This template spellbook was never meant for the eyes of man..." - persistence_replacement = null - -/obj/item/spellbook/oneuse/prepare_spells() - name += spellname - -/obj/item/spellbook/oneuse/attack_self(mob/user) - var/obj/effect/proc_holder/spell/S = new spell - for(var/obj/effect/proc_holder/spell/knownspell in user.mind.spell_list) - if(knownspell.type == S.type) - if(user.mind) - if(iswizard(user)) - to_chat(user,"You're already far more versed in this spell than this flimsy how-to book can provide.") - else - to_chat(user,"You've already read this one.") - return - if(used) - recoil(user) - else - user.mind.AddSpell(S) - to_chat(user,"You rapidly read through the arcane book. Suddenly you realize you understand [spellname]!") - user.log_message("learned the spell [spellname] ([S]).", INDIVIDUAL_ATTACK_LOG) - onlearned(user) - -/obj/item/spellbook/oneuse/proc/recoil(mob/user) - user.visible_message("[src] glows in a black light!") - -/obj/item/spellbook/oneuse/proc/onlearned(mob/user) - used = 1 - user.visible_message("[src] glows dark for a second!") - -/obj/item/spellbook/oneuse/attackby() - return - -/obj/item/spellbook/oneuse/fireball - spell = /obj/effect/proc_holder/spell/aimed/fireball - spellname = "fireball" - icon_state ="bookfireball" - desc = "This book feels warm to the touch." - -/obj/item/spellbook/oneuse/fireball/recoil(mob/user) - ..() - explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2) - qdel(src) - -/obj/item/spellbook/oneuse/smoke - spell = /obj/effect/proc_holder/spell/targeted/smoke - spellname = "smoke" - icon_state ="booksmoke" - desc = "This book is overflowing with the dank arts." - -/obj/item/spellbook/oneuse/smoke/lesser //Chaplain smoke book - spell = /obj/effect/proc_holder/spell/targeted/smoke/lesser - -/obj/item/spellbook/oneuse/smoke/recoil(mob/user) - ..() - to_chat(user,"Your stomach rumbles...") - if(user.nutrition) - user.nutrition -= 200 - if(user.nutrition <= 0) - user.nutrition = 0 - - -/obj/item/spellbook/oneuse/blind - spell = /obj/effect/proc_holder/spell/targeted/trigger/blind - spellname = "blind" - icon_state ="bookblind" - desc = "This book looks blurry, no matter how you look at it." - -/obj/item/spellbook/oneuse/blind/recoil(mob/user) - ..() - to_chat(user,"You go blind!") - user.blind_eyes(10) - -/obj/item/spellbook/oneuse/mindswap - spell = /obj/effect/proc_holder/spell/targeted/mind_transfer - spellname = "mindswap" - icon_state ="bookmindswap" - desc = "This book's cover is pristine, though its pages look ragged and torn." - var/mob/stored_swap = null //Used in used book recoils to store an identity for mindswaps - -/obj/item/spellbook/oneuse/mindswap/onlearned() - spellname = pick("fireball","smoke","blind","forcewall","knock","barnyard","charge") - icon_state = "book[spellname]" - name = "spellbook of [spellname]" //Note, desc doesn't change by design - ..() - -/obj/item/spellbook/oneuse/mindswap/recoil(mob/user) - ..() - if(stored_swap in GLOB.dead_mob_list) - stored_swap = null - if(!stored_swap) - stored_swap = user - to_chat(user,"For a moment you feel like you don't even know who you are anymore.") - return - if(stored_swap == user) - to_chat(user,"You stare at the book some more, but there doesn't seem to be anything else to learn...") - return - - var/obj/effect/proc_holder/spell/targeted/mind_transfer/swapper = new - swapper.cast(user, stored_swap, 1) - - to_chat(stored_swap,"You're suddenly somewhere else... and someone else?!") - to_chat(user,"Suddenly you're staring at [src] again... where are you, who are you?!") - stored_swap = null - -/obj/item/spellbook/oneuse/forcewall - spell = /obj/effect/proc_holder/spell/targeted/forcewall - spellname = "forcewall" - icon_state ="bookforcewall" - desc = "This book has a dedication to mimes everywhere inside the front cover." - -/obj/item/spellbook/oneuse/forcewall/recoil(mob/living/user) - ..() - to_chat(user,"You suddenly feel very solid!") - user.Stun(40, ignore_canstun = TRUE) - user.petrify(30) - -/obj/item/spellbook/oneuse/knock - spell = /obj/effect/proc_holder/spell/aoe_turf/knock - spellname = "knock" - icon_state ="bookknock" - desc = "This book is hard to hold closed properly." - -/obj/item/spellbook/oneuse/knock/recoil(mob/living/user) - ..() - to_chat(user,"You're knocked down!") - user.Knockdown(40) - -/obj/item/spellbook/oneuse/barnyard - spell = /obj/effect/proc_holder/spell/targeted/barnyardcurse - spellname = "barnyard" - icon_state ="bookhorses" - desc = "This book is more horse than your mind has room for." - -/obj/item/spellbook/oneuse/barnyard/recoil(mob/living/carbon/user) - if(ishuman(user)) - to_chat(user,"HOR-SIE HAS RISEN") - var/obj/item/clothing/mask/horsehead/magichead = new /obj/item/clothing/mask/horsehead - magichead.flags_1 |= NODROP_1 //curses! - magichead.flags_inv &= ~HIDEFACE //so you can still see their face - magichead.voicechange = 1 //NEEEEIIGHH - if(!user.dropItemToGround(user.wear_mask)) - qdel(user.wear_mask) - user.equip_to_slot_if_possible(magichead, slot_wear_mask, 1, 1) - qdel(src) - else - to_chat(user,"I say thee neigh") //It still lives here - -/obj/item/spellbook/oneuse/charge - spell = /obj/effect/proc_holder/spell/targeted/charge - spellname = "charging" - icon_state ="bookcharge" - desc = "This book is made of 100% post-consumer wizard." - -/obj/item/spellbook/oneuse/charge/recoil(mob/user) - ..() - to_chat(user,"[src] suddenly feels very warm!") - empulse(src, 1, 1) - -/obj/item/spellbook/oneuse/summonitem - spell = /obj/effect/proc_holder/spell/targeted/summonitem - spellname = "instant summons" - icon_state ="booksummons" - desc = "This book is bright and garish, very hard to miss." - -/obj/item/spellbook/oneuse/summonitem/recoil(mob/user) - ..() - to_chat(user,"[src] suddenly vanishes!") - qdel(src) - -/obj/item/spellbook/oneuse/random - icon_state = "random_book" - -/obj/item/spellbook/oneuse/random/Initialize() - ..() - var/static/banned_spells = list(/obj/item/spellbook/oneuse/mimery_blockade, /obj/item/spellbook/oneuse/mimery_guns) - var/real_type = pick(subtypesof(/obj/item/spellbook/oneuse) - banned_spells) - new real_type(loc) - return INITIALIZE_HINT_QDEL - -/obj/item/spellbook/oneuse/sacredflame - spell = /obj/effect/proc_holder/spell/targeted/sacred_flame - spellname = "sacred flame" - icon_state ="booksacredflame" - desc = "Become one with the flames that burn within... and invite others to do so as well." +/datum/spellbook_entry + var/name = "Entry Name" + + var/spell_type = null + var/desc = "" + var/category = "Offensive" + var/cost = 2 + var/refundable = 1 + var/surplus = -1 // -1 for infinite, not used by anything atm + var/obj/effect/proc_holder/spell/S = null //Since spellbooks can be used by only one person anyway we can track the actual spell + var/buy_word = "Learn" + var/limit //used to prevent a spellbook_entry from being bought more than X times with one wizard spellbook + var/list/no_coexistance_typecache //Used so you can't have specific spells together + +/datum/spellbook_entry/New() + ..() + no_coexistance_typecache = typecacheof(no_coexistance_typecache) + +/datum/spellbook_entry/proc/IsAvailible() // For config prefs / gamemode restrictions - these are round applied + return 1 + +/datum/spellbook_entry/proc/CanBuy(mob/living/carbon/human/user,obj/item/spellbook/book) // Specific circumstances + if(book.uses= aspell.level_max) + to_chat(user, "This spell cannot be improved further.") + return 0 + else + aspell.name = initial(aspell.name) + aspell.spell_level++ + aspell.charge_max = round(initial(aspell.charge_max) - aspell.spell_level * (initial(aspell.charge_max) - aspell.cooldown_min)/ aspell.level_max) + if(aspell.charge_max < aspell.charge_counter) + aspell.charge_counter = aspell.charge_max + switch(aspell.spell_level) + if(1) + to_chat(user, "You have improved [aspell.name] into Efficient [aspell.name].") + aspell.name = "Efficient [aspell.name]" + if(2) + to_chat(user, "You have further improved [aspell.name] into Quickened [aspell.name].") + aspell.name = "Quickened [aspell.name]" + if(3) + to_chat(user, "You have further improved [aspell.name] into Free [aspell.name].") + aspell.name = "Free [aspell.name]" + if(4) + to_chat(user, "You have further improved [aspell.name] into Instant [aspell.name].") + aspell.name = "Instant [aspell.name]" + if(aspell.spell_level >= aspell.level_max) + to_chat(user, "This spell cannot be strengthened any further.") + SSblackbox.record_feedback("nested tally", "wizard_spell_improved", 1, list("[name]", "[aspell.spell_level]")) + return 1 + //No same spell found - just learn it + SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) + user.mind.AddSpell(S) + to_chat(user, "You have learned [S.name].") + return 1 + +/datum/spellbook_entry/proc/CanRefund(mob/living/carbon/human/user,obj/item/spellbook/book) + if(!refundable) + return 0 + if(!S) + S = new spell_type() + for(var/obj/effect/proc_holder/spell/aspell in user.mind.spell_list) + if(initial(S.name) == initial(aspell.name)) + return 1 + return 0 + +/datum/spellbook_entry/proc/Refund(mob/living/carbon/human/user,obj/item/spellbook/book) //return point value or -1 for failure + var/area/wizard_station/A = locate() in GLOB.sortedAreas + if(!(user in A.contents)) + to_chat(user, "You can only refund spells at the wizard lair") + return -1 + if(!S) + S = new spell_type() + var/spell_levels = 0 + for(var/obj/effect/proc_holder/spell/aspell in user.mind.spell_list) + if(initial(S.name) == initial(aspell.name)) + spell_levels = aspell.spell_level + user.mind.spell_list.Remove(aspell) + qdel(S) + return cost * (spell_levels+1) + return -1 +/datum/spellbook_entry/proc/GetInfo() + if(!S) + S = new spell_type() + var/dat ="" + dat += "[initial(S.name)]" + if(S.charge_type == "recharge") + dat += " Cooldown:[S.charge_max/10]" + dat += " Cost:[cost]
" + dat += "[S.desc][desc]
" + dat += "[S.clothes_req?"Needs wizard garb":"Can be cast without wizard garb"]
" + return dat + +/datum/spellbook_entry/fireball + name = "Fireball" + spell_type = /obj/effect/proc_holder/spell/aimed/fireball + +/datum/spellbook_entry/rod_form + name = "Rod Form" + spell_type = /obj/effect/proc_holder/spell/targeted/rod_form + +/datum/spellbook_entry/magicm + name = "Magic Missile" + spell_type = /obj/effect/proc_holder/spell/targeted/projectile/magic_missile + category = "Defensive" + +/datum/spellbook_entry/disintegrate + name = "Disintegrate" + spell_type = /obj/effect/proc_holder/spell/targeted/touch/disintegrate + +/datum/spellbook_entry/disabletech + name = "Disable Tech" + spell_type = /obj/effect/proc_holder/spell/targeted/emplosion/disable_tech + category = "Defensive" + cost = 1 + +/datum/spellbook_entry/repulse + name = "Repulse" + spell_type = /obj/effect/proc_holder/spell/aoe_turf/repulse + category = "Defensive" + +/datum/spellbook_entry/lightningPacket + name = "Lightning bolt! Lightning bolt!" + spell_type = /obj/effect/proc_holder/spell/targeted/conjure_item/spellpacket + category = "Defensive" + +/datum/spellbook_entry/timestop + name = "Time Stop" + spell_type = /obj/effect/proc_holder/spell/aoe_turf/conjure/timestop + category = "Defensive" + +/datum/spellbook_entry/smoke + name = "Smoke" + spell_type = /obj/effect/proc_holder/spell/targeted/smoke + category = "Defensive" + cost = 1 + +/datum/spellbook_entry/blind + name = "Blind" + spell_type = /obj/effect/proc_holder/spell/targeted/trigger/blind + cost = 1 + +/datum/spellbook_entry/mindswap + name = "Mindswap" + spell_type = /obj/effect/proc_holder/spell/targeted/mind_transfer + category = "Mobility" + +/datum/spellbook_entry/forcewall + name = "Force Wall" + spell_type = /obj/effect/proc_holder/spell/targeted/forcewall + category = "Defensive" + cost = 1 + +/datum/spellbook_entry/blink + name = "Blink" + spell_type = /obj/effect/proc_holder/spell/targeted/turf_teleport/blink + category = "Mobility" + +/datum/spellbook_entry/teleport + name = "Teleport" + spell_type = /obj/effect/proc_holder/spell/targeted/area_teleport/teleport + category = "Mobility" + +/datum/spellbook_entry/mutate + name = "Mutate" + spell_type = /obj/effect/proc_holder/spell/targeted/genetic/mutate + +/datum/spellbook_entry/jaunt + name = "Ethereal Jaunt" + spell_type = /obj/effect/proc_holder/spell/targeted/ethereal_jaunt + category = "Mobility" + +/datum/spellbook_entry/knock + name = "Knock" + spell_type = /obj/effect/proc_holder/spell/aoe_turf/knock + category = "Mobility" + cost = 1 + +/datum/spellbook_entry/fleshtostone + name = "Flesh to Stone" + spell_type = /obj/effect/proc_holder/spell/targeted/touch/flesh_to_stone + +/datum/spellbook_entry/summonitem + name = "Summon Item" + spell_type = /obj/effect/proc_holder/spell/targeted/summonitem + category = "Assistance" + cost = 1 + +/datum/spellbook_entry/lichdom + name = "Bind Soul" + spell_type = /obj/effect/proc_holder/spell/targeted/lichdom + category = "Defensive" + +/datum/spellbook_entry/teslablast + name = "Tesla Blast" + spell_type = /obj/effect/proc_holder/spell/targeted/tesla + +/datum/spellbook_entry/lightningbolt + name = "Lightning Bolt" + spell_type = /obj/effect/proc_holder/spell/aimed/lightningbolt + cost = 3 + +/datum/spellbook_entry/lightningbolt/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) //return 1 on success + . = ..() + user.flags_2 |= TESLA_IGNORE_2 + +/datum/spellbook_entry/infinite_guns + name = "Lesser Summon Guns" + spell_type = /obj/effect/proc_holder/spell/targeted/infinite_guns/gun + cost = 3 + no_coexistance_typecache = /obj/effect/proc_holder/spell/targeted/infinite_guns/arcane_barrage + +/datum/spellbook_entry/arcane_barrage + name = "Arcane Barrage" + spell_type = /obj/effect/proc_holder/spell/targeted/infinite_guns/arcane_barrage + cost = 3 + no_coexistance_typecache = /obj/effect/proc_holder/spell/targeted/infinite_guns/gun + +/datum/spellbook_entry/barnyard + name = "Barnyard Curse" + spell_type = /obj/effect/proc_holder/spell/targeted/barnyardcurse + +/datum/spellbook_entry/charge + name = "Charge" + spell_type = /obj/effect/proc_holder/spell/targeted/charge + category = "Assistance" + cost = 1 + +/datum/spellbook_entry/shapeshift + name = "Wild Shapeshift" + spell_type = /obj/effect/proc_holder/spell/targeted/shapeshift + category = "Assistance" + cost = 1 + +/datum/spellbook_entry/spacetime_dist + name = "Spacetime Distortion" + spell_type = /obj/effect/proc_holder/spell/spacetime_dist + category = "Defensive" + cost = 1 + +/datum/spellbook_entry/the_traps + name = "The Traps!" + spell_type = /obj/effect/proc_holder/spell/aoe_turf/conjure/the_traps + category = "Defensive" + cost = 1 + + +/datum/spellbook_entry/item + name = "Buy Item" + refundable = 0 + buy_word = "Summon" + var/item_path= null + + +/datum/spellbook_entry/item/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) + new item_path(get_turf(user)) + SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) + return 1 + +/datum/spellbook_entry/item/GetInfo() + var/dat ="" + dat += "[name]" + dat += " Cost:[cost]
" + dat += "[desc]
" + if(surplus>=0) + dat += "[surplus] left.
" + return dat + +/datum/spellbook_entry/item/staffchange + name = "Staff of Change" + desc = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself." + item_path = /obj/item/gun/magic/staff/change + +/datum/spellbook_entry/item/staffanimation + name = "Staff of Animation" + desc = "An arcane staff capable of shooting bolts of eldritch energy which cause inanimate objects to come to life. This magic doesn't affect machines." + item_path = /obj/item/gun/magic/staff/animate + category = "Assistance" + +/datum/spellbook_entry/item/staffchaos + name = "Staff of Chaos" + desc = "A caprious tool that can fire all sorts of magic without any rhyme or reason. Using it on people you care about is not recommended." + item_path = /obj/item/gun/magic/staff/chaos + +/datum/spellbook_entry/item/spellblade + name = "Spellblade" + desc = "A sword capable of firing blasts of energy which rip targets limb from limb." + item_path = /obj/item/gun/magic/staff/spellblade + +/datum/spellbook_entry/item/staffdoor + name = "Staff of Door Creation" + desc = "A particular staff that can mold solid metal into ornate doors. Useful for getting around in the absence of other transportation. Does not work on glass." + item_path = /obj/item/gun/magic/staff/door + cost = 1 + category = "Mobility" + +/datum/spellbook_entry/item/staffhealing + name = "Staff of Healing" + desc = "An altruistic staff that can heal the lame and raise the dead." + item_path = /obj/item/gun/magic/staff/healing + cost = 1 + category = "Defensive" + +/datum/spellbook_entry/item/scryingorb + name = "Scrying Orb" + desc = "An incandescent orb of crackling energy, using it will allow you to ghost while alive, allowing you to spy upon the station with ease. In addition, buying it will permanently grant you x-ray vision." + item_path = /obj/item/scrying + category = "Defensive" + +/datum/spellbook_entry/item/soulstones + name = "Six Soul Stone Shards and the spell Artificer" + desc = "Soul Stone Shards are ancient tools capable of capturing and harnessing the spirits of the dead and dying. The spell Artificer allows you to create arcane machines for the captured souls to pilot." + item_path = /obj/item/storage/belt/soulstone/full + category = "Assistance" + +/datum/spellbook_entry/item/soulstones/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) + . =..() + if(.) + user.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/construct(null)) + return . + +/datum/spellbook_entry/item/necrostone + name = "A Necromantic Stone" + desc = "A Necromantic stone is able to resurrect three dead individuals as skeletal thralls for you to command." + item_path = /obj/item/device/necromantic_stone + category = "Assistance" + +/datum/spellbook_entry/item/wands + name = "Wand Assortment" + desc = "A collection of wands that allow for a wide variety of utility. Wands have a limited number of charges, so be conservative in use. Comes in a handy belt." + item_path = /obj/item/storage/belt/wands/full + category = "Defensive" + +/datum/spellbook_entry/item/armor + name = "Mastercrafted Armor Set" + desc = "An artefact suit of armor that allows you to cast spells while providing more protection against attacks and the void of space." + item_path = /obj/item/clothing/suit/space/hardsuit/wizard + category = "Defensive" + +/datum/spellbook_entry/item/armor/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) + . = ..() + if(.) + new /obj/item/clothing/shoes/sandal/magic(get_turf(user)) //In case they've lost them. + new /obj/item/clothing/gloves/color/purple(get_turf(user))//To complete the outfit + +/datum/spellbook_entry/item/contract + name = "Contract of Apprenticeship" + desc = "A magical contract binding an apprentice wizard to your service, using it will summon them to your side." + item_path = /obj/item/antag_spawner/contract + category = "Assistance" + +/datum/spellbook_entry/item/guardian + name = "Guardian Deck" + desc = "A deck of guardian tarot cards, capable of binding a personal guardian to your body. There are multiple types of guardian available, but all of them will transfer some amount of damage to you. \ + It would be wise to avoid buying these with anything capable of causing you to swap bodies with others." + item_path = /obj/item/guardiancreator/choose/wizard + category = "Assistance" + +/datum/spellbook_entry/item/guardian/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) + . = ..() + if(.) + new /obj/item/paper/guides/antag/guardian/wizard(get_turf(user)) + +/datum/spellbook_entry/item/bloodbottle + name = "Bottle of Blood" + desc = "A bottle of magically infused blood, the smell of which will attract extradimensional beings when broken. Be careful though, the kinds of creatures summoned by blood magic are indiscriminate in their killing, and you yourself may become a victim." + item_path = /obj/item/antag_spawner/slaughter_demon + limit = 3 + category = "Assistance" + +/datum/spellbook_entry/item/hugbottle + name = "Bottle of Tickles" + desc = "A bottle of magically infused fun, the smell of which will \ + attract adorable extradimensional beings when broken. These beings \ + are similar to slaughter demons, but they do not permamently kill \ + their victims, instead putting them in an extradimensional hugspace, \ + to be released on the demon's death. Chaotic, but not ultimately \ + damaging. The crew's reaction to the other hand could be very \ + destructive." + item_path = /obj/item/antag_spawner/slaughter_demon/laughter + cost = 1 //non-destructive; it's just a jape, sibling! + limit = 3 + category = "Assistance" + +/datum/spellbook_entry/item/mjolnir + name = "Mjolnir" + desc = "A mighty hammer on loan from Thor, God of Thunder. It crackles with barely contained power." + item_path = /obj/item/twohanded/mjollnir + +/datum/spellbook_entry/item/singularity_hammer + name = "Singularity Hammer" + desc = "A hammer that creates an intensely powerful field of gravity where it strikes, pulling everything nearby to the point of impact." + item_path = /obj/item/twohanded/singularityhammer + +/datum/spellbook_entry/item/battlemage + name = "Battlemage Armour" + desc = "An ensorcelled suit of armour, protected by a powerful shield. The shield can completly negate sixteen attacks before being permanently depleted." + item_path = /obj/item/clothing/suit/space/hardsuit/shielded/wizard + limit = 1 + category = "Defensive" + +/datum/spellbook_entry/item/battlemage_charge + name = "Battlemage Armour Charges" + desc = "A powerful defensive rune, it will grant eight additional charges to a suit of battlemage armour." + item_path = /obj/item/wizard_armour_charge + category = "Defensive" + cost = 1 + +/datum/spellbook_entry/item/warpwhistle + name = "Warp Whistle" + desc = "A strange whistle that will transport you to a distant safe place on the station. There is a window of vulnerability at the beginning of every use." + item_path = /obj/item/warpwhistle + category = "Mobility" + cost = 1 + +/datum/spellbook_entry/summon + name = "Summon Stuff" + category = "Rituals" + refundable = 0 + buy_word = "Cast" + var/active = 0 + +/datum/spellbook_entry/summon/CanBuy(mob/living/carbon/human/user,obj/item/spellbook/book) + return ..() && !active + +/datum/spellbook_entry/summon/GetInfo() + var/dat ="" + dat += "[name]" + if(cost>0) + dat += " Cost:[cost]
" + else + dat += " No Cost
" + dat += "[desc]
" + if(active) + dat += "Already cast!
" + return dat + +/datum/spellbook_entry/summon/ghosts + name = "Summon Ghosts" + desc = "Spook the crew out by making them see dead people. Be warned, ghosts are capricious and occasionally vindicative, and some will use their incredibly minor abilties to frustrate you." + cost = 0 + +/datum/spellbook_entry/summon/ghosts/IsAvailible() + if(!SSticker.mode) + return FALSE + else + return TRUE + +/datum/spellbook_entry/summon/ghosts/Buy(mob/living/carbon/human/user, obj/item/spellbook/book) + SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) + new /datum/round_event/wizard/ghost() + active = TRUE + to_chat(user, "You have cast summon ghosts!") + playsound(get_turf(user), 'sound/effects/ghost2.ogg', 50, 1) + return TRUE + +/datum/spellbook_entry/summon/guns + name = "Summon Guns" + desc = "Nothing could possibly go wrong with arming a crew of lunatics just itching for an excuse to kill you. Just be careful not to stand still too long!" + +/datum/spellbook_entry/summon/guns/IsAvailible() + if(!SSticker.mode) // In case spellbook is placed on map + return 0 + return !CONFIG_GET(flag/no_summon_guns) + +/datum/spellbook_entry/summon/guns/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) + SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) + rightandwrong(SUMMON_GUNS, user, 25) + active = 1 + playsound(get_turf(user), 'sound/magic/castsummon.ogg', 50, 1) + to_chat(user, "You have cast summon guns!") + return 1 + +/datum/spellbook_entry/summon/magic + name = "Summon Magic" + desc = "Share the wonders of magic with the crew and show them why they aren't to be trusted with it at the same time." + +/datum/spellbook_entry/summon/magic/IsAvailible() + if(!SSticker.mode) // In case spellbook is placed on map + return 0 + return !CONFIG_GET(flag/no_summon_magic) + +/datum/spellbook_entry/summon/magic/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) + SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) + rightandwrong(SUMMON_MAGIC, user, 25) + active = 1 + playsound(get_turf(user), 'sound/magic/castsummon.ogg', 50, 1) + to_chat(user, "You have cast summon magic!") + return 1 + +/datum/spellbook_entry/summon/events + name = "Summon Events" + desc = "Give Murphy's law a little push and replace all events with special wizard ones that will confound and confuse everyone. Multiple castings increase the rate of these events." + var/times = 0 + +/datum/spellbook_entry/summon/events/IsAvailible() + if(!SSticker.mode) // In case spellbook is placed on map + return 0 + return !CONFIG_GET(flag/no_summon_events) + +/datum/spellbook_entry/summon/events/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) + SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name) + summonevents() + times++ + playsound(get_turf(user), 'sound/magic/castsummon.ogg', 50, 1) + to_chat(user, "You have cast summon events.") + return 1 + +/datum/spellbook_entry/summon/events/GetInfo() + . = ..() + if(times>0) + . += "You cast it [times] times.
" + return . + +/obj/item/spellbook + name = "spell book" + desc = "An unearthly tome that glows with power." + icon = 'icons/obj/library.dmi' + icon_state ="book" + throw_speed = 2 + throw_range = 5 + w_class = WEIGHT_CLASS_TINY + persistence_replacement = /obj/item/spellbook/oneuse/random + var/uses = 10 + var/temp = null + var/tab = null + var/mob/living/carbon/human/owner + var/list/datum/spellbook_entry/entries = list() + var/list/categories = list() + +/obj/item/spellbook/examine(mob/user) + ..() + if(owner) + to_chat(user, "There is a small signature on the front cover: \"[owner]\".") + else + to_chat(user, "It appears to have no author.") + +/obj/item/spellbook/Initialize() + . = ..() + prepare_spells() + +/obj/item/spellbook/proc/prepare_spells() + var/entry_types = subtypesof(/datum/spellbook_entry) - /datum/spellbook_entry/item - /datum/spellbook_entry/summon + for(var/T in entry_types) + var/datum/spellbook_entry/E = new T + if(E.IsAvailible()) + entries |= E + categories |= E.category + else + qdel(E) + tab = categories[1] + +/obj/item/spellbook/attackby(obj/item/O, mob/user, params) + if(istype(O, /obj/item/antag_spawner/contract)) + var/obj/item/antag_spawner/contract/contract = O + if(contract.used) + to_chat(user, "The contract has been used, you can't get your points back now!") + else + to_chat(user, "You feed the contract back into the spellbook, refunding your points.") + uses++ + for(var/datum/spellbook_entry/item/contract/CT in entries) + if(!isnull(CT.limit)) + CT.limit++ + qdel(O) + else if(istype(O, /obj/item/antag_spawner/slaughter_demon)) + to_chat(user, "On second thought, maybe summoning a demon is a bad idea. You refund your points.") + uses++ + for(var/datum/spellbook_entry/item/bloodbottle/BB in entries) + if(!isnull(BB.limit)) + BB.limit++ + qdel(O) + +/obj/item/spellbook/proc/GetCategoryHeader(category) + var/dat = "" + switch(category) + if("Offensive") + dat += "Spells and items geared towards debilitating and destroying.

" + dat += "Items are not bound to you and can be stolen. Additionaly they cannot typically be returned once purchased.
" + dat += "For spells: the number after the spell name is the cooldown time.
" + dat += "You can reduce this number by spending more points on the spell.
" + if("Defensive") + dat += "Spells and items geared towards improving your survivabilty or reducing foes' ability to attack.

" + dat += "Items are not bound to you and can be stolen. Additionaly they cannot typically be returned once purchased.
" + dat += "For spells: the number after the spell name is the cooldown time.
" + dat += "You can reduce this number by spending more points on the spell.
" + if("Mobility") + dat += "Spells and items geared towards improving your ability to move. It is a good idea to take at least one.

" + dat += "Items are not bound to you and can be stolen. Additionaly they cannot typically be returned once purchased.
" + dat += "For spells: the number after the spell name is the cooldown time.
" + dat += "You can reduce this number by spending more points on the spell.
" + if("Assistance") + dat += "Spells and items geared towards bringing in outside forces to aid you or improving upon your other items and abilties.

" + dat += "Items are not bound to you and can be stolen. Additionaly they cannot typically be returned once purchased.
" + dat += "For spells: the number after the spell name is the cooldown time.
" + dat += "You can reduce this number by spending more points on the spell.
" + if("Challenges") + dat += "The Wizard Federation typically has hard limits on the potency and number of spells brought to the station based on risk.
" + dat += "Arming the station against you will increases the risk, but will grant you one more charge for your spellbook.
" + if("Rituals") + dat += "These powerful spells change the very fabric of reality. Not always in your favour.
" + return dat + +/obj/item/spellbook/proc/wrap(content) + var/dat = "" + dat +="Spellbook" + dat += {" + + + + "} + dat += {"[content]"} + return dat + +/obj/item/spellbook/attack_self(mob/user) + if(!owner) + to_chat(user, "You bind the spellbook to yourself.") + owner = user + return + if(user != owner) + to_chat(user, "The [name] does not recognize you as its owner and refuses to open!") + return + user.set_machine(src) + var/dat = "" + + dat += "" + + var/datum/spellbook_entry/E + for(var/i=1,i<=entries.len,i++) + var/spell_info = "" + E = entries[i] + spell_info += E.GetInfo() + if(E.CanBuy(user,src)) + spell_info+= "[E.buy_word]
" + else + spell_info+= "Can't [E.buy_word]
" + if(E.CanRefund(user,src)) + spell_info+= "Refund
" + spell_info += "
" + if(cat_dat[E.category]) + cat_dat[E.category] += spell_info + + for(var/category in categories) + dat += "
" + dat += GetCategoryHeader(category) + dat += cat_dat[category] + dat += "
" + + user << browse(wrap(dat), "window=spellbook;size=700x500") + onclose(user, "spellbook") + return + +/obj/item/spellbook/Topic(href, href_list) + ..() + var/mob/living/carbon/human/H = usr + + if(H.stat || H.restrained()) + return + if(!ishuman(H)) + return 1 + + if(H.mind.special_role == "apprentice") + temp = "If you got caught sneaking a peek from your teacher's spellbook, you'd likely be expelled from the Wizard Academy. Better not." + return + + var/datum/spellbook_entry/E = null + if(loc == H || (in_range(src, H) && isturf(loc))) + H.set_machine(src) + if(href_list["buy"]) + E = entries[text2num(href_list["buy"])] + if(E && E.CanBuy(H,src)) + if(E.Buy(H,src)) + if(E.limit) + E.limit-- + uses -= E.cost + else if(href_list["refund"]) + E = entries[text2num(href_list["refund"])] + if(E && E.refundable) + var/result = E.Refund(H,src) + if(result > 0) + if(!isnull(E.limit)) + E.limit += result + uses += result + else if(href_list["page"]) + tab = sanitize(href_list["page"]) + attack_self(H) + return + +//Single Use Spellbooks// + +/obj/item/spellbook/oneuse + var/spell = /obj/effect/proc_holder/spell/targeted/projectile/magic_missile //just a placeholder to avoid runtimes if someone spawned the generic + var/spellname = "sandbox" + var/used = 0 + name = "spellbook of " + uses = 1 + desc = "This template spellbook was never meant for the eyes of man..." + persistence_replacement = null + +/obj/item/spellbook/oneuse/prepare_spells() + name += spellname + +/obj/item/spellbook/oneuse/attack_self(mob/user) + var/obj/effect/proc_holder/spell/S = new spell + for(var/obj/effect/proc_holder/spell/knownspell in user.mind.spell_list) + if(knownspell.type == S.type) + if(user.mind) + if(iswizard(user)) + to_chat(user,"You're already far more versed in this spell than this flimsy how-to book can provide.") + else + to_chat(user,"You've already read this one.") + return + if(used) + recoil(user) + else + user.mind.AddSpell(S) + to_chat(user,"You rapidly read through the arcane book. Suddenly you realize you understand [spellname]!") + user.log_message("learned the spell [spellname] ([S]).", INDIVIDUAL_ATTACK_LOG) + onlearned(user) + +/obj/item/spellbook/oneuse/proc/recoil(mob/user) + user.visible_message("[src] glows in a black light!") + +/obj/item/spellbook/oneuse/proc/onlearned(mob/user) + used = 1 + user.visible_message("[src] glows dark for a second!") + +/obj/item/spellbook/oneuse/attackby() + return + +/obj/item/spellbook/oneuse/fireball + spell = /obj/effect/proc_holder/spell/aimed/fireball + spellname = "fireball" + icon_state ="bookfireball" + desc = "This book feels warm to the touch." + +/obj/item/spellbook/oneuse/fireball/recoil(mob/user) + ..() + explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2) + qdel(src) + +/obj/item/spellbook/oneuse/smoke + spell = /obj/effect/proc_holder/spell/targeted/smoke + spellname = "smoke" + icon_state ="booksmoke" + desc = "This book is overflowing with the dank arts." + +/obj/item/spellbook/oneuse/smoke/lesser //Chaplain smoke book + spell = /obj/effect/proc_holder/spell/targeted/smoke/lesser + +/obj/item/spellbook/oneuse/smoke/recoil(mob/user) + ..() + to_chat(user,"Your stomach rumbles...") + if(user.nutrition) + user.nutrition -= 200 + if(user.nutrition <= 0) + user.nutrition = 0 + + +/obj/item/spellbook/oneuse/blind + spell = /obj/effect/proc_holder/spell/targeted/trigger/blind + spellname = "blind" + icon_state ="bookblind" + desc = "This book looks blurry, no matter how you look at it." + +/obj/item/spellbook/oneuse/blind/recoil(mob/user) + ..() + to_chat(user,"You go blind!") + user.blind_eyes(10) + +/obj/item/spellbook/oneuse/mindswap + spell = /obj/effect/proc_holder/spell/targeted/mind_transfer + spellname = "mindswap" + icon_state ="bookmindswap" + desc = "This book's cover is pristine, though its pages look ragged and torn." + var/mob/stored_swap = null //Used in used book recoils to store an identity for mindswaps + +/obj/item/spellbook/oneuse/mindswap/onlearned() + spellname = pick("fireball","smoke","blind","forcewall","knock","barnyard","charge") + icon_state = "book[spellname]" + name = "spellbook of [spellname]" //Note, desc doesn't change by design + ..() + +/obj/item/spellbook/oneuse/mindswap/recoil(mob/user) + ..() + if(stored_swap in GLOB.dead_mob_list) + stored_swap = null + if(!stored_swap) + stored_swap = user + to_chat(user,"For a moment you feel like you don't even know who you are anymore.") + return + if(stored_swap == user) + to_chat(user,"You stare at the book some more, but there doesn't seem to be anything else to learn...") + return + + var/obj/effect/proc_holder/spell/targeted/mind_transfer/swapper = new + swapper.cast(user, stored_swap, 1) + + to_chat(stored_swap,"You're suddenly somewhere else... and someone else?!") + to_chat(user,"Suddenly you're staring at [src] again... where are you, who are you?!") + stored_swap = null + +/obj/item/spellbook/oneuse/forcewall + spell = /obj/effect/proc_holder/spell/targeted/forcewall + spellname = "forcewall" + icon_state ="bookforcewall" + desc = "This book has a dedication to mimes everywhere inside the front cover." + +/obj/item/spellbook/oneuse/forcewall/recoil(mob/living/user) + ..() + to_chat(user,"You suddenly feel very solid!") + user.Stun(40, ignore_canstun = TRUE) + user.petrify(30) + +/obj/item/spellbook/oneuse/knock + spell = /obj/effect/proc_holder/spell/aoe_turf/knock + spellname = "knock" + icon_state ="bookknock" + desc = "This book is hard to hold closed properly." + +/obj/item/spellbook/oneuse/knock/recoil(mob/living/user) + ..() + to_chat(user,"You're knocked down!") + user.Knockdown(40) + +/obj/item/spellbook/oneuse/barnyard + spell = /obj/effect/proc_holder/spell/targeted/barnyardcurse + spellname = "barnyard" + icon_state ="bookhorses" + desc = "This book is more horse than your mind has room for." + +/obj/item/spellbook/oneuse/barnyard/recoil(mob/living/carbon/user) + if(ishuman(user)) + to_chat(user,"HOR-SIE HAS RISEN") + var/obj/item/clothing/mask/horsehead/magichead = new /obj/item/clothing/mask/horsehead + magichead.flags_1 |= NODROP_1 //curses! + magichead.flags_inv &= ~HIDEFACE //so you can still see their face + magichead.voicechange = 1 //NEEEEIIGHH + if(!user.dropItemToGround(user.wear_mask)) + qdel(user.wear_mask) + user.equip_to_slot_if_possible(magichead, slot_wear_mask, 1, 1) + qdel(src) + else + to_chat(user,"I say thee neigh") //It still lives here + +/obj/item/spellbook/oneuse/charge + spell = /obj/effect/proc_holder/spell/targeted/charge + spellname = "charging" + icon_state ="bookcharge" + desc = "This book is made of 100% post-consumer wizard." + +/obj/item/spellbook/oneuse/charge/recoil(mob/user) + ..() + to_chat(user,"[src] suddenly feels very warm!") + empulse(src, 1, 1) + +/obj/item/spellbook/oneuse/summonitem + spell = /obj/effect/proc_holder/spell/targeted/summonitem + spellname = "instant summons" + icon_state ="booksummons" + desc = "This book is bright and garish, very hard to miss." + +/obj/item/spellbook/oneuse/summonitem/recoil(mob/user) + ..() + to_chat(user,"[src] suddenly vanishes!") + qdel(src) + +/obj/item/spellbook/oneuse/random + icon_state = "random_book" + +/obj/item/spellbook/oneuse/random/Initialize() + ..() + var/static/banned_spells = list(/obj/item/spellbook/oneuse/mimery_blockade, /obj/item/spellbook/oneuse/mimery_guns) + var/real_type = pick(subtypesof(/obj/item/spellbook/oneuse) - banned_spells) + new real_type(loc) + return INITIALIZE_HINT_QDEL + +/obj/item/spellbook/oneuse/sacredflame + spell = /obj/effect/proc_holder/spell/targeted/sacred_flame + spellname = "sacred flame" + icon_state ="booksacredflame" + desc = "Become one with the flames that burn within... and invite others to do so as well." diff --git a/code/modules/antagonists/wizard/wizard.dm b/code/modules/antagonists/wizard/wizard.dm new file mode 100644 index 0000000000..e447fc46aa --- /dev/null +++ b/code/modules/antagonists/wizard/wizard.dm @@ -0,0 +1,334 @@ +/datum/antagonist/wizard + name = "Space Wizard" + roundend_category = "wizards/witches" + antagpanel_category = "Wizard" + job_rank = ROLE_WIZARD + var/give_objectives = TRUE + var/strip = TRUE //strip before equipping + var/allow_rename = TRUE + var/hud_version = "wizard" + var/datum/team/wizard/wiz_team //Only created if wizard summons apprentices + var/move_to_lair = TRUE + var/outfit_type = /datum/outfit/wizard + var/wiz_age = WIZARD_AGE_MIN /* Wizards by nature cannot be too young. */ + +/datum/antagonist/wizard/on_gain() + register() + if(give_objectives) + create_objectives() + equip_wizard() + if(move_to_lair) + send_to_lair() + . = ..() + if(allow_rename) + rename_wizard() + +/datum/antagonist/wizard/proc/register() + SSticker.mode.wizards |= owner + +/datum/antagonist/wizard/proc/unregister() + SSticker.mode.wizards -= src + +/datum/antagonist/wizard/create_team(datum/team/wizard/new_team) + if(!new_team) + return + if(!istype(new_team)) + stack_trace("Wrong team type passed to [type] initialization.") + wiz_team = new_team + +/datum/antagonist/wizard/get_team() + return wiz_team + +/datum/team/wizard + name = "wizard team" + var/datum/antagonist/wizard/master_wizard + +/datum/antagonist/wizard/proc/create_wiz_team() + wiz_team = new(owner) + wiz_team.name = "[owner.current.real_name] team" + wiz_team.master_wizard = src + update_wiz_icons_added(owner.current) + +/datum/antagonist/wizard/proc/send_to_lair() + if(!owner || !owner.current) + return + if(!GLOB.wizardstart.len) + SSjob.SendToLateJoin(owner.current) + to_chat(owner, "HOT INSERTION, GO GO GO") + owner.current.forceMove(pick(GLOB.wizardstart)) + +/datum/antagonist/wizard/proc/create_objectives() + switch(rand(1,100)) + if(1 to 30) + var/datum/objective/assassinate/kill_objective = new + kill_objective.owner = owner + kill_objective.find_target() + objectives += kill_objective + + if (!(locate(/datum/objective/escape) in owner.objectives)) + var/datum/objective/escape/escape_objective = new + escape_objective.owner = owner + objectives += escape_objective + + if(31 to 60) + var/datum/objective/steal/steal_objective = new + steal_objective.owner = owner + steal_objective.find_target() + objectives += steal_objective + + if (!(locate(/datum/objective/escape) in owner.objectives)) + var/datum/objective/escape/escape_objective = new + escape_objective.owner = owner + objectives += escape_objective + + if(61 to 85) + var/datum/objective/assassinate/kill_objective = new + kill_objective.owner = owner + kill_objective.find_target() + objectives += kill_objective + + var/datum/objective/steal/steal_objective = new + steal_objective.owner = owner + steal_objective.find_target() + objectives += steal_objective + + if (!(locate(/datum/objective/survive) in owner.objectives)) + var/datum/objective/survive/survive_objective = new + survive_objective.owner = owner + objectives += survive_objective + + else + if (!(locate(/datum/objective/hijack) in owner.objectives)) + var/datum/objective/hijack/hijack_objective = new + hijack_objective.owner = owner + objectives += hijack_objective + + for(var/datum/objective/O in objectives) + owner.objectives += O + +/datum/antagonist/wizard/on_removal() + unregister() + for(var/objective in objectives) + owner.objectives -= objective + owner.RemoveAllSpells() // TODO keep track which spells are wizard spells which innate stuff + return ..() + +/datum/antagonist/wizard/proc/equip_wizard() + if(!owner) + return + var/mob/living/carbon/human/H = owner.current + if(!istype(H)) + return + if(strip) + H.delete_equipment() + //Wizards are human by default. Use the mirror if you want something else. + H.set_species(/datum/species/human) + if(H.age < wiz_age) + H.age = wiz_age + H.equipOutfit(outfit_type) + +/datum/antagonist/wizard/greet() + to_chat(owner, "You are the Space Wizard!") + to_chat(owner, "The Space Wizards Federation has given you the following tasks:") + owner.announce_objectives() + to_chat(owner, "You will find a list of available spells in your spell book. Choose your magic arsenal carefully.") + to_chat(owner, "The spellbook is bound to you, and others cannot use it.") + to_chat(owner, "In your pockets you will find a teleport scroll. Use it as needed.") + to_chat(owner,"Remember: do not forget to prepare your spells.") + +/datum/antagonist/wizard/farewell() + to_chat(owner, "You have been brainwashed! You are no longer a wizard!") + +/datum/antagonist/wizard/proc/rename_wizard() + set waitfor = FALSE + + var/wizard_name_first = pick(GLOB.wizard_first) + var/wizard_name_second = pick(GLOB.wizard_second) + var/randomname = "[wizard_name_first] [wizard_name_second]" + var/mob/living/wiz_mob = owner.current + var/newname = copytext(sanitize(input(wiz_mob, "You are the [name]. Would you like to change your name to something else?", "Name change", randomname) as null|text),1,MAX_NAME_LEN) + + if (!newname) + newname = randomname + + wiz_mob.fully_replace_character_name(wiz_mob.real_name, newname) + +/datum/antagonist/wizard/apply_innate_effects(mob/living/mob_override) + var/mob/living/M = mob_override || owner.current + update_wiz_icons_added(M, wiz_team ? TRUE : FALSE) //Don't bother showing the icon if you're solo wizard + M.faction |= "wizard" + +/datum/antagonist/wizard/remove_innate_effects(mob/living/mob_override) + var/mob/living/M = mob_override || owner.current + update_wiz_icons_removed(M) + M.faction -= "wizard" + + +/datum/antagonist/wizard/get_admin_commands() + . = ..() + .["Send to Lair"] = CALLBACK(src,.proc/admin_send_to_lair) + +/datum/antagonist/wizard/proc/admin_send_to_lair(mob/admin) + owner.current.forceMove(pick(GLOB.wizardstart)) + +/datum/antagonist/wizard/apprentice + name = "Wizard Apprentice" + hud_version = "apprentice" + var/datum/mind/master + var/school = APPRENTICE_DESTRUCTION + outfit_type = /datum/outfit/wizard/apprentice + wiz_age = APPRENTICE_AGE_MIN + +/datum/antagonist/wizard/apprentice/greet() + to_chat(owner, "You are [master.current.real_name]'s apprentice! You are bound by magic contract to follow their orders and help them in accomplishing their goals.") + owner.announce_objectives() + +/datum/antagonist/wizard/apprentice/register() + SSticker.mode.apprentices |= owner + +/datum/antagonist/wizard/apprentice/unregister() + SSticker.mode.apprentices -= owner + +/datum/antagonist/wizard/apprentice/equip_wizard() + . = ..() + if(!owner) + return + var/mob/living/carbon/human/H = owner.current + if(!istype(H)) + return + switch(school) + if(APPRENTICE_DESTRUCTION) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/projectile/magic_missile(null)) + owner.AddSpell(new /obj/effect/proc_holder/spell/aimed/fireball(null)) + to_chat(owner, "Your service has not gone unrewarded, however. Studying under [master.current.real_name], you have learned powerful, destructive spells. You are able to cast magic missile and fireball.") + if(APPRENTICE_BLUESPACE) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/area_teleport/teleport(null)) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/ethereal_jaunt(null)) + to_chat(owner, "Your service has not gone unrewarded, however. Studying under [master.current.real_name], you have learned reality bending mobility spells. You are able to cast teleport and ethereal jaunt.") + if(APPRENTICE_HEALING) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/charge(null)) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/forcewall(null)) + H.put_in_hands(new /obj/item/gun/magic/staff/healing(H)) + to_chat(owner, "Your service has not gone unrewarded, however. Studying under [master.current.real_name], you have learned livesaving survival spells. You are able to cast charge and forcewall.") + if(APPRENTICE_ROBELESS) + owner.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/knock(null)) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/mind_transfer(null)) + to_chat(owner, "Your service has not gone unrewarded, however. Studying under [master.current.real_name], you have learned stealthy, robeless spells. You are able to cast knock and mindswap.") + +/datum/antagonist/wizard/apprentice/create_objectives() + var/datum/objective/protect/new_objective = new /datum/objective/protect + new_objective.owner = owner + new_objective.target = master + new_objective.explanation_text = "Protect [master.current.real_name], the wizard." + owner.objectives += new_objective + objectives += new_objective + +//Random event wizard +/datum/antagonist/wizard/apprentice/imposter + name = "Wizard Imposter" + allow_rename = FALSE + move_to_lair = FALSE + +/datum/antagonist/wizard/apprentice/imposter/greet() + to_chat(owner, "You are an imposter! Trick and confuse the crew to misdirect malice from your handsome original!") + owner.announce_objectives() + +/datum/antagonist/wizard/apprentice/imposter/equip_wizard() + var/mob/living/carbon/human/master_mob = master.current + var/mob/living/carbon/human/H = owner.current + if(!istype(master_mob) || !istype(H)) + return + if(master_mob.ears) + H.equip_to_slot_or_del(new master_mob.ears.type, slot_ears) + if(master_mob.w_uniform) + H.equip_to_slot_or_del(new master_mob.w_uniform.type, slot_w_uniform) + if(master_mob.shoes) + H.equip_to_slot_or_del(new master_mob.shoes.type, slot_shoes) + if(master_mob.wear_suit) + H.equip_to_slot_or_del(new master_mob.wear_suit.type, slot_wear_suit) + if(master_mob.head) + H.equip_to_slot_or_del(new master_mob.head.type, slot_head) + if(master_mob.back) + H.equip_to_slot_or_del(new master_mob.back.type, slot_back) + + //Operation: Fuck off and scare people + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/area_teleport/teleport(null)) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/turf_teleport/blink(null)) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/ethereal_jaunt(null)) + +/datum/antagonist/wizard/proc/update_wiz_icons_added(mob/living/wiz,join = TRUE) + var/datum/atom_hud/antag/wizhud = GLOB.huds[ANTAG_HUD_WIZ] + wizhud.join_hud(wiz) + set_antag_hud(wiz, hud_version) + +/datum/antagonist/wizard/proc/update_wiz_icons_removed(mob/living/wiz) + var/datum/atom_hud/antag/wizhud = GLOB.huds[ANTAG_HUD_WIZ] + wizhud.leave_hud(wiz) + set_antag_hud(wiz, null) + + +/datum/antagonist/wizard/academy + name = "Academy Teacher" + outfit_type = /datum/outfit/wizard/academy + +/datum/antagonist/wizard/academy/equip_wizard() + . = ..() + + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/ethereal_jaunt) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/projectile/magic_missile) + owner.AddSpell(new /obj/effect/proc_holder/spell/aimed/fireball) + + var/mob/living/M = owner.current + if(!istype(M)) + return + + var/obj/item/implant/exile/Implant = new/obj/item/implant/exile(M) + Implant.implant(M) + +/datum/antagonist/wizard/academy/create_objectives() + var/datum/objective/new_objective = new("Protect Wizard Academy from the intruders") + new_objective.owner = owner + owner.objectives += new_objective + objectives += new_objective + +//Solo wizard report +/datum/antagonist/wizard/roundend_report() + var/list/parts = list() + + parts += printplayer(owner) + + var/count = 1 + var/wizardwin = 1 + for(var/datum/objective/objective in objectives) + if(objective.check_completion()) + parts += "Objective #[count]: [objective.explanation_text] Success!" + else + parts += "Objective #[count]: [objective.explanation_text] Fail." + wizardwin = 0 + count++ + + if(wizardwin) + parts += "The wizard was successful!" + else + parts += "The wizard has failed!" + + if(owner.spell_list.len>0) + parts += "[owner.name] used the following spells: " + var/list/spell_names = list() + for(var/obj/effect/proc_holder/spell/S in owner.spell_list) + spell_names += S.name + parts += spell_names.Join(", ") + + return parts.Join("
") + +//Wizard with apprentices report +/datum/team/wizard/roundend_report() + var/list/parts = list() + + parts += "Wizards/witches of [master_wizard.owner.name] team were:" + parts += master_wizard.roundend_report() + parts += " " + parts += "[master_wizard.owner.name] apprentices were:" + parts += printplayerlist(members - master_wizard.owner) + + return "
[parts.Join("
")]
" \ No newline at end of file diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm index 84e6233794..b20a395e6d 100644 --- a/code/modules/assembly/flash.dm +++ b/code/modules/assembly/flash.dm @@ -40,7 +40,7 @@ holder.update_icon() /obj/item/device/assembly/flash/proc/clown_check(mob/living/carbon/human/user) - if(user.has_disability(DISABILITY_CLUMSY) && prob(50)) + if(user.has_trait(TRAIT_CLUMSY) && prob(50)) flash_carbon(user, user, 15, 0) return FALSE return TRUE diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm index a61eccbb59..fb37c878a3 100644 --- a/code/modules/assembly/mousetrap.dm +++ b/code/modules/assembly/mousetrap.dm @@ -20,7 +20,7 @@ if(!armed) if(ishuman(usr)) var/mob/living/carbon/human/user = usr - if((user.has_disability(DISABILITY_DUMB) || user.has_disability(DISABILITY_CLUMSY)) && prob(50)) + if((user.has_trait(TRAIT_DUMB) || user.has_trait(TRAIT_CLUMSY)) && prob(50)) to_chat(user, "Your hand slips, setting off the trigger!") pulse(0) update_icon() @@ -76,7 +76,7 @@ if(!armed) to_chat(user, "You arm [src].") else - if((user.has_disability(DISABILITY_DUMB) || user.has_disability(DISABILITY_CLUMSY)) && prob(50)) + if((user.has_trait(TRAIT_DUMB) || user.has_trait(TRAIT_CLUMSY)) && prob(50)) var/which_hand = "l_hand" if(!(user.active_hand_index % 2)) which_hand = "r_hand" @@ -92,7 +92,7 @@ /obj/item/device/assembly/mousetrap/attack_hand(mob/living/carbon/human/user) if(armed) - if((user.has_disability(DISABILITY_DUMB) || user.has_disability(DISABILITY_CLUMSY)) && prob(50)) + if((user.has_trait(TRAIT_DUMB) || user.has_trait(TRAIT_CLUMSY)) && prob(50)) var/which_hand = "l_hand" if(!(user.active_hand_index % 2)) which_hand = "r_hand" diff --git a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm index f2d1a241f2..7c4ca2c85f 100644 --- a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm +++ b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm @@ -98,11 +98,11 @@ var/list/new_overlay_types = tile_graphic() var/list/atmos_overlay_types = src.atmos_overlay_types // Cache for free performance - #if DM_VERSION >= 513 + /*#if DM_VERSION >= 513 #warning 512 is stable now for sure, remove the old code - #endif + #endif*/ - #if DM_VERSION >= 512 + /*#if DM_VERSION >= 512 if (atmos_overlay_types) for(var/overlay in atmos_overlay_types-new_overlay_types) //doesn't remove overlays that would only be added vars["vis_contents"] -= overlay @@ -112,7 +112,7 @@ vars["vis_contents"] += new_overlay_types - atmos_overlay_types //don't add overlays that already exist else vars["vis_contents"] += new_overlay_types - #else + #else*/ if (atmos_overlay_types) for(var/overlay in atmos_overlay_types-new_overlay_types) //doesn't remove overlays that would only be added cut_overlay(overlay) @@ -122,7 +122,7 @@ add_overlay(new_overlay_types - atmos_overlay_types) //don't add overlays that already exist else add_overlay(new_overlay_types) - #endif + //#endif UNSETEMPTY(new_overlay_types) src.atmos_overlay_types = new_overlay_types diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index 6fd846ad66..9880d0ba46 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -98,7 +98,7 @@ /datum/gas/tritium = new/datum/tlv/dangerous, /datum/gas/stimulum = new/datum/tlv/dangerous, /datum/gas/nitryl = new/datum/tlv/dangerous, - /datum/gas/pluoxium = new/datum/tlv/dangerous + /datum/gas/pluoxium = new/datum/tlv(-1, -1, 135, 140) // Partial pressure, kpa ) /obj/machinery/airalarm/server // No checks here. @@ -134,7 +134,7 @@ /datum/gas/tritium = new/datum/tlv/dangerous, /datum/gas/stimulum = new/datum/tlv/dangerous, /datum/gas/nitryl = new/datum/tlv/dangerous, - /datum/gas/pluoxium = new/datum/tlv/dangerous + /datum/gas/pluoxium = new/datum/tlv(-1, -1, 135, 140) // Partial pressure, kpa ) /obj/machinery/airalarm/engine @@ -202,7 +202,7 @@ var/data = list( "locked" = locked, "siliconUser" = user.has_unlimited_silicon_privilege, - "emagged" = emagged, + "emagged" = (obj_flags & EMAGGED ? 1 : 0), "danger_level" = danger_level, ) @@ -288,7 +288,7 @@ data["modes"] += list(list("name" = "Siphon - Siphons air out of the room", "mode" = AALARM_MODE_SIPHON, "selected" = mode == AALARM_MODE_SIPHON, "danger" = 1)) data["modes"] += list(list("name" = "Panic Siphon - Siphons air out of the room quickly","mode" = AALARM_MODE_PANIC, "selected" = mode == AALARM_MODE_PANIC, "danger" = 1)) data["modes"] += list(list("name" = "Off - Shuts off vents and scrubbers", "mode" = AALARM_MODE_OFF, "selected" = mode == AALARM_MODE_OFF, "danger" = 0)) - if(emagged) + if(obj_flags & EMAGGED) data["modes"] += list(list("name" = "Flood - Shuts off scrubbers and opens vents", "mode" = AALARM_MODE_FLOOD, "selected" = mode == AALARM_MODE_FLOOD, "danger" = 1)) var/datum/tlv/selected @@ -756,9 +756,9 @@ update_icon() /obj/machinery/airalarm/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED visible_message("Sparks fly out of [src]!", "You emag [src], disabling its safeties.") playsound(src, "sparks", 50, 1) diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm index 5ba74d59d9..ef62c00f86 100644 --- a/code/modules/atmospherics/machinery/atmosmachinery.dm +++ b/code/modules/atmospherics/machinery/atmosmachinery.dm @@ -17,10 +17,10 @@ Pipelines + Other Objects -> Pipe network idle_power_usage = 0 active_power_usage = 0 power_channel = ENVIRON - on_blueprints = TRUE layer = GAS_PIPE_HIDDEN_LAYER //under wires resistance_flags = FIRE_PROOF max_integrity = 200 + obj_flags = CAN_BE_HIT | ON_BLUEPRINTS var/nodealert = 0 var/can_unwrench = 0 var/initialize_directions = 0 @@ -326,7 +326,7 @@ Pipelines + Other Objects -> Pipe network else if(is_type_in_typecache(src, GLOB.ventcrawl_machinery) && can_crawl_through()) //if we move in a way the pipe can connect, but doesn't - or we're in a vent user.forceMove(loc) user.visible_message("You hear something squeezing through the ducts...","You climb out the ventilation system.") - + user.canmove = FALSE addtimer(VARSET_CALLBACK(user, canmove, TRUE), 1) @@ -345,10 +345,9 @@ Pipelines + Other Objects -> Pipe network return list() /obj/machinery/atmospherics/update_remote_sight(mob/user) - if(isborer(user)) - user.sight |= (SEE_PIXELS) - else - user.sight |= (SEE_TURFS|BLIND) +// if(isborer(user)) +// user.sight |= (SEE_PIXELS) + user.sight |= (SEE_TURFS|BLIND) //Used for certain children of obj/machinery/atmospherics to not show pipe vision when mob is inside it. /obj/machinery/atmospherics/proc/can_see_pipes() diff --git a/code/modules/atmospherics/machinery/datum_pipeline.dm b/code/modules/atmospherics/machinery/datum_pipeline.dm index 9191916d10..f4d8d54805 100644 --- a/code/modules/atmospherics/machinery/datum_pipeline.dm +++ b/code/modules/atmospherics/machinery/datum_pipeline.dm @@ -88,6 +88,8 @@ /datum/pipeline/proc/addMember(obj/machinery/atmospherics/A, obj/machinery/atmospherics/N) if(istype(A, /obj/machinery/atmospherics/pipe)) var/obj/machinery/atmospherics/pipe/P = A + if(P.parent) + merge(P.parent) P.parent = src var/list/adjacent = P.pipeline_expansion() for(var/obj/machinery/atmospherics/pipe/I in adjacent) diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index a10b958db0..2e8d47cf4e 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -275,6 +275,10 @@ /obj/effect/mob_spawn/human/corpse/assistant/spanishflu_infection disease = /datum/disease/fluspanish +/obj/effect/mob_spawn/human/corpse/cargo_tech + name = "Cargo Tech" + outfit = /datum/outfit/job/cargo_tech + /obj/effect/mob_spawn/human/cook name = "Cook" outfit = /datum/outfit/job/cook diff --git a/code/modules/awaymissions/mission_code/Academy.dm b/code/modules/awaymissions/mission_code/Academy.dm index 34144f0c47..118bc9b5df 100644 --- a/code/modules/awaymissions/mission_code/Academy.dm +++ b/code/modules/awaymissions/mission_code/Academy.dm @@ -92,7 +92,7 @@ var/mob/living/current_wizard = null var/next_check = 0 var/cooldown = 600 - var/faction = "wizard" + var/faction = ROLE_WIZARD var/braindead_check = 0 /obj/structure/academy_wizard_spawner/New() @@ -128,13 +128,12 @@ if(!current_wizard) return var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as Wizard Academy Defender?", ROLE_WIZARD, null, ROLE_WIZARD, 50, current_wizard) - var/mob/dead/observer/chosen = null - if(candidates.len) - chosen = pick(candidates) - message_admins("[key_name_admin(chosen)] was spawned as Wizard Academy Defender") + if(LAZYLEN(candidates)) + var/client/C = pick(candidates) + message_admins("[key_name_admin(C)] was spawned as Wizard Academy Defender") current_wizard.ghostize() // on the off chance braindead defender gets back in - current_wizard.key = chosen.key + current_wizard.key = C.key /obj/structure/academy_wizard_spawner/proc/summon_wizard() var/turf/T = src.loc @@ -272,11 +271,10 @@ servant_mind.transfer_to(H) var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [user.real_name] Servant?", ROLE_WIZARD, null, ROLE_WIZARD, 50, H) - var/mob/dead/observer/chosen = null - if(candidates.len) - chosen = pick(candidates) - message_admins("[key_name_admin(chosen)] was spawned as Dice Servant") - H.key = chosen.key + if(LAZYLEN(candidates)) + var/client/C = pick(candidates) + message_admins("[key_name_admin(C)] was spawned as Dice Servant") + H.key = C.key var/obj/effect/proc_holder/spell/targeted/summonmob/S = new S.target_mob = H diff --git a/code/modules/awaymissions/mission_code/Cabin.dm b/code/modules/awaymissions/mission_code/Cabin.dm index c43330d0e6..7b0a3121b6 100644 --- a/code/modules/awaymissions/mission_code/Cabin.dm +++ b/code/modules/awaymissions/mission_code/Cabin.dm @@ -72,7 +72,7 @@ /obj/machinery/recycler/lumbermill name = "lumbermill saw" desc = "Faster then the cartoons!" - emagged = 2 //Always gibs people + obj_flags = CAN_BE_HIT | EMAGGED item_recycle_sound = 'sound/weapons/chainsawhit.ogg' /obj/machinery/recycler/lumbermill/recycle_item(obj/item/grown/log/L) diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm index 4a069f26c0..79ae318d04 100644 --- a/code/modules/awaymissions/mission_code/snowdin.dm +++ b/code/modules/awaymissions/mission_code/snowdin.dm @@ -233,7 +233,7 @@ icon_state = "sleeper" roundstart = FALSE death = FALSE - faction = "syndicate" + faction = ROLE_SYNDICATE outfit = /datum/outfit/snowsyndie flavour_text = {"You are a syndicate operative recently awoken from cyrostatis in an underground outpost. Monitor Nanotrasen communications and record information. All intruders should be disposed of swirfly to assure no gathered information is stolen or lost. Try not to wander too far from the outpost as the caves can be a deadly place even for a trained operative such as yourself."} diff --git a/code/modules/awaymissions/mission_code/wildwest.dm b/code/modules/awaymissions/mission_code/wildwest.dm index 666b7bbbaf..96ea588bfa 100644 --- a/code/modules/awaymissions/mission_code/wildwest.dm +++ b/code/modules/awaymissions/mission_code/wildwest.dm @@ -113,7 +113,7 @@ if("To Kill") to_chat(user, "Your wish is granted, but at a terrible cost...") to_chat(user, "The Wish Granter punishes you for your wickedness, claiming your soul and warping your body to match the darkness in your heart.") - user.mind.special_role = "traitor" + user.mind.special_role = ROLE_TRAITOR var/datum/objective/hijack/hijack = new hijack.owner = user.mind diff --git a/code/modules/awaymissions/zlevel.dm b/code/modules/awaymissions/zlevel.dm index 06af9bf2b9..a96acb027b 100644 --- a/code/modules/awaymissions/zlevel.dm +++ b/code/modules/awaymissions/zlevel.dm @@ -31,7 +31,7 @@ GLOBAL_LIST_INIT(potentialRandomZlevels, generateMapList(filename = "[global.con return ..() /proc/generateMapList(filename) - var/list/potentialMaps = list() + . = list() var/list/Lines = world.file2list(filename) if(!Lines.len) @@ -58,6 +58,4 @@ GLOBAL_LIST_INIT(potentialRandomZlevels, generateMapList(filename = "[global.con if (!name) continue - potentialMaps.Add(t) - - return potentialMaps + . += t diff --git a/code/modules/cargo/console.dm b/code/modules/cargo/console.dm index a41106a49d..a382af0bd8 100644 --- a/code/modules/cargo/console.dm +++ b/code/modules/cargo/console.dm @@ -23,21 +23,24 @@ . = ..() var/obj/item/circuitboard/computer/cargo/board = circuit contraband = board.contraband - emagged = board.emagged + if (board.obj_flags & EMAGGED) + obj_flags |= EMAGGED + else + obj_flags &= ~EMAGGED /obj/machinery/computer/cargo/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return user.visible_message("[user] swipes a suspicious card through [src]!", "You adjust [src]'s routing and receiver spectrum, unlocking special supplies and contraband.") - emagged = TRUE + obj_flags |= EMAGGED contraband = TRUE // This also permamently sets this on the circuit board var/obj/item/circuitboard/computer/cargo/board = circuit board.contraband = TRUE - board.emagged = TRUE + board.obj_flags |= EMAGGED /obj/machinery/computer/cargo/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) @@ -69,7 +72,7 @@ "name" = P.group, "packs" = list() ) - if((P.hidden && !emagged) || (P.contraband && !contraband) || (P.special && !P.special_enabled) || P.DropPodOnly) + if((P.hidden && !(obj_flags & EMAGGED)) || (P.contraband && !contraband) || (P.special && !P.special_enabled) || P.DropPodOnly) continue data["supplies"][P.group]["packs"] += list(list( "name" = P.name, @@ -111,7 +114,10 @@ say(blockade_warning) return if(SSshuttle.supply.getDockedId() == "supply_home") - SSshuttle.supply.emagged = emagged + if (obj_flags & EMAGGED) + SSshuttle.supply.obj_flags |= EMAGGED + else + SSshuttle.supply.obj_flags = (SSshuttle.supply.obj_flags & ~EMAGGED) SSshuttle.supply.contraband = contraband SSshuttle.moveShuttle("supply", "supply_away", TRUE) say("The supply shuttle has departed.") @@ -140,7 +146,7 @@ var/datum/supply_pack/pack = SSshuttle.supply_packs[id] if(!istype(pack)) return - if((pack.hidden && !emagged) || (pack.contraband && !contraband) || pack.DropPodOnly) + if((pack.hidden && !(obj_flags & EMAGGED)) || (pack.contraband && !contraband) || pack.DropPodOnly) return var/name = "*None Provided*" diff --git a/code/modules/cargo/export_scanner.dm b/code/modules/cargo/export_scanner.dm index 79f6b9dfaf..874efd88d5 100644 --- a/code/modules/cargo/export_scanner.dm +++ b/code/modules/cargo/export_scanner.dm @@ -29,7 +29,7 @@ else // Before you fix it: // yes, checking manifests is a part of intended functionality. - var/price = export_item_and_contents(O, cargo_console.contraband, cargo_console.emagged, dry_run=TRUE) + var/price = export_item_and_contents(O, cargo_console.contraband, (cargo_console.obj_flags & EMAGGED), dry_run=TRUE) if(price) to_chat(user, "Scanned [O], value: [price] credits[O.contents.len ? " (contents included)" : ""].") diff --git a/code/modules/cargo/expressconsole.dm b/code/modules/cargo/expressconsole.dm index 66458c4d36..6c4d691d0f 100644 --- a/code/modules/cargo/expressconsole.dm +++ b/code/modules/cargo/expressconsole.dm @@ -20,28 +20,28 @@ /obj/machinery/computer/cargo/express/attackby(obj/item/W, mob/living/user, params) - ..() if((istype(W, /obj/item/card/id) || istype(W, /obj/item/device/pda)) && allowed(user)) locked = !locked to_chat(user, "You [locked ? "lock" : "unlock"] the interface.") - + return else if(istype(W, /obj/item/disk/cargo/bluespace_pod)) podID = 1//doesnt effect circuit board, so that reversal is possible to_chat(user, "You insert the disk into [src], allowing for advanced supply delivery vehicles.") qdel(W) return TRUE + ..() /obj/machinery/computer/cargo/express/emag_act(mob/living/user) - if(emagged) + if(obj_flags & EMAGGED) return user.visible_message("[user] swipes a suspicious card through [src]!", "You change the routing protocols, allowing the Drop Pod to land anywhere on the station.") - emagged = TRUE + obj_flags |= EMAGGED // This also sets this on the circuit board var/obj/item/circuitboard/computer/cargo/board = circuit - board.emagged = TRUE + board.obj_flags |= EMAGGED packin_up() - + /obj/machinery/computer/cargo/express/proc/packin_up() // oh shit, I'm sorry meme_pack_data = list() // sorry for what? for(var/pack in SSshuttle.supply_packs) // our quartermaster taught us not to be ashamed of our supply packs @@ -53,7 +53,7 @@ ) // see, my quartermaster taught me a few things too if((P.hidden) || (P.special)) // like, how not to rip the manifest continue// by using someone else's crate - if(!emagged && P.contraband) // will you show me? + if(!(obj_flags & EMAGGED) && P.contraband) // will you show me? continue // i'd be right happy to meme_pack_data[P.group]["packs"] += list(list( "name" = P.name, @@ -78,15 +78,15 @@ Sales are near-instantaneous - please choose carefully." if(SSshuttle.supplyBlocked) message = blockade_warning - if(emagged) + if(obj_flags & EMAGGED) message = "(&!#@ERROR: ROUTING_#PROTOCOL MALF(*CT#ON. $UG%ESTE@ ACT#0N: !^/PULS3-%E)ET CIR*)ITB%ARD." - + data["message"] = message if(!meme_pack_data) packin_up() stack_trace("You didn't give the cargo tech good advice, and he ripped the manifest. As a result, there was no pack data for [src]") data["supplies"] = meme_pack_data - + return data /obj/machinery/computer/cargo/express/ui_act(action, params, datum/tgui/ui) @@ -110,7 +110,7 @@ var/list/empty_turfs var/area/landingzone var/datum/supply_order/SO = new(pack, name, rank, ckey, reason) - if(!emagged) + if(!(obj_flags & EMAGGED)) if(SO.pack.cost * 2 <= SSshuttle.points) landingzone = locate(/area/quartermaster/storage) in GLOB.sortedAreas for(var/turf/open/floor/T in landingzone.contents) diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index faf1f6da5f..cc2beb3c2a 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -864,7 +864,7 @@ /datum/supply_pack/science group = "Science" crate_type = /obj/structure/closet/crate/science - + /datum/supply_pack/science/bz name = "BZ canister" cost = 4000 @@ -988,9 +988,10 @@ contains = list(/obj/item/pizzabox/margherita, /obj/item/pizzabox/mushroom, /obj/item/pizzabox/meat, - /obj/item/pizzabox/vegetable) + /obj/item/pizzabox/vegetable, + /obj/item/pizzabox/pineapple) crate_name = "pizza crate" - + /datum/supply_pack/organic/cream_piee name = "High-yield Clown-grade Cream Pie Crate" cost = 6000 @@ -1043,6 +1044,14 @@ contains = list(/mob/living/simple_animal/hostile/retaliate/goat) crate_name = "goat crate" +/datum/supply_pack/organic/critter/snake + name = "Snake Crate" + cost = 3000 + contains = list(/mob/living/simple_animal/hostile/retaliate/poison/snake, + /mob/living/simple_animal/hostile/retaliate/poison/snake, + /mob/living/simple_animal/hostile/retaliate/poison/snake) + crate_name = "snake crate" + /datum/supply_pack/organic/critter/chick name = "Chicken Crate" cost = 2000 @@ -1203,7 +1212,8 @@ /obj/item/vending_refill/boozeomat, /obj/item/vending_refill/coffee, /obj/item/vending_refill/coffee, - /obj/item/vending_refill/coffee) + /obj/item/vending_refill/coffee, + /obj/item/book/action_granting/drink_fling) crate_name = "bartending supply crate" /datum/supply_pack/organic/vending/snack diff --git a/code/modules/client/asset_cache.dm b/code/modules/client/asset_cache.dm index 5e21f3736a..03a13e0beb 100644 --- a/code/modules/client/asset_cache.dm +++ b/code/modules/client/asset_cache.dm @@ -368,7 +368,7 @@ GLOBAL_LIST_EMPTY(asset_datums) generic_icon_names = TRUE /datum/asset/simple/icon_states/multiple_icons/pipes - icons = list('icons/obj/atmospherics/pipes/pipe_item.dmi', 'icons/obj/atmospherics/pipes/disposal.dmi') + icons = list('icons/obj/atmospherics/pipes/pipe_item.dmi', 'icons/obj/atmospherics/pipes/disposal.dmi', 'icons/obj/atmospherics/pipes/transit_tube.dmi') prefix = "pipe" /datum/asset/simple/icon_states/multiple_icons/pipes/New() diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index e05d1d06c4..bbb0f1ed3d 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -87,6 +87,8 @@ hsrc = holder if("usr") hsrc = mob + if("mentor") // CITADEL + hsrc = mentor_datum // CITADEL END if("prefs") if (inprefs) return @@ -183,6 +185,7 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) else if(GLOB.deadmins[ckey]) verbs += /client/proc/readmin connecting_admin = TRUE + mentor_datum_set()// Citadel mentor_holder setting //preferences datum - also holds some persistent data for the client (because we may as well keep these datums to a minimum) prefs = GLOB.preferences_datums[ckey] @@ -535,7 +538,11 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) cidcheck[ckey] = computer_id tokens[ckey] = cid_check_reconnect() - sleep(10) //browse is queued, we don't want them to disconnect before getting the browse() command. + sleep(15 SECONDS) //Longer sleep here since this would trigger if a client tries to reconnect manually because the inital reconnect failed + + //we sleep after telling the client to reconnect, so if we still exist something is up + log_access("Forced disconnect: [key] [computer_id] [address] - CID randomizer check") + qdel(src) return TRUE @@ -577,7 +584,11 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) cidcheck[ckey] = computer_id tokens[ckey] = cid_check_reconnect() - sleep(10) //browse is queued, we don't want them to disconnect before getting the browse() command. + sleep(5 SECONDS) //browse is queued, we don't want them to disconnect before getting the browse() command. + + //we sleep after telling the client to reconnect, so if we still exist something is up + log_access("Forced disconnect: [key] [computer_id] [address] - CID randomizer check") + qdel(src) return TRUE diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 006ec5eae4..2bfa169fd7 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -86,6 +86,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) "spines" = "None", "body_markings" = "None", "legs" = "Normal Legs", + "moth_wings" = "Plain", "mcolor2" = "FFF", "mcolor3" = "FFF", "mam_body_markings" = "None", @@ -394,7 +395,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "

Special Role Settings

" - if(jobban_isbanned(user, "Syndicate")) + if(jobban_isbanned(user, ROLE_SYNDICATE)) dat += "You are banned from antagonist roles." src.be_special = list() @@ -472,6 +473,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Ears: [features["ears"]]
" if("legs" in pref_species.mutant_bodyparts) dat += "Legs: [features["legs"]]
" + if("moth_wings" in pref_species.mutant_bodyparts) + dat += "Moth wings[features["moth_wings"]]
" + if("taur" in pref_species.mutant_bodyparts) dat += "Taur: [features["taur"]]
" if("wings" in pref_species.mutant_bodyparts && GLOB.r_wings_list.len >1) @@ -1191,6 +1195,12 @@ GLOBAL_LIST_EMPTY(preferences_datums) new_wings = input(user, "Choose your character's wings:", "Character Preference") as null|anything in GLOB.r_wings_list if(new_wings) features["wings"] = new_wings + + if("moth_wings") + var/new_moth_wings + new_moth_wings = input(user, "Choose your character's wings:", "Character Preference") as null|anything in GLOB.moth_wings_list + if(new_moth_wings) + features["moth_wings"] = new_moth_wings if("frills") var/new_frills @@ -1758,7 +1768,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) character.set_species(chosen_species, icon_update=0) //citadel code - character.give_genitals() + character.give_genitals(TRUE) character.flavor_text = features["flavor_text"] //Let's update their flavor_text at least initially character.canbearoused = arousable diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 8e69c9aaec..723047f1d6 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -335,6 +335,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["feature_lizard_spines"] >> features["spines"] S["feature_lizard_body_markings"] >> features["body_markings"] S["feature_lizard_legs"] >> features["legs"] + S["feature_moth_wings"] >> features["moth_wings"] if(!CONFIG_GET(flag/join_with_mutant_humans)) features["tail_human"] = "none" features["ears"] = "none" @@ -457,6 +458,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car features["spines"] = sanitize_inlist(features["spines"], GLOB.spines_list) features["body_markings"] = sanitize_inlist(features["body_markings"], GLOB.body_markings_list) features["feature_lizard_legs"] = sanitize_inlist(features["legs"], GLOB.legs_list, "Normal Legs") + features["moth_wings"] = sanitize_inlist(features["moth_wings"], GLOB.moth_wings_list, "Plain") joblessrole = sanitize_integer(joblessrole, 1, 3, initial(joblessrole)) job_civilian_high = sanitize_integer(job_civilian_high, 0, 65535, initial(job_civilian_high)) @@ -512,6 +514,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["feature_lizard_spines"] , features["spines"]) WRITE_FILE(S["feature_lizard_body_markings"] , features["body_markings"]) WRITE_FILE(S["feature_lizard_legs"] , features["legs"]) + WRITE_FILE(S["feature_moth_wings"] , features["moth_wings"]) WRITE_FILE(S["human_name"] , custom_names["human"]) WRITE_FILE(S["clown_name"] , custom_names["clown"]) WRITE_FILE(S["mime_name"] , custom_names["mime"]) diff --git a/code/modules/client/verbs/ooc.dm b/code/modules/client/verbs/ooc.dm index 365e9bfde8..2da25dd5df 100644 --- a/code/modules/client/verbs/ooc.dm +++ b/code/modules/client/verbs/ooc.dm @@ -67,6 +67,8 @@ to_chat(C, "OOC: [keyname][holder.fakekey ? "/([holder.fakekey])" : ""]: [msg]") else to_chat(C, "OOC: [holder.fakekey ? holder.fakekey : key]: [msg]") + else if(is_mentor()) // Citadel Mentors + to_chat(C, "OOC: [keyname]: [msg]") // hippie end else if(!(key in C.prefs.ignoring)) to_chat(C, "OOC: [keyname]: [msg]") @@ -247,7 +249,7 @@ GLOBAL_VAR_INIT(normal_ooc_colour, OOC_COLOR) browse_messages(null, usr.ckey, null, TRUE) /client/proc/self_playtime() - set name = "View tracked playtime." + set name = "View tracked playtime" set category = "OOC" set desc = "View the amount of playtime for roles the server has tracked." diff --git a/code/modules/client/verbs/suicide.dm b/code/modules/client/verbs/suicide.dm index c9293a3e46..a6b7156ea8 100644 --- a/code/modules/client/verbs/suicide.dm +++ b/code/modules/client/verbs/suicide.dm @@ -2,7 +2,6 @@ /mob/living/carbon/human/verb/suicide() set hidden = 1 - return if(!canSuicide()) return var/oldkey = ckey @@ -57,11 +56,11 @@ suicide_message = pick("[src] is attempting to push [p_their()] own head off [p_their()] shoulders! It looks like [p_theyre()] trying to commit suicide.", \ "[src] is pushing [p_their()] thumbs into [p_their()] eye sockets! It looks like [p_theyre()] trying to commit suicide.", \ "[src] is ripping [p_their()] own arms off! It looks like [p_theyre()] trying to commit suicide.")//heheh get it? - if(a_intent == INTENT_GRAB) + if(a_intent == INTENT_GRAB) suicide_message = pick("[src] is attempting to pull [p_their()] own head off! It looks like [p_theyre()] trying to commit suicide.", \ "[src] is aggressively grabbing [p_their()] own neck! It looks like [p_theyre()] trying to commit suicide.", \ "[src] is pulling [p_their()] eyes out of their sockets! It looks like [p_theyre()] trying to commit suicide.") - if(a_intent == INTENT_HELP) + if(a_intent == INTENT_HELP) suicide_message = pick("[src] is hugging [p_them()]self to death! It looks like [p_theyre()] trying to commit suicide.", \ "[src] is high-fiving [p_them()]self to death! It looks like [p_theyre()] trying to commit suicide.", \ "[src] is getting too high on life! It looks like [p_theyre()] trying to commit suicide.") @@ -189,7 +188,7 @@ if(!canmove || restrained()) //just while I finish up the new 'fun' suiciding verb. This is to prevent metagaming via suicide to_chat(src, "You can't commit suicide whilst restrained! ((You can type Ghost instead however.))") return - if(has_brain_worms()) - to_chat(src, "You can't bring yourself to commit suicide!") - return +// if(has_brain_worms()) +// to_chat(src, "You can't bring yourself to commit suicide!") +// return return TRUE diff --git a/code/modules/client/verbs/who.dm b/code/modules/client/verbs/who.dm index a32da8ab69..8b9ea8f2e8 100644 --- a/code/modules/client/verbs/who.dm +++ b/code/modules/client/verbs/who.dm @@ -84,6 +84,6 @@ continue //Don't show afk admins to adminwho if(!C.holder.fakekey) msg += "\t[C] is a [C.holder.rank]\n" - msg += "Adminhelps are also sent to IRC. If no admins are available in game adminhelp anyways and an admin on IRC will see it and respond." + msg += "Adminhelps are also sent to Discord. If no admins are available in game adminhelp anyways and an admin on Discord will see it and respond." to_chat(src, msg) diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index ee02702862..60595220d7 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -409,17 +409,17 @@ item_color = "black" desc = "A pair of black shoes." flags_1 = NOSLIP_1 - + /obj/item/clothing/shoes/chameleon/noslip/broken/Initialize() . = ..() - chameleon_action.emp_randomise(INFINITY) - + chameleon_action.emp_randomise(INFINITY) + /obj/item/gun/energy/laser/chameleon name = "practice laser gun" desc = "A modified version of the basic laser gun, this one fires less concentrated energy bolts designed for target practice." ammo_type = list(/obj/item/ammo_casing/energy/chameleon) clumsy_check = 0 - needs_permit = 0 + item_flags = NONE pin = /obj/item/device/firing_pin cell_type = /obj/item/stock_parts/cell/bluespace @@ -431,6 +431,8 @@ var/list/ammo_copy_vars var/list/gun_copy_vars var/badmin_mode = FALSE + var/can_hitscan = FALSE + var/hitscan_mode = FALSE var/static/list/blacklisted_vars = list("locs", "loc", "contents", "x", "y", "z") /obj/item/gun/energy/laser/chameleon/Initialize() @@ -441,7 +443,7 @@ chameleon_action.chameleon_blacklist = typecacheof(/obj/item/gun/magic, ignore_root_path = FALSE) chameleon_action.initialize_disguises() - projectile_copy_vars = list("name", "icon", "icon_state", "item_state", "speed", "color", "hitsound", "forcedodge", "impact_effect_type", "range", "suppressed", "hitsound_wall", "impact_effect_type", "pass_flags") + projectile_copy_vars = list("name", "icon", "icon_state", "item_state", "speed", "color", "hitsound", "forcedodge", "impact_effect_type", "range", "suppressed", "hitsound_wall", "impact_effect_type", "pass_flags", "tracer_type", "muzzle_type", "impact_type") chameleon_projectile_vars = list("name" = "practice laser", "icon" = 'icons/obj/projectiles.dmi', "icon_state" = "laser") gun_copy_vars = list("fire_sound", "burst_size", "fire_delay") chameleon_gun_vars = list() @@ -493,6 +495,11 @@ if(istype(chambered, /obj/item/ammo_casing/energy/chameleon)) var/obj/item/ammo_casing/energy/chameleon/AC = chambered AC.projectile_vars = chameleon_projectile_vars.Copy() + if(!P.tracer_type) + can_hitscan = FALSE + set_hitscan(FALSE) + else + can_hitscan = TRUE if(badmin_mode) qdel(chambered.BB) chambered.projectile_type = P.type @@ -529,6 +536,22 @@ var/obj/item/ammo_casing/AC = new /obj/item/ammo_casing/syringegun(src) set_chameleon_ammo(AC) +/obj/item/gun/energy/laser/chameleon/attack_self(mob/user) + . = ..() + if(!can_hitscan) + to_chat(user, "[src]'s current disguised gun does not allow it to enable high velocity mode!") + return + if(!chambered) + to_chat(user, "Unknown error in energy lens: Please reset chameleon disguise and try again.") + return + set_hitscan(!hitscan_mode) + to_chat(user, "You toggle [src]'s high velocity beam mode to [hitscan_mode? "on" : "off"].") + +/obj/item/gun/energy/laser/chameleon/proc/set_hitscan(hitscan) + var/obj/item/ammo_casing/energy/chameleon/AC = chambered + AC.hitscan_mode = hitscan + hitscan_mode = hitscan + /obj/item/gun/energy/laser/chameleon/proc/get_chameleon_projectile(guntype) reset_chameleon_vars() var/obj/item/gun/G = new guntype(src) diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index 7a9a4a2a29..84d2613082 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -45,7 +45,7 @@ /obj/item/clothing/glasses/proc/thermal_overload() if(ishuman(src.loc)) var/mob/living/carbon/human/H = src.loc - if(!(H.has_disability(DISABILITY_BLIND))) + if(!(H.has_trait(TRAIT_BLIND))) if(H.glasses == src) to_chat(H, "[src] overloads and blinds you!") H.flash_act(visual = 1) diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index 4d59a893ea..626bf4f542 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -17,15 +17,15 @@ H.remove_hud_from(user) /obj/item/clothing/glasses/hud/emp_act(severity) - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED desc = "[desc] The display is flickering slightly." /obj/item/clothing/glasses/hud/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED to_chat(user, "PZZTTPFFFT") desc = "[desc] The display is flickering slightly." diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 3bd255c058..43ea1928fc 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -59,8 +59,8 @@ /obj/item/clothing/head/hardhat/cakehat/turn_on() ..() - force = 15 - throwforce = 15 + force = 1 + throwforce = 1 damtype = BURN hitsound = 'sound/items/welder.ogg' START_PROCESSING(SSobj, src) diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm index 011e21c372..7d81e2d005 100644 --- a/code/modules/clothing/neck/_neck.dm +++ b/code/modules/clothing/neck/_neck.dm @@ -66,7 +66,7 @@ var/obj/item/organ/heart/heart = M.getorganslot(ORGAN_SLOT_HEART) var/obj/item/organ/lungs/lungs = M.getorganslot(ORGAN_SLOT_LUNGS) - if(!(M.stat == DEAD || (M.status_flags&FAKEDEATH))) + if(!(M.stat == DEAD || (M.has_trait(TRAIT_FAKEDEATH)))) if(heart && istype(heart)) heart_strength = "an unstable" if(heart.beating) diff --git a/code/modules/clothing/spacesuits/flightsuit.dm b/code/modules/clothing/spacesuits/flightsuit.dm index 681ba3e789..f515dacc74 100644 --- a/code/modules/clothing/spacesuits/flightsuit.dm +++ b/code/modules/clothing/spacesuits/flightsuit.dm @@ -435,7 +435,7 @@ var/nopass = FALSE if(!A.density) return TRUE - nopass = (A.locked || A.stat || A.emagged || A.welded) + nopass = (A.locked || A.stat || (A.obj_flags & EMAGGED) || A.welded) if(A.requiresID()) if((!A.allowed(wearer)) && !A.emergency) nopass = TRUE diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm index 1ff8c65d4b..43b30b383e 100644 --- a/code/modules/clothing/suits/_suits.dm +++ b/code/modules/clothing/suits/_suits.dm @@ -7,6 +7,7 @@ slot_flags = SLOT_OCLOTHING var/blood_overlay_type = "suit" var/togglename = null + var/suittoggled = FALSE /obj/item/clothing/suit/worn_overlays(isinhands = FALSE) @@ -28,4 +29,4 @@ ..() if(ismob(loc)) var/mob/M = loc - M.update_inv_wear_suit() \ No newline at end of file + M.update_inv_wear_suit() diff --git a/code/modules/clothing/suits/toggles.dm b/code/modules/clothing/suits/toggles.dm index f0f2a5af1f..d036710ce4 100644 --- a/code/modules/clothing/suits/toggles.dm +++ b/code/modules/clothing/suits/toggles.dm @@ -4,7 +4,6 @@ actions_types = list(/datum/action/item_action/toggle_hood) var/obj/item/clothing/head/hooded/hood var/hoodtype = /obj/item/clothing/head/hooded/winterhood //so the chaplain hoodie or other hoodies can override this - hooded = 1 /obj/item/clothing/suit/hooded/New() MakeHood() diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm index 49364e76d9..30105fecac 100644 --- a/code/modules/clothing/under/accessories.dm +++ b/code/modules/clothing/under/accessories.dm @@ -28,8 +28,13 @@ pixel_y -= 8 U.add_overlay(src) - for(var/armor_type in armor) - U.armor[armor_type] += armor[armor_type] + if (islist(U.armor)) // This proc can run before /obj/Initialize has run for U and src, + U.armor = getArmor(arglist(U.armor)) // we have to check that the armor list has been transformed into a datum before we try to call a proc on it + // This is safe to do as /obj/Initialize only handles setting up the datum if actually needed. + if (islist(armor)) + armor = getArmor(arglist(armor)) + + U.armor = U.armor.attachArmor(armor) if(isliving(user)) on_uniform_equip(U, user) @@ -42,8 +47,7 @@ pockets.forceMove(src) U.pockets = null - for(var/armor_type in armor) - U.armor[armor_type] -= armor[armor_type] + U.armor = U.armor.detachArmor(armor) if(isliving(user)) on_uniform_dropped(U, user) diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index ca161e25af..c68e5c2722 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -548,6 +548,26 @@ result = /obj/structure/bonfire category = CAT_PRIMAL +/datum/crafting_recipe/headpike + name = "Spike Head (Glass Spear)" + time = 65 + reqs = list(/obj/item/twohanded/spear = 1, + /obj/item/bodypart/head = 1) + parts = list(/obj/item/bodypart/head = 1, + /obj/item/twohanded/spear = 1) + result = /obj/structure/headpike + category = CAT_PRIMAL + +/datum/crafting_recipe/headpikebone + name = "Spike Head (Bone Spear)" + time = 65 + reqs = list(/obj/item/twohanded/bonespear = 1, + /obj/item/bodypart/head = 1) + parts = list(/obj/item/bodypart/head = 1, + /obj/item/twohanded/bonespear = 1) + result = /obj/structure/headpike/bone + category = CAT_PRIMAL + /datum/crafting_recipe/smallcarton name = "Small Carton" result = /obj/item/reagent_containers/food/drinks/sillycup/smallcarton diff --git a/code/modules/error_handler/error_handler.dm b/code/modules/error_handler/error_handler.dm index 06ff548e42..d0064d7f99 100644 --- a/code/modules/error_handler/error_handler.dm +++ b/code/modules/error_handler/error_handler.dm @@ -116,10 +116,17 @@ GLOBAL_VAR_INIT(total_runtimes_skipped, 0) if(GLOB.error_cache) GLOB.error_cache.log_error(E, desclines) - SEND_TEXT(world.log, "\[[time_stamp()]] Runtime in [E.file],[E.line]: [E]") + var/main_line = "\[[time_stamp()]] Runtime in [E.file],[E.line]: [E]" + SEND_TEXT(world.log, main_line) for(var/line in desclines) SEND_TEXT(world.log, line) +#ifdef UNIT_TESTS + if(GLOB.current_test) + //good day, sir + GLOB.current_test.Fail("[main_line]\n[desclines.Join("\n")]") +#endif + /* This logs the runtime in the old format */ E.name = "\n\[[time2text(world.timeofday,"hh:mm:ss")]\][E.name]" diff --git a/code/modules/events/abductor.dm b/code/modules/events/abductor.dm index 0777161a1f..9835538206 100755 --- a/code/modules/events/abductor.dm +++ b/code/modules/events/abductor.dm @@ -12,7 +12,7 @@ fakeable = FALSE //Nothing to fake here /datum/round_event/ghost_role/abductor/spawn_role() - var/list/mob/dead/observer/candidates = get_candidates("abductor", null, ROLE_ABDUCTOR) + var/list/mob/dead/observer/candidates = get_candidates(ROLE_ABDUCTOR, null, ROLE_ABDUCTOR) if(candidates.len < 2) return NOT_ENOUGH_PLAYERS diff --git a/code/modules/events/alien_infestation.dm b/code/modules/events/alien_infestation.dm index c34c219882..87b12ad4cf 100644 --- a/code/modules/events/alien_infestation.dm +++ b/code/modules/events/alien_infestation.dm @@ -51,7 +51,7 @@ message_admins("An event attempted to spawn an alien but no suitable vents were found. Shutting down.") return MAP_ERROR - var/list/candidates = get_candidates("alien", null, ROLE_ALIEN) + var/list/candidates = get_candidates(ROLE_ALIEN, null, ROLE_ALIEN) if(!candidates.len) return NOT_ENOUGH_PLAYERS diff --git a/code/modules/events/blob.dm b/code/modules/events/blob.dm index e75752adcc..72e500db1c 100644 --- a/code/modules/events/blob.dm +++ b/code/modules/events/blob.dm @@ -19,7 +19,7 @@ /datum/round_event/ghost_role/blob/spawn_role() if(!GLOB.blobstart.len) return MAP_ERROR - var/list/candidates = get_candidates("blob", null, ROLE_BLOB) + var/list/candidates = get_candidates(ROLE_BLOB, null, ROLE_BLOB) if(!candidates.len) return NOT_ENOUGH_PLAYERS var/mob/dead/observer/new_blob = pick(candidates) diff --git a/code/modules/events/devil.dm b/code/modules/events/devil.dm index 467973bc95..83c6dcb83d 100644 --- a/code/modules/events/devil.dm +++ b/code/modules/events/devil.dm @@ -19,7 +19,7 @@ return MAP_ERROR //selecting a candidate player - var/list/candidates = get_candidates("devil", null, ROLE_DEVIL) + var/list/candidates = get_candidates(ROLE_DEVIL, null, ROLE_DEVIL) if(!candidates.len) return NOT_ENOUGH_PLAYERS @@ -53,7 +53,7 @@ /proc/create_devil_mind(key) var/datum/mind/Mind = new /datum/mind(key) - Mind.assigned_role = "devil" - Mind.special_role = "devil" + Mind.assigned_role = ROLE_DEVIL + Mind.special_role = ROLE_DEVIL SSticker.mode.devils |= Mind return Mind diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm index f2e3104ab8..c8b8db0681 100644 --- a/code/modules/events/disease_outbreak.dm +++ b/code/modules/events/disease_outbreak.dm @@ -51,7 +51,7 @@ var/datum/disease/D if(!advanced_virus) if(virus_type == /datum/disease/dnaspread) //Dnaspread needs strain_data set to work. - if(!H.dna || (H.has_disability(DISABILITY_BLIND))) //A blindness disease would be the worst. + if(!H.dna || (H.has_trait(TRAIT_BLIND))) //A blindness disease would be the worst. continue D = new virus_type() var/datum/disease/dnaspread/DS = D diff --git a/code/modules/events/electrical_storm.dm b/code/modules/events/electrical_storm.dm index 12e1f255e6..d887ebda6e 100644 --- a/code/modules/events/electrical_storm.dm +++ b/code/modules/events/electrical_storm.dm @@ -19,18 +19,15 @@ var/list/epicentreList = list() for(var/i=1, i <= lightsoutAmount, i++) - var/list/possibleEpicentres = list() - for(var/obj/effect/landmark/lightsout/newEpicentre in GLOB.landmarks_list) - if(!(newEpicentre in epicentreList)) - possibleEpicentres += newEpicentre - if(possibleEpicentres.len) - epicentreList += pick(possibleEpicentres) - else - break + var/turf/T = find_safe_turf() + if(istype(T)) + epicentreList += T if(!epicentreList.len) return - for(var/obj/effect/landmark/epicentre in epicentreList) - for(var/obj/machinery/power/apc/apc in urange(lightsoutRange, epicentre)) - apc.overload_lighting() + for(var/centre in epicentreList) + for(var/a in GLOB.apcs_list) + var/obj/machinery/power/apc/A = a + if(get_dist(centre, A) <= lightsoutRange) + A.overload_lighting() diff --git a/code/modules/events/holiday/xmas.dm b/code/modules/events/holiday/xmas.dm index 93d0b4edb5..8986c6a44b 100644 --- a/code/modules/events/holiday/xmas.dm +++ b/code/modules/events/holiday/xmas.dm @@ -75,10 +75,9 @@ /datum/round_event/santa/start() var/list/candidates = pollGhostCandidates("Santa is coming to town! Do you want to be Santa?", poll_time=150) if(LAZYLEN(candidates)) - var/mob/dead/observer/Z = pick(candidates) + var/client/C = pick(candidates) santa = new /mob/living/carbon/human(pick(GLOB.blobstart)) - santa.key = Z.key - qdel(Z) + santa.key = C.key santa.equipOutfit(/datum/outfit/santa) santa.update_icons() diff --git a/code/modules/events/nightmare.dm b/code/modules/events/nightmare.dm index 94014027fd..1a6c99d6ed 100644 --- a/code/modules/events/nightmare.dm +++ b/code/modules/events/nightmare.dm @@ -10,7 +10,7 @@ fakeable = FALSE /datum/round_event/ghost_role/nightmare/spawn_role() - var/list/candidates = get_candidates("alien", null, ROLE_ALIEN) + var/list/candidates = get_candidates(ROLE_ALIEN, null, ROLE_ALIEN) if(!candidates.len) return NOT_ENOUGH_PLAYERS diff --git a/code/modules/events/operative.dm b/code/modules/events/operative.dm index e0e3b98776..424888f99b 100644 --- a/code/modules/events/operative.dm +++ b/code/modules/events/operative.dm @@ -10,7 +10,7 @@ fakeable = FALSE /datum/round_event/ghost_role/operative/spawn_role() - var/list/candidates = get_candidates("operative", null, ROLE_OPERATIVE) + var/list/candidates = get_candidates(ROLE_OPERATIVE, null, ROLE_OPERATIVE) if(!candidates.len) return NOT_ENOUGH_PLAYERS diff --git a/code/modules/events/pirates.dm b/code/modules/events/pirates.dm index b94f7dd9eb..2ec6422bb2 100644 --- a/code/modules/events/pirates.dm +++ b/code/modules/events/pirates.dm @@ -188,7 +188,7 @@ name = "pirate shuttle navigation computer" desc = "Used to designate a precise transit location for the pirate shuttle." shuttleId = "pirateship" - station_lock_override = TRUE + lock_override = CAMERA_LOCK_STATION shuttlePortId = "pirateship_custom" shuttlePortName = "custom location" x_offset = 9 diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index 5e91160575..6c96504144 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -2,6 +2,7 @@ name = "Clogged Vents" typepath = /datum/round_event/vent_clog weight = 35 + max_occurrences = 1 /datum/round_event/vent_clog announceWhen = 1 @@ -9,10 +10,7 @@ endWhen = 35 var/interval = 2 var/list/vents = list() - var/list/gunk = list("water","carbon","flour","radium","toxin","cleaner","nutriment","condensedcapsaicin","mushroomhallucinogen","lube", - "plantbgone","banana","charcoal","space_drugs","morphine","holywater","ethanol","hot_coco","sacid") - -/datum/round_event/vent_clog/announce(fake) +/datum/round_event/vent_clog/announce() priority_announce("The scrubbers network is experiencing a backpressure surge. Some ejection of contents may occur.", "Atmospherics alert") @@ -20,30 +18,23 @@ endWhen = rand(25, 100) for(var/obj/machinery/atmospherics/components/unary/vent_scrubber/temp_vent in GLOB.machines) if(is_station_level(temp_vent.loc.z) && !temp_vent.welded) - var/datum/pipeline/temp_vent_parent = temp_vent.parents[1] - if(temp_vent_parent.other_atmosmch.len > 20) - vents += temp_vent + vents += temp_vent if(!vents.len) return kill() -/datum/round_event/vent_clog/tick() - if(activeFor % interval == 0) - var/obj/machinery/atmospherics/components/unary/vent = pick_n_take(vents) - while(vent && vent.welded) - vent = pick_n_take(vents) - +/datum/round_event/vent_clog/start() + for(var/obj/machinery/atmospherics/components/unary/vent in vents) if(vent && vent.loc) - var/datum/reagents/R = new/datum/reagents(50) + var/datum/reagents/R = new/datum/reagents(1000) R.my_atom = vent - R.add_reagent(pick(gunk), 50) + R.add_reagent(get_random_reagent_id(), 1000) - var/datum/effect_system/smoke_spread/chem/smoke = new - smoke.set_up(R, 1, vent, silent = 1) - playsound(vent.loc, 'sound/effects/smoke.ogg', 50, 1, -3) - smoke.start() - qdel(R) + var/datum/effect_system/foam_spread/long/foam = new + foam.set_up(200, get_turf(vent), R) + foam.start() var/cockroaches = prob(33) ? 3 : 0 while(cockroaches) new /mob/living/simple_animal/cockroach(get_turf(vent)) cockroaches-- + CHECK_TICK diff --git a/code/modules/events/wizard/rpgloot.dm b/code/modules/events/wizard/rpgloot.dm index d1dd3bac80..7254583b17 100644 --- a/code/modules/events/wizard/rpgloot.dm +++ b/code/modules/events/wizard/rpgloot.dm @@ -109,7 +109,6 @@ I.force = max(0,I.force + quality_mod) I.throwforce = max(0,I.throwforce + quality_mod) - for(var/value in I.armor) - I.armor[value] += quality + I.armor = I.armor.modifyAllRatings(quality) rename() diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index dfa6315b04..407870073d 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -68,12 +68,7 @@ //If they have a hat/helmet and the user is targeting their head. if(istype(H.head, /obj/item/clothing/head) && affecting == "head") - - // If their head has an armor value, assign headarmor to it, else give it 0. - if(H.head.armor["melee"]) - headarmor = H.head.armor["melee"] - else - headarmor = 0 + headarmor = H.head.armor.melee else headarmor = 0 diff --git a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm index 263d592303..a91d5a6a7b 100644 --- a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm +++ b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm @@ -10,7 +10,7 @@ max_integrity = 20 spillable = TRUE resistance_flags = ACID_PROOF - unique_rename = 1 + obj_flags = UNIQUE_RENAME /obj/item/reagent_containers/food/drinks/drinkingglass/on_reagent_change(changetype) cut_overlays() diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm index 7d83788f9d..353bfc6538 100644 --- a/code/modules/food_and_drinks/food/customizables.dm +++ b/code/modules/food_and_drinks/food/customizables.dm @@ -15,7 +15,6 @@ bitesize = 4 w_class = WEIGHT_CLASS_SMALL volume = 80 - unique_rename = 1 var/ingMax = 12 var/list/ingredients = list() diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index b0e2067be0..cb5e3c6248 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -5,7 +5,7 @@ icon_state = null lefthand_file = 'icons/mob/inhands/misc/food_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/food_righthand.dmi' - unique_rename = 1 + obj_flags = UNIQUE_RENAME grind_results = list() //To let them be ground up to transfer their reagents var/bitesize = 2 var/bitecount = 0 diff --git a/code/modules/food_and_drinks/food/snacks/meat.dm b/code/modules/food_and_drinks/food/snacks/meat.dm index e43309892d..7cee86bd38 100644 --- a/code/modules/food_and_drinks/food/snacks/meat.dm +++ b/code/modules/food_and_drinks/food/snacks/meat.dm @@ -108,6 +108,13 @@ tastes = list("maggots" = 1, "the inside of a reactor" = 1) foodtype = MEAT | RAW | GROSS +/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/moth + icon_state = "mothmeat" + desc = "Unpleasantly powdery and dry. Kind of pretty, though." + filling_color = "#BF896B" + tastes = list("dust" = 1, "powder" = 1, "meat" = 2) + foodtype = MEAT | RAW + /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/skeleton name = "bone" icon_state = "skeletonmeat" @@ -119,14 +126,13 @@ /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/zombie name = " meat (rotten)" - icon_state = "lizardmeat" //Close enough. + icon_state = "rottenmeat" desc = "Halfway to becoming fertilizer for your garden." filling_color = "#6B8E23" tastes = list("brains" = 1, "meat" = 1) foodtype = RAW | MEAT | TOXIC - ////////////////////////////////////// OTHER MEATS //////////////////////////////////////////////////////// @@ -164,7 +170,7 @@ cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/killertomato slice_path = /obj/item/reagent_containers/food/snacks/meat/rawcutlet/killertomato tastes = list("tomato" = 1) - foodtype = VEGETABLES + foodtype = FRUIT /obj/item/reagent_containers/food/snacks/meat/slab/bear name = "bear meat" @@ -275,7 +281,7 @@ /obj/item/reagent_containers/food/snacks/meat/steak/killertomato name = "killer tomato steak" tastes = list("tomato" = 1) - foodtype = VEGETABLES + foodtype = FRUIT /obj/item/reagent_containers/food/snacks/meat/steak/bear name = "bear steak" @@ -338,7 +344,7 @@ name = "raw killer tomato cutlet" cooked_type = /obj/item/reagent_containers/food/snacks/meat/cutlet/killertomato tastes = list("tomato" = 1) - foodtype = VEGETABLES + foodtype = FRUIT /obj/item/reagent_containers/food/snacks/meat/rawcutlet/bear name = "raw bear cutlet" @@ -377,7 +383,7 @@ /obj/item/reagent_containers/food/snacks/meat/cutlet/killertomato name = "killer tomato cutlet" tastes = list("tomato" = 1) - foodtype = VEGETABLES + foodtype = FRUIT /obj/item/reagent_containers/food/snacks/meat/cutlet/bear name = "bear cutlet" diff --git a/code/modules/food_and_drinks/food/snacks_other.dm b/code/modules/food_and_drinks/food/snacks_other.dm index 9398ec2bfe..a674a20c96 100644 --- a/code/modules/food_and_drinks/food/snacks_other.dm +++ b/code/modules/food_and_drinks/food/snacks_other.dm @@ -552,3 +552,11 @@ gender = PLURAL tastes = list("batter" = 3, "onion" = 1) foodtype = VEGETABLES + +/obj/item/reagent_containers/food/snacks/pineappleslice + name = "pineapple slice" + desc = "A sliced piece of juicy pineapple." + icon_state = "pineapple_slice" + filling_color = "#F6CB0B" + tastes = list("pineapple" = 1) + foodtype = FRUIT diff --git a/code/modules/food_and_drinks/food/snacks_pizza.dm b/code/modules/food_and_drinks/food/snacks_pizza.dm index f12e6a8869..058dfe2086 100644 --- a/code/modules/food_and_drinks/food/snacks_pizza.dm +++ b/code/modules/food_and_drinks/food/snacks_pizza.dm @@ -139,6 +139,23 @@ tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1) foodtype = GRAIN | VEGETABLES | DAIRY +/obj/item/reagent_containers/food/snacks/pizza/pineapple + name = "\improper Hawaiian pizza" + desc = "The pizza equivalent of Einstein's riddle." + icon_state = "pineapplepizza" + slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/pineapple + bonus_reagents = list("nutriment" = 6, "vitamin" = 6) + tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "pineapples" = 2, "ham" = 2) + foodtype = GRAIN | VEGETABLES | DAIRY | MEAT | FRUIT + +/obj/item/reagent_containers/food/snacks/pizzaslice/pineapple + name = "\improper Hawaiian pizza slice" + desc = "A slice of delicious controversy." + icon_state = "pineapplepizzaslice" + filling_color = "#FF4500" + tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "pineapples" = 2, "ham" = 2) + foodtype = GRAIN | VEGETABLES | DAIRY | MEAT | FRUIT + /obj/item/reagent_containers/food/snacks/pizzaslice/custom name = "pizza slice" icon_state = "pizzamargheritaslice" diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index cefa8ce0ac..cfbc95d7c0 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -222,7 +222,7 @@ component_parts = null /obj/machinery/smartfridge/drying_rack/on_deconstruction() - new /obj/item/stack/sheet/mineral/wood(loc, 10) + new /obj/item/stack/sheet/mineral/wood(drop_location(), 10) ..() /obj/machinery/smartfridge/drying_rack/RefreshParts() @@ -297,7 +297,7 @@ update_icon() /obj/machinery/smartfridge/drying_rack/proc/rack_dry() - for(var/obj/item/reagent_containers/food/snacks/S in contents) + for(var/obj/item/reagent_containers/food/snacks/S in src) if(S.dried_type == S.type)//if the dried type is the same as the object's type, don't bother creating a whole new item... S.add_atom_colour("#ad7257", FIXED_COLOUR_PRIORITY) S.dry = TRUE @@ -307,8 +307,8 @@ new dried(drop_location()) qdel(S) return TRUE - for(var/obj/item/stack/sheet/wetleather/WL in contents) - var/obj/item/stack/sheet/leather/L = new(loc) + for(var/obj/item/stack/sheet/wetleather/WL in src) + var/obj/item/stack/sheet/leather/L = new(drop_location()) L.amount = WL.amount qdel(WL) return TRUE diff --git a/code/modules/food_and_drinks/pizzabox.dm b/code/modules/food_and_drinks/pizzabox.dm index b1c1a8495c..0ae07a6d3b 100644 --- a/code/modules/food_and_drinks/pizzabox.dm +++ b/code/modules/food_and_drinks/pizzabox.dm @@ -31,7 +31,7 @@ /obj/item/pizzabox/Initialize() . = ..() update_icon() - + /obj/item/pizzabox/Destroy() unprocess() @@ -276,7 +276,6 @@ pizza = new /obj/item/reagent_containers/food/snacks/pizza/vegetable(src) boxtag = "Gourmet Vegatable" - /obj/item/pizzabox/mushroom/Initialize() . = ..() pizza = new /obj/item/reagent_containers/food/snacks/pizza/mushroom(src) @@ -286,3 +285,8 @@ . = ..() pizza = new /obj/item/reagent_containers/food/snacks/pizza/meat(src) boxtag = "Meatlover's Supreme" + +/obj/item/pizzabox/pineapple/Initialize() + . = ..() + pizza = new /obj/item/reagent_containers/food/snacks/pizza/pineapple(src) + boxtag = "Honolulu Chew" diff --git a/code/modules/food_and_drinks/recipes/drinks_recipes.dm b/code/modules/food_and_drinks/recipes/drinks_recipes.dm index a5c21aa0f5..bc894488b2 100644 --- a/code/modules/food_and_drinks/recipes/drinks_recipes.dm +++ b/code/modules/food_and_drinks/recipes/drinks_recipes.dm @@ -547,4 +547,12 @@ name = "eggnog" id = "eggnog" results = list("eggnog" = 15) - required_reagents = list("rum" = 5, "cream" = 5, "eggyolk" = 5) \ No newline at end of file + required_reagents = list("rum" = 5, "cream" = 5, "eggyolk" = 5) + +/datum/chemical_reaction/narsour + name = "Nar'sour" + id = "narsour" + results = list("narsour" = 1) + required_reagents = list("blood" = 1, "lemonjuice" = 1, "demonsblood" = 1) + mix_message = "The mixture develops a sinister glow." + mix_sound = 'sound/effects/singlebeat.ogg' diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pizza.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pizza.dm index 08df285374..27654a0702 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pizza.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pizza.dm @@ -77,3 +77,15 @@ ) result = /obj/item/reagent_containers/food/snacks/pizza/sassysage subcategory = CAT_PIZZA + +/datum/crafting_recipe/food/pineapplepizza + name = "Hawaiian pizza" + reqs = list( + /obj/item/reagent_containers/food/snacks/pizzabread = 1, + /obj/item/reagent_containers/food/snacks/meat/cutlet = 2, + /obj/item/reagent_containers/food/snacks/pineappleslice = 3, + /obj/item/reagent_containers/food/snacks/cheesewedge = 1, + /obj/item/reagent_containers/food/snacks/grown/tomato = 1 + ) + result = /obj/item/reagent_containers/food/snacks/pizza/pineapple + subcategory = CAT_PIZZA diff --git a/code/modules/goonchat/browserassets/css/browserOutput.css b/code/modules/goonchat/browserassets/css/browserOutput.css index f766491d02..d2f81e497e 100644 --- a/code/modules/goonchat/browserassets/css/browserOutput.css +++ b/code/modules/goonchat/browserassets/css/browserOutput.css @@ -10,7 +10,7 @@ html, body { color: #000000; } body { - background: #fff; + background: #E0E0E0; /*CIT CHANGE - darkens chatbox a lil*/ font-family: Verdana, sans-serif; font-size: 9pt; line-height: 1.2; @@ -318,6 +318,11 @@ h1.alert, h2.alert {color: #000000;} .green {color: #03ff39;} .shadowling {color: #3b2769;} .cult {color: #960000;} + +.cultitalic {color: #960000; font-style: italic;} +.cultbold {color: #960000; font-style: italic; font-weight: bold;} +.cultboldtalic {color: #960000; font-weight: bold; font-size: 24px;} + .cultlarge {color: #960000; font-weight: bold; font-size: 24px;} .narsie {color: #960000; font-weight: bold; font-size: 120px;} .narsiesmall {color: #960000; font-weight: bold; font-size: 48px;} diff --git a/code/modules/holiday/easter.dm b/code/modules/holiday/easter.dm index 9c1fd87cac..60ae204f92 100644 --- a/code/modules/holiday/easter.dm +++ b/code/modules/holiday/easter.dm @@ -1,7 +1,3 @@ -//Easter start -/datum/holiday/easter/greet() - return "Greetings! Have a Happy Easter and keep an eye out for Easter Bunnies!" - /datum/round_event_control/easter name = "Easter Eggselence" holidayID = EASTER diff --git a/code/modules/holiday/holidays.dm b/code/modules/holiday/holidays.dm index f4734d9506..7759243a56 100644 --- a/code/modules/holiday/holidays.dm +++ b/code/modules/holiday/holidays.dm @@ -8,7 +8,8 @@ var/begin_week = FALSE //If set to a number, then this holiday will begin on certain week var/begin_weekday = FALSE //If set to a weekday, then this will trigger the holiday on the above week var/always_celebrate = FALSE // for christmas neverending, or testing. - + var/current_year = 0 + var/year_offset = 0 var/obj/item/drone_hat //If this is defined, drones without a default hat will spawn with this one during the holiday; check drones_as_items.dm to see this used // This proc gets run before the game starts when the holiday is activated. Do festive shit here. @@ -447,50 +448,12 @@ Since Ramadan is an entire month that lasts 29.5 days on average, the start and var/const/days_extra = 1 /datum/holiday/easter/shouldCelebrate(dd, mm, yy, ww, ddd) -// Easter's celebration day is as snowflakey as Uhangi's code - if(!begin_month) + current_year = text2num(time2text(world.timeofday, "YYYY")) + var/list/easterResults = EasterDate(current_year+year_offset) - var/yy_string = "[yy]" -// year = days after March 22that Easter falls on that year. -// For 2015 Easter is on April 5th, so 2015 = 14 since the 5th is 14 days past the 22nd -// If it's 2040 and this is still in use, invent a time machine and teach me a better way to do this. Also tell us about HL3. - var/list/easters = list( - "15" = 14,\ - "16" = 6,\ - "17" = 25,\ - "18" = 10,\ - "19" = 30,\ - "20" = 22,\ - "21" = 13,\ - "22" = 26,\ - "23" = 18,\ - "24" = 9,\ - "25" = 29,\ - "26" = 14,\ - "27" = 6,\ - "28" = 25,\ - "29" = 10,\ - "30" = 30,\ - "31" = 23,\ - "32" = 6,\ - "33" = 26,\ - "34" = 18,\ - "35" = 3,\ - "36" = 22,\ - "37" = 14,\ - "38" = 34,\ - "39" = 19,\ - "40" = 9,\ - ) - - begin_day = easters[yy_string] - if(begin_day <= 9) - begin_day += 22 - begin_month = MARCH - else - begin_day -= 9 - begin_month = APRIL + begin_day = easterResults["day"] + begin_month = easterResults["month"] end_day = begin_day + days_extra end_month = begin_month @@ -513,3 +476,9 @@ Since Ramadan is an entire month that lasts 29.5 days on average, the start and GLOB.maintenance_loot += list( /obj/item/reagent_containers/food/snacks/egg/loaded = 15, /obj/item/storage/bag/easterbasket = 15) + +/datum/holiday/easter/greet() + return "Greetings! Have a Happy Easter and keep an eye out for Easter Bunnies!" + +/datum/holiday/easter/getStationPrefix() + return pick("Fluffy","Bunny","Easter","Egg") diff --git a/code/modules/holodeck/computer.dm b/code/modules/holodeck/computer.dm index 97b610a5d2..a55a5e1657 100644 --- a/code/modules/holodeck/computer.dm +++ b/code/modules/holodeck/computer.dm @@ -90,7 +90,7 @@ var/list/data = list() data["default_programs"] = program_cache - if(emagged) + if(obj_flags & EMAGGED) data["emagged"] = TRUE data["emag_programs"] = emag_programs data["program"] = program @@ -111,10 +111,10 @@ if(A) load_program(A) if("safety") - emagged = !emagged - if(emagged && program && emag_programs[program.name]) + obj_flags ^= EMAGGED + if((obj_flags & EMAGGED) && program && emag_programs[program.name]) emergency_shutdown() - nerf(emagged) + nerf(obj_flags & EMAGGED) /obj/machinery/computer/holodeck/process() if(damaged && prob(10)) @@ -138,7 +138,7 @@ T.ex_act(EXPLODE_LIGHT) T.hotspot_expose(1000,500,1) - if(!emagged) + if(!(obj_flags & EMAGGED)) for(var/item in spawned) if(!(get_turf(item) in linked)) derez(item, 0) @@ -149,17 +149,17 @@ active_power_usage = 50 + spawned.len * 3 + effects.len * 5 /obj/machinery/computer/holodeck/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return if(!LAZYLEN(emag_programs)) to_chat(user, "[src] does not seem to have a card swipe port. It must be an inferior model.") return playsound(src, "sparks", 75, 1) - emagged = TRUE + obj_flags |= EMAGGED to_chat(user, "You vastly increase projector power and override the safety and security protocols.") to_chat(user, "Warning. Automatic shutoff and derezing protocols have been corrupted. Please call Nanotrasen maintenance and do not use the simulator.") log_game("[key_name(user)] emagged the Holodeck Control Console") - nerf(!emagged) + nerf(!(obj_flags & EMAGGED)) /obj/machinery/computer/holodeck/emp_act(severity) emergency_shutdown() @@ -245,7 +245,7 @@ // note nerfing does not yet work on guns, should // should also remove/limit/filter reagents? // this is an exercise left to others I'm afraid. -Sayu - spawned = A.copy_contents_to(linked, 1, nerf_weapons = !emagged) + spawned = A.copy_contents_to(linked, 1, nerf_weapons = !(obj_flags & EMAGGED)) for(var/obj/machinery/M in spawned) M.flags_1 |= NODECONSTRUCT_1 for(var/obj/structure/S in spawned) @@ -270,7 +270,7 @@ /obj/machinery/computer/holodeck/proc/derez(obj/O, silent = TRUE, forced = FALSE) // Emagging a machine creates an anomaly in the derez systems. - if(O && emagged && !stat && !forced) + if(O && (obj_flags & EMAGGED) && !stat && !forced) if((ismob(O) || ismob(O.loc)) && prob(50)) addtimer(CALLBACK(src, .proc/derez, O, silent), 50) // may last a disturbingly long time return diff --git a/code/modules/holodeck/holo_effect.dm b/code/modules/holodeck/holo_effect.dm index 25667706ab..b870ad4c30 100644 --- a/code/modules/holodeck/holo_effect.dm +++ b/code/modules/holodeck/holo_effect.dm @@ -32,7 +32,7 @@ /obj/effect/holodeck_effect/cards/activate(var/obj/machinery/computer/holodeck/HC) D = new(loc) - safety(!HC.emagged) + safety(!(HC.obj_flags & EMAGGED)) D.holo = HC return D diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm index fa1e25a6d4..70f6f225ec 100644 --- a/code/modules/hydroponics/gene_modder.dm +++ b/code/modules/hydroponics/gene_modder.dm @@ -45,7 +45,7 @@ min_wrate = FLOOR(10-wratemod,1) // 7,5,2,0 Clamps at 0 and 10 You want this low min_wchance = 67-(ML.rating*16) // 48,35,19,3 Clamps at 0 and 67 You want this low for(var/obj/item/circuitboard/machine/plantgenes/vaultcheck in component_parts) - if(istype(vaultcheck, /obj/item/circuitboard/machine/plantgenes/vault)) // DISABILITY_DUMB BOTANY TUTS + if(istype(vaultcheck, /obj/item/circuitboard/machine/plantgenes/vault)) // TRAIT_DUMB BOTANY TUTS max_potency = 100 max_yield = 10 min_production = 1 @@ -420,7 +420,7 @@ materials = list(MAT_METAL=30, MAT_GLASS=10) var/datum/plant_gene/gene var/read_only = 0 //Well, it's still a floppy disk - unique_rename = 1 + obj_flags = UNIQUE_RENAME /obj/item/disk/plantgene/Initialize() . = ..() diff --git a/code/modules/hydroponics/grown/chili.dm b/code/modules/hydroponics/grown/chili.dm index 382efa2a26..88cb95dedd 100644 --- a/code/modules/hydroponics/grown/chili.dm +++ b/code/modules/hydroponics/grown/chili.dm @@ -25,7 +25,7 @@ icon_state = "chilipepper" filling_color = "#FF0000" bitesize_mod = 2 - foodtype = VEGETABLES + foodtype = FRUIT // Ice Chili /obj/item/seeds/chili/ice @@ -49,7 +49,7 @@ icon_state = "icepepper" filling_color = "#0000CD" bitesize_mod = 2 - foodtype = VEGETABLES + foodtype = FRUIT // Ghost Chili /obj/item/seeds/chili/ghost @@ -75,7 +75,7 @@ var/mob/living/carbon/human/held_mob filling_color = "#F8F8FF" bitesize_mod = 4 - foodtype = VEGETABLES + foodtype = FRUIT /obj/item/reagent_containers/food/snacks/grown/ghost_chili/attack_hand(mob/user) ..() diff --git a/code/modules/hydroponics/grown/cocoa_vanilla.dm b/code/modules/hydroponics/grown/cocoa_vanilla.dm index f872758a65..c53709480a 100644 --- a/code/modules/hydroponics/grown/cocoa_vanilla.dm +++ b/code/modules/hydroponics/grown/cocoa_vanilla.dm @@ -25,7 +25,7 @@ icon_state = "cocoapod" filling_color = "#FFD700" bitesize_mod = 2 - foodtype = VEGETABLES + foodtype = FRUIT // Vanilla Pod /obj/item/seeds/cocoapod/vanillapod @@ -45,4 +45,4 @@ desc = "Fattening... Mmmmm... vanilla." icon_state = "vanillapod" filling_color = "#FFD700" - foodtype = VEGETABLES + foodtype = FRUIT diff --git a/code/modules/hydroponics/grown/pineapple.dm b/code/modules/hydroponics/grown/pineapple.dm new file mode 100644 index 0000000000..443190942a --- /dev/null +++ b/code/modules/hydroponics/grown/pineapple.dm @@ -0,0 +1,33 @@ +// Pineapple! +/obj/item/seeds/pineapple + name = "pack of pineapple seeds" + desc = "Oooooooooooooh!" + icon_state = "seed-pineapple" + species = "pineapple" + plantname = "Pineapple Plant" + product = /obj/item/reagent_containers/food/snacks/grown/pineapple + lifespan = 40 + endurance = 30 + growthstages = 3 + growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' + genes = list(/datum/plant_gene/trait/repeated_harvest) + mutatelist = list(/obj/item/seeds/apple) + reagents_add = list("vitamin" = 0.02, "nutriment" = 0.2, "water" = 0.04) + +/obj/item/reagent_containers/food/snacks/grown/pineapple + seed = /obj/item/seeds/pineapple + name = "pineapples" + desc = "Blorble." + icon_state = "pineapple" + force = 4 + throwforce = 8 + hitsound = 'sound/weapons/bladeslice.ogg' + attack_verb = list("stung", "pined") + throw_speed = 1 + throw_range = 5 + slice_path = /obj/item/reagent_containers/food/snacks/pineappleslice + slices_num = 3 + filling_color = "#F6CB0B" + w_class = WEIGHT_CLASS_NORMAL + foodtype = FRUIT + tastes = list("pineapple" = 1) diff --git a/code/modules/hydroponics/grown/pumpkin.dm b/code/modules/hydroponics/grown/pumpkin.dm index 7113a8feab..2b0ffddfe7 100644 --- a/code/modules/hydroponics/grown/pumpkin.dm +++ b/code/modules/hydroponics/grown/pumpkin.dm @@ -23,7 +23,7 @@ icon_state = "pumpkin" filling_color = "#FFA500" bitesize_mod = 2 - foodtype = VEGETABLES + foodtype = FRUIT juice_results = list("pumpkinjuice" = 0) /obj/item/reagent_containers/food/snacks/grown/pumpkin/attackby(obj/item/W as obj, mob/user as mob, params) @@ -54,5 +54,5 @@ icon_state = "blumpkin" filling_color = "#87CEFA" bitesize_mod = 2 - foodtype = VEGETABLES + foodtype = FRUIT juice_results = list("blumpkinjuice" = 0) diff --git a/code/modules/hydroponics/grown/tomato.dm b/code/modules/hydroponics/grown/tomato.dm index 4d066e769e..0f5b969b3b 100644 --- a/code/modules/hydroponics/grown/tomato.dm +++ b/code/modules/hydroponics/grown/tomato.dm @@ -22,7 +22,7 @@ splat_type = /obj/effect/decal/cleanable/tomato_smudge filling_color = "#FF6347" bitesize_mod = 2 - foodtype = VEGETABLES + foodtype = FRUIT grind_results = list("ketchup" = 0) juice_results = list("tomatojuice" = 0) @@ -45,7 +45,7 @@ icon_state = "bloodtomato" splat_type = /obj/effect/gibspawner/generic filling_color = "#FF0000" - foodtype = VEGETABLES | GROSS + foodtype = FRUIT | GROSS grind_results = list("ketchup" = 0, "blood" = 0) diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index c46fb92feb..8fc5c43bcc 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -5,7 +5,7 @@ density = TRUE anchored = TRUE pixel_y = 8 - unique_rename = 1 + obj_flags = CAN_BE_HIT | UNIQUE_RENAME circuit = /obj/item/circuitboard/machine/hydroponics var/waterlevel = 100 //The amount of water in the tray (max 100) var/maxwater = 100 //The maximum amount of water in the tray diff --git a/code/modules/jobs/job_exp.dm b/code/modules/jobs/job_exp.dm index 534e530e17..52b4a5de32 100644 --- a/code/modules/jobs/job_exp.dm +++ b/code/modules/jobs/job_exp.dm @@ -271,4 +271,4 @@ GLOBAL_PROTECT(exp_to_update) prefs.db_flags = text2num(flags_read.item[1]) else if(isnull(prefs.db_flags)) prefs.db_flags = 0 //This PROBABLY won't happen, but better safe than sorry. - return TRUE \ No newline at end of file + return TRUE diff --git a/code/modules/jobs/job_types/cargo_service.dm b/code/modules/jobs/job_types/cargo_service.dm index 441a88a3bd..ee44a16db5 100644 --- a/code/modules/jobs/job_types/cargo_service.dm +++ b/code/modules/jobs/job_types/cargo_service.dm @@ -163,7 +163,7 @@ Bartender ears = /obj/item/device/radio/headset/headset_srv uniform = /obj/item/clothing/under/rank/bartender suit = /obj/item/clothing/suit/armor/vest - backpack_contents = list(/obj/item/storage/box/beanbag=1) + backpack_contents = list(/obj/item/storage/box/beanbag=1,/obj/item/book/action_granting/drink_fling=1) shoes = /obj/item/clothing/shoes/laceup /* diff --git a/code/modules/jobs/job_types/civilian.dm b/code/modules/jobs/job_types/civilian.dm index 5ab8249215..67bc2143f8 100644 --- a/code/modules/jobs/job_types/civilian.dm +++ b/code/modules/jobs/job_types/civilian.dm @@ -152,7 +152,7 @@ Curator return H.grant_all_languages(omnitongue=TRUE) - + H.gain_trauma(/datum/brain_trauma/mild/phobia, FALSE, "snakes") //why does it have to be snakes... /* Lawyer */ diff --git a/code/modules/jobs/jobs.dm b/code/modules/jobs/jobs.dm index b5ec8fa27a..54a5b402db 100644 --- a/code/modules/jobs/jobs.dm +++ b/code/modules/jobs/jobs.dm @@ -57,7 +57,7 @@ GLOBAL_LIST_INIT(security_positions, list( GLOBAL_LIST_INIT(nonhuman_positions, list( "AI", "Cyborg", - "pAI")) + ROLE_PAI)) GLOBAL_LIST_INIT(exp_jobsmap, list( EXP_TYPE_CREW = list("titles" = command_positions | engineering_positions | medical_positions | science_positions | supply_positions | security_positions | civilian_positions | list("AI","Cyborg")), // crew positions diff --git a/code/modules/keybindings/bindings_admin.dm b/code/modules/keybindings/bindings_admin.dm index 812bb95784..44cbb796fb 100644 --- a/code/modules/keybindings/bindings_admin.dm +++ b/code/modules/keybindings/bindings_admin.dm @@ -1,5 +1,8 @@ /datum/admins/key_down(_key, client/user) switch(_key) + if("F3") + user.get_admin_say() + return if("F5") user.admin_ghost() return diff --git a/code/modules/keybindings/bindings_client.dm b/code/modules/keybindings/bindings_client.dm index 42febe5428..548a734f74 100644 --- a/code/modules/keybindings/bindings_client.dm +++ b/code/modules/keybindings/bindings_client.dm @@ -6,7 +6,7 @@ keys_held[_key] = world.time var/movement = SSinput.movement_keys[_key] - if(!(next_move_dir_sub & movement)) + if(!(next_move_dir_sub & movement) && !keys_held["Ctrl"]) next_move_dir_add |= movement // Client-level keybindings are ones anyone should be able to do at any time diff --git a/code/modules/language/moth.dm b/code/modules/language/moth.dm index 0b7523c27d..e69de29bb2 100644 --- a/code/modules/language/moth.dm +++ b/code/modules/language/moth.dm @@ -1,12 +0,0 @@ -/datum/language/moth - name = "Lepidopterian" - desc = "The common language of moths, composed of various noises made of wing fluttering and clicks." - speech_verb = "flutters" - ask_verb = "clicks" - exclaim_verb = "buzzes" - key = "m" - space_chance = 45 - syllables = list("bz", "ba", "mah", "fa", "ki", "nr") - default_priority = 90 - - icon_state = "moth" diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index 35d87ce30e..269c6ad13f 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -214,7 +214,7 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums dat += "5. Upload New Title to Archive
" dat += "6. Upload Scanned Title to Newscaster
" dat += "7. Print Corporate Materials
" - if(src.emagged) + if(obj_flags & EMAGGED) dat += "8. Access the Forbidden Lore Vault
" if(src.arcanecheckout) print_forbidden_lore(user) @@ -304,7 +304,7 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums dat += "(Return to main menu)
" if(8) dat += "

Accessing Forbidden Lore Vault v 1.3

" - dat += "Are you absolutely sure you want to proceed? EldritchTomes Inc. takes no responsibilities for loss of sanity resulting from this action.

" + dat += "Are you absolutely sure you want to proceed? EldritchRelics Inc. takes no responsibilities for loss of sanity resulting from this action.

" dat += "Yes.
" dat += "No.
" @@ -322,11 +322,11 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums var/spook = pick("blood", "brass") var/turf/T = get_turf(src) if(spook == "blood") - new /obj/item/tome(T) + new /obj/item/melee/cultblade/dagger(T) else new /obj/item/clockwork/slab(T) - to_chat(user, "Your sanity barely endures the seconds spent in the vault's browsing window. The only thing to remind you of this when you stop browsing is a [spook == "blood" ? "dusty old tome" : "strange metal tablet"] sitting on the desk. You don't really remember printing it.[spook == "brass" ? " And how did it print something made of metal?" : ""]") + to_chat(user, "Your sanity barely endures the seconds spent in the vault's browsing window. The only thing to remind you of this when you stop browsing is a [spook == "blood" ? "sinister dagger" : "strange metal tablet"] sitting on the desk. You don't even remember where it came from...") user.visible_message("[user] stares at the blank screen for a few moments, [user.p_their()] expression frozen in fear. When [user.p_they()] finally awaken[user.p_s()] from it, [user.p_they()] look[user.p_s()] a lot older.", 2) /obj/machinery/computer/libraryconsole/bookmanagement/attackby(obj/item/W, mob/user, params) @@ -339,8 +339,8 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums return ..() /obj/machinery/computer/libraryconsole/bookmanagement/emag_act(mob/user) - if(density && !emagged) - emagged = TRUE + if(density && !(obj_flags & EMAGGED)) + obj_flags |= EMAGGED /obj/machinery/computer/libraryconsole/bookmanagement/Topic(href, href_list) if(..()) @@ -370,7 +370,7 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums if("8") screenstate = 8 if(href_list["arccheckout"]) - if(src.emagged) + if(obj_flags & EMAGGED) src.arcanecheckout = 1 src.screenstate = 0 if(href_list["increasetime"]) @@ -403,7 +403,7 @@ GLOBAL_LIST(cachedbooks) // List of our cached book datums if(newauthor) scanner.cache.author = newauthor if(href_list["setcategory"]) - var/newcategory = input("Choose a category: ") in list("Fiction", "Non-Fiction", "Adult", "Reference", "Religion", "Technical") + var/newcategory = input("Choose a category: ") in list("Fiction", "Non-Fiction", "Adult", "Reference", "Religion","Technical") if(newcategory) upload_category = newcategory if(href_list["upload"]) diff --git a/code/modules/mapping/mapping_helpers.dm b/code/modules/mapping/mapping_helpers.dm index 7178ab3314..842373dbad 100644 --- a/code/modules/mapping/mapping_helpers.dm +++ b/code/modules/mapping/mapping_helpers.dm @@ -4,8 +4,8 @@ /obj/effect/baseturf_helper //Set the baseturfs of every turf in the /area/ it is placed. name = "baseturf editor" - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "syndballoon" + icon = 'icons/effects/mapping_helpers.dmi' + icon_state = "" var/baseturf = null layer = POINT_LAYER @@ -72,7 +72,7 @@ return ..() whitelist = typecacheof(whitelist) return ..() - + /obj/effect/baseturf_helper/picky/replace_baseturf(turf/thing) if(!whitelist[thing.type]) return @@ -86,18 +86,35 @@ name = "picky lavaland basalt baseturf helper" baseturf = /turf/open/floor/plating/asteroid/basalt/lava_land_surface + +/obj/effect/mapping_helpers + icon = 'icons/effects/mapping_helpers.dmi' + icon_state = "" + +/obj/effect/mapping_helpers/Initialize() + ..() + return INITIALIZE_HINT_QDEL + +//needs to do its thing before spawn_rivers() is called +INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava) + +/obj/effect/mapping_helpers/no_lava + icon_state = "no_lava" + +/obj/effect/mapping_helpers/no_lava/Initialize() + . = ..() + var/turf/T = get_turf(src) + T.flags_1 |= NO_LAVA_GEN_1 + //Contains the list of planetary z-levels defined by the planet_z helper. GLOBAL_LIST_EMPTY(z_is_planet) /obj/effect/mapping_helpers/planet_z //adds the map it is on to the z_is_planet list name = "planet z helper" - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "syndballoon" layer = POINT_LAYER /obj/effect/mapping_helpers/planet_z/Initialize() . = ..() var/turf/T = get_turf(src) GLOB.z_is_planet["[T.z]"] = TRUE - return INITIALIZE_HINT_QDEL diff --git a/code/modules/mapping/reader.dm b/code/modules/mapping/reader.dm index 5b2a73d708..0e37d74c1b 100644 --- a/code/modules/mapping/reader.dm +++ b/code/modules/mapping/reader.dm @@ -98,7 +98,8 @@ GLOBAL_DATUM_INIT(_preloader, /dmm_suite/preloader, new) if(cropMap) continue else - world.maxz = zcrd //create a new z_level if needed + while (zcrd > world.maxz) //create a new z_level if needed + world.incrementMaxZ() if(!no_changeturf) WARNING("Z-level expansion occurred without no_changeturf set, this may cause problems when /turf/AfterChange is called") diff --git a/code/modules/mapping/ruins.dm b/code/modules/mapping/ruins.dm index 89d9d07a14..996d89a1e2 100644 --- a/code/modules/mapping/ruins.dm +++ b/code/modules/mapping/ruins.dm @@ -1,3 +1,39 @@ +/datum/map_template/ruin/proc/try_to_place(z,allowed_areas) + var/sanity = PLACEMENT_TRIES + while(sanity > 0) + sanity-- + var/width_border = TRANSITIONEDGE + SPACERUIN_MAP_EDGE_PAD + round(width / 2) + var/height_border = TRANSITIONEDGE + SPACERUIN_MAP_EDGE_PAD + round(height / 2) + var/turf/central_turf = locate(rand(width_border, world.maxx - width_border), rand(height_border, world.maxy - height_border), z) + var/valid = TRUE + + for(var/turf/check in get_affected_turfs(central_turf,1)) + var/area/new_area = get_area(check) + if(!(istype(new_area, allowed_areas)) || check.flags_1 & NO_RUINS_1) + valid = FALSE + break + + if(!valid) + continue + + log_world("Ruin \"[name]\" placed at ([central_turf.x], [central_turf.y], [central_turf.z])") + + for(var/i in get_affected_turfs(central_turf, 1)) + var/turf/T = i + for(var/mob/living/simple_animal/monster in T) + qdel(monster) + for(var/obj/structure/flora/ash/plant in T) + qdel(plant) + + load(central_turf,centered = TRUE) + loaded++ + + for(var/turf/T in get_affected_turfs(central_turf, 1)) + T.flags_1 |= NO_RUINS_1 + + new /obj/effect/landmark/ruin(central_turf, src) + return TRUE + return FALSE /proc/seedRuins(list/z_levels = null, budget = 0, whitelist = /area/space, list/potentialRuins) @@ -11,98 +47,89 @@ WARNING("Z level [zl] does not exist - Not generating ruins") return - var/overall_sanity = 100 var/list/ruins = potentialRuins.Copy() - var/is_picking = FALSE - var/last_checked_ruin_index = 0 - while(budget > 0 && overall_sanity > 0) - // Pick a ruin - var/datum/map_template/ruin/ruin = null - if(ruins && ruins.len) - last_checked_ruin_index++ //ruins with no cost come first in the ruin list, so they'll get picked really often - if(is_picking) - ruin = ruins[pick(ruins)] - else - var/ruin_key = ruins[last_checked_ruin_index] //get the ruin's key via index - ruin = ruins[ruin_key] //use that key to get the ruin datum itself - if(ruin.cost >= 0) //if it has a non-negative cost, cancel out and pick another, to ensure true randomness - is_picking = TRUE - ruin = ruins[pick(ruins)] - else - log_world("Ruin loader had no ruins to pick from with [budget] left to spend.") - break - // Can we afford it - if(ruin.cost > budget) - overall_sanity-- + var/list/forced_ruins = list() //These go first on the z level associated (same random one by default) + var/list/ruins_availible = list() //we can try these in the current pass + var/forced_z //If set we won't pick z level and use this one instead. + + //Set up the starting ruin list + for(var/key in ruins) + var/datum/map_template/ruin/R = ruins[key] + if(R.cost > budget) //Why would you do that continue - // If so, try to place it - var/sanity = 100 - // And if we can't fit it anywhere, give up, try again + if(R.always_place) + forced_ruins[R] = -1 + if(R.unpickable) + continue + ruins_availible[R] = R.placement_weight - while(sanity > 0) - sanity-- - var/width_border = TRANSITIONEDGE + SPACERUIN_MAP_EDGE_PAD + round(ruin.width / 2) - var/height_border = TRANSITIONEDGE + SPACERUIN_MAP_EDGE_PAD + round(ruin.height / 2) - var/z_level = pick(z_levels) - var/turf/T = locate(rand(width_border, world.maxx - width_border), rand(height_border, world.maxy - height_border), z_level) - var/valid = TRUE + while(budget > 0 && (ruins_availible.len || forced_ruins.len)) + 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 + for(var/ruin in forced_ruins) + current_pick = ruin + if(forced_ruins[ruin] > 0) //Load into designated z + forced_z = forced_ruins[ruin] + forced = TRUE + break + else //Otherwise just pick random one + current_pick = pickweight(ruins_availible) - for(var/turf/check in ruin.get_affected_turfs(T,1)) - var/area/new_area = get_area(check) - if(!(istype(new_area, whitelist)) || check.flags_1 & NO_RUINS_1) - valid = FALSE - break - - if(!valid) + var/placement_tries = PLACEMENT_TRIES + var/failed_to_place = TRUE + var/z_placed = 0 + while(placement_tries > 0) + placement_tries-- + z_placed = pick(z_levels) + if(!current_pick.try_to_place(forced_z ? forced_z : z_placed,whitelist)) continue + else + failed_to_place = FALSE + break - log_world("Ruin \"[ruin.name]\" placed at ([T.x], [T.y], [T.z])") + //That's done remove from priority even if it failed + if(forced) + //TODO : handle forced ruins with multiple variants + forced_ruins -= current_pick + forced = FALSE + + if(failed_to_place) + for(var/datum/map_template/ruin/R in ruins_availible) + if(R.id == current_pick.id) + ruins_availible -= R + log_world("Failed to place [current_pick.name] ruin.") + else + budget -= current_pick.cost + if(!current_pick.allow_duplicates) + for(var/datum/map_template/ruin/R in ruins_availible) + if(R.id == current_pick.id) + ruins_availible -= R + if(current_pick.never_spawn_with) + for(var/blacklisted_type in current_pick.never_spawn_with) + for(var/possible_exclusion in ruins_availible) + if(istype(possible_exclusion,blacklisted_type)) + ruins_availible -= possible_exclusion + if(current_pick.always_spawn_with) + for(var/v in current_pick.always_spawn_with) + for(var/ruin_name in SSmapping.ruins_templates) //Because we might want to add space templates as linked of lava templates. + var/datum/map_template/ruin/linked = SSmapping.ruins_templates[ruin_name] //why are these assoc, very annoying. + if(istype(linked,v)) + switch(current_pick.always_spawn_with[v]) + if(PLACE_SAME_Z) + forced_ruins[linked] = forced_z ? forced_z : z_placed //I guess you might want a chain somehow + if(PLACE_LAVA_RUIN) + forced_ruins[linked] = pick(SSmapping.levels_by_trait(ZTRAIT_LAVA_RUINS)) + if(PLACE_SPACE_RUIN) + forced_ruins[linked] = pick(SSmapping.levels_by_trait(ZTRAIT_SPACE_RUINS)) + if(PLACE_DEFAULT) + forced_ruins[linked] = -1 + forced_z = 0 - var/obj/effect/ruin_loader/R = new /obj/effect/ruin_loader(T) - R.Load(ruins,ruin) - if(ruin.cost >= 0) - budget -= ruin.cost - if(!ruin.allow_duplicates) - for(var/m in ruins) - var/datum/map_template/ruin/ruin_to_remove = ruins[m] - if(ruin_to_remove.id == ruin.id) //remove all ruins with the same ID, to make sure that ruins with multiple variants work properly - ruins -= ruin_to_remove.name - last_checked_ruin_index-- - break - - if(!overall_sanity) - log_world("Ruin loader gave up with [budget] left to spend.") - - -/obj/effect/ruin_loader - name = "random ruin" - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "syndballoon" - invisibility = 0 - -/obj/effect/ruin_loader/proc/Load(list/potentialRuins, datum/map_template/template) - var/list/possible_ruins = list() - for(var/A in potentialRuins) - var/datum/map_template/T = potentialRuins[A] - if(!T.loaded) - possible_ruins += T - if(!template && possible_ruins.len) - template = safepick(possible_ruins) - if(!template) - return FALSE - var/turf/central_turf = get_turf(src) - for(var/i in template.get_affected_turfs(central_turf, 1)) - var/turf/T = i - for(var/mob/living/simple_animal/monster in T) - qdel(monster) - for(var/obj/structure/flora/ash/plant in T) - qdel(plant) - template.load(central_turf,centered = TRUE) - template.loaded++ - var/datum/map_template/ruin = template - if(istype(ruin)) - new /obj/effect/landmark/ruin(central_turf, ruin) - - qdel(src) - return TRUE + //Update the availible list + for(var/datum/map_template/ruin/R in ruins_availible) + if(R.cost > budget) + ruins_availible -= R + + log_world("Ruin loader finished with [budget] left to spend.") diff --git a/code/modules/mapping/space_management/zlevel_manager.dm b/code/modules/mapping/space_management/zlevel_manager.dm index e2b313220c..5a442c5b6a 100644 --- a/code/modules/mapping/space_management/zlevel_manager.dm +++ b/code/modules/mapping/space_management/zlevel_manager.dm @@ -19,7 +19,7 @@ /datum/controller/subsystem/mapping/proc/add_new_zlevel(name, linkage = SELFLOOPING, traits = list(), z_type = /datum/space_level) var/new_z = z_list.len + 1 if (world.maxz < new_z) - ++world.maxz + world.incrementMaxZ() CHECK_TICK // TODO: sleep here if the Z level needs to be cleared var/datum/space_level/S = new z_type(new_z, name, linkage, traits) diff --git a/code/modules/mentor/follow.dm b/code/modules/mentor/follow.dm deleted file mode 100644 index d744fe2643..0000000000 --- a/code/modules/mentor/follow.dm +++ /dev/null @@ -1,50 +0,0 @@ -/client/proc/mentor_follow(var/mob/living/M) - if(!check_mentor()) - return - - if(isnull(M)) - return - - if(!istype(usr, /mob)) - return - - if(!holder) - var/datum/mentors/mentor = GLOB.mentor_datums[usr.client.ckey] - mentor.following = M -/* else - holder.following = M*/ - - usr.reset_perspective(M) - src.verbs += /client/proc/mentor_unfollow - - to_chat(GLOB.admins, "MENTOR: [key_name(usr)] is now following [key_name(M)]") - to_chat(usr, "You are now following [M]. Click the \"Stop Following\" button in the Mentor tab to stop.") - log_mentor("[key_name(usr)] began following [key_name(M)]") - - - -/client/proc/mentor_unfollow() - set category = "Mentor" - set name = "Stop Following" - set desc = "Stop following the followed." - - if(!check_mentor()) - return - - usr.reset_perspective(null) - src.verbs -= /client/proc/mentor_unfollow - - var/following = null - if(!holder) - var/datum/mentors/mentor = GLOB.mentor_datums[usr.client.ckey] - following = mentor.following - /*else - following = holder.following*/ - - - to_chat(GLOB.admins, "MENTOR: [key_name(usr)] is no longer following [key_name(following)]") - to_chat(usr, "You are no longer following [following].") - log_mentor("[key_name(usr)] stopped following [key_name(following)]") - - following = null - diff --git a/code/modules/mentor/holder2.dm b/code/modules/mentor/holder2.dm deleted file mode 100644 index 8cd6609505..0000000000 --- a/code/modules/mentor/holder2.dm +++ /dev/null @@ -1,46 +0,0 @@ -GLOBAL_LIST(mentor_datums) - -/datum/mentors - var/client/owner = null - var/following = null - -/datum/mentors/New(ckey) - if(!ckey) - del(src) - return - GLOB.mentor_datums[ckey] = src - -/datum/mentors/proc/associate(client/C) - if(istype(C)) - owner = C - GLOB.mentors |= C - -/datum/mentors/proc/disassociate() - if(owner) - GLOB.mentors -= owner - owner = null - -/client/proc/dementor() - var/mentor = GLOB.mentor_datums[ckey] - GLOB.mentor_datums -= ckey - qdel(mentor) - - return 1 - -/proc/check_mentor() - if(usr && usr.client) - var/mentor = GLOB.mentor_datums[usr.client.ckey] - if(mentor || check_rights(R_ADMIN,0)) - return 1 - - return 0 - -/proc/check_mentor_other(var/client/C) - if(C) - var/mentor = GLOB.mentor_datums[C.ckey] - if(C.holder && C.holder.rank) - if(C.holder.rank.rights & R_ADMIN) - return 1 - else if(mentor) - return 1 - return 0 \ No newline at end of file diff --git a/code/modules/mentor/mentor_ranks.dm b/code/modules/mentor/mentor_ranks.dm deleted file mode 100644 index 1e132680d4..0000000000 --- a/code/modules/mentor/mentor_ranks.dm +++ /dev/null @@ -1,43 +0,0 @@ -/proc/load_mentors() - //clear the datums references - GLOB.mentor_datums.Cut() - GLOB.mentors.Cut() - - if(!config.mentor_legacy_system) - if(!GLOB.dbcon.IsConnected()) - world.log << "Failed to connect to database in load_mentors()." - GLOB.diary << "Failed to connect to database in load_mentors()." - config.mentor_legacy_system = 1 - load_mentors() - return - - var/DBQuery/query = GLOB.dbcon.NewQuery("SELECT ckey FROM [format_table_name("mentor")]") - query.Execute() - while(query.NextRow()) - var/ckey = ckey(query.item[1]) - var/datum/mentors/D = new(ckey) //create the mentor datum and store it for later use - if(!D) continue //will occur if an invalid rank is provided - D.associate(GLOB.directory[ckey]) //find the client for a ckey if they are connected and associate them with the new mentor datum - else - world.log << "Using legacy mentor system." - var/list/Lines = file2list("config/mentors.txt") - - //process each line seperately - for(var/line in Lines) - if(!length(line)) continue - if(findtextEx(line,"#",1,2)) continue - - //ckey is before the first "=" - var/ckey = ckey(line) - if(!ckey) continue - - var/datum/mentors/D = new(ckey) //create the admin datum and store it for later use - if(!D) continue //will occur if an invalid rank is provided - D.associate(GLOB.directory[ckey]) //find the client for a ckey if they are connected and associate them with the new admin datum - - #ifdef TESTING - var/msg = "mentors Built:\n" - for(var/ckey in GLOB.mentor_datums) - msg += "\t[ckey] - mentor\n" - testing(msg) - #endif \ No newline at end of file diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm index 729665034e..57754cfb45 100644 --- a/code/modules/mining/equipment/explorer_gear.dm +++ b/code/modules/mining/equipment/explorer_gear.dm @@ -49,7 +49,7 @@ /obj/item/clothing/suit/space/hostile_environment name = "H.E.C.K. suit" - desc = "Hostile Environiment Cross-Kinetic Suit: A suit designed to withstand the wide variety of hazards from Lavaland. It wasn't enough for its last owner." + desc = "Hostile Environment Cross-Kinetic Suit: A suit designed to withstand the wide variety of hazards from Lavaland. It wasn't enough for its last owner." icon_state = "hostile_env" item_state = "hostile_env" flags_1 = THICKMATERIAL_1 //not spaceproof diff --git a/code/modules/mining/equipment/goliath_hide.dm b/code/modules/mining/equipment/goliath_hide.dm index a96081540b..5950541fe7 100644 --- a/code/modules/mining/equipment/goliath_hide.dm +++ b/code/modules/mining/equipment/goliath_hide.dm @@ -21,9 +21,8 @@ return if(is_type_in_typecache(target, goliath_platable_armor_typecache)) var/obj/item/clothing/C = target - var/list/current_armor = C.armor - if(current_armor["melee"] < 60) - current_armor["melee"] = min(current_armor["melee"] + 10, 60) + if(armor.melee < 60) + armor = armor.setRating(melee = min(armor.melee + 10, 60)) to_chat(user, "You strengthen [target], improving its resistance against melee attacks.") use(1) else @@ -32,9 +31,10 @@ var/obj/mecha/working/ripley/D = target if(D.hides < 3) D.hides++ - D.armor["melee"] = min(D.armor["melee"] + 10, 70) - D.armor["bullet"] = min(D.armor["bullet"] + 5, 50) - D.armor["laser"] = min(D.armor["laser"] + 5, 50) + D.armor = D.armor.setRating(\ + melee = min(D.armor.melee + 10, 70),\ + bullet = min(D.armor.laser + 5, 50),\ + laser = min(D.armor.laser + 5, 50)) to_chat(user, "You strengthen [target], improving its resistance against melee attacks.") D.update_icon() if(D.hides == 3) diff --git a/code/modules/mining/laborcamp/laborstacker.dm b/code/modules/mining/laborcamp/laborstacker.dm index 7b38bc4cb5..78417a56d1 100644 --- a/code/modules/mining/laborcamp/laborstacker.dm +++ b/code/modules/mining/laborcamp/laborstacker.dm @@ -44,7 +44,7 @@ var/list/data = list() var/can_go_home = FALSE - data["emagged"] = emagged + data["emagged"] = (obj_flags & EMAGGED) ? 1 : 0 if(inserted_id) data["id"] = inserted_id data["id_name"] = inserted_id.registered_name @@ -101,13 +101,13 @@ if(3) to_chat(usr, "No permission to dock could be granted.") else - if(!emagged) + if(!(obj_flags & EMAGGED)) Radio.set_frequency(FREQ_SECURITY) Radio.talk_into(src, "[inserted_id.registered_name] has returned to the station. Minerals and Prisoner ID card ready for retrieval.", FREQ_SECURITY, get_spans(), get_default_language()) to_chat(usr, "Shuttle received message and will be sent shortly.") /obj/machinery/mineral/labor_claim_console/proc/check_auth() - if(emagged) + if(obj_flags & EMAGGED) return 1 //Shuttle is emagged, let any ol' person through return (istype(inserted_id) && inserted_id.points >= inserted_id.goal) //Otherwise, only let them out if the prisoner's reached his quota. @@ -119,8 +119,8 @@ qdel(src) /obj/machinery/mineral/labor_claim_console/emag_act(mob/user) - if(!emagged) - emagged = TRUE + if(!(obj_flags & EMAGGED)) + obj_flags |= EMAGGED to_chat(user, "PZZTTPFFFT") diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 049a412209..2ef83c54b7 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -588,7 +588,7 @@ playsound(user, 'sound/magic/clockwork/fellowship_armory.ogg', 35, TRUE, frequency = 90000 - (active * 30000)) /obj/item/melee/transforming/cleaving_saw/clumsy_transform_effect(mob/living/user) - if(user.has_disability(DISABILITY_CLUMSY) && prob(50)) + if(user.has_trait(TRAIT_CLUMSY) && prob(50)) to_chat(user, "You accidentally cut yourself with [src], like a doofus!") user.take_bodypart_damage(10) diff --git a/code/modules/mining/lavaland/ruins/gym.dm b/code/modules/mining/lavaland/ruins/gym.dm index efda0f9c8f..b148495f44 100644 --- a/code/modules/mining/lavaland/ruins/gym.dm +++ b/code/modules/mining/lavaland/ruins/gym.dm @@ -21,11 +21,11 @@ anchored = TRUE /obj/structure/stacklifter/attack_hand(mob/living/user) - if(in_use) + if(obj_flags & IN_USE) to_chat(user, "It's already in use - wait a bit.") return else - in_use = 1 + obj_flags |= IN_USE icon_state = "fitnesslifter2" user.setDir(SOUTH) user.Stun(80) @@ -44,7 +44,7 @@ playsound(user, 'goon/sound/effects/spring.ogg', 60, 1) playsound(user, 'sound/machines/click.ogg', 60, 1) - in_use = 0 + obj_flags &= ~IN_USE user.pixel_y = 0 var/finishmessage = pick("You feel stronger!","You feel like you can take on the world!","You feel robust!","You feel indestructible!") icon_state = "fitnesslifter" @@ -59,11 +59,11 @@ anchored = TRUE /obj/structure/weightlifter/attack_hand(mob/living/user) - if(in_use) + if(obj_flags & IN_USE) to_chat(user, "It's already in use - wait a bit.") return else - in_use = 1 + obj_flags |= IN_USE icon_state = "fitnessweight-c" user.setDir(SOUTH) user.Stun(80) @@ -88,7 +88,7 @@ animate(user, pixel_y = 2, time = 3) sleep(3) playsound(user, 'sound/machines/click.ogg', 60, 1) - in_use = 0 + obj_flags &= ~IN_USE animate(user, pixel_y = 0, time = 3) var/finishmessage = pick("You feel stronger!","You feel like you can take on the world!","You feel robust!","You feel indestructible!") icon_state = "fitnessweight" diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index c872756872..71574104c6 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -55,7 +55,7 @@ new /datum/data/mining_equipment("Drone Melee Upgrade", /obj/item/device/mine_bot_ugprade, 400), new /datum/data/mining_equipment("Drone Health Upgrade", /obj/item/device/mine_bot_ugprade/health, 400), new /datum/data/mining_equipment("Drone Ranged Upgrade", /obj/item/device/mine_bot_ugprade/cooldown, 600), - new /datum/data/mining_equipment("Drone AI Upgrade", /obj/item/slimepotion/sentience/mining, 1000), + new /datum/data/mining_equipment("Drone AI Upgrade", /obj/item/slimepotion/slime/sentience/mining, 1000), new /datum/data/mining_equipment("Jump Boots", /obj/item/clothing/shoes/bhop, 2500), ) diff --git a/code/modules/mining/minebot.dm b/code/modules/mining/minebot.dm index 7caf57b0a6..3c33441561 100644 --- a/code/modules/mining/minebot.dm +++ b/code/modules/mining/minebot.dm @@ -255,7 +255,7 @@ //AI -/obj/item/slimepotion/sentience/mining +/obj/item/slimepotion/slime/sentience/mining name = "minebot AI upgrade" desc = "Can be used to grant sentience to minebots." icon_state = "door_electronics" diff --git a/code/modules/mob/dead/new_player/sprite_accessories.dm b/code/modules/mob/dead/new_player/sprite_accessories.dm index 674f44bcd2..57d912067e 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories.dm @@ -1401,3 +1401,72 @@ /datum/sprite_accessory/legs/digitigrade_lizard name = "Digitigrade Legs" + +/datum/sprite_accessory/moth_wings + icon = 'icons/mob/wings.dmi' + color_src = null + +/datum/sprite_accessory/moth_wings/plain + name = "Plain" + icon_state = "plain" + +/datum/sprite_accessory/moth_wings/monarch + name = "Monarch" + icon_state = "monarch" + +/datum/sprite_accessory/moth_wings/luna + name = "Luna" + icon_state = "luna" + +/datum/sprite_accessory/moth_wings/atlas + name = "Atlas" + icon_state = "atlas" + +/datum/sprite_accessory/moth_wings/reddish + name = "Reddish" + icon_state = "redish" + +/datum/sprite_accessory/moth_wings/royal + name = "Royal" + icon_state = "royal" + +/datum/sprite_accessory/moth_wings/gothic + name = "Gothic" + icon_state = "gothic" + +/datum/sprite_accessory/moth_wings/lovers + name = "Lovers" + icon_state = "lovers" + +/datum/sprite_accessory/moth_wings/whitefly + name = "White Fly" + icon_state = "whitefly" + +/datum/sprite_accessory/moth_wings/punished + name = "Burnt Off" + icon_state = "punished" + locked = TRUE + +/datum/sprite_accessory/moth_wings/firewatch + name = "Firewatch" + icon_state = "firewatch" + +/datum/sprite_accessory/moth_wings/deathhead + name = "Deathshead" + icon_state = "deathhead" + +/datum/sprite_accessory/moth_wings/poison + name = "Poison" + icon_state = "poison" + +/datum/sprite_accessory/moth_wings/ragged + name = "Ragged" + icon_state = "ragged" + +/datum/sprite_accessory/moth_wings/moonfly + name = "Moon Fly" + icon_state = "moonfly" + +/datum/sprite_accessory/moth_wings/snow + name = "Snow" + icon_state = "snow" diff --git a/code/modules/mob/dead/new_player/sprite_accessories_Citadel.dm b/code/modules/mob/dead/new_player/sprite_accessories_Citadel.dm index 9cc031af1b..cadeb09e74 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories_Citadel.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories_Citadel.dm @@ -13,6 +13,10 @@ icon = 'icons/mob/mam_bodyparts.dmi' */ +/datum/sprite_accessory/moth_wings/none + name = "None" + icon_state = "none" + /***************** Alphabetical Order please *************** ************* Keep it to Ears, Tails, Tails Animated *********/ diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 9c3bb25da3..f6fbbaab4b 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -16,7 +16,7 @@ /mob/living/carbon/monkey/handle_blood() - if(bodytemperature >= TCRYO && !(has_disability(DISABILITY_NOCLONE))) //cryosleep or husked people do not pump the blood. + if(bodytemperature >= TCRYO && !(has_trait(TRAIT_NOCLONE))) //cryosleep or husked people do not pump the blood. //Blood regeneration if there is some space if(blood_volume < BLOOD_VOLUME_NORMAL) blood_volume += 0.1 // regenerate blood VERY slowly @@ -28,7 +28,7 @@ bleed_rate = 0 return - if(bodytemperature >= TCRYO && !(has_disability(DISABILITY_NOCLONE))) //cryosleep or husked people do not pump the blood. + if(bodytemperature >= TCRYO && !(has_trait(TRAIT_NOCLONE))) //cryosleep or husked people do not pump the blood. //Blood regeneration if there is some space if(blood_volume < BLOOD_VOLUME_NORMAL && !(NOHUNGER in dna.species.species_traits)) @@ -84,7 +84,7 @@ bleed_rate = max(bleed_rate - 0.5, temp_bleed)//if no wounds, other bleed effects (heparin) naturally decreases - if(bleed_rate && !bleedsuppress && !(status_flags & FAKEDEATH)) + if(bleed_rate && !bleedsuppress && !(has_trait(TRAIT_FAKEDEATH))) bleed(bleed_rate) //Makes a blood drop, leaking amt units of blood from the mob @@ -201,13 +201,13 @@ return "blood" /mob/living/carbon/monkey/get_blood_id() - if(!(has_disability(DISABILITY_NOCLONE))) + if(!(has_trait(TRAIT_NOCLONE))) return "blood" /mob/living/carbon/human/get_blood_id() if(dna.species.exotic_blood) return dna.species.exotic_blood - else if((NOBLOOD in dna.species.species_traits) || (has_disability(DISABILITY_NOCLONE))) + else if((NOBLOOD in dna.species.species_traits) || (has_trait(TRAIT_NOCLONE))) return return "blood" diff --git a/code/modules/mob/living/brain/MMI.dm b/code/modules/mob/living/brain/MMI.dm index 5d51024adc..8f831d3f9d 100644 --- a/code/modules/mob/living/brain/MMI.dm +++ b/code/modules/mob/living/brain/MMI.dm @@ -2,7 +2,7 @@ name = "Man-Machine Interface" desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity, that nevertheless has become standard-issue on Nanotrasen stations." icon = 'icons/obj/assemblies.dmi' - icon_state = "mmi_empty" + icon_state = "mmi_off" w_class = WEIGHT_CLASS_NORMAL var/braintype = "Cyborg" var/obj/item/device/radio/radio = null //Let's give it a radio. @@ -15,21 +15,19 @@ var/overrides_aicore_laws = FALSE // Whether the laws on the MMI, if any, override possible pre-existing laws loaded on the AI core. /obj/item/device/mmi/update_icon() - if(brain) - if(istype(brain, /obj/item/organ/brain/alien)) - if(brainmob && brainmob.stat == DEAD) - icon_state = "mmi_alien_dead" - else - icon_state = "mmi_alien" - braintype = "Xenoborg" //HISS....Beep. - else - if(brainmob && brainmob.stat == DEAD) - icon_state = "mmi_dead" - else - icon_state = "mmi_full" - braintype = "Cyborg" + if(!brain) + icon_state = "mmi_off" + return + if(istype(brain, /obj/item/organ/brain/alien)) + icon_state = "mmi_brain_alien" + braintype = "Xenoborg" //HISS....Beep. else - icon_state = "mmi_empty" + icon_state = "mmi_brain" + braintype = "Cyborg" + if(brainmob && brainmob.stat != DEAD) + add_overlay("mmi_alive") + else + add_overlay("mmi_dead") /obj/item/device/mmi/Initialize() . = ..() diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index c77908362f..ad58d2fa8e 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -15,17 +15,13 @@ var/list/datum/brain_trauma/traumas = list() -/obj/item/organ/brain/changeling_brain - vital = FALSE - decoy_override = TRUE - /obj/item/organ/brain/Insert(mob/living/carbon/C, special = 0,no_id_transfer = FALSE) ..() name = "brain" if(C.mind && C.mind.has_antag_datum(/datum/antagonist/changeling) && !no_id_transfer) //congrats, you're trapped in a body you don't control - if(brainmob && !(C.stat == DEAD || (C.status_flags & FAKEDEATH))) + if(brainmob && !(C.stat == DEAD || (C.has_trait(TRAIT_FAKEDEATH)))) to_chat(brainmob, "You can't feel your body! You're still just a brain!") forceMove(C) C.update_hair() @@ -79,8 +75,8 @@ if(!brainmob.stored_dna) brainmob.stored_dna = new /datum/dna/stored(brainmob) C.dna.copy_dna(brainmob.stored_dna) - if(L.has_disability(DISABILITY_NOCLONE)) - brainmob.disabilities[DISABILITY_NOCLONE] = L.disabilities[DISABILITY_NOCLONE] + if(L.has_trait(TRAIT_NOCLONE)) + brainmob.status_traits[TRAIT_NOCLONE] = L.status_traits[TRAIT_NOCLONE] var/obj/item/organ/zombie_infection/ZI = L.getorganslot(ORGAN_SLOT_ZOMBIE) if(ZI) brainmob.set_species(ZI.old_species) //For if the brain is cloned diff --git a/code/modules/mob/living/brain/life.dm b/code/modules/mob/living/brain/life.dm index c8df16a1cf..786bb0b55c 100644 --- a/code/modules/mob/living/brain/life.dm +++ b/code/modules/mob/living/brain/life.dm @@ -1,8 +1,6 @@ /mob/living/brain/Life() set invisibility = 0 - set background = BACKGROUND_ENABLED - if (notransform) return if(!loc) @@ -34,7 +32,7 @@ /mob/living/brain/handle_status_effects() return -/mob/living/brain/handle_disabilities() +/mob/living/brain/handle_traits() return diff --git a/code/modules/mob/living/brain/status_procs.dm b/code/modules/mob/living/brain/status_procs.dm index 735a0186bf..1c5aeb1f47 100644 --- a/code/modules/mob/living/brain/status_procs.dm +++ b/code/modules/mob/living/brain/status_procs.dm @@ -1,6 +1,6 @@ //Here are the procs used to modify status effects of a mob. //The effects include: stun, knockdown, unconscious, sleeping, resting, jitteriness, dizziness -// eye damage, eye_blind, eye_blurry, druggy, DISABILITY_BLIND disability, and DISABILITY_NEARSIGHT disability. +// eye damage, eye_blind, eye_blurry, druggy, TRAIT_BLIND trait, and TRAIT_NEARSIGHT trait. /////////////////////////////////// EYE_BLIND //////////////////////////////////// diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index e058cf6354..18f8543a6a 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -8,7 +8,7 @@ icon = 'icons/mob/alien.dmi' gender = FEMALE //All xenos are girls!! dna = null - faction = list("alien") + faction = list(ROLE_ALIEN) ventcrawler = VENTCRAWLER_ALWAYS sight = SEE_MOBS see_in_dark = 4 @@ -110,7 +110,7 @@ Des: Gives the client of the alien an image on each infected mob. if (client) for (var/i in GLOB.mob_living_list) var/mob/living/L = i - if(L.status_flags & XENO_HOST) + if(L.has_trait(TRAIT_XENO_HOST)) var/obj/item/organ/body_egg/alien_embryo/A = L.getorgan(/obj/item/organ/body_egg/alien_embryo) if(A) var/I = image('icons/mob/alien.dmi', loc = L, icon_state = "infected[A.stage]") diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm index 6153c5629f..3ac3d19afb 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm @@ -171,7 +171,7 @@ Doesn't work on other aliens/AI.*/ return corrode(O,user) /mob/living/carbon/proc/corrosive_acid(O as obj|turf in oview(1)) // right click menu verb ugh - set name = "Corrossive Acid" + set name = "Corrosive Acid" if(!iscarbon(usr)) return diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm index d7ae106380..62b9fb9b1a 100644 --- a/code/modules/mob/living/carbon/alien/larva/life.dm +++ b/code/modules/mob/living/carbon/alien/larva/life.dm @@ -2,8 +2,6 @@ /mob/living/carbon/alien/larva/Life() set invisibility = 0 - set background = BACKGROUND_ENABLED - if (notransform) return if(..()) //not dead @@ -20,7 +18,7 @@ if(health<= -maxHealth || !getorgan(/obj/item/organ/brain)) death() return - if(IsUnconscious() || IsSleeping() || getOxyLoss() > 50 || (status_flags & FAKEDEATH) || health <= HEALTH_THRESHOLD_CRIT) + if(IsUnconscious() || IsSleeping() || getOxyLoss() > 50 || (has_trait(TRAIT_FAKEDEATH)) || health <= HEALTH_THRESHOLD_CRIT) if(stat == CONSCIOUS) stat = UNCONSCIOUS blind_eyes(1) diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm index de543651eb..61ae0cba5d 100644 --- a/code/modules/mob/living/carbon/alien/organs.dm +++ b/code/modules/mob/living/carbon/alien/organs.dm @@ -112,10 +112,10 @@ /obj/item/organ/alien/hivenode/Insert(mob/living/carbon/M, special = 0) ..() - M.faction |= "alien" + M.faction |= ROLE_ALIEN /obj/item/organ/alien/hivenode/Remove(mob/living/carbon/M, special = 0) - M.faction -= "alien" + M.faction -= ROLE_ALIEN ..() //When the alien queen dies, all aliens suffer a penalty as punishment for failing to protect her. diff --git a/code/modules/mob/living/carbon/alien/status_procs.dm b/code/modules/mob/living/carbon/alien/status_procs.dm index 86b7f3508c..7fd1d31872 100644 --- a/code/modules/mob/living/carbon/alien/status_procs.dm +++ b/code/modules/mob/living/carbon/alien/status_procs.dm @@ -1,6 +1,6 @@ //Here are the procs used to modify status effects of a mob. //The effects include: stun, knockdown, unconscious, sleeping, resting, jitteriness, dizziness, ear damage, -// eye damage, eye_blind, eye_blurry, druggy, DISABILITY_BLIND disability, and DISABILITY_NEARSIGHT disability. +// eye damage, eye_blind, eye_blurry, druggy, TRAIT_BLIND trait, and TRAIT_NEARSIGHT trait. /////////////////////////////////// STUN //////////////////////////////////// diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 59b0fcf55f..fee97c1d01 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -157,7 +157,7 @@ if(!throwable_mob.buckled) thrown_thing = throwable_mob stop_pulling() - if(has_disability(DISABILITY_PACIFISM)) + if(has_trait(TRAIT_PACIFISM)) to_chat(src, "You gently let go of [throwable_mob].") var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors var/turf/end_T = get_turf(target) @@ -170,7 +170,7 @@ thrown_thing = I dropItemToGround(I) - if(has_disability(DISABILITY_PACIFISM) && I.throwforce) + if(has_trait(TRAIT_PACIFISM) && I.throwforce) to_chat(src, "You set [I] down gently on the ground.") return @@ -302,10 +302,10 @@ /mob/living/carbon/proc/cuff_resist(obj/item/I, breakouttime = 600, cuff_break = 0) - if(I.being_removed) + if(I.item_flags & BEING_REMOVED) to_chat(src, "You're already attempting to remove [I]!") return - I.being_removed = TRUE + I.item_flags |= BEING_REMOVED breakouttime = I.breakouttime if(!cuff_break) visible_message("[src] attempts to remove [I]!") @@ -326,7 +326,7 @@ else if(cuff_break == INSTANT_CUFFBREAK) clear_cuffs(I, cuff_break) - I.being_removed = FALSE + I.item_flags &= ~BEING_REMOVED /mob/living/carbon/proc/uncuff() if (handcuffed) @@ -402,7 +402,7 @@ dropItemToGround(I) var/modifier = 0 - if(has_disability(DISABILITY_CLUMSY)) + if(has_trait(TRAIT_CLUMSY)) modifier -= 40 //Clumsy people are more likely to hit themselves -Honk! switch(rand(1,100)+modifier) //91-100=Nothing special happens @@ -720,7 +720,7 @@ if(health <= HEALTH_THRESHOLD_DEAD) death() return - if(IsUnconscious() || IsSleeping() || getOxyLoss() > 50 || (status_flags & FAKEDEATH) || health <= HEALTH_THRESHOLD_FULLCRIT) + if(IsUnconscious() || IsSleeping() || getOxyLoss() > 50 || (has_trait(TRAIT_FAKEDEATH)) || health <= HEALTH_THRESHOLD_FULLCRIT) stat = UNCONSCIOUS blind_eyes(1) else @@ -767,7 +767,7 @@ reagents.addiction_list = list() cure_all_traumas(TRUE, TRUE) ..() - // heal ears after healing disabilities, since ears check DISABILITY_DEAF disability + // heal ears after healing traits, since ears check TRAIT_DEAF trait // when healing. restoreEars() @@ -852,3 +852,6 @@ .["Hallucinate"] = "?_src_=vars;[HrefToken()];hallucinate=[REF(src)]" .["Give brain trauma"] = "?_src_=vars;[HrefToken()];givetrauma=[REF(src)]" .["Cure brain traumas"] = "?_src_=vars;[HrefToken()];curetraumas=[REF(src)]" + +/mob/living/carbon/can_resist() + return bodyparts.len > 2 && ..() diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index edf07d9615..81f64d1d26 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -213,6 +213,8 @@ /mob/living/carbon/electrocute_act(shock_damage, obj/source, siemens_coeff = 1, safety = 0, override = 0, tesla_shock = 0, illusion = 0, stun = TRUE) if(tesla_shock && (flags_2 & TESLA_IGNORE_2)) return FALSE + if(has_trait(TRAIT_SHOCKIMMUNE)) + return FALSE shock_damage *= siemens_coeff if(dna && dna.species) shock_damage *= dna.species.siemens_coeff @@ -248,7 +250,7 @@ to_chat(M, "You can't put them out with just your bare hands!") return - if(health >= 0 && !(status_flags & FAKEDEATH)) + if(health >= 0 && !(has_trait(TRAIT_FAKEDEATH))) if(lying) if(buckled) @@ -305,12 +307,12 @@ if(eyes.eye_damage > 20) if(prob(eyes.eye_damage - 20)) - if(!has_disability(DISABILITY_NEARSIGHT)) + if(!has_trait(TRAIT_NEARSIGHT)) to_chat(src, "Your eyes start to burn badly!") become_nearsighted(EYE_DAMAGE) else if(prob(eyes.eye_damage - 25)) - if(!has_disability(DISABILITY_BLIND)) + if(!has_trait(TRAIT_BLIND)) to_chat(src, "You can't see anything!") become_blind(EYE_DAMAGE) diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm index 99bb6d2250..26fc9ce245 100644 --- a/code/modules/mob/living/carbon/examine.dm +++ b/code/modules/mob/living/carbon/examine.dm @@ -67,7 +67,7 @@ else msg += "[t_He] [t_is] severely deformed!\n" - if(has_disability(DISABILITY_DUMB)) + if(has_trait(TRAIT_DUMB)) msg += "[t_He] seem[p_s()] to be clumsy and unable to think.\n" if(fire_stacks > 0) diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 83006e59b0..0b4d5f6098 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -42,13 +42,13 @@ INVOKE_ASYNC(is_devil(src), /datum/antagonist/devil.proc/beginResurrectionCheck, src) /mob/living/carbon/human/proc/makeSkeleton() - status_flags |= DISFIGURED + add_trait(TRAIT_DISFIGURED, TRAIT_GENERIC) set_species(/datum/species/skeleton) return 1 /mob/living/carbon/proc/Drain() become_husk(CHANGELING_DRAIN) - add_disability(DISABILITY_NOCLONE, CHANGELING_DRAIN) + add_trait(TRAIT_NOCLONE, CHANGELING_DRAIN) blood_volume = 0 return 1 diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 10963e031b..447b0c9f96 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -83,13 +83,13 @@ H.endTailWag() /mob/living/carbon/human/proc/is_wagging_tail() - return (dna && dna.species && (("waggingtail_lizard" in dna.species.mutant_bodyparts) || ("waggingtail_human" in dna.species.mutant_bodyparts))) + return (dna && dna.species && (("waggingtail_lizard" in dna.species.mutant_bodyparts) || ("waggingtail_human" in dna.species.mutant_bodyparts)|| ("mam_waggingtail" in dna.species.mutant_bodyparts))) /datum/emote/living/carbon/human/wag/can_run_emote(mob/user, status_check = TRUE) if(!..()) return FALSE var/mob/living/carbon/human/H = user - if(H.dna && H.dna.species && (("tail_lizard" in H.dna.species.mutant_bodyparts) || ("waggingtail_lizard" in H.dna.species.mutant_bodyparts) || ("tail_human" in H.dna.species.mutant_bodyparts) || ("waggingtail_human" in H.dna.species.mutant_bodyparts))) + if(H.dna && H.dna.species && (("tail_lizard" in H.dna.species.mutant_bodyparts) || ("waggingtail_lizard" in H.dna.species.mutant_bodyparts) || ("tail_human" in H.dna.species.mutant_bodyparts) || ("waggingtail_human" in H.dna.species.mutant_bodyparts)|| ("mam_tail" in H.dna.species.mutant_bodyparts) || ("mam_waggingtail" in H.dna.species.mutant_bodyparts))) return TRUE /datum/emote/living/carbon/human/wag/select_message_type(mob/user) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 046e5e797d..90128a022d 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -91,7 +91,6 @@ if(istype(dicc) && dicc.is_exposed()) msg += "[dicc.desc]\n" //END OF CIT CHANGES - //Status effects msg += status_effect_examines() @@ -105,7 +104,7 @@ msg += "[t_He] [t_is] twitching ever so slightly.\n" var/appears_dead = 0 - if(stat == DEAD || (status_flags & FAKEDEATH)) + if(stat == DEAD || (has_trait(TRAIT_FAKEDEATH))) appears_dead = 1 if(suiciding) msg += "[t_He] appear[p_s()] to have committed suicide... there is no hope of recovery.\n" @@ -251,14 +250,13 @@ var/datum/belly/B = vore_organs[I] msg += B.get_examine_msg() - msg += "" if(!appears_dead) if(stat == UNCONSCIOUS) msg += "[t_He] [t_is]n't responding to anything around [t_him] and seem[p_s()] to be asleep.\n" else - if(has_disability(DISABILITY_DUMB)) + if(has_trait(TRAIT_DUMB)) msg += "[t_He] [t_has] a stupid expression on [t_his] face.\n" if(InCritical()) msg += "[t_He] [t_is] barely conscious.\n" @@ -324,7 +322,7 @@ msg += "\[Add comment\]\n" if(print_flavor_text() && get_visible_name() != "Unknown")//Are we sure we know who this is? Don't show flavor text unless we can recognize them. Prevents certain metagaming with impersonation. msg += "[print_flavor_text()]\n" - + msg += "*---------*" to_chat(user, msg) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 434c24874c..48b1c6b6b8 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -24,9 +24,9 @@ create_internal_organs() //most of it is done in set_species now, this is only for parent call handcrafting = new() - + . = ..() - + AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT), CALLBACK(src, .proc/clean_blood)) /mob/living/carbon/human/OpenCraftingMenu() @@ -55,11 +55,7 @@ stat("Internal Atmosphere Info", internal.name) stat("Tank Pressure", internal.air_contents.return_pressure()) stat("Distribution Pressure", internal.distribute_pressure) - - var/mob/living/simple_animal/borer/B = has_brain_worms() - if(B && B.controlling) - stat("Chemicals", B.chemicals) - +// var/mob/living/simple_animal/borer/B = has_brain_worms() if(mind) var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling) if(changeling) @@ -208,13 +204,13 @@ var/obj/item/I = locate(href_list["embedded_object"]) in L.embedded_objects if(!I || I.loc != src) //no item, no limb, or item is not in limb or in the person anymore return - var/time_taken = I.embedded_unsafe_removal_time*I.w_class + var/time_taken = I.embedding.embedded_unsafe_removal_time*I.w_class usr.visible_message("[usr] attempts to remove [I] from their [L.name].","You attempt to remove [I] from your [L.name]... (It will take [DisplayTimeText(time_taken)].)") if(do_after(usr, time_taken, needhand = 1, target = src)) if(!I || !L || I.loc != src || !(I in L.embedded_objects)) return L.embedded_objects -= I - L.receive_damage(I.embedded_unsafe_removal_pain_multiplier*I.w_class)//It hurts to rip it out, get surgery you dingus. + L.receive_damage(I.embedding.embedded_unsafe_removal_pain_multiplier*I.w_class)//It hurts to rip it out, get surgery you dingus. I.forceMove(get_turf(src)) usr.put_in_hands(I) usr.emote("scream") @@ -360,7 +356,7 @@ // Checks the user has security clearence before allowing them to change arrest status via hud, comment out to enable all access var/allowed_access = null var/obj/item/clothing/glasses/G = H.glasses - if (!G.emagged) + if (!(G.obj_flags |= EMAGGED)) if(H.wear_id) var/list/access = H.wear_id.GetAccess() if(ACCESS_SEC_DOORS in access) @@ -577,8 +573,8 @@ threatcount += 2 //Check for dresscode violations - if(istype(head, /obj/item/clothing/head/wizard) || istype(head, /obj/item/clothing/head/helmet/space/hardsuit/wizard)) - threatcount += 2 + if(istype(head, /obj/item/clothing/head/wizard) || istype(head, /obj/item/clothing/head/helmet/space/hardsuit/wizard) || istype(head, /obj/item/clothing/head/helmet/space/hardsuit/shielded/wizard) || istype(head, /obj/item/clothing/head/helmet/space/hardsuit/syndi) || istype(head, /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi)) + threatcount += 6 //fuk u antags <3 //Check for nonhuman scum if(dna && dna.species.id && !(dna.species.id in list("human" , "lizard", "mammal", "avian", "aquatic", "insect"))) @@ -588,9 +584,13 @@ if(isloyal()) threatcount -= 1 - //Agent cards lower threatlevel. + //Agent cards lower threatlevel. But only enough to openly carry without being busted. if(istype(idcard, /obj/item/card/id/syndicate)) - threatcount -= 5 + threatcount -= 2 + + //CentCom cards lower threat level. Even to emagged bots. + if(istype(idcard, /obj/item/card/id/centcom) || istype(idcard, /obj/item/card/id/ert)) + threatcount -= 10 return threatcount @@ -621,7 +621,7 @@ /mob/living/carbon/human/proc/do_cpr(mob/living/carbon/C) CHECK_DNA_AND_SPECIES(C) - if(C.stat == DEAD || (C.status_flags & FAKEDEATH)) + if(C.stat == DEAD || (C.has_trait(TRAIT_FAKEDEATH))) to_chat(src, "[C.name] is dead!") return if(is_mouth_covered()) @@ -1032,3 +1032,18 @@ /mob/living/carbon/human/species/zombie/krokodil_addict race = /datum/species/krokodil_addict + +/* +//CITADEL EDIT - TODO: Enable people to set custom races +/mob/living/carbon/human/species/mammal + race = /datum/species/mammal +/mob/living/carbon/human/species/avian + race = /datum/species/avian +/mob/living/carbon/human/species/aquatic + race = /datum/species/aquatic +/mob/living/carbon/human/species/insect + race = /datum/species/insect +/mob/living/carbon/human/species/xeno + race = /datum/species/xeno +/mob/living/carbon/human/species/guilmon + race = /datum/species/guilmon */ diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 5a184331e9..918b66c6c5 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -28,7 +28,7 @@ if(bp && istype(bp , /obj/item/clothing)) var/obj/item/clothing/C = bp if(C.body_parts_covered & def_zone.body_part) - protection += C.armor[d_type] + protection += C.armor.getRating(d_type) return protection /mob/living/carbon/human/on_hit(obj/item/projectile/P) @@ -135,13 +135,13 @@ else if(I) if(I.throw_speed >= EMBED_THROWSPEED_THRESHOLD) if(can_embed(I)) - if(prob(I.embed_chance) && !(dna && (PIERCEIMMUNE in dna.species.species_traits))) + if(prob(I.embedding.embed_chance) && !(dna && (PIERCEIMMUNE in dna.species.species_traits))) throw_alert("embeddedobject", /obj/screen/alert/embeddedobject) var/obj/item/bodypart/L = pick(bodyparts) L.embedded_objects |= I I.add_mob_blood(src)//it embedded itself in you, of course it's bloody! I.forceMove(src) - L.receive_damage(I.w_class*I.embedded_impact_pain_multiplier) + L.receive_damage(I.w_class*I.embedding.embedded_impact_pain_multiplier) visible_message("[I] embeds itself in [src]'s [L.name]!","[I] embeds itself in your [L.name]!") hitpush = FALSE skipcatch = TRUE //can't catch the now embedded item @@ -149,7 +149,7 @@ return ..() /mob/living/carbon/human/grabbedby(mob/living/carbon/user, supress_message = 0) - if(user == src && pulling && !pulling.anchored && grab_state >= GRAB_AGGRESSIVE && (has_disability(DISABILITY_FAT)) && ismonkey(pulling)) + if(user == src && pulling && !pulling.anchored && grab_state >= GRAB_AGGRESSIVE && (has_trait(TRAIT_FAT)) && ismonkey(pulling)) devour_mob(pulling) else ..() @@ -602,7 +602,7 @@ facial_hair_style = "Shaved" hair_style = "Bald" update_hair() - status_flags |= DISFIGURED + add_trait(TRAIT_DISFIGURED, TRAIT_GENERIC) update_damage_overlays() diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 46212698b2..c5e4581253 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -56,7 +56,7 @@ if( head && (head.flags_inv&HIDEFACE) ) return if_no_face //Likewise for hats var/obj/item/bodypart/O = get_bodypart("head") - if( !O || (status_flags&DISFIGURED) || (O.brutestate+O.burnstate)>2 || cloneloss>50 || !real_name ) //disfigured. use id-name if possible + if( !O || (has_trait(TRAIT_DISFIGURED)) || (O.brutestate+O.burnstate)>2 || cloneloss>50 || !real_name ) //disfigured. use id-name if possible return if_no_face return real_name @@ -92,7 +92,7 @@ /mob/living/carbon/human/IsAdvancedToolUser() - if(has_disability(DISABILITY_MONKEYLIKE)) + if(has_trait(TRAIT_MONKEYLIKE)) return FALSE return TRUE//Humans can use guns and such diff --git a/code/modules/mob/living/carbon/human/interactive.dm b/code/modules/mob/living/carbon/human/interactive.dm index 426bc39907..1ae8e48dc7 100644 --- a/code/modules/mob/living/carbon/human/interactive.dm +++ b/code/modules/mob/living/carbon/human/interactive.dm @@ -339,7 +339,7 @@ if(TRAITS & TRAIT_SMART) smartness = 75 else if(TRAITS & TRAIT_DUMB) - add_disability(DISABILITY_CLUMSY, GENETIC_MUTATION) + add_trait(TRAIT_CLUMSY, GENETIC_MUTATION) smartness = 25 if(TRAITS & TRAIT_MEAN) @@ -753,7 +753,6 @@ timeout++ /mob/living/carbon/human/interactive/proc/getGoodPath(target,var/maxtries=512) - set background = 1 var/turf/end = get_turf(target) var/turf/current = get_turf(src) @@ -779,7 +778,6 @@ return path /mob/living/carbon/human/interactive/proc/walk2derpless(target) - set background = 1 if(!target) return 0 diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 4dd26ebe6b..abd86e7bfc 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -187,7 +187,7 @@ if(G.tint) update_tint() if(G.vision_correction) - if(has_disability(DISABILITY_NEARSIGHT)) + if(has_trait(TRAIT_NEARSIGHT)) overlay_fullscreen("nearsighted", /obj/screen/fullscreen/impaired, 1) adjust_eye_damage(0) if(G.vision_flags || G.darkness_view || G.invis_override || G.invis_view || !isnull(G.lighting_alpha)) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 65d47694af..6f187d0351 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -22,15 +22,9 @@ /mob/living/carbon/human/Life() set invisibility = 0 - set background = BACKGROUND_ENABLED - if (notransform) return - //citadel code - if(stat != DEAD) - handle_arousal() - if(..()) //not dead handle_active_genes() @@ -54,15 +48,11 @@ /mob/living/carbon/human/calculate_affecting_pressure(pressure) if((wear_suit && (wear_suit.flags_1 & STOPSPRESSUREDMAGE_1)) && (head && (head.flags_1 & STOPSPRESSUREDMAGE_1))) return ONE_ATMOSPHERE - if(ismob(loc)) - return ONE_ATMOSPHERE - if(istype(loc, /obj/item/device/dogborg/sleeper)) - return ONE_ATMOSPHERE else return pressure -/mob/living/carbon/human/handle_disabilities() +/mob/living/carbon/human/handle_traits() if(eye_blind) //blindness, heals slowly over time if(tinttotal >= TINT_BLIND) //covering your eyes heals blurry eyes faster adjust_blindness(-3) @@ -71,7 +61,7 @@ else if(eye_blurry) //blurry eyes heal slowly adjust_blurriness(-1) - if(has_disability(DISABILITY_PACIFISM) && a_intent == INTENT_HARM) + if(has_trait(TRAIT_PACIFISM) && a_intent == INTENT_HARM) to_chat(src, "You don't feel like harming anybody.") a_intent_change(INTENT_HELP) @@ -127,12 +117,12 @@ /mob/living/carbon/human/proc/get_thermal_protection() var/thermal_protection = 0 //Simple check to estimate how protected we are against multiple temperatures - +//CITADEL EDIT Vore code required overrides if(istype(loc, /obj/item/device/dogborg/sleeper)) return FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT if(ismob(loc)) return FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT - +//END EDIT if(wear_suit) if(wear_suit.max_heat_protection_temperature >= FIRE_SUIT_MAX_TEMP_PROTECT) thermal_protection += (wear_suit.max_heat_protection_temperature*0.7) @@ -242,12 +232,15 @@ if(dna.check_mutation(COLDRES)) return TRUE //Fully protected from the cold. + if(RESISTCOLD in dna.species.species_traits) + return TRUE + +//CITADEL EDIT Mandatory for vore code. if(istype(loc, /obj/item/device/dogborg/sleeper)) return 1 //freezing to death in sleepers ruins fun. if(ismob(loc)) return 1 //because lazy and being inside somemone insulates you from space - if(RESISTCOLD in dna.species.species_traits) - return TRUE +//END EDIT temperature = max(temperature, 2.7) //There is an occasional bug where the temperature is miscalculated in ares with a small amount of gas on them, so this is necessary to ensure that that bug does not affect this calculation. Space's temperature is 2.7K and most suits that are intended to protect against any cold, protect down to 2.0K. var/thermal_protection_flags = get_cold_protection_flags(temperature) @@ -308,12 +301,12 @@ for(var/X in bodyparts) var/obj/item/bodypart/BP = X for(var/obj/item/I in BP.embedded_objects) - if(prob(I.embedded_pain_chance)) - BP.receive_damage(I.w_class*I.embedded_pain_multiplier) + if(prob(I.embedding.embedded_pain_chance)) + BP.receive_damage(I.w_class*I.embedding.embedded_pain_multiplier) to_chat(src, "[I] embedded in your [BP.name] hurts!") - if(prob(I.embedded_fall_chance)) - BP.receive_damage(I.w_class*I.embedded_fall_pain_multiplier) + if(prob(I.embedding.embedded_fall_chance)) + BP.receive_damage(I.w_class*I.embedding.embedded_fall_pain_multiplier) BP.embedded_objects -= I I.forceMove(drop_location()) visible_message("[I] falls out of [name]'s [BP.name]!","[I] falls out of your [BP.name]!") diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 987484bc8f..3f15b7a6ad 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -291,12 +291,13 @@ GLOBAL_LIST_EMPTY(roundstart_races) for(var/datum/disease/A in C.viruses) A.cure(FALSE) - +//CITADEL EDIT if(NOAROUSAL in species_traits) C.canbearoused = FALSE else if(C.client) C.canbearoused = C.client.prefs.arousable +// EDIT ENDS /datum/species/proc/on_species_loss(mob/living/carbon/C) if(C.dna.species.exotic_bloodtype) @@ -311,7 +312,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(!HD) //Decapitated return - if(H.has_disability(DISABILITY_HUSK)) + if(H.has_trait(TRAIT_HUSK)) return var/datum/sprite_accessory/S var/list/standing = list() @@ -452,7 +453,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/obj/item/bodypart/head/HD = H.get_bodypart("head") - if(HD && !(H.has_disability(DISABILITY_HUSK))) + if(HD && !(H.has_trait(TRAIT_HUSK))) // lipstick if(H.lip_style && (LIPS in species_traits)) var/mutable_appearance/lip_overlay = mutable_appearance('icons/mob/human_face.dmi', "lips_[H.lip_style]", -BODY_LAYER) @@ -463,18 +464,19 @@ GLOBAL_LIST_EMPTY(roundstart_races) standing += lip_overlay // eyes - var/has_eyes = H.getorganslot(ORGAN_SLOT_EYES) - var/mutable_appearance/eye_overlay - if(!has_eyes) - eye_overlay = mutable_appearance('icons/mob/human_face.dmi', "eyes_missing", -BODY_LAYER) - else - eye_overlay = mutable_appearance('icons/mob/human_face.dmi', "eyes", -BODY_LAYER) - if((EYECOLOR in species_traits) && has_eyes) - eye_overlay.color = "#" + H.eye_color - if(OFFSET_FACE in H.dna.species.offset_features) - eye_overlay.pixel_x += H.dna.species.offset_features[OFFSET_FACE][1] - eye_overlay.pixel_y += H.dna.species.offset_features[OFFSET_FACE][2] - standing += eye_overlay + if(!(NOEYES in species_traits)) + var/has_eyes = H.getorganslot(ORGAN_SLOT_EYES) + var/mutable_appearance/eye_overlay + if(!has_eyes) + eye_overlay = mutable_appearance('icons/mob/human_face.dmi', "eyes_missing", -BODY_LAYER) + else + eye_overlay = mutable_appearance('icons/mob/human_face.dmi', "eyes", -BODY_LAYER) + if((EYECOLOR in species_traits) && has_eyes) + eye_overlay.color = "#" + H.eye_color + if(OFFSET_FACE in H.dna.species.offset_features) + eye_overlay.pixel_x += H.dna.species.offset_features[OFFSET_FACE][1] + eye_overlay.pixel_y += H.dna.species.offset_features[OFFSET_FACE][2] + standing += eye_overlay //Underwear, Undershirts & Socks if(!(NO_UNDERWEAR in species_traits)) @@ -504,11 +506,15 @@ GLOBAL_LIST_EMPTY(roundstart_races) /datum/species/proc/handle_mutant_bodyparts(mob/living/carbon/human/H, forced_colour) var/list/bodyparts_to_add = mutant_bodyparts.Copy() - var/list/relevant_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER, BODY_TAUR_LAYER) + var/list/relevent_layers = list(BODY_BEHIND_LAYER, BODY_ADJ_LAYER, BODY_FRONT_LAYER, BODY_TAUR_LAYER) var/list/standing = list() - for(var/L in relevant_layers) - H.remove_overlay(L) + H.remove_overlay(BODY_BEHIND_LAYER) + H.remove_overlay(BODY_ADJ_LAYER) + H.remove_overlay(BODY_FRONT_LAYER) + //CITADEL EDIT - Do not forget to add this to relevent_layers list just above too! + H.remove_overlay(BODY_TAUR_LAYER) + //END EDIT if(!mutant_bodyparts) return @@ -572,6 +578,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) else if ("wings" in mutant_bodyparts) bodyparts_to_add -= "wings_open" +//CITADEL EDIT //Race specific bodyparts: //Xenos if("xenodorsal" in mutant_bodyparts) @@ -602,6 +609,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) if("taur" in mutant_bodyparts) if(!H.dna.features["taur"] || H.dna.features["taur"] == "None") bodyparts_to_add -= "taur" +//END EDIT //Digitigrade legs are stuck in the phantom zone between true limbs and mutant bodyparts. Mainly it just needs more agressive updating than most limbs. var/update_needed = FALSE @@ -632,9 +640,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/g = (H.gender == FEMALE) ? "f" : "m" - var/image/I - - for(var/layer in relevant_layers) + for(var/layer in relevent_layers) var/layertext = mutant_bodyparts_layertext(layer) for(var/bodypart in bodyparts_to_add) @@ -668,8 +674,10 @@ GLOBAL_LIST_EMPTY(roundstart_races) S = GLOB.wings_open_list[H.dna.features["wings"]] if("legs") S = GLOB.legs_list[H.dna.features["legs"]] + if("moth_wings") + S = GLOB.moth_wings_list[H.dna.features["moth_wings"]] - //Mammal Bodyparts (Canid/Felid, others maybe in the future) + //Mammal Bodyparts if("mam_tail") S = GLOB.mam_tails_list[H.dna.features["mam_tail"]] if("mam_waggingtail") @@ -689,13 +697,6 @@ GLOBAL_LIST_EMPTY(roundstart_races) if("xenotail") S = GLOB.xeno_tail_list[H.dna.features["xenotail"]] - //Slimecoon Bodyparts - /* if("slimecoontail") - S = /datum/sprite_accessory/slimecoon_tail - if("slimecoonears") - S = /datum/sprite_accessory/slimecoon_ears - if("slimecoonsnout") - S = /datum/sprite_accessory/slimecoon_snout*/ if(!S || S.icon_state == "none") continue @@ -711,19 +712,14 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(bodypart == "xenohead") bodypart = "xhead" - var/icon_string - if(S.gender_specific) accessory_overlay.icon_state = "[g]_[bodypart]_[S.icon_state]_[layertext]" else accessory_overlay.icon_state = "m_[bodypart]_[S.icon_state]_[layertext]" - - I = image("icon" = S.icon, "icon_state" = icon_string, "layer" =- layer) - if(S.center) accessory_overlay = center_image(accessory_overlay, S.dimension_x, S.dimension_y) - if(!(H.has_disability(DISABILITY_HUSK))) + if(!(H.has_trait(TRAIT_HUSK))) if(!forced_colour) switch(S.color_src) if(MUTCOLORS) @@ -767,83 +763,81 @@ GLOBAL_LIST_EMPTY(roundstart_races) standing += inner_accessory_overlay if(S.extra) //apply the extra overlay, if there is one + var/mutable_appearance/extra_accessory_overlay = mutable_appearance(S.icon, layer = -layer) if(S.gender_specific) - icon_string = "[g]_[bodypart]_extra_[S.icon_state]_[layertext]" + extra_accessory_overlay.icon_state = "[g]_[bodypart]_extra_[S.icon_state]_[layertext]" else - icon_string = "m_[bodypart]_extra_[S.icon_state]_[layertext]" - - I = image("icon" = S.icon, "icon_state" = icon_string, "layer" =- layer) - + extra_accessory_overlay.icon_state = "m_[bodypart]_extra_[S.icon_state]_[layertext]" if(S.center) - I = center_image(I,S.dimension_x,S.dimension_y) + extra_accessory_overlay = center_image(extra_accessory_overlay, S.dimension_x, S.dimension_y) + switch(S.extra_color_src) //change the color of the extra overlay if(MUTCOLORS) if(fixed_mut_color) - I.color = "#[fixed_mut_color]" + extra_accessory_overlay.color = "#[fixed_mut_color]" else - I.color = "#[H.dna.features["mcolor"]]" + extra_accessory_overlay.color = "#[H.dna.features["mcolor"]]" if(MUTCOLORS2) if(fixed_mut_color2) - I.color = "#[fixed_mut_color2]" + extra_accessory_overlay.color = "#[fixed_mut_color2]" else - I.color = "#[H.dna.features["mcolor2"]]" + extra_accessory_overlay.color = "#[H.dna.features["mcolor2"]]" if(MUTCOLORS3) if(fixed_mut_color3) - I.color = "#[fixed_mut_color3]" + extra_accessory_overlay.color = "#[fixed_mut_color3]" else - I.color = "#[H.dna.features["mcolor3"]]" + extra_accessory_overlay.color = "#[H.dna.features["mcolor3"]]" if(HAIR) if(hair_color == "mutcolor") - I.color = "#[H.dna.features["mcolor"]]" + extra_accessory_overlay.color = "#[H.dna.features["mcolor3"]]" else - I.color = "#[H.hair_color]" + extra_accessory_overlay.color = "#[H.hair_color]" if(FACEHAIR) - I.color = "#[H.facial_hair_color]" + extra_accessory_overlay.color = "#[H.facial_hair_color]" if(EYECOLOR) - I.color = "#[H.eye_color]" - standing += I + extra_accessory_overlay.color = "#[H.eye_color]" + standing += extra_accessory_overlay if(S.extra2) //apply the extra overlay, if there is one + var/mutable_appearance/extra2_accessory_overlay = mutable_appearance(S.icon, layer = -layer) if(S.gender_specific) - icon_string = "[g]_[bodypart]_extra2_[S.icon_state]_[layertext]" + extra2_accessory_overlay.icon_state = "[g]_[bodypart]_extra2_[S.icon_state]_[layertext]" else - icon_string = "m_[bodypart]_extra2_[S.icon_state]_[layertext]" - - I = image("icon" = S.icon, "icon_state" = icon_string, "layer" =- layer) - + extra2_accessory_overlay.icon_state = "m_[bodypart]_extra2_[S.icon_state]_[layertext]" if(S.center) - I = center_image(I,S.dimension_x,S.dimension_y) + extra2_accessory_overlay = center_image(extra2_accessory_overlay, S.dimension_x, S.dimension_y) switch(S.extra2_color_src) //change the color of the extra overlay if(MUTCOLORS) if(fixed_mut_color) - I.color = "#[fixed_mut_color]" + extra2_accessory_overlay.color = "#[fixed_mut_color]" else - I.color = "#[H.dna.features["mcolor"]]" + extra2_accessory_overlay.color = "#[H.dna.features["mcolor"]]" if(MUTCOLORS2) if(fixed_mut_color2) - I.color = "#[fixed_mut_color2]" + extra2_accessory_overlay.color = "#[fixed_mut_color2]" else - I.color = "#[H.dna.features["mcolor2"]]" + extra2_accessory_overlay.color = "#[H.dna.features["mcolor2"]]" if(MUTCOLORS3) if(fixed_mut_color3) - I.color = "#[fixed_mut_color3]" + extra2_accessory_overlay.color = "#[fixed_mut_color3]" else - I.color = "#[H.dna.features["mcolor3"]]" + extra2_accessory_overlay.color = "#[H.dna.features["mcolor3"]]" if(HAIR) - if(hair_color == "mutcolor") - I.color = "#[H.dna.features["mcolor"]]" + if(hair_color == "mutcolor3") + extra2_accessory_overlay.color = "#[H.dna.features["mcolor"]]" else - I.color = "#[H.hair_color]" - standing += I + extra2_accessory_overlay.color = "#[H.hair_color]" + standing += extra2_accessory_overlay H.overlays_standing[layer] = standing.Copy() standing = list() - for(var/L in relevant_layers) - H.apply_overlay(L) - + H.apply_overlay(BODY_BEHIND_LAYER) + H.apply_overlay(BODY_ADJ_LAYER) + H.apply_overlay(BODY_FRONT_LAYER) + H.apply_overlay(BODY_TAUR_LAYER) // CITADEL EDIT //This exists so sprite accessories can still be per-layer without having to include that layer's //number in their sprite name, which causes issues when those numbers change. @@ -855,9 +849,10 @@ GLOBAL_LIST_EMPTY(roundstart_races) return "ADJ" if(BODY_FRONT_LAYER) return "FRONT" + //CITADEL EDIT if(BODY_TAUR_LAYER) return "TAUR" - + //END EDIT /datum/species/proc/spec_life(mob/living/carbon/human/H) if(NOBREATH in species_traits) @@ -1101,17 +1096,17 @@ GLOBAL_LIST_EMPTY(roundstart_races) /datum/species/proc/handle_digestion(mob/living/carbon/human/H) - //The fucking DISABILITY_FAT mutation is the dumbest shit ever. It makes the code so difficult to work with - if(H.has_disability(DISABILITY_FAT))//I share your pain, past coder. + //The fucking TRAIT_FAT mutation is the dumbest shit ever. It makes the code so difficult to work with + if(H.has_trait(TRAIT_FAT))//I share your pain, past coder. if(H.overeatduration < 100) to_chat(H, "You feel fit again!") - H.remove_disability(DISABILITY_FAT, OBESITY) + H.remove_trait(TRAIT_FAT, OBESITY) H.update_inv_w_uniform() H.update_inv_wear_suit() else if(H.overeatduration > 500) to_chat(H, "You suddenly feel blubbery!") - H.add_disability(DISABILITY_FAT, OBESITY) + H.add_trait(TRAIT_FAT, OBESITY) H.update_inv_w_uniform() H.update_inv_wear_suit() @@ -1219,13 +1214,13 @@ GLOBAL_LIST_EMPTY(roundstart_races) flight = 1 if(!flightpack) //Check for chemicals and innate speedups and slowdowns if we're moving using our body and not a flying suit - if(H.status_flags & GOTTAGOFAST) + if(H.has_trait(TRAIT_GOTTAGOFAST)) . -= 1 - if(H.status_flags & GOTTAGOREALLYFAST) + if(H.has_trait(TRAIT_GOTTAGOREALLYFAST)) . -= 2 . += speedmod - if(H.status_flags & IGNORESLOWDOWN) + if(H.has_trait(TRAIT_IGNORESLOWDOWN)) ignoreslow = 1 if(H.has_gravity()) @@ -1268,7 +1263,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) . += (health_deficiency / 25) if((hungry >= 70) && !flight) //Being hungry won't stop you from using flightpack controls/flapping your wings although it probably will in the wing case but who cares. . += hungry / 50 - if(H.has_disability(DISABILITY_FAT)) + if(H.has_trait(TRAIT_FAT)) . += (1.5 - flight) if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT) . += (BODYTEMP_COLD_DAMAGE_LIMIT - H.bodytemperature) / COLD_SLOWDOWN_FACTOR @@ -1283,7 +1278,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) ////////////////// /datum/species/proc/help(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/martial_art/attacker_style) - if(target.health >= 0 && !(target.status_flags & FAKEDEATH)) + if(target.health >= 0 && !(target.has_trait(TRAIT_FAKEDEATH))) target.help_shake_act(user) if(target != user) add_logs(user, target, "shaked") @@ -1314,7 +1309,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) /datum/species/proc/harm(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/martial_art/attacker_style) - if(user.has_disability(DISABILITY_PACIFISM)) + if(user.has_trait(TRAIT_PACIFISM)) to_chat(user, "You don't want to harm [target]!") return FALSE if(target.check_block()) @@ -1369,6 +1364,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) target.forcesay(GLOB.hit_appends) /datum/species/proc/disarm(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/martial_art/attacker_style) +// CITADEL EDIT slap mouthy gits var/aim_for_mouth = user.zone_selected == "mouth" var/target_on_help_and_unarmed = target.a_intent == INTENT_HELP && !target.get_active_held_item() var/target_aiming_for_mouth = target.zone_selected == "mouth" @@ -1380,7 +1376,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) "You hear a slap.") target.endTailWag() return FALSE - else if(target.check_block()) + else if(target.check_block()) //END EDIT target.visible_message("[target] blocks [user]'s disarm attempt!") return 0 if(attacker_style && attacker_style.disarm_act(user,target)) diff --git a/code/modules/mob/living/carbon/human/species_types/abductors.dm b/code/modules/mob/living/carbon/human/species_types/abductors.dm index cd273ec98e..447245cad0 100644 --- a/code/modules/mob/living/carbon/human/species_types/abductors.dm +++ b/code/modules/mob/living/carbon/human/species_types/abductors.dm @@ -3,7 +3,7 @@ id = "abductor" say_mod = "gibbers" sexes = FALSE - species_traits = list(SPECIES_ORGANIC,NOBLOOD,NOBREATH,VIRUSIMMUNE,NOGUNS,NOHUNGER) + species_traits = list(SPECIES_ORGANIC,NOBLOOD,NOBREATH,VIRUSIMMUNE,NOGUNS,NOHUNGER,NOEYES) mutanttongue = /obj/item/organ/tongue/abductor var/scientist = FALSE // vars to not pollute spieces list with castes diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm index 7b37e5fc42..282e9044b4 100644 --- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm @@ -2,13 +2,13 @@ name = "Flyperson" id = "fly" say_mod = "buzzes" - species_traits = list(SPECIES_ORGANIC) + species_traits = list(SPECIES_ORGANIC, NOEYES) mutanttongue = /obj/item/organ/tongue/fly mutantliver = /obj/item/organ/liver/fly mutantstomach = /obj/item/organ/stomach/fly meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/fly disliked_food = null - liked_food = NONE + liked_food = GROSS /datum/species/fly/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) if(chem.id == "pestkiller") diff --git a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm b/code/modules/mob/living/carbon/human/species_types/furrypeople.dm index b8d9713d37..0e00975a5a 100644 --- a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/furrypeople.dm @@ -67,8 +67,8 @@ id = "insect" default_color = "BCAC9B" species_traits = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,SPECIES_ORGANIC) - mutant_bodyparts = list("mam_body_markings", "mam_ears", "mam_tail", "taur") - default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_body_markings" = "moth", "mam_tail" = "None", "mam_ears" = "None") + mutant_bodyparts = list("mam_body_markings", "mam_ears", "mam_tail", "taur", "moth_wings") + default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_body_markings" = "moth", "mam_tail" = "None", "mam_ears" = "None", "moth_wings" = "None") attack_verb = "flutter" //wat? attack_sound = 'sound/weapons/slash.ogg' miss_sound = 'sound/weapons/slashmiss.ogg' diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index cc47bd64b7..aded7f89b1 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -549,7 +549,7 @@ limbs_id = "cultgolem" sexes = FALSE info_text = "As a Runic Golem, you possess eldritch powers granted by the Elder God Nar'Sie." - species_traits = list(SPECIES_INORGANIC,NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOFIRE,NOGUNS,NOBLOOD,RADIMMUNE,PIERCEIMMUNE,NODISMEMBER,NO_UNDERWEAR) //no mutcolors + species_traits = list(SPECIES_INORGANIC,NOBREATH,RESISTHOT,RESISTCOLD,RESISTPRESSURE,NOFIRE,NOGUNS,NOBLOOD,RADIMMUNE,PIERCEIMMUNE,NODISMEMBER,NO_UNDERWEAR,NOEYES) //no mutcolors prefix = "Runic" var/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift/golem/phase_shift @@ -603,7 +603,7 @@ limbs_id = "clockgolem" info_text = "As a clockwork golem, you are faster than \ other types of golem (being a machine), and are immune to electric shocks." - species_traits = list(SPECIES_INORGANIC,NO_UNDERWEAR, NOTRANSSTING, NOBREATH, NOZOMBIE, RADIMMUNE, NOBLOOD, RESISTCOLD, RESISTPRESSURE, PIERCEIMMUNE) + species_traits = list(SPECIES_INORGANIC,NO_UNDERWEAR, NOTRANSSTING, NOBREATH, NOZOMBIE, RADIMMUNE, NOBLOOD, RESISTCOLD, RESISTPRESSURE, PIERCEIMMUNE, NOEYES) armor = 20 //Reinforced, but much less so to allow for fast movement attack_verb = "smash" attack_sound = 'sound/magic/clockwork/anima_fragment_attack.ogg' @@ -727,7 +727,7 @@ /obj/structure/cloth_pile/proc/revive() if(QDELETED(src) || QDELETED(cloth_golem)) //QDELETED also checks for null, so if no cloth golem is set this won't runtime return - if(cloth_golem.suiciding || cloth_golem.has_disability(DISABILITY_NOCLONE)) + if(cloth_golem.suiciding || cloth_golem.has_trait(TRAIT_NOCLONE)) QDEL_NULL(cloth_golem) return diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 6b1a35ea04..0299d64621 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -10,6 +10,9 @@ damage_overlay_type = "" var/datum/action/innate/regenerate_limbs/regenerate_limbs liked_food = MEAT + coldmod = 6 // = 3x cold damage + heatmod = 0.5 // = 1/4x heat damage + burnmod = 0.5 // = 1/2x generic burn damage /datum/species/jelly/on_species_loss(mob/living/carbon/C) if(regenerate_limbs) @@ -17,6 +20,7 @@ C.remove_language(/datum/language/slime, TRUE) C.faction -= "slime" ..() + C.faction -= "slime" /datum/species/jelly/on_species_gain(mob/living/carbon/C, datum/species/old_species) ..() @@ -24,6 +28,7 @@ if(ishuman(C)) regenerate_limbs = new regenerate_limbs.Grant(C) + C.faction |= "slime" /datum/species/jelly/spec_life(mob/living/carbon/human/H) if(H.stat == DEAD) //can't farm slime jelly from a dead slime/jelly person indefinitely @@ -42,7 +47,8 @@ to_chat(H, "You feel drained!") if(H.blood_volume < BLOOD_VOLUME_BAD) Cannibalize_Body(H) - H.update_action_buttons_icon() + if(regenerate_limbs) + regenerate_limbs.UpdateButtonIcon() /datum/species/jelly/proc/Cannibalize_Body(mob/living/carbon/human/H) var/list/limbs_to_consume = list("r_arm", "l_arm", "r_leg", "l_leg") - H.get_missing_limbs() @@ -97,10 +103,11 @@ return to_chat(H, "...but there is not enough of you to go around! You must attain more mass to heal!") -////////////////////////////////////////////////////////SLIME PEOPLE/////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////SLIMEPEOPLE/////////////////////////////////////////////////////////////////// + +//Slime people are able to split like slimes, retaining a single mind that can swap between bodies at will, even after death. /datum/species/jelly/slime - // Humans mutated by slime mutagen, produced from green slimes. They are not targetted by slimes. name = "Slimeperson" id = "slime" default_color = "00FFFF" @@ -109,29 +116,25 @@ hair_color = "mutcolor" hair_alpha = 150 ignored_by = list(/mob/living/simple_animal/slime) - burnmod = 0.5 - coldmod = 2 - heatmod = 0.5 var/datum/action/innate/split_body/slime_split var/list/mob/living/carbon/bodies var/datum/action/innate/swap_body/swap_body /datum/species/jelly/slime/on_species_loss(mob/living/carbon/C) - if(slime_split) +/* if(slime_split) slime_split.Remove(C) if(swap_body) swap_body.Remove(C) bodies -= C // This means that the other bodies maintain a link // so if someone mindswapped into them, they'd still be shared. - bodies = null - C.faction -= "slime" + bodies = null */ C.blood_volume = min(C.blood_volume, BLOOD_VOLUME_NORMAL) ..() /datum/species/jelly/slime/on_species_gain(mob/living/carbon/C, datum/species/old_species) ..() if(ishuman(C)) - /*slime_split = new + /* slime_split = new slime_split.Grant(C) swap_body = new swap_body.Grant(C)*/ @@ -140,29 +143,31 @@ bodies = list(C) else bodies |= C - + /datum/species/jelly/slime/spec_death(gibbed, mob/living/carbon/human/H) if(slime_split) - var/datum/mind/M - for(var/mob/living/L in bodies) - if(L.mind && L.mind.active) - M = L.mind - if(!M || M != H.mind) + if(!H.mind || !H.mind.active) return + var/list/available_bodies = (bodies - H) + for(var/mob/living/L in available_bodies) + if(!swap_body.can_swap(L)) + available_bodies -= L + if(!LAZYLEN(available_bodies)) return - swap_body.swap_to_dupe(M, pick(available_bodies)) + + swap_body.swap_to_dupe(H.mind, pick(available_bodies)) //If you're cloned you get your body pool back /datum/species/jelly/slime/copy_properties_from(datum/species/jelly/slime/old_species) bodies = old_species.bodies /datum/species/jelly/slime/spec_life(mob/living/carbon/human/H) - /*if(H.blood_volume >= BLOOD_VOLUME_SLIME_SPLIT) + if(H.blood_volume >= BLOOD_VOLUME_SLIME_SPLIT) if(prob(5)) - to_chat(H, "You feel very bloated!")*/ - if(H.nutrition >= NUTRITION_LEVEL_WELL_FED) + to_chat(H, "You feel very bloated!") + else if(H.nutrition >= NUTRITION_LEVEL_WELL_FED) H.blood_volume += 3 H.nutrition -= 2.5 @@ -219,7 +224,7 @@ spare.domutcheck() spare.Move(get_step(H.loc, pick(NORTH,SOUTH,EAST,WEST))) - H.blood_volume = BLOOD_VOLUME_SAFE + H.blood_volume *= 0.45 H.notransform = 0 var/datum/species/jelly/slime/origin_datum = H.dna.species @@ -237,7 +242,7 @@ /datum/action/innate/swap_body name = "Swap Body" - check_flags = AB_CHECK_CONSCIOUS + check_flags = NONE button_icon_state = "slimeswap" icon_icon = 'icons/mob/actions/actions_slime.dmi' background_icon_state = "bg_alien" @@ -250,6 +255,7 @@ ui_interact(owner) /datum/action/innate/swap_body/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.always_state) + ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) ui = new(user, src, ui_key, "slime_swap_body", name, 400, 400, master_ui, state) @@ -282,24 +288,31 @@ stat = "Unconscious" if(DEAD) stat = "Dead" - var/current = body.mind - var/is_conscious = (body.stat == CONSCIOUS) + var/occupied + if(body == H) + occupied = "owner" + else if(body.mind && body.mind.active) + occupied = "stranger" + else + occupied = "available" L["status"] = stat L["exoticblood"] = body.blood_volume L["name"] = body.name L["ref"] = "[REF(body)]" - L["is_current"] = current + L["occupied"] = occupied var/button - if(current) + if(occupied == "owner") button = "selected" - else if(is_conscious) + else if(occupied == "stranger") + button = "danger" + else if(can_swap(body)) button = null else button = "disabled" L["swap_button_state"] = button - L["swappable"] = !current && is_conscious + L["swappable"] = (occupied == "available") && can_swap(body) data["bodies"] += list(L) @@ -311,37 +324,397 @@ var/mob/living/carbon/human/H = owner if(!isslimeperson(owner)) return - var/datum/species/jelly/slime/SS = H.dna.species - - var/datum/mind/M - for(var/mob/living/L in SS.bodies) - if(L.mind && L.mind.active) - M = L.mind - if(!M) + if(!H.mind || !H.mind.active) return - if(!isslimeperson(M.current)) - return - switch(action) if("swap") var/mob/living/carbon/human/selected = locate(params["ref"]) - if(!(selected in SS.bodies)) - return - if(!selected || QDELETED(selected) || !isslimeperson(selected)) - SS.bodies -= selected - return - if(M.current == selected) - return - if(selected.stat != CONSCIOUS) + if(!can_swap(selected)) return + SStgui.close_uis(src) + swap_to_dupe(H.mind, selected) - swap_to_dupe(M, selected) +/datum/action/innate/swap_body/proc/can_swap(mob/living/carbon/human/dupe) + var/mob/living/carbon/human/H = owner + if(!isslimeperson(H)) + return FALSE + var/datum/species/jelly/slime/SS = H.dna.species + + if(QDELETED(dupe)) //Is there a body? + SS.bodies -= dupe + return FALSE + + if(!isslimeperson(dupe)) //Is it a slimeperson? + SS.bodies -= dupe + return FALSE + + if(dupe.stat == DEAD) //Is it alive? + return FALSE + + if(dupe.stat != CONSCIOUS) //Is it awake? + return FALSE + + if(dupe.mind && dupe.mind.active) //Is it unoccupied? + return FALSE + + if(!(dupe in SS.bodies)) //Do we actually own it? + return FALSE + + return TRUE /datum/action/innate/swap_body/proc/swap_to_dupe(datum/mind/M, mob/living/carbon/human/dupe) - M.current.visible_message("[M.current] \ - stops moving and starts staring vacantly into space.", - "You stop moving this body...") + if(!can_swap(dupe)) //sanity check + return + if(M.current.stat == CONSCIOUS) + M.current.visible_message("[M.current] \ + stops moving and starts staring vacantly into space.", + "You stop moving this body...") + else + to_chat(M.current, "You abandon this body...") M.transfer_to(dupe) dupe.visible_message("[dupe] blinks and looks \ around.", "...and move this one instead.") + +///////////////////////////////////LUMINESCENTS////////////////////////////////////////// + +//Luminescents are able to consume and use slime extracts, without them decaying. + +/datum/species/jelly/luminescent + name = "Luminescent" + id = "lum" + say_mod = "says" + var/glow_intensity = LUMINESCENT_DEFAULT_GLOW + var/obj/effect/dummy/luminescent_glow/glow + var/obj/item/slime_extract/current_extract + var/datum/action/innate/integrate_extract/integrate_extract + var/datum/action/innate/use_extract/extract_minor + var/datum/action/innate/use_extract/major/extract_major + var/extract_cooldown = 0 + +/datum/species/jelly/luminescent/on_species_loss(mob/living/carbon/C) + ..() + if(current_extract) + current_extract.forceMove(C.drop_location()) + current_extract = null + qdel(glow) + if(integrate_extract) + integrate_extract.Remove(C) + if(extract_minor) + extract_minor.Remove(C) + if(extract_major) + extract_major.Remove(C) + +/datum/species/jelly/luminescent/on_species_gain(mob/living/carbon/C, datum/species/old_species) + ..() + glow = new(C) + update_glow(C) + integrate_extract = new(src) + integrate_extract.Grant(C) + extract_minor = new(src) + extract_minor.Grant(C) + extract_major = new(src) + extract_major.Grant(C) + +/datum/species/jelly/luminescent/proc/update_slime_actions() + integrate_extract.update_name() + integrate_extract.UpdateButtonIcon() + extract_minor.UpdateButtonIcon() + extract_major.UpdateButtonIcon() + +/datum/species/jelly/luminescent/proc/update_glow(mob/living/carbon/C, intensity) + if(intensity) + glow_intensity = intensity + glow.set_light(glow_intensity, glow_intensity, C.dna.features["mcolor"]) + +/obj/effect/dummy/luminescent_glow + name = "luminescent glow" + desc = "Tell a coder if you're seeing this." + icon_state = "nothing" + light_color = "#FFFFFF" + light_range = LUMINESCENT_DEFAULT_GLOW + +/obj/effect/dummy/luminescent_glow/Initialize() + . = ..() + if(!isliving(loc)) + return INITIALIZE_HINT_QDEL + +/datum/action/innate/integrate_extract + name = "Integrate Extract" + desc = "Eat a slime extract to use its properties." + check_flags = AB_CHECK_CONSCIOUS + button_icon_state = "slimeconsume" + icon_icon = 'icons/mob/actions/actions_slime.dmi' + background_icon_state = "bg_alien" + var/datum/species/jelly/luminescent/species + +/datum/action/innate/integrate_extract/New(_species) + ..() + species = _species + +/datum/action/innate/integrate_extract/proc/update_name() + if(!species || !species.current_extract) + name = "Integrate Extract" + desc = "Eat a slime extract to use its properties." + else + name = "Eject Extract" + desc = "Eject your current slime extract." + +/datum/action/innate/integrate_extract/UpdateButtonIcon(status_only, force) + if(!species || !species.current_extract) + button_icon_state = "slimeconsume" + else + button_icon_state = "slimeeject" + ..() + +/datum/action/innate/integrate_extract/ApplyIcon(obj/screen/movable/action_button/current_button, force) + ..(current_button, TRUE) + if(species && species.current_extract) + current_button.add_overlay(mutable_appearance(species.current_extract.icon, species.current_extract.icon_state)) + +/datum/action/innate/integrate_extract/Activate() + var/mob/living/carbon/human/H = owner + if(!is_species(H, /datum/species/jelly/luminescent) || !species) + return + CHECK_DNA_AND_SPECIES(H) + + if(species.current_extract) + var/obj/item/slime_extract/S = species.current_extract + if(!H.put_in_active_hand(S)) + S.forceMove(H.drop_location()) + species.current_extract = null + to_chat(H, "You eject [S].") + species.update_slime_actions() + else + var/obj/item/I = H.get_active_held_item() + if(istype(I, /obj/item/slime_extract)) + var/obj/item/slime_extract/S = I + if(!S.Uses) + to_chat(H, "[I] is spent! You cannot integrate it.") + return + if(!H.temporarilyRemoveItemFromInventory(S)) + return + S.forceMove(H) + species.current_extract = S + to_chat(H, "You consume [I], and you feel it pulse within you...") + species.update_slime_actions() + else + to_chat(H, "You need to hold an unused slime extract in your active hand!") + +/datum/action/innate/use_extract + name = "Extract Minor Activation" + desc = "Pulse the slime extract with energized jelly to activate it." + check_flags = AB_CHECK_CONSCIOUS + button_icon_state = "slimeuse1" + icon_icon = 'icons/mob/actions/actions_slime.dmi' + background_icon_state = "bg_alien" + var/activation_type = SLIME_ACTIVATE_MINOR + var/datum/species/jelly/luminescent/species + +/datum/action/innate/use_extract/New(_species) + ..() + species = _species + +/datum/action/innate/use_extract/IsAvailable() + if(..()) + if(species && species.current_extract && (world.time > species.extract_cooldown)) + return TRUE + return FALSE + +/datum/action/innate/use_extract/ApplyIcon(obj/screen/movable/action_button/current_button, force) + ..(current_button, TRUE) + if(species && species.current_extract) + current_button.add_overlay(mutable_appearance(species.current_extract.icon, species.current_extract.icon_state)) + +/datum/action/innate/use_extract/Activate() + var/mob/living/carbon/human/H = owner + if(!is_species(H, /datum/species/jelly/luminescent) || !species) + return + CHECK_DNA_AND_SPECIES(H) + + if(species.current_extract) + species.extract_cooldown = world.time + 100 + + var/cooldown = species.current_extract.activate(H, species, activation_type) + species.extract_cooldown = world.time + cooldown + +/datum/action/innate/use_extract/major + name = "Extract Major Activation" + desc = "Pulse the slime extract with plasma jelly to activate it." + button_icon_state = "slimeuse2" + activation_type = SLIME_ACTIVATE_MAJOR + +///////////////////////////////////STARGAZERS////////////////////////////////////////// + +//Stargazers are the telepathic branch of jellypeople, able to project psychic messages and to link minds with willing participants. +//Admin spawn only + + +/datum/species/jelly/stargazer + name = "Stargazer" + id = "stargazer" + var/datum/action/innate/project_thought/project_thought + var/datum/action/innate/link_minds/link_minds + var/list/mob/living/linked_mobs = list() + var/list/datum/action/innate/linked_speech/linked_actions = list() + var/mob/living/carbon/human/slimelink_owner + var/current_link_id = 0 + +/datum/species/jelly/stargazer/on_species_loss(mob/living/carbon/C) + ..() + for(var/M in linked_mobs) + unlink_mob(M) + if(project_thought) + project_thought.Remove(C) + if(link_minds) + link_minds.Remove(C) + +/datum/species/jelly/stargazer/spec_death(gibbed, mob/living/carbon/human/H) + ..() + for(var/M in linked_mobs) + unlink_mob(M) + +/datum/species/jelly/stargazer/on_species_gain(mob/living/carbon/C, datum/species/old_species) + ..() + project_thought = new(src) + project_thought.Grant(C) + link_minds = new(src) + link_minds.Grant(C) + slimelink_owner = C + link_mob(C) + +/datum/species/jelly/stargazer/proc/link_mob(mob/living/M) + if(QDELETED(M) || M.stat == DEAD) + return FALSE + if(M.isloyal()) //mindshield implant, no dice + return FALSE + if(M in linked_mobs) + return FALSE + linked_mobs.Add(M) + to_chat(M, "You are now connected to [slimelink_owner.real_name]'s Slime Link.") + var/datum/action/innate/linked_speech/action = new(src) + linked_actions.Add(action) + action.Grant(M) + return TRUE + +/datum/species/jelly/stargazer/proc/unlink_mob(mob/living/M) + var/link_id = linked_mobs.Find(M) + if(!(link_id)) + return + var/datum/action/innate/linked_speech/action = linked_actions[link_id] + action.Remove(M) + to_chat(M, "You are no longer connected to [slimelink_owner.real_name]'s Slime Link.") + linked_mobs[link_id] = null + linked_actions[link_id] = null + +/datum/action/innate/linked_speech + name = "Slimelink" + desc = "Send a psychic message to everyone connected to your slime link." + button_icon_state = "link_speech" + icon_icon = 'icons/mob/actions/actions_slime.dmi' + background_icon_state = "bg_alien" + var/datum/species/jelly/stargazer/species + +/datum/action/innate/linked_speech/New(_species) + ..() + species = _species + +/datum/action/innate/linked_speech/Activate() + var/mob/living/carbon/human/H = owner + if(!species || !(H in species.linked_mobs)) + to_chat(H, "The link seems to have been severed...") + Remove(H) + return + + var/message = sanitize(input("Message:", "Slime Telepathy") as text|null) + + if(!species || !(H in species.linked_mobs)) + to_chat(H, "The link seems to have been severed...") + Remove(H) + return + + if(QDELETED(H) || H.stat == DEAD) + species.unlink_mob(H) + return + + if(message) + var/msg = "\[[species.slimelink_owner.real_name]'s Slime Link\] [H]: [message]" + log_talk(H,"SlimeLink: [key_name(H)] : [msg]",LOGSAY) + for(var/X in species.linked_mobs) + var/mob/living/M = X + if(QDELETED(M) || M.stat == DEAD) + species.unlink_mob(M) + continue + to_chat(M, msg) + + for(var/X in GLOB.dead_mob_list) + var/mob/M = X + var/link = FOLLOW_LINK(M, H) + to_chat(M, "[link] [msg]") + +/datum/action/innate/project_thought + name = "Send Thought" + desc = "Send a private psychic message to someone you can see." + button_icon_state = "send_mind" + icon_icon = 'icons/mob/actions/actions_slime.dmi' + background_icon_state = "bg_alien" + +/datum/action/innate/project_thought/Activate() + var/mob/living/carbon/human/H = owner + if(!is_species(H, /datum/species/jelly/stargazer)) + return + CHECK_DNA_AND_SPECIES(H) + + var/list/options = list() + for(var/mob/living/Ms in oview(H)) + options += Ms + var/mob/living/M = input("Select who to send your message to:","Send thought to?",null) as null|mob in options + if(!M) + return + + var/msg = sanitize(input("Message:", "Telepathy") as text|null) + if(msg) + log_talk(H,"SlimeTelepathy: [key_name(H)]->[M.key] : [msg]",LOGSAY) + to_chat(M, "You hear an alien voice in your head... [msg]") + to_chat(H, "You telepathically said: \"[msg]\" to [M]") + for(var/dead in GLOB.dead_mob_list) + if(!isobserver(dead)) + continue + var/follow_link_user = FOLLOW_LINK(dead, H) + var/follow_link_target = FOLLOW_LINK(dead, M) + to_chat(dead, "[follow_link_user] [H] Slime Telepathy --> [follow_link_target] [M] [msg]") + +/datum/action/innate/link_minds + name = "Link Minds" + desc = "Link someone's mind to your Slime Link, allowing them to communicate telepathically with other linked minds." + button_icon_state = "mindlink" + icon_icon = 'icons/mob/actions/actions_slime.dmi' + background_icon_state = "bg_alien" + var/datum/species/jelly/stargazer/species + +/datum/action/innate/link_minds/New(_species) + ..() + species = _species + +/datum/action/innate/link_minds/Activate() + var/mob/living/carbon/human/H = owner + if(!is_species(H, /datum/species/jelly/stargazer)) + return + CHECK_DNA_AND_SPECIES(H) + + if(!H.pulling || !isliving(H.pulling) || H.grab_state < GRAB_AGGRESSIVE) + to_chat(H, "You need to aggressively grab someone to link minds!") + return + + var/mob/living/target = H.pulling + + to_chat(H, "You begin linking [target]'s mind to yours...") + to_chat(target, "You feel a foreign presence within your mind...") + if(do_after(H, 60, target = target)) + if(H.pulling != target || H.grab_state < GRAB_AGGRESSIVE) + return + if(species.link_mob(target)) + to_chat(H, "You connect [target]'s mind to your slime link!") + else + to_chat(H, "You can't seem to link [target]'s mind...") + to_chat(target, "The foreign presence leaves your mind.") diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm new file mode 100644 index 0000000000..7f0d8afe26 --- /dev/null +++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm @@ -0,0 +1,60 @@ +/datum/species/moth + name = "Mothmen" + id = "moth" + say_mod = "flutters" + default_color = "00FF00" + species_traits = list(LIPS, SPECIES_ORGANIC, NOEYES) + mutant_bodyparts = list("moth_wings") + default_features = list("moth_wings" = "Plain") + attack_verb = "slash" + attack_sound = 'sound/weapons/slash.ogg' + miss_sound = 'sound/weapons/slashmiss.ogg' + meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/moth + liked_food = VEGETABLES | DAIRY + disliked_food = FRUIT | GROSS + toxic_food = MEAT | RAW + mutanteyes = /obj/item/organ/eyes/moth + +/datum/species/moth/on_species_gain(mob/living/carbon/C) + . = ..() + if(ishuman(C)) + var/mob/living/carbon/human/H = C + if(!H.dna.features["moth_wings"]) + H.dna.features["moth_wings"] = "[(H.client && H.client.prefs && LAZYLEN(H.client.prefs.features) && H.client.prefs.features["moth_wings"]) ? H.client.prefs.features["moth_wings"] : "Plain"]" + handle_mutant_bodyparts(H) + +/datum/species/moth/random_name(gender,unique,lastname) + if(unique) + return random_unique_moth_name() + + var/randname = moth_name() + + if(lastname) + randname += " [lastname]" + + return randname + +/datum/species/moth/handle_fire(mob/living/carbon/human/H, no_protection = FALSE) + ..() + if(H.dna.features["moth_wings"] != "Burnt Off" && H.bodytemperature >= 800 && H.fire_stacks > 0) //do not go into the extremely hot light. you will not survive + to_chat(H, "Your precious wings burn to a crisp!") + H.dna.features["moth_wings"] = "Burnt Off" + handle_mutant_bodyparts(H) + +/datum/species/moth/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) + . = ..() + if(chem.id == "pestkiller") + H.adjustToxLoss(3) + H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) + +/datum/species/moth/check_weakness(obj/item/weapon, mob/living/attacker) + if(istype(weapon, /obj/item/melee/flyswatter)) + return 9 //flyswatters deal 10x damage to moths + return 0 + +/datum/species/moth/space_move(mob/living/carbon/human/H) + . = ..() + if(H.loc && !isspaceturf(H.loc) && H.dna.features["moth_wings"] != "Burnt Off" || "None") + var/datum/gas_mixture/current = H.loc.return_air() + if(current && (current.return_pressure() >= ONE_ATMOSPHERE*0.85)) //as long as there's reasonable pressure and no gravity, flight is possible + return TRUE diff --git a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm index c4f85501d0..a5c6720db5 100644 --- a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm +++ b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm @@ -17,8 +17,8 @@ speedmod = 1 damage_overlay_type = ""//let's not show bloody wounds or burns over bones. var/internal_fire = FALSE //If the bones themselves are burning clothes won't help you much - disliked_food = NONE - liked_food = NONE + disliked_food = FRUIT + liked_food = VEGETABLES /datum/species/plasmaman/spec_life(mob/living/carbon/human/H) var/datum/gas_mixture/environment = H.loc.return_air() diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index 6bd77b908c..f3360e47fb 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -8,12 +8,10 @@ attack_sound = 'sound/weapons/slice.ogg' miss_sound = 'sound/weapons/slashmiss.ogg' burnmod = 1.25 - heatmod = 1.55 + heatmod = 1.5 meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/plant - disliked_food = NONE - liked_food = NONE - toxic_food = NONE - + disliked_food = MEAT | DAIRY + liked_food = VEGETABLES | FRUIT | GRAIN /datum/species/pod/on_species_gain(mob/living/carbon/C, datum/species/old_species) . = ..() @@ -36,21 +34,18 @@ if(H.nutrition > NUTRITION_LEVEL_FULL) H.nutrition = NUTRITION_LEVEL_FULL if(light_amount > 0.2) //if there's enough light, heal - H.heal_overall_damage(0.75,0) - H.adjustOxyLoss(-0.5) - - if(H.nutrition < NUTRITION_LEVEL_STARVING + 55) - H.adjustOxyLoss(5) //can eat to negate this unfortunately - H.adjustToxLoss(3) + H.heal_overall_damage(1,1) + H.adjustToxLoss(-1) + H.adjustOxyLoss(-1) + if(H.nutrition < NUTRITION_LEVEL_STARVING + 50) + H.take_overall_damage(2,0) /datum/species/pod/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) if(chem.id == "plantbgone") - H.adjustToxLoss(5) + H.adjustToxLoss(3) H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) - H.confused = max(H.confused, 1) - return TRUE - + return 1 /datum/species/pod/on_hit(obj/item/projectile/P, mob/living/carbon/human/H) switch(P.type) diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm index 17f5bafc42..3a61e48edc 100644 --- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm @@ -9,7 +9,7 @@ blacklisted = 1 ignored_by = list(/mob/living/simple_animal/hostile/faithless) meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/shadow - species_traits = list(SPECIES_ORGANIC,NOBREATH,NOBLOOD,RADIMMUNE,VIRUSIMMUNE) + species_traits = list(SPECIES_ORGANIC,NOBREATH,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,NOEYES) dangerous_existence = 1 mutanteyes = /obj/item/organ/eyes/night_vision @@ -37,7 +37,7 @@ burnmod = 1.5 blacklisted = TRUE no_equip = list(slot_wear_mask, slot_wear_suit, slot_gloves, slot_shoes, slot_w_uniform, slot_s_store) - species_traits = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,NO_UNDERWEAR,NOHUNGER,NO_DNA_COPY,NOTRANSSTING) + species_traits = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER,NO_UNDERWEAR,NOHUNGER,NO_DNA_COPY,NOTRANSSTING,NOEYES) mutanteyes = /obj/item/organ/eyes/night_vision/nightmare mutant_organs = list(/obj/item/organ/heart/nightmare) mutant_brain = /obj/item/organ/brain/nightmare diff --git a/code/modules/mob/living/carbon/human/species_types/skeletons.dm b/code/modules/mob/living/carbon/human/species_types/skeletons.dm index 0a55ae0134..d47f3d71d5 100644 --- a/code/modules/mob/living/carbon/human/species_types/skeletons.dm +++ b/code/modules/mob/living/carbon/human/species_types/skeletons.dm @@ -10,9 +10,9 @@ mutanttongue = /obj/item/organ/tongue/bone damage_overlay_type = ""//let's not show bloody wounds or burns over bones. disliked_food = NONE - liked_food = NONE + liked_food = GROSS | MEAT | RAW /datum/species/skeleton/check_roundstart_eligible() if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) return TRUE - return ..() + return ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm index 792485960e..14502aa931 100644 --- a/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -12,7 +12,7 @@ mutanttongue = /obj/item/organ/tongue/zombie var/static/list/spooks = list('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg','sound/hallucinations/veryfar_noise.ogg','sound/hallucinations/wail.ogg') disliked_food = NONE - liked_food = NONE + liked_food = GROSS | MEAT | RAW /datum/species/zombie/check_roundstart_eligible() if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 266afffed2..3c57b172fe 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -610,7 +610,7 @@ generate/load female uniform sprites matching all previously decided variables if(BP.dmg_overlay_type) . += "-[BP.dmg_overlay_type]" - if(has_disability(DISABILITY_HUSK)) + if(has_trait(TRAIT_HUSK)) . += "-husk" /mob/living/carbon/human/load_limb_from_cache() diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 658d7a90c4..3a49badc77 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -1,6 +1,5 @@ /mob/living/carbon/Life() set invisibility = 0 - set background = BACKGROUND_ENABLED if(notransform) return diff --git a/code/modules/mob/living/carbon/monkey/combat.dm b/code/modules/mob/living/carbon/monkey/combat.dm index 18f245d4cd..32b368db4f 100644 --- a/code/modules/mob/living/carbon/monkey/combat.dm +++ b/code/modules/mob/living/carbon/monkey/combat.dm @@ -122,7 +122,7 @@ if(L == src) return FALSE - if(has_disability(DISABILITY_PACIFISM)) + if(has_trait(TRAIT_PACIFISM)) return FALSE if(enemies[L]) diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index b6609a319e..58edac0eaf 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -5,7 +5,6 @@ /mob/living/carbon/monkey/Life() set invisibility = 0 - set background = BACKGROUND_ENABLED if (notransform) return @@ -74,6 +73,7 @@ else bodytemperature += min((loc_temp - bodytemperature) / BODYTEMP_HEAT_DIVISOR, BODYTEMP_HEATING_MAX) + if(bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT) switch(bodytemperature) if(360 to 400) diff --git a/code/modules/mob/living/carbon/monkey/update_icons.dm b/code/modules/mob/living/carbon/monkey/update_icons.dm index 1bb4400087..def7640b76 100644 --- a/code/modules/mob/living/carbon/monkey/update_icons.dm +++ b/code/modules/mob/living/carbon/monkey/update_icons.dm @@ -19,7 +19,7 @@ if(!HD) //Decapitated return - if(has_disability(DISABILITY_HUSK)) + if(has_trait(TRAIT_HUSK)) return var/hair_hidden = 0 diff --git a/code/modules/mob/living/carbon/status_procs.dm b/code/modules/mob/living/carbon/status_procs.dm index efde375227..300455a174 100644 --- a/code/modules/mob/living/carbon/status_procs.dm +++ b/code/modules/mob/living/carbon/status_procs.dm @@ -1,6 +1,6 @@ //Here are the procs used to modify status effects of a mob. //The effects include: stun, knockdown, unconscious, sleeping, resting, jitteriness, dizziness, ear damage, -// eye damage, eye_blind, eye_blurry, druggy, DISABILITY_BLIND disability, DISABILITY_NEARSIGHT disability, and DISABILITY_HUSK disability. +// eye damage, eye_blind, eye_blurry, druggy, TRAIT_BLIND trait, TRAIT_NEARSIGHT trait, and TRAIT_HUSK trait. /mob/living/carbon/damage_eyes(amount) var/obj/item/organ/eyes/eyes = getorganslot(ORGAN_SLOT_EYES) diff --git a/code/modules/mob/living/carbon/update_icons.dm b/code/modules/mob/living/carbon/update_icons.dm index 147f14c945..d798a3cd25 100644 --- a/code/modules/mob/living/carbon/update_icons.dm +++ b/code/modules/mob/living/carbon/update_icons.dm @@ -290,7 +290,7 @@ else . += "-robotic" - if(has_disability(DISABILITY_HUSK)) + if(has_trait(TRAIT_HUSK)) . += "-husk" diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 9517e1b705..896708a4e3 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -113,14 +113,14 @@ if(SLUR) slurring = max(slurring,(effect * hit_percent)) if(STUTTER) - if(status_flags & CANSTUN) // stun is usually associated with stutter + if((status_flags & CANSTUN) && !has_trait(TRAIT_STUNIMMUNE)) // stun is usually associated with stutter stuttering = max(stuttering,(effect * hit_percent)) if(EYE_BLUR) blur_eyes(effect * hit_percent) if(DROWSY) drowsyness = max(drowsyness,(effect * hit_percent)) if(JITTER) - if(status_flags & CANSTUN) + if((status_flags & CANSTUN) && !has_trait(TRAIT_STUNIMMUNE)) jitteriness = max(jitteriness,(effect * hit_percent)) return 1 diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index 0fc19e3882..8043f055bb 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -1,6 +1,5 @@ /mob/living/Life(seconds, times_fired) set invisibility = 0 - set background = BACKGROUND_ENABLED if(digitalinvis) handle_diginvis() //AI becomes unable to see mob @@ -55,9 +54,9 @@ handle_fire() - // Vore code for belly processes + // Citadel Vore code for belly processes handle_internal_contents() - + //stuff in the stomach handle_stomach() @@ -67,7 +66,7 @@ machine.check_eye(src) if(stat != DEAD) - handle_disabilities() // eye, ear, brain damages + handle_traits() // eye, ear, brain damages if(stat != DEAD) handle_status_effects() //all special effects, stun, knockdown, jitteryness, hallucination, sleeping, etc @@ -123,10 +122,10 @@ if(confused) confused = max(0, confused - 1) -/mob/living/proc/handle_disabilities() +/mob/living/proc/handle_traits() //Eyes if(eye_blind) //blindness, heals slowly over time - if(!stat && !(has_disability(DISABILITY_BLIND))) + if(!stat && !(has_trait(TRAIT_BLIND))) eye_blind = max(eye_blind-1,0) if(client && !eye_blind) clear_alert("blind") @@ -137,7 +136,7 @@ eye_blurry = max(eye_blurry-1, 0) if(client && !eye_blurry) clear_fullscreen("blurry") - if(has_disability(DISABILITY_PACIFISM) && a_intent == INTENT_HARM) + if(has_trait(TRAIT_PACIFISM) && a_intent == INTENT_HARM) to_chat(src, "You don't feel like harming anybody.") a_intent_change(INTENT_HELP) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index be1ad730f1..9716ee135d 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -183,6 +183,10 @@ //not if he's not CANPUSH of course if(!(M.status_flags & CANPUSH)) return 1 + if(isliving(M)) + var/mob/living/L = M + if(L.has_trait(TRAIT_PUSHIMMUNE)) + return 1 //anti-riot equipment is also anti-push for(var/obj/item/I in M.held_items) if(!istype(M, /obj/item/clothing)) @@ -235,7 +239,7 @@ /mob/living/pointed(atom/A as mob|obj|turf in view()) if(incapacitated()) return 0 - if(src.status_flags & FAKEDEATH) + if(src.has_trait(TRAIT_FAKEDEATH)) return 0 if(!..()) return 0 @@ -578,7 +582,7 @@ // climbing out of a gut if(attempt_vr(src,"vore_process_resist",args)) return TRUE - + //Breaking out of a container (Locker, sleeper, cryo...) else if(isobj(loc)) var/obj/C = loc @@ -794,7 +798,7 @@ if(G.trigger_guard != TRIGGER_GUARD_ALLOW_ALL && !IsAdvancedToolUser()) to_chat(src, "You don't have the dexterity to do this!") return FALSE - if(has_disability(DISABILITY_PACIFISM)) + if(has_trait(TRAIT_PACIFISM)) to_chat(src, "You don't want to risk harming anyone!") return FALSE return TRUE @@ -950,7 +954,7 @@ //Updates canmove, lying and icons. Could perhaps do with a rename but I can't think of anything to describe it. //Robots, animals and brains have their own version so don't worry about them /mob/living/proc/update_canmove() - var/ko = IsKnockdown() || IsUnconscious() || (stat && (stat != SOFT_CRIT || pulledby)) || (status_flags & FAKEDEATH) + var/ko = IsKnockdown() || IsUnconscious() || (stat && (stat != SOFT_CRIT || pulledby)) || (has_trait(TRAIT_FAKEDEATH)) var/move_and_fall = stat == SOFT_CRIT && !pulledby var/chokehold = pulledby && pulledby.grab_state >= GRAB_NECK var/buckle_lying = !(buckled && !buckled.buckle_lying) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 413e9c1b0b..6450c13bb7 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -132,11 +132,11 @@ user.start_pulling(src, supress_message) return - if(!(status_flags & CANPUSH)) + if(!(status_flags & CANPUSH) || has_trait(TRAIT_PUSHIMMUNE)) to_chat(user, "[src] can't be grabbed more aggressively!") return FALSE - if(user.has_disability(DISABILITY_PACIFISM)) + if(user.has_trait(TRAIT_PACIFISM)) to_chat(user, "You don't want to risk hurting [src]!") return FALSE @@ -193,7 +193,7 @@ M.Feedstop() return // can't attack while eating! - if(has_disability(DISABILITY_PACIFISM)) + if(has_trait(TRAIT_PACIFISM)) to_chat(M, "You don't want to hurt anyone!") return FALSE @@ -210,7 +210,7 @@ M.visible_message("\The [M] [M.friendly] [src]!") return FALSE else - if(M.has_disability(DISABILITY_PACIFISM)) + if(M.has_trait(TRAIT_PACIFISM)) to_chat(M, "You don't want to hurt anyone!") return FALSE @@ -229,7 +229,7 @@ return FALSE if (M.a_intent == INTENT_HARM) - if(M.has_disability(DISABILITY_PACIFISM)) + if(M.has_trait(TRAIT_PACIFISM)) to_chat(M, "You don't want to hurt anyone!") return FALSE @@ -255,7 +255,7 @@ return FALSE else - if(L.has_disability(DISABILITY_PACIFISM)) + if(L.has_trait(TRAIT_PACIFISM)) to_chat(L, "You don't want to hurt anyone!") return @@ -280,7 +280,7 @@ grabbedby(M) return FALSE if("harm") - if(M.has_disability(DISABILITY_PACIFISM)) + if(M.has_trait(TRAIT_PACIFISM)) to_chat(M, "You don't want to hurt anyone!") return FALSE M.do_attack_animation(src) @@ -303,6 +303,8 @@ /mob/living/proc/electrocute_act(shock_damage, obj/source, siemens_coeff = 1, safety = 0, tesla_shock = 0, illusion = 0, stun = TRUE) if(tesla_shock && (flags_2 & TESLA_IGNORE_2)) return FALSE + if(has_trait(TRAIT_SHOCKIMMUNE)) + return FALSE if(shock_damage > 0) if(!illusion) adjustFireLoss(shock_damage) @@ -370,7 +372,7 @@ //called when the mob receives a bright flash /mob/living/proc/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /obj/screen/fullscreen/flash) - if(get_eye_protection() < intensity && (override_blindness_check || !(has_disability(DISABILITY_BLIND)))) + if(get_eye_protection() < intensity && (override_blindness_check || !(has_trait(TRAIT_BLIND)))) overlay_fullscreen("flash", type) addtimer(CALLBACK(src, .proc/clear_fullscreen, "flash", 25), 25) return TRUE diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 471d29a361..b56c7ff613 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -32,7 +32,7 @@ var/incorporeal_move = FALSE //FALSE is off, INCORPOREAL_MOVE_BASIC is normal, INCORPOREAL_MOVE_SHADOW is for ninjas //and INCORPOREAL_MOVE_JAUNT is blocked by holy water/salt - var/list/disabilities = list() + var/list/status_traits = list() var/list/surgeries = list() //a list of surgery datums. generally empty, they're added when the player wants them. diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 2143e9b2c8..737069a44d 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -273,7 +273,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list( return 1 /mob/living/proc/can_speak_vocal(message) //Check AFTER handling of xeno and ling channels - if(has_disability(DISABILITY_MUTE)) + if(has_trait(TRAIT_MUTE)) return 0 if(is_muzzled()) @@ -381,4 +381,4 @@ GLOBAL_LIST_INIT(department_radio_keys, list( if(.) return . - . = ..() + . = ..() \ No newline at end of file diff --git a/code/modules/mob/living/silicon/ai/freelook/chunk.dm b/code/modules/mob/living/silicon/ai/freelook/chunk.dm index a76c02f3b5..bf3139cc4f 100644 --- a/code/modules/mob/living/silicon/ai/freelook/chunk.dm +++ b/code/modules/mob/living/silicon/ai/freelook/chunk.dm @@ -60,9 +60,6 @@ // The actual updating. It gathers the visible turfs from cameras and puts them into the appropiate lists. /datum/camerachunk/proc/update() - - set background = BACKGROUND_ENABLED - var/list/newVisibleTurfs = list() for(var/camera in cameras) diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index 25c5951f3a..401b7fafba 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -1,7 +1,5 @@ /mob/living/silicon/robot/Life() set invisibility = 0 - set background = BACKGROUND_ENABLED - if (src.notransform) return @@ -48,7 +46,7 @@ connected_ai = null if(mind) if(!mind.special_role) - mind.special_role = "traitor" + mind.special_role = ROLE_TRAITOR mind.add_antag_datum(/datum/antagonist/auto_custom) // ???? diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 92f960a5c9..46b8612dda 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -113,7 +113,7 @@ ident = rand(1, 999) if(!cell) - cell = new /obj/item/stock_parts/cell/high(src, 7500) + cell = new /obj/item/stock_parts/cell/high(src) if(lawupdate) make_laws() @@ -826,7 +826,7 @@ /mob/living/silicon/robot/modules/syndicate icon_state = "syndie_bloodhound" - faction = list("syndicate") + faction = list(ROLE_SYNDICATE) bubble_icon = "syndibot" req_access = list(ACCESS_SYNDICATE) lawupdate = FALSE diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm index 0bafce60d3..db9ad53a9f 100644 --- a/code/modules/mob/living/silicon/robot/robot_defense.dm +++ b/code/modules/mob/living/silicon/robot/robot_defense.dm @@ -118,11 +118,7 @@ log_game("[key_name(user)] attempted to emag cyborg [key_name(src)], but they were a syndicate cyborg.") return - var/ai_is_antag = 0 - if(connected_ai && connected_ai.mind) - if(connected_ai.mind.special_role) - ai_is_antag = (connected_ai.mind.special_role == "traitor") - if(ai_is_antag) + if(connected_ai && connected_ai.mind && connected_ai.mind.has_antag_datum(/datum/antagonist/traitor)) to_chat(src, "ALERT: Foreign software execution prevented.") to_chat(connected_ai, "ALERT: Cyborg unit \[[src]] successfully defended against subversion.") log_game("[key_name(user)] attempted to emag cyborg [key_name(src)], but they were slaved to traitor AI [connected_ai].") diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index 9050ba0ffa..07499b0a1f 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -226,7 +226,6 @@ return //we use a different hud /mob/living/simple_animal/bot/handle_automated_action() //Master process which handles code common across most bots. - set background = BACKGROUND_ENABLED diag_hud_set_botmode() if (ignorelistcleanuptimer % 300 == 0) // Every 300 actions, clean up the ignore list from old junk diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index 47cf1ec5cc..d265d19cb2 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -367,7 +367,7 @@ Auto Patrol[]"}, continue /mob/living/simple_animal/bot/ed209/proc/check_for_weapons(var/obj/item/slot_item) - if(slot_item && slot_item.needs_permit) + if(slot_item && (slot_item.item_flags & NEEDS_PERMIT)) return 1 return 0 diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index 9453a7d38f..6946c8992f 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -343,7 +343,7 @@ /mob/living/simple_animal/bot/medbot/proc/assess_patient(mob/living/carbon/C) //Time to see if they need medical help! - if(C.stat == DEAD || (C.status_flags & FAKEDEATH)) + if(C.stat == DEAD || (C.has_trait(TRAIT_FAKEDEATH))) return FALSE //welp too late for them! if(!(loc == C.loc) && !(isturf(C.loc) && isturf(loc))) @@ -418,7 +418,7 @@ soft_reset() return - if(C.stat == DEAD || (C.status_flags & FAKEDEATH)) + if(C.stat == DEAD || (C.has_trait(TRAIT_FAKEDEATH))) var/list/messagevoice = list("No! Stay with me!" = 'sound/voice/mno.ogg',"Live, damnit! LIVE!" = 'sound/voice/mlive.ogg',"I...I've never lost a patient before. Not today, I mean." = 'sound/voice/mlost.ogg') var/message = pick(messagevoice) speak(message) diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index 25baa09772..68b82abb0e 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -392,7 +392,7 @@ Auto Patrol: []"}, else continue /mob/living/simple_animal/bot/secbot/proc/check_for_weapons(var/obj/item/slot_item) - if(slot_item && slot_item.needs_permit) + if(slot_item && (slot_item.item_flags & NEEDS_PERMIT)) return 1 return 0 @@ -424,7 +424,7 @@ Auto Patrol: []"}, mode = BOT_HUNT /mob/living/simple_animal/bot/secbot/Crossed(atom/movable/AM) - if(ismob(AM) && target) + if(has_gravity() && ismob(AM) && target) var/mob/living/carbon/C = AM if(!istype(C) || !C || in_range(src, target)) return diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index 0a3061cacc..6c6f39ffc1 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -37,12 +37,28 @@ var/seeking = FALSE var/can_repair_constructs = FALSE var/can_repair_self = FALSE + var/runetype /mob/living/simple_animal/hostile/construct/Initialize() . = ..() update_health_hud() + var/spellnum = 1 for(var/spell in construct_spells) - AddSpell(new spell(null)) + var/the_spell = new spell(null) + AddSpell(the_spell) + var/obj/effect/proc_holder/spell/S = mob_spell_list[spellnum] + var/pos = 2+spellnum*31 + if(construct_spells.len >= 4) + pos -= 31*(construct_spells.len - 4) + S.action.button.screen_loc = "6:[pos],4:-2" + S.action.button.moved = "6:[pos],4:-2" + spellnum++ + if(runetype) + var/datum/action/innate/cult/create_rune/CR = new runetype(src) + CR.Grant(src) + var/pos = 2+spellnum*31 + CR.button.screen_loc = "6:[pos],4:-2" + CR.button.moved = "6:[pos],4:-2" /mob/living/simple_animal/hostile/construct/Login() ..() @@ -104,22 +120,24 @@ desc = "A massive, armored construct built to spearhead attacks and soak up enemy fire." icon_state = "behemoth" icon_living = "behemoth" - maxHealth = 250 - health = 250 + maxHealth = 200 + health = 200 response_harm = "harmlessly punches" harm_intent_damage = 0 obj_damage = 90 melee_damage_lower = 30 melee_damage_upper = 30 attacktext = "smashes their armored gauntlet into" - speed = 3 + speed = 2.5 environment_smash = ENVIRONMENT_SMASH_WALLS attack_sound = 'sound/weapons/punch3.ogg' status_flags = 0 mob_size = MOB_SIZE_LARGE force_threshold = 11 - construct_spells = list(/obj/effect/proc_holder/spell/aoe_turf/conjure/lesserforcewall) - playstyle_string = "You are a Juggernaut. Though slow, your shell can withstand extreme punishment, \ + construct_spells = list(/obj/effect/proc_holder/spell/targeted/forcewall/cult, + /obj/effect/proc_holder/spell/dumbfire/juggernaut) + runetype = /datum/action/innate/cult/create_rune/wall + playstyle_string = "You are a Juggernaut. Though slow, your shell can withstand extreme punishment, \ create shield walls, rip apart enemies and walls alike, and even deflect energy weapons." /mob/living/simple_animal/hostile/construct/armored/hostile //actually hostile, will move around, hit things @@ -164,15 +182,17 @@ desc = "A wicked, clawed shell constructed to assassinate enemies and sow chaos behind enemy lines." icon_state = "floating" icon_living = "floating" - maxHealth = 75 - health = 75 + maxHealth = 65 + health = 65 melee_damage_lower = 25 melee_damage_upper = 25 retreat_distance = 2 //AI wraiths will move in and out of combat attacktext = "slashes" attack_sound = 'sound/weapons/bladeslice.ogg' construct_spells = list(/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift) - playstyle_string = "You are a Wraith. Though relatively fragile, you are fast, deadly, can phase through walls, and your attacks will lower the cooldown on phasing." + runetype = /datum/action/innate/cult/create_rune/tele + playstyle_string = "You are a Wraith. Though relatively fragile, you are fast, deadly, can phase through walls, and your attacks will lower the cooldown on phasing." + var/attack_refund = 10 //1 second per attack var/crit_refund = 50 //5 seconds when putting a target into critical var/kill_refund = 250 //full refund on kills @@ -226,7 +246,9 @@ /obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone, /obj/effect/proc_holder/spell/aoe_turf/conjure/construct/lesser, /obj/effect/proc_holder/spell/targeted/projectile/magic_missile/lesser) - playstyle_string = "You are an Artificer. You are incredibly weak and fragile, but you are able to construct fortifications, \ + runetype = /datum/action/innate/cult/create_rune/revive + playstyle_string = "You are an Artificer. You are incredibly weak and fragile, but you are able to construct fortifications, \ + use magic missile, repair allied constructs, shades, and yourself (by clicking on them), \ and, most important of all, create new constructs by producing soulstones to capture souls, \ and shells to place those soulstones into." @@ -299,9 +321,9 @@ attacktext = "butchers" attack_sound = 'sound/weapons/bladeslice.ogg' construct_spells = list(/obj/effect/proc_holder/spell/aoe_turf/area_conversion, - /obj/effect/proc_holder/spell/aoe_turf/conjure/lesserforcewall) - playstyle_string = "You are a Harvester. You are incapable of directly killing humans, but your attacks will remove their limbs: \ - Bring those who still cling to this world of illusion back to the Geometer so they may know Truth. Your form and any you are pulling can pass through runed walls effortlessly." + /obj/effect/proc_holder/spell/targeted/forcewall/cult) + playstyle_string = "You are a Harvester. You are incapable of directly killing humans, but your attacks will remove their limbs: \ + Bring those who still cling to this world of illusion back to the Geometer so they may know Truth. Your form and any you are pulling can pass through runed walls effortlessly." can_repair_constructs = TRUE @@ -376,7 +398,7 @@ if(summon_objective.check_completion()) the_construct.master = C.cult_team.blood_target - + if(!the_construct.master) to_chat(the_construct, "You have no master to seek!") the_construct.seeking = FALSE diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 812d4448d5..282a02494a 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -87,16 +87,16 @@ if(def_zone) if(def_zone == "head") if(inventory_head) - armorval = inventory_head.armor[type] + armorval = inventory_head.armor.getRating(type) else if(inventory_back) - armorval = inventory_back.armor[type] + armorval = inventory_back.armor.getRating(type) return armorval else if(inventory_head) - armorval += inventory_head.armor[type] + armorval += inventory_head.armor.getRating(type) if(inventory_back) - armorval += inventory_back.armor[type] + armorval += inventory_back.armor.getRating(type) return armorval*0.5 /mob/living/simple_animal/pet/dog/corgi/attackby(obj/item/O, mob/user, params) diff --git a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm index c7fbcd0e3a..20062972ec 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm @@ -61,4 +61,4 @@ D.equip_to_slot_or_del(new_hat, slot_head) D.admin_spawned = admin_spawned D.key = user.key - qdel(src) \ No newline at end of file + qdel(src) diff --git a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm index 1105940f22..4abed2e8c4 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm @@ -18,7 +18,7 @@ health = 30 maxHealth = 120 //If you murder other drones and cannibalize them you can get much stronger initial_language_holder = /datum/language_holder/drone/syndicate - faction = list("syndicate") + faction = list(ROLE_SYNDICATE) speak_emote = list("hisses") bubble_icon = "syndibot" heavy_emp_damage = 10 diff --git a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm index 6d87563ae9..1ec3d204c1 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm @@ -105,7 +105,7 @@ var/armorval = 0 if(head) - armorval = head.armor[type] + armorval = head.armor.getRating(type) return (armorval * get_armor_effectiveness()) //armor is reduced for tiny fragile drones /mob/living/simple_animal/drone/proc/get_armor_effectiveness() diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index 4915ee8bec..ff9363ef64 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -43,12 +43,13 @@ /mob/living/simple_animal/mouse/death(gibbed, toast) if(!ckey) ..(1) - var/obj/item/reagent_containers/food/snacks/deadmouse/M = new(loc) - M.icon_state = icon_dead - M.name = name - if(toast) - M.add_atom_colour("#3A3A3A", FIXED_COLOUR_PRIORITY) - M.desc = "It's toast." + if(!gibbed) + var/obj/item/reagent_containers/food/snacks/deadmouse/M = new(loc) + M.icon_state = icon_dead + M.name = name + if(toast) + M.add_atom_colour("#3A3A3A", FIXED_COLOUR_PRIORITY) + M.desc = "It's toast." qdel(src) else ..(gibbed) diff --git a/code/modules/mob/living/simple_animal/friendly/snake.dm b/code/modules/mob/living/simple_animal/friendly/snake.dm new file mode 100644 index 0000000000..caa9f10905 --- /dev/null +++ b/code/modules/mob/living/simple_animal/friendly/snake.dm @@ -0,0 +1,61 @@ +/mob/living/simple_animal/hostile/retaliate/poison + var/poison_per_bite = 0 + var/poison_type = "toxin" + +/mob/living/simple_animal/hostile/retaliate/poison/AttackingTarget() + . = ..() + if(. && isliving(target)) + var/mob/living/L = target + if(L.reagents && !poison_per_bite == 0) + L.reagents.add_reagent(poison_type, poison_per_bite) + return . + +/mob/living/simple_animal/hostile/retaliate/poison/snake + name = "snake" + desc = "A slithery snake. These legless reptiles are the bane of mice and adventurers alike." + icon_state = "snake" + icon_living = "snake" + icon_dead = "snake_dead" + speak_emote = list("hisses") + health = 20 + maxHealth = 20 + attacktext = "bites" + melee_damage_lower = 5 + melee_damage_upper = 6 + response_help = "pets" + response_disarm = "shoos" + response_harm = "steps on" + faction = list("hostile") + ventcrawler = VENTCRAWLER_ALWAYS + density = FALSE + pass_flags = PASSTABLE | PASSMOB + mob_size = MOB_SIZE_SMALL + gold_core_spawnable = FRIENDLY_SPAWN + obj_damage = 0 + environment_smash = ENVIRONMENT_SMASH_NONE + + +/mob/living/simple_animal/hostile/retaliate/poison/snake/ListTargets(atom/the_target) + . = oview(vision_range, targets_from) //get list of things in vision range + var/list/living_mobs = list() + var/list/mice = list() + for (var/HM in .) + //Yum a tasty mouse + if(istype(HM, /mob/living/simple_animal/mouse)) + mice += HM + if(isliving(HM)) + living_mobs += HM + + // if no tasty mice to chase, lets chase any living mob enemies in our vision range + if(length(mice) == 0) + //Filter living mobs (in range mobs) by those we consider enemies (retaliate behaviour) + return living_mobs & enemies + return mice + +/mob/living/simple_animal/hostile/retaliate/poison/snake/AttackingTarget() + if(istype(target, /mob/living/simple_animal/mouse)) + visible_message("[name] consumes [target] in a single gulp!", "You consume [target] in a single gulp!") + QDEL_NULL(target) + adjustBruteLoss(-2) + else + return ..() \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index fbed7d4331..24b61424e1 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -418,16 +418,15 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians var/mob/living/simple_animal/hostile/guardian/G = input(src, "Pick the guardian you wish to reset", "Guardian Reset") as null|anything in guardians if(G) to_chat(src, "You attempt to reset [G.real_name]'s personality...") - var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as [src.real_name]'s [G.real_name]?", "pAI", null, FALSE, 100) - var/mob/dead/observer/new_stand = null - if(candidates.len) - new_stand = pick(candidates) + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as [src.real_name]'s [G.real_name]?", ROLE_PAI, null, FALSE, 100) + if(LAZYLEN(candidates)) + var/client/C = pick(candidates) to_chat(G, "Your user reset you, and your body was taken over by a ghost. Looks like they weren't happy with your performance.") to_chat(src, "Your [G.real_name] has been successfully reset.") - message_admins("[key_name_admin(new_stand)] has taken control of ([key_name_admin(G)])") + message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(G)])") G.ghostize(0) G.setthemename(G.namedatum.theme) //give it a new color, to show it's a new person - G.key = new_stand.key + G.key = C.key G.reset = 1 switch(G.namedatum.theme) if("tech") @@ -494,11 +493,10 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians used = TRUE to_chat(user, "[use_message]") var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as the [mob_name] of [user.real_name]?", ROLE_PAI, null, FALSE, 100, POLL_IGNORE_HOLOPARASITE) - var/mob/dead/observer/theghost = null - if(candidates.len) - theghost = pick(candidates) - spawn_guardian(user, theghost.key) + if(LAZYLEN(candidates)) + var/client/C = pick(candidates) + spawn_guardian(user, C.key) else to_chat(user, "[failure_message]") used = FALSE diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index 70881820dd..5b4909c274 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -26,7 +26,7 @@ attack_sound = 'sound/weapons/bladeslice.ogg' atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) unsuitable_atmos_damage = 15 - faction = list("alien") + faction = list(ROLE_ALIEN) status_flags = CANPUSH minbodytemp = 0 see_in_dark = 8 diff --git a/code/modules/mob/living/simple_animal/hostile/carp.dm b/code/modules/mob/living/simple_animal/hostile/carp.dm index 878f7b3019..4b494aeb5f 100644 --- a/code/modules/mob/living/simple_animal/hostile/carp.dm +++ b/code/modules/mob/living/simple_animal/hostile/carp.dm @@ -93,7 +93,7 @@ gender = FEMALE speak_emote = list("squeaks") gold_core_spawnable = NO_SPAWN - faction = list("syndicate") + faction = list(ROLE_SYNDICATE) AIStatus = AI_OFF #undef REGENERATION_DELAY diff --git a/code/modules/mob/living/simple_animal/hostile/headcrab.dm b/code/modules/mob/living/simple_animal/hostile/headcrab.dm index a42a79e02a..a3bc98f48a 100644 --- a/code/modules/mob/living/simple_animal/hostile/headcrab.dm +++ b/code/modules/mob/living/simple_animal/hostile/headcrab.dm @@ -22,7 +22,7 @@ ventcrawler = VENTCRAWLER_ALWAYS var/datum/mind/origin var/egg_lain = 0 -// gold_core_spawnable = HOSTILE_SPAWN //are you sure about this?? + //gold_core_spawnable = HOSTILE_SPAWN //are you sure about this?? /mob/living/simple_animal/hostile/headcrab/proc/Infect(mob/living/carbon/victim) var/obj/item/organ/body_egg/changeling_egg/egg = new(victim) @@ -43,7 +43,7 @@ // Changeling egg can survive in aliens! var/mob/living/carbon/C = target if(C.stat == DEAD) - if(C.status_flags & XENO_HOST) + if(C.has_trait(TRAIT_XENO_HOST)) to_chat(src, "A foreign presence repels us from this body. Perhaps we should try to infest another?") return Infect(target) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index 0388c1b4f9..f09a31415a 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -558,7 +558,7 @@ Difficulty: Very Hard H.regenerate_limbs() H.regenerate_organs() H.revive(1,0) - H.add_disability(DISABILITY_NOCLONE, MAGIC_DISABILITY) //Free revives, but significantly limits your options for reviving except via the crystal + H.add_trait(TRAIT_NOCLONE, MAGIC_TRAIT) //Free revives, but significantly limits your options for reviving except via the crystal H.grab_ghost(force = TRUE) /obj/machinery/anomalous_crystal/helpers //Lets ghost spawn as helpful creatures that can only heal people slightly. Incredibly fragile and they can't converse with humans @@ -719,7 +719,7 @@ Difficulty: Very Hard if(isliving(A) && holder_animal) var/mob/living/L = A L.notransform = 1 - L.add_disability(DISABILITY_MUTE, STASIS_MUTE) + L.add_trait(TRAIT_MUTE, STASIS_MUTE) L.status_flags |= GODMODE L.mind.transfer_to(holder_animal) var/obj/effect/proc_holder/spell/targeted/exit_possession/P = new /obj/effect/proc_holder/spell/targeted/exit_possession @@ -729,7 +729,7 @@ Difficulty: Very Hard /obj/structure/closet/stasis/dump_contents(var/kill = 1) STOP_PROCESSING(SSobj, src) for(var/mob/living/L in src) - L.remove_disability(DISABILITY_MUTE, STASIS_MUTE) + L.remove_trait(TRAIT_MUTE, STASIS_MUTE) L.status_flags &= ~GODMODE L.notransform = 0 if(holder_animal) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm index de995f951a..e06cce6d3e 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm @@ -119,6 +119,8 @@ /mob/living/simple_animal/hostile/asteroid/goliath/beast/ancient/Life() . = ..() + if(!.) // dead + return if(isturf(loc)) if(!LAZYLEN(cached_tentacle_turfs) || loc != last_location || tentacle_recheck_cooldown <= world.time) LAZYCLEARLIST(cached_tentacle_turfs) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm index d2980bbdaf..5cb5bbe165 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm @@ -366,7 +366,7 @@ r_pocket = /obj/item/restraints/legcuffs/bola/cult l_pocket = /obj/item/melee/cultblade/dagger glasses = /obj/item/clothing/glasses/night/cultblind - backpack_contents = list(/obj/item/reagent_containers/food/drinks/bottle/unholywater = 1, /obj/item/device/cult_shift = 1, /obj/item/device/flashlight/flare/culttorch = 1, /obj/item/stack/sheet/runed_metal = 15) + backpack_contents = list(/obj/item/reagent_containers/glass/beaker/unholywater = 1, /obj/item/device/cult_shift = 1, /obj/item/device/flashlight/flare/culttorch = 1, /obj/item/stack/sheet/runed_metal = 15) . = ..() diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index 1058794764..38c0d38710 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -41,7 +41,7 @@ loot = list(/obj/effect/mob_spawn/human/corpse/syndicatesoldier) atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) unsuitable_atmos_damage = 15 - faction = list("syndicate") + faction = list(ROLE_SYNDICATE) check_friendly_fire = 1 status_flags = CANPUSH del_on_death = 1 @@ -169,7 +169,7 @@ environment_smash = ENVIRONMENT_SMASH_NONE attacktext = "cuts" attack_sound = 'sound/weapons/bladeslice.ogg' - faction = list("syndicate") + faction = list(ROLE_SYNDICATE) atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 mob_size = MOB_SIZE_TINY diff --git a/code/modules/mob/living/simple_animal/hostile/wizard.dm b/code/modules/mob/living/simple_animal/hostile/wizard.dm index f53b5b8f50..9d745b7b3a 100644 --- a/code/modules/mob/living/simple_animal/hostile/wizard.dm +++ b/code/modules/mob/living/simple_animal/hostile/wizard.dm @@ -21,7 +21,7 @@ a_intent = INTENT_HARM atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) unsuitable_atmos_damage = 15 - faction = list("wizard") + faction = list(ROLE_WIZARD) status_flags = CANPUSH retreat_distance = 3 //out of fireball range diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index f9fee7369e..e7f6d3e49f 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -27,8 +27,6 @@ healable = 0 gender = NEUTER - nutrition = 700 - see_in_dark = 8 verb_say = "blorbles" @@ -93,6 +91,7 @@ create_reagents(100) set_colour(new_colour) . = ..() + nutrition = 700 /mob/living/simple_animal/slime/Destroy() for (var/A in actions) diff --git a/code/modules/mob/living/simple_animal/spawner.dm b/code/modules/mob/living/simple_animal/spawner.dm index 4e136e6aa6..a6970ece68 100644 --- a/code/modules/mob/living/simple_animal/spawner.dm +++ b/code/modules/mob/living/simple_animal/spawner.dm @@ -32,6 +32,8 @@ /mob/living/simple_animal/hostile/spawner/Life() . = ..() + if(!.) // dead + return spawn_mob() /mob/living/simple_animal/hostile/spawner/proc/spawn_mob() @@ -53,7 +55,7 @@ icon_state = "syndbeacon" spawn_text = "warps in from" mob_type = /mob/living/simple_animal/hostile/syndicate/ranged - faction = list("syndicate") + faction = list(ROLE_SYNDICATE) /mob/living/simple_animal/hostile/spawner/skeleton name = "bone pit" diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index ff2e294b93..9c46c49ad9 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -1,6 +1,6 @@ //Here are the procs used to modify status effects of a mob. //The effects include: stun, knockdown, unconscious, sleeping, resting, jitteriness, dizziness, -// eye damage, eye_blind, eye_blurry, druggy, DISABILITY_BLIND disability, and DISABILITY_NEARSIGHT disability. +// eye damage, eye_blind, eye_blurry, druggy, TRAIT_BLIND trait, and TRAIT_NEARSIGHT trait. ////////////////////////////// STUN //////////////////////////////////// @@ -15,7 +15,7 @@ return 0 /mob/living/proc/Stun(amount, updating = TRUE, ignore_canstun = FALSE) //Can't go below remaining duration - if((status_flags & CANSTUN) || ignore_canstun) + if(((status_flags & CANSTUN) && !has_trait(TRAIT_STUNIMMUNE)) || ignore_canstun) if(absorb_stun(amount, ignore_canstun)) return var/datum/status_effect/incapacitating/stun/S = IsStun() @@ -26,7 +26,7 @@ return S /mob/living/proc/SetStun(amount, updating = TRUE, ignore_canstun = FALSE) //Sets remaining duration - if((status_flags & CANSTUN) || ignore_canstun) + if(((status_flags & CANSTUN) && !has_trait(TRAIT_STUNIMMUNE)) || ignore_canstun) var/datum/status_effect/incapacitating/stun/S = IsStun() if(amount <= 0) if(S) @@ -41,7 +41,7 @@ return S /mob/living/proc/AdjustStun(amount, updating = TRUE, ignore_canstun = FALSE) //Adds to remaining duration - if((status_flags & CANSTUN) || ignore_canstun) + if(((status_flags & CANSTUN) && !has_trait(TRAIT_STUNIMMUNE)) || ignore_canstun) if(absorb_stun(amount, ignore_canstun)) return var/datum/status_effect/incapacitating/stun/S = IsStun() @@ -63,7 +63,7 @@ return 0 /mob/living/proc/Knockdown(amount, updating = TRUE, ignore_canknockdown = FALSE) //Can't go below remaining duration - if((status_flags & CANKNOCKDOWN) || ignore_canknockdown) + if(((status_flags & CANKNOCKDOWN) && !has_trait(TRAIT_STUNIMMUNE)) || ignore_canknockdown) if(absorb_stun(amount, ignore_canknockdown)) return var/datum/status_effect/incapacitating/knockdown/K = IsKnockdown() @@ -74,7 +74,7 @@ return K /mob/living/proc/SetKnockdown(amount, updating = TRUE, ignore_canknockdown = FALSE) //Sets remaining duration - if((status_flags & CANKNOCKDOWN) || ignore_canknockdown) + if(((status_flags & CANKNOCKDOWN) && !has_trait(TRAIT_STUNIMMUNE)) || ignore_canknockdown) var/datum/status_effect/incapacitating/knockdown/K = IsKnockdown() if(amount <= 0) if(K) @@ -89,7 +89,7 @@ return K /mob/living/proc/AdjustKnockdown(amount, updating = TRUE, ignore_canknockdown = FALSE) //Adds to remaining duration - if((status_flags & CANKNOCKDOWN) || ignore_canknockdown) + if(((status_flags & CANKNOCKDOWN) && !has_trait(TRAIT_STUNIMMUNE)) || ignore_canknockdown) if(absorb_stun(amount, ignore_canknockdown)) return var/datum/status_effect/incapacitating/knockdown/K = IsKnockdown() @@ -140,18 +140,18 @@ /////////////////////////////////// DISABILITIES //////////////////////////////////// -/mob/living/proc/add_disability(disability, source) - if(!disabilities[disability]) - disabilities[disability] = list(source) +/mob/living/proc/add_trait(trait, source) + if(!status_traits[trait]) + status_traits[trait] = list(source) else - disabilities[disability] |= list(source) + status_traits[trait] |= list(source) -/mob/living/proc/remove_disability(disability, list/sources) - if(!disabilities[disability]) +/mob/living/proc/remove_trait(trait, list/sources) + if(!status_traits[trait]) return - if(!sources) // No defined source cures the disability entirely. - disabilities -= disability + if(!sources) // No defined source cures the trait entirely. + status_traits -= trait return if(!islist(sources)) @@ -159,61 +159,74 @@ if(LAZYLEN(sources)) for(var/S in sources) - if(S in disabilities[disability]) - disabilities[disability] -= S + if(S in status_traits[trait]) + status_traits[trait] -= S else - disabilities[disability] = list() + status_traits[trait] = list() - if(!LAZYLEN(disabilities[disability])) - disabilities -= disability + if(!LAZYLEN(status_traits[trait])) + status_traits -= trait -/mob/living/proc/has_disability(disability, list/sources) - if(!disabilities[disability]) +/mob/living/proc/has_trait(trait, list/sources) + if(!status_traits[trait]) return FALSE . = FALSE if(LAZYLEN(sources)) for(var/S in sources) - if(S in disabilities[disability]) + if(S in status_traits[trait]) return TRUE else - if(LAZYLEN(disabilities[disability])) + if(LAZYLEN(status_traits[trait])) return TRUE -/mob/living/proc/remove_all_disabilities() - disabilities = list() +/mob/living/proc/remove_all_traits() + status_traits = list() -/////////////////////////////////// DISABILITY PROCS //////////////////////////////////// +/////////////////////////////////// TRAIT PROCS //////////////////////////////////// /mob/living/proc/cure_blind(list/sources) - remove_disability(DISABILITY_BLIND, sources) - if(!has_disability(DISABILITY_BLIND)) + remove_trait(TRAIT_BLIND, sources) + if(!has_trait(TRAIT_BLIND)) adjust_blindness(-1) /mob/living/proc/become_blind(source) - if(!has_disability(DISABILITY_BLIND)) + if(!has_trait(TRAIT_BLIND)) blind_eyes(1) - add_disability(DISABILITY_BLIND, source) + add_trait(TRAIT_BLIND, source) /mob/living/proc/cure_nearsighted(list/sources) - remove_disability(DISABILITY_NEARSIGHT, sources) - if(!has_disability(DISABILITY_NEARSIGHT)) + remove_trait(TRAIT_NEARSIGHT, sources) + if(!has_trait(TRAIT_NEARSIGHT)) clear_fullscreen("nearsighted") /mob/living/proc/become_nearsighted(source) - if(!has_disability(DISABILITY_NEARSIGHT)) + if(!has_trait(TRAIT_NEARSIGHT)) overlay_fullscreen("nearsighted", /obj/screen/fullscreen/impaired, 1) - add_disability(DISABILITY_NEARSIGHT, source) + add_trait(TRAIT_NEARSIGHT, source) /mob/living/proc/cure_husk(list/sources) - remove_disability(DISABILITY_HUSK, sources) - if(!has_disability(DISABILITY_HUSK)) - status_flags &= ~DISFIGURED + remove_trait(TRAIT_HUSK, sources) + if(!has_trait(TRAIT_HUSK)) + remove_trait(TRAIT_DISFIGURED, "husk") update_body() /mob/living/proc/become_husk(source) - if(!has_disability(DISABILITY_HUSK)) - status_flags |= DISFIGURED //makes them unknown + if(!has_trait(TRAIT_HUSK)) + add_trait(TRAIT_DISFIGURED, "husk") update_body() - add_disability(DISABILITY_HUSK, source) + add_trait(TRAIT_HUSK, source) + +/mob/living/proc/cure_fakedeath(list/sources) + remove_trait(TRAIT_FAKEDEATH, sources) + if(stat != DEAD) + tod = null + update_stat() + +/mob/living/proc/fakedeath(source) + if(stat == DEAD) + return + add_trait(TRAIT_FAKEDEATH, source) + tod = worldtime2text() + update_stat() \ No newline at end of file diff --git a/code/modules/mob/mob_cleanup.dm b/code/modules/mob/mob_cleanup.dm deleted file mode 100644 index d62c077e73..0000000000 --- a/code/modules/mob/mob_cleanup.dm +++ /dev/null @@ -1,5 +0,0 @@ -//Methods that need to be cleaned. -/* INFORMATION -Put (mob/proc)s here that are in dire need of a code cleanup. -*/ - diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 999a6090eb..067307320a 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -372,9 +372,6 @@ It's fairly easy to fix if dealing with single letters but not so much with comp if("monkey") if(M.viruses && (locate(/datum/disease/transformation/jungle_fever) in M.viruses)) return 2 - if("abductor") - if(M.mind in SSticker.mode.abductors) - return 2 return TRUE if(M.mind && LAZYLEN(M.mind.antag_datums)) //they have an antag datum! return TRUE @@ -452,15 +449,14 @@ It's fairly easy to fix if dealing with single letters but not so much with comp var/datum/antagonist/A = M.mind.has_antag_datum(/datum/antagonist/) if(A) poll_message = "[poll_message] Status:[A.name]." - var/list/mob/dead/observer/candidates = pollCandidatesForMob(poll_message, "pAI", null, FALSE, 100, M) - var/mob/dead/observer/theghost = null + var/list/mob/dead/observer/candidates = pollCandidatesForMob(poll_message, ROLE_PAI, null, FALSE, 100, M) - if(candidates.len) - theghost = pick(candidates) + if(LAZYLEN(candidates)) + var/client/C = pick(candidates) to_chat(M, "Your mob has been taken over by a ghost!") - message_admins("[key_name_admin(theghost)] has taken control of ([key_name_admin(M)])") + message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(M)])") M.ghostize(0) - M.key = theghost.key + M.key = C.key return TRUE else to_chat(M, "There were no ghosts willing to take control.") diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index fad3a70bcf..365f62e88b 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -82,4 +82,4 @@ return 0 /mob/proc/lingcheck() - return LINGHIVE_NONE \ No newline at end of file + return LINGHIVE_NONE diff --git a/code/modules/mob/status_procs.dm b/code/modules/mob/status_procs.dm index 591498c084..87eddde125 100644 --- a/code/modules/mob/status_procs.dm +++ b/code/modules/mob/status_procs.dm @@ -1,7 +1,7 @@ //Here are the procs used to modify status effects of a mob. //The effects include: stun, knockdown, unconscious, sleeping, resting, jitteriness, dizziness, ear damage, -// eye damage, eye_blind, eye_blurry, druggy, DISABILITY_BLIND disability, and DISABILITY_NEARSIGHT disability. +// eye damage, eye_blind, eye_blurry, druggy, TRAIT_BLIND trait, and TRAIT_NEARSIGHT trait. /////////////////////////////////// STUN //////////////////////////////////// @@ -28,7 +28,7 @@ return 0 /mob/living/proc/Unconscious(amount, updating = TRUE, ignore_canunconscious = FALSE) //Can't go below remaining duration - if((status_flags & CANUNCONSCIOUS) || ignore_canunconscious) + if(((status_flags & CANUNCONSCIOUS) && !has_trait(TRAIT_STUNIMMUNE)) || ignore_canunconscious) var/datum/status_effect/incapacitating/unconscious/U = IsUnconscious() if(U) U.duration = max(world.time + amount, U.duration) @@ -37,7 +37,7 @@ return U /mob/living/proc/SetUnconscious(amount, updating = TRUE, ignore_canunconscious = FALSE) //Sets remaining duration - if((status_flags & CANUNCONSCIOUS) || ignore_canunconscious) + if(((status_flags & CANUNCONSCIOUS) && !has_trait(TRAIT_STUNIMMUNE)) || ignore_canunconscious) var/datum/status_effect/incapacitating/unconscious/U = IsUnconscious() if(amount <= 0) if(U) @@ -49,7 +49,7 @@ return U /mob/living/proc/AdjustUnconscious(amount, updating = TRUE, ignore_canunconscious = FALSE) //Adds to remaining duration - if((status_flags & CANUNCONSCIOUS) || ignore_canunconscious) + if(((status_flags & CANUNCONSCIOUS) && !has_trait(TRAIT_STUNIMMUNE)) || ignore_canunconscious) var/datum/status_effect/incapacitating/unconscious/U = IsUnconscious() if(U) U.duration += amount @@ -68,32 +68,35 @@ return S.duration - world.time return 0 -/mob/living/proc/Sleeping(amount, updating = TRUE) //Can't go below remaining duration - var/datum/status_effect/incapacitating/sleeping/S = IsSleeping() - if(S) - S.duration = max(world.time + amount, S.duration) - else if(amount > 0) - S = apply_status_effect(STATUS_EFFECT_SLEEPING, amount, updating) - return S - -/mob/living/proc/SetSleeping(amount, updating = TRUE) //Sets remaining duration - var/datum/status_effect/incapacitating/sleeping/S = IsSleeping() - if(amount <= 0) +/mob/living/proc/Sleeping(amount, updating = TRUE, ignore_sleepimmune = FALSE) //Can't go below remaining duration + if((!has_trait(TRAIT_SLEEPIMMUNE)) || ignore_sleepimmune) + var/datum/status_effect/incapacitating/sleeping/S = IsSleeping() if(S) - qdel(S) - else if(S) - S.duration = world.time + amount - else - S = apply_status_effect(STATUS_EFFECT_SLEEPING, amount, updating) - return S + S.duration = max(world.time + amount, S.duration) + else if(amount > 0) + S = apply_status_effect(STATUS_EFFECT_SLEEPING, amount, updating) + return S -/mob/living/proc/AdjustSleeping(amount, updating = TRUE) //Adds to remaining duration - var/datum/status_effect/incapacitating/sleeping/S = IsSleeping() - if(S) - S.duration += amount - else if(amount > 0) - S = apply_status_effect(STATUS_EFFECT_SLEEPING, amount, updating) - return S +/mob/living/proc/SetSleeping(amount, updating = TRUE, ignore_sleepimmune = FALSE) //Sets remaining duration + if((!has_trait(TRAIT_SLEEPIMMUNE)) || ignore_sleepimmune) + var/datum/status_effect/incapacitating/sleeping/S = IsSleeping() + if(amount <= 0) + if(S) + qdel(S) + else if(S) + S.duration = world.time + amount + else + S = apply_status_effect(STATUS_EFFECT_SLEEPING, amount, updating) + return S + +/mob/living/proc/AdjustSleeping(amount, updating = TRUE, ignore_sleepimmune = FALSE) //Adds to remaining duration + if((!has_trait(TRAIT_SLEEPIMMUNE)) || ignore_sleepimmune) + var/datum/status_effect/incapacitating/sleeping/S = IsSleeping() + if(S) + S.duration += amount + else if(amount > 0) + S = apply_status_effect(STATUS_EFFECT_SLEEPING, amount, updating) + return S /////////////////////////////////// RESTING //////////////////////////////////// @@ -164,7 +167,7 @@ blind_minimum = 1 if(isliving(src)) var/mob/living/L = src - if(L.has_disability(DISABILITY_BLIND)) + if(L.has_trait(TRAIT_BLIND)) blind_minimum = 1 eye_blind = max(eye_blind+amount, blind_minimum) if(!eye_blind) @@ -185,7 +188,7 @@ blind_minimum = 1 if(isliving(src)) var/mob/living/L = src - if(L.has_disability(DISABILITY_BLIND)) + if(L.has_trait(TRAIT_BLIND)) blind_minimum = 1 eye_blind = blind_minimum if(!eye_blind) diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index c501984de8..59aeec5b3c 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -329,30 +329,30 @@ return ..() /mob/proc/AIize(transfer_after = TRUE) - if(client) - stop_sound_channel(CHANNEL_LOBBYMUSIC) - - var/turf/loc_landmark - for(var/obj/effect/landmark/start/sloc in GLOB.landmarks_list) - if(sloc.name != "AI") - continue + var/list/turf/landmark_loc = list() + for(var/obj/effect/landmark/start/ai/sloc in GLOB.landmarks_list) if(locate(/mob/living/silicon/ai) in sloc.loc) continue - loc_landmark = sloc.loc - if(!loc_landmark) - for(var/obj/effect/landmark/tripai/L in GLOB.landmarks_list) - if(locate(/mob/living/silicon/ai) in L.loc) - continue - loc_landmark = L.loc - if(!loc_landmark) + if(sloc.primary_ai) + landmark_loc += sloc.loc + break + landmark_loc += sloc.loc + if(!landmark_loc.len) to_chat(src, "Oh god sorry we can't find an unoccupied AI spawn location, so we're spawning you on top of someone.") for(var/obj/effect/landmark/start/ai/sloc in GLOB.landmarks_list) - loc_landmark = sloc.loc + landmark_loc += sloc.loc + + if(!landmark_loc.len) + message_admins("[src] cannot be made an AI as there are no valid spawn points. Yell at a mapper!") + return + + if(client) + stop_sound_channel(CHANNEL_LOBBYMUSIC) if(!transfer_after) mind.active = FALSE - . = new /mob/living/silicon/ai(loc_landmark, null, src) + . = new /mob/living/silicon/ai(pick(landmark_loc), null, src) qdel(src) @@ -374,9 +374,6 @@ var/mob/living/silicon/robot/R = new /mob/living/silicon/robot(loc) - // cyborgs produced by Robotize get an automatic power cell - R.cell = new /obj/item/stock_parts/cell/high(R, 7500) - R.gender = gender R.invisibility = 0 diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm index 0b149c20da..03e57c5ec6 100644 --- a/code/modules/modular_computers/computers/item/computer.dm +++ b/code/modules/modular_computers/computers/item/computer.dm @@ -175,11 +175,11 @@ turn_on(user) /obj/item/device/modular_computer/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) to_chat(user, "\The [src] was already emagged.") return 0 else - emagged = TRUE + obj_flags |= EMAGGED to_chat(user, "You emag \the [src]. It's screen briefly shows a \"OVERRIDE ACCEPTED: New software downloads available.\" message.") return 1 diff --git a/code/modules/modular_computers/file_system/program.dm b/code/modules/modular_computers/file_system/program.dm index 57ec83798d..75fdc3ea37 100644 --- a/code/modules/modular_computers/file_system/program.dm +++ b/code/modules/modular_computers/file_system/program.dm @@ -81,7 +81,7 @@ if(!access_to_check) // No required_access, allow it. return 1 - if(!transfer && computer && computer.emagged) //emags can bypass the execution locks but not the download ones. + if(!transfer && computer && (computer.obj_flags & EMAGGED)) //emags can bypass the execution locks but not the download ones. return 1 if(IsAdminGhost(user)) diff --git a/code/modules/modular_computers/file_system/programs/file_browser.dm b/code/modules/modular_computers/file_system/programs/file_browser.dm index f42174320e..11a4b8e125 100644 --- a/code/modules/modular_computers/file_system/programs/file_browser.dm +++ b/code/modules/modular_computers/file_system/programs/file_browser.dm @@ -112,7 +112,7 @@ if(!printer) error = "Missing Hardware: Your computer does not have required hardware to complete this operation." return 1 - if(!printer.print_text("" + prepare_printjob(F.stored_data) + "", open_file)) + if(!printer.print_text("" + prepare_printjob(F.stored_data) + "", open_file)) error = "Hardware error: Printer was unable to print the file. It may be out of paper." return 1 if("PRG_copytousb") diff --git a/code/modules/modular_computers/file_system/programs/ntdownloader.dm b/code/modules/modular_computers/file_system/programs/ntdownloader.dm index be38f8a7b6..b2fe7a0f64 100644 --- a/code/modules/modular_computers/file_system/programs/ntdownloader.dm +++ b/code/modules/modular_computers/file_system/programs/ntdownloader.dm @@ -29,7 +29,7 @@ return 0 // Attempting to download antag only program, but without having emagged computer. No. - if(PRG.available_on_syndinet && !computer.emagged) + if(PRG.available_on_syndinet && !(computer.obj_flags & EMAGGED)) return 0 var/obj/item/computer_hardware/hard_drive/hard_drive = computer.all_components[MC_HDD] @@ -140,7 +140,7 @@ "size" = P.size ))) data["hackedavailable"] = 0 - if(computer.emagged) // If we are running on emagged computer we have access to some "bonus" software + if(computer.obj_flags & EMAGGED) // If we are running on emagged computer we have access to some "bonus" software var/list/hacked_programs[0] for(var/S in SSnetworks.station_network.available_antag_software) var/datum/computer_file/program/P = S diff --git a/code/modules/ninja/ninja_event.dm b/code/modules/ninja/ninja_event.dm index 2b12adb4a8..ef3569b051 100644 --- a/code/modules/ninja/ninja_event.dm +++ b/code/modules/ninja/ninja_event.dm @@ -48,7 +48,7 @@ Contents: return MAP_ERROR //selecting a candidate player - var/list/candidates = get_candidates("ninja", null, ROLE_NINJA) + var/list/candidates = get_candidates(ROLE_NINJA, null, ROLE_NINJA) if(!candidates.len) return NOT_ENOUGH_PLAYERS @@ -57,8 +57,8 @@ Contents: //Prepare ninja player mind var/datum/mind/Mind = new /datum/mind(key) - Mind.assigned_role = "Space Ninja" - Mind.special_role = "Space Ninja" + Mind.assigned_role = ROLE_NINJA + Mind.special_role = ROLE_NINJA Mind.active = 1 //spawn the ninja and assign the candidate diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_stars.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_stars.dm index 5725112da5..31ac62d9fc 100644 --- a/code/modules/ninja/suit/n_suit_verbs/ninja_stars.dm +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_stars.dm @@ -15,4 +15,4 @@ /obj/item/throwing_star/ninja name = "ninja throwing star" throwforce = 30 - embedded_pain_multiplier = 6 + embedding = list("embedded_pain_multiplier" = 6, "embed_chance" = 100, "embedded_fall_chance" = 0) diff --git a/code/modules/ninja/suit/ninjaDrainAct.dm b/code/modules/ninja/suit/ninjaDrainAct.dm index cdae56571f..8b9abbee7a 100644 --- a/code/modules/ninja/suit/ninjaDrainAct.dm +++ b/code/modules/ninja/suit/ninjaDrainAct.dm @@ -50,10 +50,10 @@ They *could* go in their appropriate files, but this is supposed to be modular else break - if(!emagged) + if(!(obj_flags & EMAGGED)) flick("apc-spark", G) playsound(loc, "sparks", 50, 1) - emagged = TRUE + obj_flags |= EMAGGED locked = FALSE update_icon() diff --git a/code/modules/ninja/suit/suit_process.dm b/code/modules/ninja/suit/suit_process.dm index 99f801ed76..c9e955b359 100644 --- a/code/modules/ninja/suit/suit_process.dm +++ b/code/modules/ninja/suit/suit_process.dm @@ -1,6 +1,4 @@ /obj/item/clothing/suit/space/space_ninja/proc/ntick(mob/living/carbon/human/U = affecting) - set background = BACKGROUND_ENABLED - //Runs in the background while the suit is initialized. //Requires charge or stealth to process. spawn while(s_initialized) diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm index d911ee7036..563d5a83ad 100644 --- a/code/modules/paperwork/contract.dm +++ b/code/modules/paperwork/contract.dm @@ -202,7 +202,7 @@ if(!user.mind.hasSoul) to_chat(user, "You do not possess a soul.") return 0 - if(user.has_disability(DISABILITY_DUMB)) + if(user.has_trait(TRAIT_DUMB)) to_chat(user, "You quickly scrawl 'your name' on the contract.") signIncorrectly() return 0 diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index c666160da4..312c789f07 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -69,10 +69,6 @@ var/datum/asset/assets = get_asset_datum(/datum/asset/simple/paper) assets.send(user) - if(istype(src, /obj/item/paper/talisman)) //Talismans cannot be read - if(!iscultist(user) && !user.stat) - to_chat(user, "There are indecipherable images scrawled on the paper in what looks to be... blood?") - return if(in_range(user, src) || isobserver(user)) if(user.is_literate()) user << browse("[name][info]


[stamps]", "window=[name]") @@ -93,7 +89,7 @@ return if(ishuman(usr)) var/mob/living/carbon/human/H = usr - if(H.has_disability(DISABILITY_CLUMSY) && prob(25)) + if(H.has_trait(TRAIT_CLUMSY) && prob(25)) to_chat(H, "You cut yourself on the paper! Ahhhh! Ahhhhh!") H.damageoverlaytemp = 9001 H.update_damage_hud() @@ -297,9 +293,6 @@ else to_chat(user, "You don't know how to read or write.") return - if(istype(src, /obj/item/paper/talisman/)) - to_chat(user, "[P]'s ink fades away shortly after it is written.") - return else if(istype(P, /obj/item/stamp)) @@ -317,7 +310,7 @@ to_chat(user, "You stamp the paper with your rubber stamp.") if(P.is_hot()) - if(user.has_disability(DISABILITY_CLUMSY) && prob(10)) + if(user.has_trait(TRAIT_CLUMSY) && prob(10)) user.visible_message("[user] accidentally ignites themselves!", \ "You miss the paper and accidentally light yourself on fire!") user.dropItemToGround(P) diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index af33dfb28c..3753febca2 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -65,7 +65,7 @@ update_icon() else if(P.is_hot()) - if(user.has_disability(DISABILITY_CLUMSY) && prob(10)) + if(user.has_trait(TRAIT_CLUMSY) && prob(10)) user.visible_message("[user] accidentally ignites themselves!", \ "You miss [src] and accidentally light yourself on fire!") user.dropItemToGround(P) diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 1d85753de0..4b093641d9 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -126,7 +126,7 @@ /obj/item/pen/afterattack(obj/O, mob/living/user, proximity) //Changing Name/Description of items. Only works if they have the 'unique_rename' var set if(isobj(O) && proximity) - if(O.unique_rename) + if(O.obj_flags & UNIQUE_RENAME) var/penchoice = input(user, "What would you like to edit?", "Rename or change description?") as null|anything in list("Rename","Change description") if(!QDELETED(O) && user.canUseTopic(O, be_close = TRUE)) @@ -196,7 +196,7 @@ w_class = initial(w_class) name = initial(name) hitsound = initial(hitsound) - embed_chance = initial(embed_chance) + embedding = embedding.setRating(embed_chance = EMBED_CHANCE) throwforce = initial(throwforce) playsound(user, 'sound/weapons/saberoff.ogg', 5, 1) to_chat(user, "[src] can now be concealed.") @@ -206,7 +206,7 @@ w_class = WEIGHT_CLASS_NORMAL name = "energy dagger" hitsound = 'sound/weapons/blade1.ogg' - embed_chance = 100 //rule of cool + embedding = embedding.setRating(embed_chance = 100) //rule of cool throwforce = 35 playsound(user, 'sound/weapons/saberon.ogg', 5, 1) to_chat(user, "[src] is now active.") diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 422e62c10f..695b01e0b7 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -315,7 +315,7 @@ update_state |= UPSTATE_OPENED1 if(opened==2) update_state |= UPSTATE_OPENED2 - else if(emagged || malfai) + else if((obj_flags & EMAGGED) || malfai) update_state |= UPSTATE_BLUESCREEN else if(panel_open) update_state |= UPSTATE_WIREEXP @@ -395,8 +395,8 @@ "You hear a crack.") return //SSticker.mode:apcs-- //XSI said no and I agreed. -rastaf0 - else if (emagged) // We emag board, not APC's frame - emagged = FALSE + else if (obj_flags & EMAGGED) // We emag board, not APC's frame + obj_flags &= ~EMAGGED user.visible_message(\ "[user.name] has discarded emaged power control board from [src.name]!",\ "You discarded shorten board.") @@ -479,7 +479,7 @@ to_chat(user, "There is nothing to secure!") return update_icon() - else if(emagged) + else if(obj_flags & EMAGGED) to_chat(user, "The interface is broken!") else if((stat & MAINT) && !opened) ..() //its an empty closed frame... theres no wires to expose! @@ -669,7 +669,7 @@ togglelock(user) /obj/machinery/power/apc/proc/togglelock(mob/living/user) - if(emagged) + if(obj_flags & EMAGGED) to_chat(user, "The interface is broken!") else if(opened) to_chat(user, "You must close the cover to swipe an ID card!") @@ -705,7 +705,7 @@ update_icon() /obj/machinery/power/apc/emag_act(mob/user) - if(!emagged && !malfhack) + if(!(obj_flags & EMAGGED) && !malfhack) if(opened) to_chat(user, "You must close the cover to swipe an ID card!") else if(panel_open) @@ -715,7 +715,7 @@ else flick("apc-spark", src) playsound(src, "sparks", 75, 1) - emagged = TRUE + obj_flags |= EMAGGED locked = FALSE to_chat(user, "You emag the APC interface.") update_icon() @@ -852,7 +852,7 @@ switch(action) if("lock") if(usr.has_unlimited_silicon_privilege) - if(emagged || (stat & (BROKEN|MAINT))) + if((obj_flags & EMAGGED) || (stat & (BROKEN|MAINT))) to_chat(usr, "The APC does not respond to the command.") else locked = !locked diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 3ad5dd5357..883df8a6c9 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -41,7 +41,7 @@ By design, d1 is the smallest direction and d2 is the highest level = 1 //is underfloor layer = WIRE_LAYER //Above hidden pipes, GAS_PIPE_HIDDEN_LAYER anchored = TRUE - on_blueprints = TRUE + obj_flags = CAN_BE_HIT | ON_BLUEPRINTS var/d1 = 0 // cable direction 1 (see above) var/d2 = 1 // cable direction 2 (see above) var/datum/powernet/powernet diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 8aa7f8c82f..608a63ce8f 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -20,6 +20,7 @@ var/self_recharge = 0 //does it self recharge, over time, or not? var/ratingdesc = TRUE var/grown_battery = FALSE // If it's a grown that acts as a battery, add a wire overlay to it. + container_type = INJECTABLE|DRAINABLE /obj/item/stock_parts/cell/get_cell() return src @@ -27,6 +28,7 @@ /obj/item/stock_parts/cell/Initialize(mapload, override_maxcharge) . = ..() START_PROCESSING(SSobj, src) + create_reagents(5) if (override_maxcharge) maxcharge = override_maxcharge charge = maxcharge @@ -101,15 +103,9 @@ user.visible_message("[user] is licking the electrodes of [src]! It looks like [user.p_theyre()] trying to commit suicide!") return (FIRELOSS) -/obj/item/stock_parts/cell/attackby(obj/item/W, mob/user, params) +/obj/item/stock_parts/cell/on_reagent_change(changetype) + rigged = reagents.has_reagent("plasma", 5) ..() - if(istype(W, /obj/item/reagent_containers/syringe)) - var/obj/item/reagent_containers/syringe/S = W - to_chat(user, "You inject the solution into the power cell.") - if(S.reagents.has_reagent("plasma", 5)) - rigged = 1 - grind_results["plasma"] = 5 - S.reagents.clear_reagents() /obj/item/stock_parts/cell/proc/explode() @@ -174,7 +170,7 @@ charge = 0 /obj/item/stock_parts/cell/upgraded - name = "high-capacity power cell" + name = "upgraded power cell" desc = "A power cell with a slightly higher capacity than normal!" maxcharge = 2500 materials = list(MAT_GLASS=50) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index b86ac56478..7d86aac89f 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -29,7 +29,7 @@ if(!..()) return var/area/A = get_area(user) - if(A.dynamic_lighting != DYNAMIC_LIGHTING_ENABLED) + if(!IS_DYNAMIC_LIGHTING(A)) to_chat(user, "You cannot place [src] in this area!") return return TRUE @@ -311,8 +311,9 @@ on = FALSE emergency_mode = FALSE if(on) - if(!light || light.light_range != brightness) + if(!light || light.light_range != brightness || SSnightshift.nightshift != nightshift) //Cit change - makes lights update when nightshift triggers switchcount++ + nightshift = SSnightshift.nightshift // Cit change - makes lights update when nightshift triggers if(rigged) if(status == LIGHT_OK && trigger) explode() @@ -321,7 +322,7 @@ burn_out() else use_power = ACTIVE_POWER_USE - set_light(brightness, bulb_power, bulb_colour) + set_light(brightness, ((SSnightshift.nightshift && obeysnightshift) ? SSnightshift.nightshift_light_power : bulb_power), ((SSnightshift.nightshift && obeysnightshift) ? SSnightshift.nightshift_light_color : bulb_colour)) // Citadel change. Allows nightshift and admins to modify station light power and color else if(has_emergency_power(LIGHT_EMERGENCY_POWER_USE) && !turned_off()) use_power = IDLE_POWER_USE emergency_mode = TRUE diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index 73f48a2b28..ba3379df45 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -206,9 +206,9 @@ return ..() /obj/machinery/power/port_gen/pacman/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED emp_act(EMP_HEAVY) /obj/machinery/power/port_gen/pacman/attack_hand(mob/user) @@ -273,7 +273,7 @@ power_output-- src.updateUsrDialog() if (href_list["action"] == "higher_power") - if (power_output < 4 || emagged) + if (power_output < 4 || (obj_flags & EMAGGED)) power_output++ src.updateUsrDialog() if (href_list["action"] == "close") diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index 933cfc70e0..0bd230a166 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -10,7 +10,7 @@ name = null icon = 'icons/obj/power.dmi' anchored = TRUE - on_blueprints = TRUE + obj_flags = CAN_BE_HIT | ON_BLUEPRINTS var/datum/powernet/powernet = null use_power = NO_POWER_USE idle_power_usage = 0 diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 74bc0551e0..c7a026dd83 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -260,7 +260,7 @@ return if(W.GetID()) - if(emagged) + if(obj_flags & EMAGGED) to_chat(user, "The lock seems to be broken!") return if(allowed(user)) @@ -292,10 +292,10 @@ return ..() /obj/machinery/power/emitter/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return locked = FALSE - emagged = TRUE + obj_flags |= EMAGGED if(user) user.visible_message("[user.name] emags [src].","You short out the lock.") diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm index 666211fbd0..2293fb2fb2 100644 --- a/code/modules/power/singularity/narsie.dm +++ b/code/modules/power/singularity/narsie.dm @@ -77,7 +77,7 @@ set_security_level("delta") SSshuttle.registerHostileEnvironment(src) SSshuttle.lockdown = TRUE - sleep(1150) + sleep(850) if(resolved == FALSE) resolved = TRUE sound_to_playing_players('sound/machines/alarm.ogg') @@ -195,7 +195,6 @@ grav_pull = 0 /obj/singularity/narsie/wizard/eat() - set background = BACKGROUND_ENABLED // if(defer_powernet_rebuild != 2) // defer_powernet_rebuild = 1 for(var/atom/X in urange(consume_range,src,1)) diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index f4b749c0e0..3c7d00b3fd 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -27,7 +27,7 @@ var/last_warning var/consumedSupermatter = 0 //If the singularity has eaten a supermatter shard and can go to stage six resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF - dangerous_possession = TRUE + obj_flags = CAN_BE_HIT | DANGEROUS_POSSESSION /obj/singularity/Initialize(mapload, starting_energy = 50) //CARN: admin-alert for chuckle-fuckery. @@ -251,7 +251,6 @@ /obj/singularity/proc/eat() - set background = BACKGROUND_ENABLED for(var/tile in spiral_range_turfs(grav_pull, src)) var/turf/T = tile if(!T || !isturf(loc)) diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 485299a704..20b5480da8 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -538,12 +538,19 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) if(!istype(W) || (W.flags_1 & ABSTRACT_1) || !istype(user)) return if(istype(W, /obj/item/scalpel/supermatter)) + var/obj/item/scalpel/supermatter/scalpel = W playsound(src, W.usesound, 100, 1) - to_chat(user, "You carefully begin to scrape \the [src] with \the [W]...") + to_chat(user, "You carefully begin to scrape [src] with [W]...") if(do_after(user, 60 * W.toolspeed, TRUE, src)) - to_chat(user, "You extract a sliver from \the [src]. \The [src] begins to react violently!") - new /obj/item/nuke_core/supermatter_sliver(drop_location()) - matter_power += 200 + if (scalpel.usesLeft) + to_chat(user, "You extract a sliver from [src]. [src] begins to react violently!") + new /obj/item/nuke_core/supermatter_sliver(drop_location()) + matter_power += 200 + scalpel.usesLeft-- + if (!scalpel.usesLeft) + to_chat(user, "A tiny piece of [W] falls off, rendering it useless!") + else + to_chat(user, "You fail to extract a sliver from [src]. [W] isn't sharp enough anymore!") else if(user.dropItemToGround(W)) user.visible_message("As [user] touches \the [src] with \a [W], silence fills the room...",\ "You touch \the [src] with \the [W], and everything suddenly goes silent.\n\The [W] flashes into dust as you flinch away from \the [src].",\ @@ -581,11 +588,12 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_shard) matter_power += 200 else if(istype(AM, /obj/singularity)) return - else if(isobj(AM) && !istype(AM, /obj/effect)) - investigate_log("has consumed [AM].", INVESTIGATE_SUPERMATTER) + else if(isobj(AM)) + if(!istype(AM, /obj/effect)) + investigate_log("has consumed [AM].", INVESTIGATE_SUPERMATTER) qdel(AM) - - matter_power += 200 + if(!istype(AM, /obj/effect)) + matter_power += 200 //Some poor sod got eaten, go ahead and irradiate people nearby. radiation_pulse(src, 3000, 2, TRUE) diff --git a/code/modules/power/tesla/coil.dm b/code/modules/power/tesla/coil.dm index a0977d93e3..e42715af22 100644 --- a/code/modules/power/tesla/coil.dm +++ b/code/modules/power/tesla/coil.dm @@ -68,7 +68,7 @@ /obj/machinery/power/tesla_coil/tesla_act(var/power) if(anchored && !panel_open) - being_shocked = TRUE + obj_flags |= BEING_SHOCKED //don't lose arc power when it's not connected to anything //please place tesla coils all around the station to maximize effectiveness var/power_produced = powernet ? power / power_loss : power diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index d8891e6cf6..6b50b5e321 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -18,12 +18,14 @@ dissipate_delay = 5 dissipate_strength = 1 var/list/orbiting_balls = list() + var/miniball = FALSE var/produced_power var/energy_to_raise = 32 var/energy_to_lower = -20 /obj/singularity/energy_ball/Initialize(mapload, starting_energy = 50, is_miniball = FALSE) . = ..() + miniball = is_miniball if(!is_miniball) set_light(10, 7, "#EEEEFF") @@ -42,10 +44,11 @@ . = ..() /obj/singularity/energy_ball/admin_investigate_setup() - if(istype(loc, /obj/singularity/energy_ball)) - return + if(miniball) + return //don't annnounce miniballs ..() + /obj/singularity/energy_ball/process() if(!orbiting) handle_energy() @@ -77,7 +80,7 @@ //we face the last thing we zapped, so this lets us favor that direction a bit var/move_bias = pick(GLOB.alldirs) for(var/i in 0 to move_amount) - var/move_dir = pick(GLOB.alldirs + move_bias) //ensures large-ball teslas don't just sit around + var/move_dir = pick(GLOB.alldirs + move_bias) //ensures large-ball teslas don't just sit around if(target && prob(10)) move_dir = get_dir(src,target) var/turf/T = get_step(src, move_dir) @@ -193,7 +196,7 @@ if(istype(A, /obj/machinery/power/tesla_coil)) var/dist = get_dist(source, A) var/obj/machinery/power/tesla_coil/C = A - if(dist <= zap_range && (dist < closest_dist || !closest_tesla_coil) && !C.being_shocked) + if(dist <= zap_range && (dist < closest_dist || !closest_tesla_coil) && !(C.obj_flags & BEING_SHOCKED)) closest_dist = dist //we use both of these to save on istype and typecasting overhead later on @@ -229,7 +232,7 @@ else if(ismachinery(A)) var/obj/machinery/M = A var/dist = get_dist(source, A) - if(dist <= zap_range && (dist < closest_dist || !closest_machine) && !M.being_shocked) + if(dist <= zap_range && (dist < closest_dist || !closest_machine) && !(M.obj_flags & BEING_SHOCKED)) closest_machine = M closest_atom = A closest_dist = dist @@ -240,7 +243,7 @@ else if(istype(A, /obj/structure/blob)) var/obj/structure/blob/B = A var/dist = get_dist(source, A) - if(dist <= zap_range && (dist < closest_dist || !closest_tesla_coil) && !B.being_shocked) + if(dist <= zap_range && (dist < closest_dist || !closest_tesla_coil) && !(B.obj_flags & BEING_SHOCKED)) closest_blob = B closest_atom = A closest_dist = dist @@ -251,7 +254,7 @@ else if(isstructure(A)) var/obj/structure/S = A var/dist = get_dist(source, A) - if(dist <= zap_range && (dist < closest_dist || !closest_tesla_coil) && !S.being_shocked) + if(dist <= zap_range && (dist < closest_dist || !closest_tesla_coil) && !(S.obj_flags & BEING_SHOCKED)) closest_structure = S closest_atom = A closest_dist = dist diff --git a/code/modules/procedural_mapping/mapGenerator.dm b/code/modules/procedural_mapping/mapGenerator.dm index 966ef2f9e2..95eded309c 100644 --- a/code/modules/procedural_mapping/mapGenerator.dm +++ b/code/modules/procedural_mapping/mapGenerator.dm @@ -104,8 +104,6 @@ //Requests the mapGeneratorModule(s) to (re)generate /datum/mapGenerator/proc/generate() - set background = 1 //this can get beefy - syncModules() if(!modules || !modules.len) return diff --git a/code/modules/procedural_mapping/mapGenerators/cellular.dm b/code/modules/procedural_mapping/mapGenerators/cellular.dm index 3daa7632ff..7d88f3beb0 100644 --- a/code/modules/procedural_mapping/mapGenerators/cellular.dm +++ b/code/modules/procedural_mapping/mapGenerators/cellular.dm @@ -38,8 +38,6 @@ current_state = old_state.Copy() /datum/mapGenerator/ca/generate() - set background = 1 - //Abandon all hope for efficency all who enter here //Maybe some less basic implemetation later, but this is just simple admin tool initialize() diff --git a/code/modules/projectiles/ammunition/energy.dm b/code/modules/projectiles/ammunition/energy.dm index d4d09595af..96d0fd2e29 100644 --- a/code/modules/projectiles/ammunition/energy.dm +++ b/code/modules/projectiles/ammunition/energy.dm @@ -12,6 +12,7 @@ /obj/item/ammo_casing/energy/chameleon projectile_type = /obj/item/projectile/energy/chameleon e_cost = 0 + var/hitscan_mode = FALSE var/list/projectile_vars = list() /obj/item/ammo_casing/energy/chameleon/ready_proj(atom/target, mob/living/user, quiet, zone_override = "") @@ -19,8 +20,10 @@ if(!BB) newshot() for(var/V in projectile_vars) - if(BB.vars[V]) + if(BB.vars.Find(V)) BB.vars[V] = projectile_vars[V] + if(hitscan_mode) + BB.hitscan = TRUE /obj/item/ammo_casing/energy/laser projectile_type = /obj/item/projectile/beam/laser @@ -69,10 +72,16 @@ projectile_type = /obj/item/projectile/beam/lasertag/bluetag select_name = "bluetag" +/obj/item/ammo_casing/energy/laser/bluetag/hitscan + projectile_type = /obj/item/projectile/beam/lasertag/bluetag/hitscan + /obj/item/ammo_casing/energy/laser/redtag projectile_type = /obj/item/projectile/beam/lasertag/redtag select_name = "redtag" +/obj/item/ammo_casing/energy/laser/redtag/hitscan + projectile_type = /obj/item/projectile/beam/lasertag/redtag/hitscan + /obj/item/ammo_casing/energy/xray projectile_type = /obj/item/projectile/beam/xray e_cost = 50 diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 8f52f26936..1a0e756277 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -15,8 +15,7 @@ throw_speed = 3 throw_range = 5 force = 5 - needs_permit = TRUE - unique_rename = FALSE + item_flags = NEEDS_PERMIT attack_verb = list("struck", "hit", "bashed") var/fire_sound = "gunshot" @@ -153,10 +152,10 @@ return - //Exclude lasertag guns from the DISABILITY_CLUMSY check. + //Exclude lasertag guns from the TRAIT_CLUMSY check. if(clumsy_check) if(istype(user)) - if (user.has_disability(DISABILITY_CLUMSY) && prob(40)) + if (user.has_trait(TRAIT_CLUMSY) && prob(40)) to_chat(user, "You shoot yourself in the foot with [src]!") var/shot_leg = pick("l_leg", "r_leg") process_fire(user, user, FALSE, params, shot_leg) @@ -191,7 +190,7 @@ /obj/item/gun/proc/handle_pins(mob/living/user) if(pin) - if(pin.pin_auth(user) || pin.emagged) + if(pin.pin_auth(user) || (pin.obj_flags & EMAGGED)) return TRUE else pin.auth_fail(user) diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index 4e9da3b22d..692d9b4733 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -89,7 +89,7 @@ desc = "A cheap Martian knock-off of a classic law enforcement firearm. Uses .38-special rounds." icon_state = "detective" mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rev38 - unique_rename = TRUE + obj_flags = UNIQUE_RENAME unique_reskin = list("Default" = "detective", "Leopard Spots" = "detective_leopard", "Black Panther" = "detective_panther", @@ -261,7 +261,7 @@ slot_flags = SLOT_BACK mag_type = /obj/item/ammo_box/magazine/internal/shot/dual sawn_desc = "Omar's coming!" - unique_rename = TRUE + obj_flags = UNIQUE_RENAME unique_reskin = list("Default" = "dshotgun", "Dark Red Finish" = "dshotgun-d", "Ash" = "dshotgun-f", @@ -307,7 +307,6 @@ slot_flags = null mag_type = /obj/item/ammo_box/magazine/internal/shot/improvised sawn_desc = "I'm just here for the gasoline." - unique_rename = FALSE unique_reskin = null var/slung = FALSE @@ -349,7 +348,7 @@ clumsy_check = 0 /obj/item/gun/ballistic/revolver/reverse/can_trigger_gun(mob/living/user) - if((user.has_disability(DISABILITY_CLUMSY)) || (user.mind && user.mind.assigned_role == "Clown")) + if((user.has_trait(TRAIT_CLUMSY)) || (user.mind && user.mind.assigned_role == "Clown")) return ..() if(process_fire(user, user, FALSE, null, "head")) user.visible_message("[user] somehow manages to shoot [user.p_them()]self in the face!", "You somehow shoot yourself in the face! How the hell?!") diff --git a/code/modules/projectiles/guns/ballistic/toy.dm b/code/modules/projectiles/guns/ballistic/toy.dm index a04d6f1b54..af666951cb 100644 --- a/code/modules/projectiles/guns/ballistic/toy.dm +++ b/code/modules/projectiles/guns/ballistic/toy.dm @@ -11,7 +11,7 @@ burst_size = 3 can_suppress = TRUE clumsy_check = 0 - needs_permit = 0 + item_flags = NONE casing_ejector = FALSE /obj/item/gun/ballistic/automatic/toy/unrestricted @@ -53,7 +53,7 @@ throwforce = 0 mag_type = /obj/item/ammo_box/magazine/internal/shot/toy clumsy_check = 0 - needs_permit = 0 + item_flags = NONE casing_ejector = FALSE can_suppress = FALSE @@ -81,7 +81,7 @@ desc = "A bullpup two-round burst toy SMG, designated 'C-20r'. Ages 8 and up." icon = 'icons/obj/guns/toy.dmi' can_suppress = TRUE - needs_permit = 0 + item_flags = NONE mag_type = /obj/item/ammo_box/magazine/toy/smgm45/riot casing_ejector = FALSE @@ -97,7 +97,7 @@ desc = "A heavily modified toy light machine gun, designated 'L6 SAW'. Ages 8 and up." icon = 'icons/obj/guns/toy.dmi' can_suppress = FALSE - needs_permit = 0 + item_flags = NONE mag_type = /obj/item/ammo_box/magazine/toy/m762/riot casing_ejector = FALSE diff --git a/code/modules/projectiles/guns/beam_rifle.dm b/code/modules/projectiles/guns/beam_rifle.dm index fc00079d35..702079e72c 100644 --- a/code/modules/projectiles/guns/beam_rifle.dm +++ b/code/modules/projectiles/guns/beam_rifle.dm @@ -42,7 +42,7 @@ var/lastangle = 0 var/aiming_lastangle = 0 var/mob/current_user = null - var/list/obj/effect/projectile_beam/current_tracers + var/list/obj/effect/projectile/tracer/current_tracers var/structure_piercing = 2 //Amount * 2. For some reason structures aren't respecting this unless you have it doubled. Probably with the objects in question's Bump() code instead of this but I'll deal with this later. var/structure_bleed_coeff = 0.7 @@ -546,93 +546,28 @@ /obj/item/projectile/beam/beam_rifle/hitscan icon_state = "" - var/tracer_type = /obj/effect/projectile_beam/tracer - var/list/beam_segments //assoc list of datum/point or datum/point/vector, start = end. + hitscan = TRUE + tracer_type = /obj/effect/projectile/tracer/tracer/beam_rifle var/constant_tracer = FALSE - var/beam_index -/obj/item/projectile/beam/beam_rifle/hitscan/Destroy() - if(loc) - var/datum/point/pcache = trajectory.copy_to() - beam_segments[beam_index] = pcache - generate_tracers(constant_tracer) - return ..() - -/obj/item/projectile/beam/beam_rifle/hitscan/Collide(atom/target) - var/datum/point/pcache = trajectory.copy_to() - . = ..() - if(. && !QDELETED(src)) //successful touch and not destroyed. - beam_segments[beam_index] = pcache - beam_index = pcache - beam_segments[beam_index] = null - -/obj/item/projectile/beam/beam_rifle/hitscan/before_z_change(turf/oldloc, turf/newloc) - var/datum/point/pcache = trajectory.copy_to() - beam_segments[beam_index] = pcache - beam_index = RETURN_PRECISE_POINT(newloc) - beam_segments[beam_index] = null - return ..() - -/obj/item/projectile/beam/beam_rifle/hitscan/proc/generate_tracers(highlander = FALSE, cleanup = TRUE) +/obj/item/projectile/beam/beam_rifle/hitscan/generate_hitscan_tracers(cleanup = TRUE, duration = 5, highlander) set waitfor = FALSE + if(isnull(highlander)) + highlander = constant_tracer if(highlander && istype(gun)) QDEL_LIST(gun.current_tracers) for(var/datum/point/p in beam_segments) - gun.current_tracers += generate_projectile_beam_between_points(p, beam_segments[p], tracer_type, color, 0) + gun.current_tracers += generate_tracer_between_points(p, beam_segments[p], tracer_type, color, 0) else for(var/datum/point/p in beam_segments) - generate_projectile_beam_between_points(p, beam_segments[p], tracer_type, color, 5) + generate_tracer_between_points(p, beam_segments[p], tracer_type, color, duration) if(cleanup) QDEL_LIST(beam_segments) beam_segments = null QDEL_NULL(beam_index) -/obj/item/projectile/beam/beam_rifle/hitscan/fire(setAngle, atom/direct_target) //oranges didn't let me make this a var the first time around so copypasta time - set waitfor = FALSE - var/turf/starting = get_turf(src) - trajectory = new(starting.x, starting.y, starting.z, 0, 0, setAngle? setAngle : Angle, 33) - if(!log_override && firer && original) - add_logs(firer, original, "fired at", src, " [get_area(src)]") - fired = TRUE - if(setAngle) - Angle = setAngle - var/safety = 0 //The code works fine, but... just in case... - var/turf/c2 - beam_segments = list() //initialize segment list with the list for the first segment - beam_index = RETURN_PRECISE_POINT(src) - beam_segments[beam_index] = null //record start. - if(spread) - Angle += (rand() - 0.5) * spread - while(loc) - if(paused || QDELETED(src)) - return - if(++safety > (range * 3)) //If it's looping for way, way too long... - qdel(src) - stack_trace("WARNING: [type] projectile encountered infinite recursion in [__FILE__]/[__LINE__]!") - return //Kill! - var/matrix/M = new - M.Turn(Angle) - transform = M - trajectory.increment() - var/turf/T = trajectory.return_turf() - if(T.z != loc.z) - before_z_change(loc, T) - trajectory_ignore_forcemove = TRUE - forceMove(T) - trajectory_ignore_forcemove = FALSE - else - step_towards(src, T) - animate(src, pixel_x = trajectory.return_px(), pixel_y = trajectory.return_py(), time = 1, flags = ANIMATION_END_NOW) - - if(can_hit_target(original, permutated)) - Collide(original) - Range() - c2 = get_turf(src) - if(istype(c2)) - cached = c2 - /obj/item/projectile/beam/beam_rifle/hitscan/aiming_beam - tracer_type = /obj/effect/projectile_beam/tracer/aiming + tracer_type = /obj/effect/projectile/tracer/tracer/aiming name = "aiming beam" hitsound = null hitsound_wall = null diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index 3aa501a6b8..f3ff4e965d 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -5,8 +5,8 @@ item_state = "kineticgun" ammo_type = list(/obj/item/ammo_casing/energy/kinetic) cell_type = /obj/item/stock_parts/cell/emproof - needs_permit = 0 - unique_rename = 1 + item_flags = NONE + obj_flags = UNIQUE_RENAME weapon_weight = WEAPON_LIGHT can_flashlight = 1 flight_x_offset = 15 diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 37bb252adc..29d0ee0958 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -14,7 +14,7 @@ desc = "A modified version of the basic laser gun, this one fires less concentrated energy bolts designed for target practice." ammo_type = list(/obj/item/ammo_casing/energy/laser/practice) clumsy_check = 0 - needs_permit = 0 + item_flags = NONE /obj/item/gun/energy/laser/retro name ="retro laser gun" @@ -116,19 +116,25 @@ icon_state = "bluetag" desc = "A retro laser gun modified to fire harmless blue beams of light. Sound effects included!" ammo_type = list(/obj/item/ammo_casing/energy/laser/bluetag) - clumsy_check = 0 - needs_permit = 0 + item_flags = NONE + clumsy_check = FALSE pin = /obj/item/device/firing_pin/tag/blue ammo_x_offset = 2 - selfcharge = 1 + selfcharge = TRUE + +/obj/item/gun/energy/laser/bluetag/hitscan + ammo_type = list(/obj/item/ammo_casing/energy/laser/bluetag/hitscan) /obj/item/gun/energy/laser/redtag name = "laser tag gun" icon_state = "redtag" desc = "A retro laser gun modified to fire harmless beams red of light. Sound effects included!" ammo_type = list(/obj/item/ammo_casing/energy/laser/redtag) - clumsy_check = 0 - needs_permit = 0 + item_flags = NONE + clumsy_check = FALSE pin = /obj/item/device/firing_pin/tag/red ammo_x_offset = 2 - selfcharge = 1 + selfcharge = TRUE + +/obj/item/gun/energy/laser/redtag/hitscan + ammo_type = list(/obj/item/ammo_casing/energy/laser/redtag/hitscan) diff --git a/code/modules/projectiles/guns/energy/megabuster.dm b/code/modules/projectiles/guns/energy/megabuster.dm index c4096ad5cb..6fd2de777b 100644 --- a/code/modules/projectiles/guns/energy/megabuster.dm +++ b/code/modules/projectiles/guns/energy/megabuster.dm @@ -5,9 +5,9 @@ item_state = "megabuster" w_class = WEIGHT_CLASS_SMALL ammo_type = list(/obj/item/ammo_casing/energy/megabuster) - clumsy_check = 0 - needs_permit = 0 - selfcharge = 1 + clumsy_check = FALSE + item_flags = NEEDS_PERMIT + selfcharge = TRUE cell_type = "/obj/item/stock_parts/cell/pulse" icon = 'icons/obj/guns/VGguns.dmi' diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index cced6d9544..1226172262 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -89,7 +89,7 @@ suppressed = TRUE ammo_type = list(/obj/item/ammo_casing/energy/bolt) weapon_weight = WEAPON_LIGHT - unique_rename = 0 + obj_flags = 0 overheat_time = 20 holds_charge = TRUE unique_frequency = TRUE @@ -125,10 +125,11 @@ force = 12 sharpness = IS_SHARP can_charge = 0 - heat = 3800 + heat = 3800 usesound = 'sound/items/welder.ogg' - toolspeed = 0.7 //plasmacutters can be used as welders for a few things, and are faster than standard welders + tool_behaviour = TOOL_WELDER + toolspeed = 0.7 //plasmacutters can be used as welders, and are faster than standard welders /obj/item/gun/energy/plasmacutter/examine(mob/user) ..() diff --git a/code/modules/projectiles/guns/misc/blastcannon.dm b/code/modules/projectiles/guns/misc/blastcannon.dm index 2c6bb8112b..865689e440 100644 --- a/code/modules/projectiles/guns/misc/blastcannon.dm +++ b/code/modules/projectiles/guns/misc/blastcannon.dm @@ -7,7 +7,7 @@ w_class = WEIGHT_CLASS_NORMAL force = 10 fire_sound = 'sound/weapons/blastcannon.ogg' - needs_permit = FALSE + item_flags = NONE clumsy_check = FALSE randomspread = FALSE diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/pins.dm index 92b2f8c0d4..b571f5ce5e 100644 --- a/code/modules/projectiles/pins.dm +++ b/code/modules/projectiles/pins.dm @@ -37,9 +37,9 @@ to_chat(user, "This firearm already has a firing pin installed.") /obj/item/device/firing_pin/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED to_chat(user, "You override the authentication mechanism.") /obj/item/device/firing_pin/proc/gun_insert(mob/living/user, obj/item/gun/G) @@ -129,7 +129,7 @@ // A gun with ultra-honk pin is useful for clown and useless for everyone else. /obj/item/device/firing_pin/clown/ultra/pin_auth(mob/living/user) playsound(src.loc, 'sound/items/bikehorn.ogg', 50, 1) - if(!(user.has_disability(DISABILITY_CLUMSY)) && !(user.mind && user.mind.assigned_role == "Clown")) + if(!(user.has_trait(TRAIT_CLUMSY)) && !(user.mind && user.mind.assigned_role == "Clown")) return 0 return 1 diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 5704fe9f44..3c8092307a 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -1,5 +1,6 @@ -#define MOVES_HITSCAN -1 //Not actually hitscan but close as we get. +#define MOVES_HITSCAN -1 //Not actually hitscan but close as we get without actual hitscan. +#define MUZZLE_EFFECT_PIXEL_INCREMENT 17 //How many pixels to move the muzzle flash up so your character doesn't look like they're shitting out lasers. /obj/item/projectile name = "projectile" @@ -37,6 +38,7 @@ var/speed = 0.8 //Amount of deciseconds it takes for projectile to travel var/pixel_speed = 33 //pixels per move - DO NOT FUCK WITH THIS UNLESS YOU ABSOLUTELY KNOW WHAT YOU ARE DOING OR UNEXPECTED THINGS /WILL/ HAPPEN! var/Angle = 0 + var/original_angle = 0 //Angle at firing var/nondirectional_sprite = FALSE //Set TRUE to prevent projectiles from having their sprites rotated based on firing angle var/spread = 0 //amount (in degrees) of projectile spread animate_movement = 0 //Use SLIDE_STEPS in conjunction with legacy @@ -46,6 +48,15 @@ var/colliding = FALSE //pause processing.. + //Hitscan + var/hitscan = FALSE //Whether this is hitscan. If it is, speed is basically ignored. + var/list/beam_segments //assoc list of datum/point or datum/point/vector, start = end. Used for hitscan effect generation. + var/datum/point/beam_index + var/turf/hitscan_last //last turf touched during hitscanning. + var/tracer_type + var/muzzle_type + var/impact_type + var/ignore_source_check = FALSE var/damage = 10 @@ -53,7 +64,7 @@ var/nodamage = 0 //Determines if the projectile will skip any damage inflictions var/flag = "bullet" //Defines what armor to use when it hits things. Must be set to bullet, laser, energy,or bomb var/projectile_type = /obj/item/projectile - var/range = 50 //This will de-increment every step. When 0, it will delete the projectile. + var/range = 50 //This will de-increment every step. When 0, it will deletze the projectile. var/is_reflectable = FALSE // Can it be reflected or not? //Effects var/stun = 0 @@ -111,7 +122,7 @@ if(!nodamage && (damage_type == BRUTE || damage_type == BURN) && iswallturf(target_loca) && prob(75)) var/turf/closed/wall/W = target_loca - if(impact_effect_type) + if(impact_effect_type && !hitscan) new impact_effect_type(target_loca, hitx, hity) W.add_dent(WALL_DENT_SHOT, hitx, hity) @@ -119,7 +130,7 @@ return 0 if(!isliving(target)) - if(impact_effect_type) + if(impact_effect_type && !hitscan) new impact_effect_type(target_loca, hitx, hity) return 0 @@ -136,7 +147,7 @@ new /obj/effect/temp_visual/dir_setting/bloodsplatter(target_loca, splatter_dir) if(prob(33)) L.add_splatter_floor(target_loca) - else if(impact_effect_type) + else if(impact_effect_type && !hitscan) new impact_effect_type(target_loca, hitx, hity) var/organ_hit_text = "" @@ -173,14 +184,22 @@ /obj/item/projectile/proc/on_ricochet(atom/A) return +/obj/item/projectile/proc/store_hitscan_collision(datum/point/pcache) + beam_segments[beam_index] = pcache + beam_index = pcache + beam_segments[beam_index] = null + /obj/item/projectile/Collide(atom/A) colliding = TRUE + var/datum/point/pcache = trajectory.copy_to() if(check_ricochet(A) && check_ricochet_flag(A) && ricochets < ricochets_max) ricochets++ if(A.handle_ricochet(src)) on_ricochet(A) ignore_source_check = TRUE range = initial(range) + if(hitscan) + store_hitscan_collision(pcache) return TRUE if(firer && !ignore_source_check) if(A == firer || (A == firer.loc && ismecha(A))) //cannot shoot yourself or your mech @@ -275,7 +294,9 @@ return getline(current, ending) /obj/item/projectile/proc/before_z_change(turf/oldloc, turf/newloc) - return + var/datum/point/pcache = trajectory.copy_to() + if(hitscan) + store_hitscan_collision(pcache) /obj/item/projectile/Process_Spacemove(var/movement_dir = 0) return TRUE //Bullets don't drift in space @@ -324,13 +345,17 @@ return var/turf/target = locate(CLAMP(starting + xo, 1, world.maxx), CLAMP(starting + yo, 1, world.maxy), starting.z) setAngle(Get_Angle(src, target)) + original_angle = Angle if(!nondirectional_sprite) var/matrix/M = new M.Turn(Angle) transform = M + forceMove(starting) trajectory = new(starting.x, starting.y, starting.z, 0, 0, Angle, pixel_speed) last_projectile_move = world.time fired = TRUE + if(hitscan) + process_hitscan() if(!isprocessing) START_PROCESSING(SSprojectiles, src) pixel_move(1) //move it now! @@ -350,11 +375,29 @@ if(trajectory && !trajectory_ignore_forcemove && isturf(target)) trajectory.initialize_location(target.x, target.y, target.z, 0, 0) -/obj/item/projectile/proc/pixel_move(moves, trajectory_multiplier = 1) +/obj/item/projectile/proc/record_hitscan_start(datum/point/pcache) + beam_segments = list() //initialize segment list with the list for the first segment + beam_index = pcache + beam_segments[beam_index] = null //record start. + +/obj/item/projectile/proc/process_hitscan() + var/safety = range * 3 + record_hitscan_start(RETURN_POINT_VECTOR_INCREMENT(src, Angle, MUZZLE_EFFECT_PIXEL_INCREMENT, 1)) + while(loc && !QDELETED(src)) + if(paused) + stoplag(1) + continue + if(safety-- <= 0) + qdel(src) + stack_trace("WARNING: [type] projectile encountered infinite recursion during hitscanning in [__FILE__]/[__LINE__]!") + return //Kill! + pixel_move(1, 1, TRUE) + +/obj/item/projectile/proc/pixel_move(moves, trajectory_multiplier = 1, hitscanning = FALSE) if(!loc || !trajectory) return last_projectile_move = world.time - if(!nondirectional_sprite) + if(!nondirectional_sprite && !hitscanning) var/matrix/M = new M.Turn(Angle) transform = M @@ -365,14 +408,18 @@ trajectory_ignore_forcemove = TRUE forceMove(T) trajectory_ignore_forcemove = FALSE - pixel_x = trajectory.return_px() - pixel_y = trajectory.return_py() + if(!hitscanning) + pixel_x = trajectory.return_px() + pixel_y = trajectory.return_py() else step_towards(src, T) - pixel_x = trajectory.return_px() - trajectory.mpx * trajectory_multiplier - pixel_y = trajectory.return_py() - trajectory.mpy * trajectory_multiplier - animate(src, pixel_x = trajectory.return_px(), pixel_y = trajectory.return_py(), time = 1, flags = ANIMATION_END_NOW) - + if(!hitscanning) + pixel_x = trajectory.return_px() - trajectory.mpx * trajectory_multiplier + pixel_y = trajectory.return_py() - trajectory.mpy * trajectory_multiplier + if(!hitscanning) + animate(src, pixel_x = trajectory.return_px(), pixel_y = trajectory.return_py(), time = 1, flags = ANIMATION_END_NOW) + if(isturf(loc)) + hitscan_last = loc if(can_hit_target(original, permutated)) Collide(original) Range() @@ -391,6 +438,7 @@ yo = targloc.y - curloc.y xo = targloc.x - curloc.x setAngle(Get_Angle(src, targloc)) + if(isliving(source) && params) var/list/calculated = calculate_projectile_angle_and_pixel_offsets(source, params) p_x = calculated[2] @@ -445,8 +493,40 @@ Collide(AM) /obj/item/projectile/Destroy() + if(hitscan) + if(loc) + var/datum/point/pcache = trajectory.copy_to() + beam_segments[beam_index] = pcache + generate_hitscan_tracers() STOP_PROCESSING(SSprojectiles, src) return ..() +/obj/item/projectile/proc/generate_hitscan_tracers(cleanup = TRUE, duration = 3) + if(!length(beam_segments)) + return + if(tracer_type) + for(var/datum/point/p in beam_segments) + generate_tracer_between_points(p, beam_segments[p], tracer_type, color, duration) + if(muzzle_type && duration > 0) + var/datum/point/p = beam_segments[1] + var/atom/movable/thing = new muzzle_type + p.move_atom_to_src(thing) + var/matrix/M = new + M.Turn(original_angle) + thing.transform = M + QDEL_IN(thing, duration) + if(impact_type && duration > 0) + var/datum/point/p = beam_segments[beam_segments[beam_segments.len]] + var/atom/movable/thing = new impact_type + p.move_atom_to_src(thing) + var/matrix/M = new + M.Turn(Angle) + thing.transform = M + QDEL_IN(thing, duration) + if(cleanup) + QDEL_LIST(beam_segments) + beam_segments = null + QDEL_NULL(beam_index) + /obj/item/projectile/experience_pressure_difference() return diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index ef00c35563..3ba0d092c5 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -16,11 +16,17 @@ is_reflectable = TRUE /obj/item/projectile/beam/laser + tracer_type = /obj/effect/projectile/tracer/laser + muzzle_type = /obj/effect/projectile/muzzle/laser + impact_type = /obj/effect/projectile/impact/laser /obj/item/projectile/beam/laser/heavylaser name = "heavy laser" icon_state = "heavylaser" damage = 40 + tracer_type = /obj/effect/projectile/tracer/heavy_laser + muzzle_type = /obj/effect/projectile/muzzle/heavy_laser + impact_type = /obj/effect/projectile/impact/heavy_laser /obj/item/projectile/beam/laser/on_hit(atom/target, blocked = FALSE) . = ..() @@ -54,6 +60,9 @@ impact_effect_type = /obj/effect/temp_visual/impact_effect/green_laser light_color = LIGHT_COLOR_GREEN + tracer_type = /obj/effect/projectile/tracer/xray + muzzle_type = /obj/effect/projectile/muzzle/xray + impact_type = /obj/effect/projectile/impact/xray /obj/item/projectile/beam/disabler name = "disabler beam" @@ -65,6 +74,9 @@ eyeblur = 0 impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser light_color = LIGHT_COLOR_BLUE + tracer_type = /obj/effect/projectile/tracer/disabler + muzzle_type = /obj/effect/projectile/muzzle/disabler + impact_type = /obj/effect/projectile/impact/disabler /obj/item/projectile/beam/pulse name = "pulse" @@ -72,6 +84,9 @@ damage = 50 impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser light_color = LIGHT_COLOR_BLUE + tracer_type = /obj/effect/projectile/tracer/pulse + muzzle_type = /obj/effect/projectile/muzzle/pulse + impact_type = /obj/effect/projectile/impact/pulse /obj/item/projectile/beam/pulse/on_hit(atom/target, blocked = FALSE) . = ..() @@ -126,10 +141,22 @@ suit_types = list(/obj/item/clothing/suit/bluetag) impact_effect_type = /obj/effect/temp_visual/impact_effect/red_laser light_color = LIGHT_COLOR_RED + tracer_type = /obj/effect/projectile/tracer/laser + muzzle_type = /obj/effect/projectile/muzzle/laser + impact_type = /obj/effect/projectile/impact/laser + +/obj/item/projectile/beam/lasertag/redtag/hitscan + hitscan = TRUE /obj/item/projectile/beam/lasertag/bluetag icon_state = "bluelaser" suit_types = list(/obj/item/clothing/suit/redtag) + tracer_type = /obj/effect/projectile/tracer/laser/blue + muzzle_type = /obj/effect/projectile/muzzle/laser/blue + impact_type = /obj/effect/projectile/impact/laser/blue + +/obj/item/projectile/beam/lasertag/bluetag/hitscan + hitscan = TRUE /obj/item/projectile/beam/instakill name = "instagib laser" diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index d19079d563..2d7f8f5cce 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -19,6 +19,9 @@ jitter = 20 hitsound = 'sound/weapons/taserhit.ogg' range = 7 + tracer_type = /obj/effect/projectile/tracer/stun + muzzle_type = /obj/effect/projectile/muzzle/stun + impact_type = /obj/effect/projectile/impact/stun /obj/item/projectile/energy/electrode/on_hit(atom/target, blocked = FALSE) . = ..() @@ -28,7 +31,7 @@ var/mob/living/carbon/C = target if(C.dna && C.dna.check_mutation(HULK)) C.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) - else if(C.status_flags & CANKNOCKDOWN) + else if((C.status_flags & CANKNOCKDOWN) && !C.has_trait(TRAIT_STUNIMMUNE)) addtimer(CALLBACK(C, /mob/living/carbon.proc/do_jitter_animation, jitter), 5) /obj/item/projectile/energy/electrode/on_range() //to ensure the bolt sparks when it reaches the end of its range if it didn't hit a target yet diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 152cff6c74..e8f309309a 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -184,6 +184,9 @@ var/pressure_decrease_active = FALSE var/pressure_decrease = 0.25 var/mine_range = 3 //mines this many additional tiles of rock + tracer_type = /obj/effect/projectile/tracer/plasma_cutter + muzzle_type = /obj/effect/projectile/muzzle/plasma_cutter + impact_type = /obj/effect/projectile/impact/plasma_cutter /obj/item/projectile/plasma/Initialize() . = ..() @@ -539,7 +542,7 @@ hal_target.stuttering += 20 if(hal_target.dna && hal_target.dna.check_mutation(HULK)) hal_target.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) - else if(hal_target.status_flags & CANKNOCKDOWN) + else if((hal_target.status_flags & CANKNOCKDOWN) && !hal_target.has_trait(TRAIT_STUNIMMUNE)) addtimer(CALLBACK(hal_target, /mob/living/carbon.proc/do_jitter_animation, 20), 5) /obj/item/projectile/hallucination/disabler diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index 6080763548..71c7f9fa0d 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -442,32 +442,8 @@ update_total() if(my_atom) my_atom.on_reagent_change(DEL_REAGENT) - check_ignoreslow(my_atom) - check_gofast(my_atom) - check_goreallyfast(my_atom) return 1 -/datum/reagents/proc/check_ignoreslow(mob/M) - if(ismob(M)) - if(M.reagents.has_reagent("morphine")) - return 1 - else - M.status_flags &= ~IGNORESLOWDOWN - -/datum/reagents/proc/check_gofast(mob/M) - if(ismob(M)) - if(M.reagents.has_reagent("unholywater")||M.reagents.has_reagent("nuka_cola")||M.reagents.has_reagent("stimulants")||M.reagents.has_reagent("ephedrine")) - return 1 - else - M.status_flags &= ~GOTTAGOFAST - -/datum/reagents/proc/check_goreallyfast(mob/M) - if(ismob(M)) - if(M.reagents.has_reagent("methamphetamine")) - return 1 - else - M.status_flags &= ~GOTTAGOREALLYFAST - /datum/reagents/proc/update_total() var/list/cached_reagents = reagent_list total_volume = 0 diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index a1e913a14e..47d6b9697c 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -82,12 +82,12 @@ use_power(2500) /obj/machinery/chem_dispenser/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) to_chat(user, "[src] has no functional safeties to emag.") return to_chat(user, "You short out [src]'s safeties.") dispensable_reagents |= emagged_reagents//add the emagged reagents to the dispensable ones - emagged = TRUE + obj_flags |= EMAGGED /obj/machinery/chem_dispenser/ex_act(severity, target) if(severity < 3) diff --git a/code/modules/reagents/chemistry/machinery/smoke_machine.dm b/code/modules/reagents/chemistry/machinery/smoke_machine.dm index 7941853a91..7c24f786af 100644 --- a/code/modules/reagents/chemistry/machinery/smoke_machine.dm +++ b/code/modules/reagents/chemistry/machinery/smoke_machine.dm @@ -17,7 +17,7 @@ var/max_range = 3 // displayed max range is 3 * max range /datum/effect_system/smoke_spread/chem/smoke_machine/set_up(datum/reagents/carry, setting=1, efficiency=10, loc) - amount = setting * 3 + amount = setting carry.copy_to(chemholder, 20) carry.remove_any(amount * 16 / efficiency) location = loc @@ -72,7 +72,7 @@ var/smoke_test = locate(/obj/effect/particle_effect/smoke) in T if(on && !smoke_test) var/datum/effect_system/smoke_spread/chem/smoke_machine/smoke = new() - smoke.set_up(reagents, setting, efficiency, T) + smoke.set_up(reagents, setting*3, efficiency, T) smoke.start() /obj/machinery/smoke_machine/attackby(obj/item/I, mob/user, params) diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 68770490e9..348848c447 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -380,7 +380,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_desc = "A classic mix of rum and cola." /datum/reagent/consumable/ethanol/cuba_libre/on_mob_life(mob/living/M) - if(M.mind && M.mind.special_role in list("Revolutionary", "Head Revolutionary")) //Cuba Libre, the traditional drink of revolutions! Heals revolutionaries. + if(M.mind && M.mind.has_antag_datum(/datum/antagonist/rev)) //Cuba Libre, the traditional drink of revolutions! Heals revolutionaries. M.adjustBruteLoss(-1, 0) M.adjustFireLoss(-1, 0) M.adjustToxLoss(-1, 0) @@ -1282,6 +1282,7 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "eggnog" glass_desc = "For enjoying the most wonderful time of the year." + /datum/reagent/consumable/ethanol/narsour name = "Nar'Sour" id = "narsour" diff --git a/code/modules/reagents/chemistry/reagents/blob_reagents.dm b/code/modules/reagents/chemistry/reagents/blob_reagents.dm index cd5f4aa7c7..727ffa2874 100644 --- a/code/modules/reagents/chemistry/reagents/blob_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/blob_reagents.dm @@ -301,7 +301,7 @@ var/obj/effect/temp_visual/explosion/fast/E = new /obj/effect/temp_visual/explosion/fast(get_turf(M)) E.alpha = 150 for(var/mob/living/L in orange(get_turf(M), 1)) - if("blob" in L.faction) //no friendly fire + if(ROLE_BLOB in L.faction) //no friendly fire continue var/aoe_volume = ..(L, TOUCH, initial_volume, 0, L.get_permeability_protection(), O) L.apply_damage(0.4*aoe_volume, BRUTE) diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index ab241d7f43..c56d10c3c9 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -396,13 +396,24 @@ glass_name = "glass of Nuka Cola" glass_desc = "Don't cry, Don't raise your eye, It's only nuclear wasteland." +/datum/reagent/consumable/nuka_cola/on_mob_add(mob/M) + ..() + if(isliving(M)) + var/mob/living/L = M + L.add_trait(TRAIT_GOTTAGOFAST, id) + +/datum/reagent/consumable/nuka_cola/on_mob_delete(mob/M) + if(isliving(M)) + var/mob/living/L = M + L.remove_trait(TRAIT_GOTTAGOFAST, id) + ..() + /datum/reagent/consumable/nuka_cola/on_mob_life(mob/living/M) M.Jitter(20) M.set_drugginess(30) M.dizziness +=5 M.drowsyness = 0 M.AdjustSleeping(-40, FALSE) - M.status_flags |= GOTTAGOFAST if (M.bodytemperature > BODYTEMP_NORMAL)//310.15 is the normal bodytemp. M.bodytemperature = max(BODYTEMP_NORMAL, M.bodytemperature - (5 * TEMPERATURE_DAMAGE_COEFFICIENT)) ..() diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index 534cf515d9..0886aacb06 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -166,6 +166,18 @@ addiction_threshold = 10 metabolization_rate = 0.75 * REAGENTS_METABOLISM +/datum/reagent/drug/methamphetamine/on_mob_add(mob/M) + ..() + if(isliving(M)) + var/mob/living/L = M + L.add_trait(TRAIT_GOTTAGOREALLYFAST, id) + +/datum/reagent/drug/methamphetamine/on_mob_delete(mob/M) + if(isliving(M)) + var/mob/living/L = M + L.remove_trait(TRAIT_GOTTAGOREALLYFAST, id) + ..() + /datum/reagent/drug/methamphetamine/on_mob_life(mob/living/M) var/high_message = pick("You feel hyper.", "You feel like you need to go faster.", "You feel like you can run the world.") if(prob(5)) @@ -174,7 +186,6 @@ M.AdjustKnockdown(-40, 0) M.AdjustUnconscious(-40, 0) M.adjustStaminaLoss(-2, 0) - M.status_flags |= GOTTAGOREALLYFAST M.Jitter(2) M.adjustBrainLoss(0.25) if(prob(5)) @@ -234,21 +245,31 @@ /datum/reagent/drug/bath_salts name = "Bath Salts" id = "bath_salts" - description = "Makes you nearly impervious to stuns and grants a stamina regeneration buff, but you will be a nearly uncontrollable tramp-bearded raving lunatic." + description = "Makes you impervious to stuns and grants a stamina regeneration buff, but you will be a nearly uncontrollable tramp-bearded raving lunatic." reagent_state = LIQUID color = "#FAFAFA" overdose_threshold = 20 addiction_threshold = 10 taste_description = "salt" // because they're bathsalts? +/datum/reagent/drug/bath_salts/on_mob_add(mob/M) + ..() + if(isliving(M)) + var/mob/living/L = M + L.add_trait(TRAIT_STUNIMMUNE, id) + L.add_trait(TRAIT_SLEEPIMMUNE, id) + +/datum/reagent/drug/bath_salts/on_mob_delete(mob/M) + if(isliving(M)) + var/mob/living/L = M + L.remove_trait(TRAIT_STUNIMMUNE, id) + L.remove_trait(TRAIT_SLEEPIMMUNE, id) + ..() /datum/reagent/drug/bath_salts/on_mob_life(mob/living/M) var/high_message = pick("You feel amped up.", "You feel ready.", "You feel like you can push it to the limit.") if(prob(5)) to_chat(M, "[high_message]") - M.AdjustStun(-60, 0) - M.AdjustKnockdown(-60, 0) - M.AdjustUnconscious(-60, 0) M.adjustStaminaLoss(-5, 0) M.adjustBrainLoss(0.5) M.adjustToxLoss(0.1, 0) @@ -322,7 +343,7 @@ /datum/reagent/drug/aranesp name = "Aranesp" id = "aranesp" - description = "Amps you up and gets you going, fixes all stamina damage you might have but can cause toxin and oxygen damage.." + description = "Amps you up and gets you going, fixes all stamina damage you might have but can cause toxin and oxygen damage." reagent_state = LIQUID color = "#78FFF0" diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 53320e9460..923f865591 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -41,10 +41,10 @@ M.setOxyLoss(0, 0) M.radiation = 0 M.heal_bodypart_damage(5,5, 0) - M.adjustToxLoss(-5, 0) + M.adjustToxLoss(-5, 0, TRUE) M.hallucination = 0 M.setBrainLoss(0) - M.remove_all_disabilities() + M.remove_all_traits() M.set_blurriness(0) M.set_blindness(0) M.SetKnockdown(0, 0) @@ -134,9 +134,9 @@ M.adjustOxyLoss(-3 * power, 0) M.adjustBruteLoss(-power, 0) M.adjustFireLoss(-power, 0) - M.adjustToxLoss(-power, 0) + M.adjustToxLoss(-power, 0, TRUE) //heals TOXINLOVERs M.adjustCloneLoss(-power, 0) - M.status_flags &= ~DISFIGURED + M.remove_trait(TRAIT_DISFIGURED, TRAIT_GENERIC) //fixes common causes for disfiguration . = 1 metabolization_rate = REAGENTS_METABOLISM * (0.00001 * (M.bodytemperature ** 2) + 0.5) ..() @@ -152,11 +152,40 @@ /datum/reagent/medicine/clonexadone/on_mob_life(mob/living/M) if(M.bodytemperature < T0C) M.adjustCloneLoss(0.00006 * (M.bodytemperature ** 2) - 6, 0) - M.status_flags &= ~DISFIGURED + M.remove_trait(TRAIT_DISFIGURED, TRAIT_GENERIC) . = 1 metabolization_rate = REAGENTS_METABOLISM * (0.000015 * (M.bodytemperature ** 2) + 0.75) ..() +/datum/reagent/medicine/pyroxadone + name = "Pyroxadone" + id = "pyroxadone" + description = "A mixture of cryoxadone and slime jelly, that apparently inverses the requirement for its activation." + color = "#f7832a" + taste_description = "spicy jelly" + +/datum/reagent/medicine/pyroxadone/on_mob_life(mob/living/M) + if(M.bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT) + var/power = 0 + switch(M.bodytemperature) + if(BODYTEMP_HEAT_DAMAGE_LIMIT to 400) + power = 2 + if(400 to 460) + power = 3 + else + power = 5 + if(M.on_fire) + power *= 2 + + M.adjustOxyLoss(-2 * power, 0) + M.adjustBruteLoss(-power, 0) + M.adjustFireLoss(-1.5 * power, 0) + M.adjustToxLoss(-power, 0, TRUE) + M.adjustCloneLoss(-power, 0) + M.remove_trait(TRAIT_DISFIGURED, TRAIT_GENERIC) + . = 1 + ..() + /datum/reagent/medicine/rezadone name = "Rezadone" id = "rezadone" @@ -169,7 +198,7 @@ /datum/reagent/medicine/rezadone/on_mob_life(mob/living/M) M.setCloneLoss(0) //Rezadone is almost never used in favor of cryoxadone. Hopefully this will change that. M.heal_bodypart_damage(1,1, 0) - M.status_flags &= ~DISFIGURED + M.remove_trait(TRAIT_DISFIGURED, TRAIT_GENERIC) ..() . = 1 @@ -518,8 +547,19 @@ overdose_threshold = 45 addiction_threshold = 30 +/datum/reagent/medicine/ephedrine/on_mob_add(mob/M) + ..() + if(isliving(M)) + var/mob/living/L = M + L.add_trait(TRAIT_GOTTAGOFAST, id) + +/datum/reagent/medicine/ephedrine/on_mob_delete(mob/M) + if(isliving(M)) + var/mob/living/L = M + L.remove_trait(TRAIT_GOTTAGOFAST, id) + ..() + /datum/reagent/medicine/ephedrine/on_mob_life(mob/living/M) - M.status_flags |= GOTTAGOFAST M.AdjustStun(-20, 0) M.AdjustKnockdown(-20, 0) M.AdjustUnconscious(-20, 0) @@ -587,8 +627,19 @@ overdose_threshold = 30 addiction_threshold = 25 +/datum/reagent/medicine/morphine/on_mob_add(mob/M) + ..() + if(isliving(M)) + var/mob/living/L = M + L.add_trait(TRAIT_IGNORESLOWDOWN, id) + +/datum/reagent/medicine/morphine/on_mob_delete(mob/M) + if(isliving(M)) + var/mob/living/L = M + L.remove_trait(TRAIT_IGNORESLOWDOWN, id) + ..() + /datum/reagent/medicine/morphine/on_mob_life(mob/living/M) - M.status_flags |= IGNORESLOWDOWN switch(current_cycle) if(11) to_chat(M, "You start to feel tired..." ) @@ -652,14 +703,14 @@ var/obj/item/organ/eyes/eyes = M.getorganslot(ORGAN_SLOT_EYES) if (!eyes) return - if(M.has_disability(DISABILITY_BLIND, EYE_DAMAGE)) + if(M.has_trait(TRAIT_BLIND, EYE_DAMAGE)) if(prob(20)) to_chat(M, "Your vision slowly returns...") M.cure_blind(EYE_DAMAGE) M.cure_nearsighted(EYE_DAMAGE) M.blur_eyes(35) - else if(M.has_disability(DISABILITY_NEARSIGHT, EYE_DAMAGE)) + else if(M.has_trait(TRAIT_NEARSIGHT, EYE_DAMAGE)) to_chat(M, "The blackness in your peripheral vision fades.") M.cure_nearsighted(EYE_DAMAGE) M.blur_eyes(10) @@ -750,7 +801,7 @@ M.visible_message("[M]'s body convulses a bit, and then falls still once more.") return M.visible_message("[M]'s body convulses a bit.") - if(!M.suiciding && !(M.has_disability(DISABILITY_NOCLONE)) && !M.hellbound) + if(!M.suiciding && !(M.has_trait(TRAIT_NOCLONE)) && !M.hellbound) if(!M) return if(M.notify_ghost_cloning(source = M)) @@ -829,8 +880,19 @@ metabolization_rate = 0.5 * REAGENTS_METABOLISM overdose_threshold = 60 +/datum/reagent/medicine/stimulants/on_mob_add(mob/M) + ..() + if(isliving(M)) + var/mob/living/L = M + L.add_trait(TRAIT_GOTTAGOFAST, id) + +/datum/reagent/medicine/stimulants/on_mob_delete(mob/M) + if(isliving(M)) + var/mob/living/L = M + L.remove_trait(TRAIT_GOTTAGOFAST, id) + ..() + /datum/reagent/medicine/stimulants/on_mob_life(mob/living/M) - M.status_flags |= GOTTAGOFAST if(M.health < 50 && M.health > 0) M.adjustOxyLoss(-1*REM, 0) M.adjustToxLoss(-1*REM, 0) @@ -979,6 +1041,22 @@ ..() . = 1 +/datum/reagent/medicine/regen_jelly + name = "Regenerative Jelly" + id = "regen_jelly" + description = "Gradually regenerates all types of damage, without harming slime anatomy." + reagent_state = LIQUID + color = "#91D865" + taste_description = "jelly" + +/datum/reagent/medicine/regen_jelly/on_mob_life(mob/living/M) + M.adjustBruteLoss(-1.5*REM, 0) + M.adjustFireLoss(-1.5*REM, 0) + M.adjustOxyLoss(-1.5*REM, 0) + M.adjustToxLoss(-1.5*REM, 0, TRUE) //heals TOXINLOVERs + . = 1 + ..() + /datum/reagent/medicine/syndicate_nanites //Used exclusively by Syndicate medical cyborgs name = "Restorative Nanites" id = "syndicate_nanites" @@ -1092,8 +1170,19 @@ color = "#C8A5DC" metabolization_rate = 1 +/datum/reagent/medicine/changelingAdrenaline2/on_mob_add(mob/M) + ..() + if(isliving(M)) + var/mob/living/L = M + L.add_trait(TRAIT_GOTTAGOREALLYFAST, id) + +/datum/reagent/medicine/changelingAdrenaline2/on_mob_delete(mob/M) + if(isliving(M)) + var/mob/living/L = M + L.remove_trait(TRAIT_GOTTAGOREALLYFAST, id) + ..() + /datum/reagent/medicine/changelingAdrenaline2/on_mob_life(mob/living/M as mob) - M.status_flags |= GOTTAGOREALLYFAST M.adjustToxLoss(2, 0) . = 1 ..() @@ -1104,106 +1193,4 @@ name = "Corazone" id = "corazone" description = "A medication used to treat pain, fever, and inflammation, along with heart attacks." - color = "#F5F5F5" - -/datum/reagent/medicine/ketrazine - name = "Ketrazine" - id = "ketrazine" - description = "A powerful and addictive combat stimulant, capable of healing grievous wounds and enabling the user to shrug off stuns and heavy weights by stimulating tendons and muscle groups; however the strain on the body causes severe lasting damage. Use only in life-or-death situations. Overdose is almost invariably fatal." - reagent_state = LIQUID - color = "#5F42F4" - metabolization_rate = 0.5 * REAGENTS_METABOLISM - overdose_threshold = 20 - addiction_threshold = 5 - -/datum/reagent/medicine/ketrazine/on_mob_life(mob/living/M) - M.status_flags |= IGNORESLOWDOWN - M.status_flags |= GOTTAGOFAST - M.adjustToxLoss(-3*REM, 0) - M.adjustBruteLoss(-5*REM, 0) - M.adjustFireLoss(-5*REM, 0) - M.adjustOxyLoss(-5*REM, 0) - M.AdjustStun(-80*REM, 0) - M.AdjustKnockdown(-70*REM, 0) - M.adjustStaminaLoss(-80*REM, 0) - M.AdjustUnconscious(-50*REM, 0) - M.adjustBrainLoss(0.5*REM,0) - switch(current_cycle) - if(2 to 12) - if(prob(15)) - to_chat(M, "You feel incredibly powerful! Nothing can stop you! ") - if(12) - to_chat(M, "Your muscles begin to ache terribly... " ) - if(14) - to_chat(M, "You feel like your body is being ripped to shreds! ") - if(15 to 25) - M.drowsyness += 3 - M.adjustBruteLoss(10*REM, 0) - M.adjustToxLoss(7*REM, 0) - if(25 to 30) - if(prob(33)) - to_chat(M, "The pain is unbearable! You can barely stand! ") - M.Sleeping(40, 0) - M.AdjustKnockdown(40*REM,0) - M.drop_all_held_items() - M.Dizzy(3) - M.drowsyness +=4 - M.adjustBruteLoss(15*REM,0) - M.adjustToxLoss(10*REM,0) - M.adjustStaminaLoss(30*REM,0) - if(30 to INFINITY) - if(prob(20)) - to_chat(M, "Your body can't handle the stress! ") - M.Sleeping(60, 0) - M.AdjustKnockdown(80*REM,0) - M.drop_all_held_items() - M.Dizzy(5) - M.drowsyness +=6 - M.adjustBruteLoss(20*REM,0) - M.adjustToxLoss(15*REM,0) - M.adjustStaminaLoss(40*REM,0) - M.losebreath +=2 - - - ..() - -/datum/reagent/medicine/ketrazine/overdose_process(mob/living/M) - if(prob(66)) - to_chat(M, " You feel a sense of impending doom. ") - M.drop_all_held_items() - M.Dizzy(6) - M.Jitter(7) - M.adjustOxyLoss(40*REM,0) - M.adjustBruteLoss(40*REM,0) - M.losebreath +=10 - ..() - -/datum/reagent/medicine/ketrazine/addiction_act_stage1(mob/living/M) - if(prob(33)) - to_chat(M, "You feel like you need more power... ") - M.drop_all_held_items() - M.Jitter(2) - M.Dizzy(2) - ..() - -/datum/reagent/medicine/ketrazine/addiction_act_stage2(mob/living/M) - if(prob(50)) - to_chat(M, "You feel weak and sore, you need something to amp you up! ") - M.drop_all_held_items() - M.adjustToxLoss(2*REM, 0) - M.adjustBruteLoss(4*REM,0) - M.adjustStaminaLoss(6*REM,0) - M.Dizzy(3) - M.Jitter(3) - ..() - -/datum/reagent/medicine/ketrazine/addiction_act_stage3(mob/living/M) - if(prob(66)) - to_chat(M, " You need ketrazine! You need it badly! You need it now! ") - M.drop_all_held_items() - M.adjustToxLoss(4*REM, 0) - M.adjustBruteLoss(5*REM,0) - M.adjustStaminaLoss(7*REM,0) - M.Dizzy(7) - M.Jitter(7) - ..() + color = "#F5F5F5" \ No newline at end of file diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 634136bfaf..4988ed339e 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -200,6 +200,11 @@ data = 1 data++ M.jitteriness = min(M.jitteriness+4,10) + if(iscultist(M)) + for(var/datum/action/innate/cult/blood_magic/BM in M.actions) + to_chat(M, "Your blood rites falter as holy water scours your body!") + for(var/datum/action/innate/cult/blood_spell/BS in BM.spells) + qdel(BS) if(data >= 30) // 12 units, 54 seconds @ metabolism 0.4 units & tick rate 1.8 sec if(!M.stuttering) M.stuttering = 1 @@ -216,10 +221,10 @@ "You can't save him. Nothing can save him now", "It seems that Nar-Sie will triumph after all")].
") if("emote") M.visible_message("[M] [pick("whimpers quietly", "shivers as though cold", "glances around in paranoia")].") - if(data >= 75) // 30 units, 135 seconds + if(data >= 60) // 30 units, 135 seconds if(iscultist(M) || is_servant_of_ratvar(M)) if(iscultist(M)) - SSticker.mode.remove_cultist(M.mind, 1, 1) + SSticker.mode.remove_cultist(M.mind, FALSE, TRUE) else if(is_servant_of_ratvar(M)) remove_servant_of_ratvar(M) M.jitteriness = 0 @@ -245,7 +250,7 @@ /datum/reagent/fuel/unholywater/reaction_mob(mob/living/M, method=TOUCH, reac_volume) if(method == TOUCH || method == VAPOR) - M.reagents.add_reagent("unholywater", (reac_volume/4)) + M.reagents.add_reagent(id,reac_volume/4) return return ..() @@ -255,17 +260,20 @@ M.AdjustUnconscious(-20, 0) M.AdjustStun(-40, 0) M.AdjustKnockdown(-40, 0) + M.adjustStaminaLoss(-10, 0) M.adjustToxLoss(-2, 0) M.adjustOxyLoss(-2, 0) M.adjustBruteLoss(-2, 0) M.adjustFireLoss(-2, 0) - else + if(ishuman(M) && M.blood_volume < BLOOD_VOLUME_NORMAL) + M.blood_volume += 3 + else // Will deal about 90 damage when 50 units are thrown M.adjustBrainLoss(3, 150) - M.adjustToxLoss(1, 0) + M.adjustToxLoss(2, 0) M.adjustFireLoss(2, 0) M.adjustOxyLoss(2, 0) M.adjustBruteLoss(2, 0) - holder.remove_reagent(src.id, 1) + holder.remove_reagent(id, 1) . = 1 /datum/reagent/hellwater //if someone has this in their system they've really pissed off an eldrich god @@ -397,17 +405,17 @@ ..() return -/datum/reagent/stableslimetoxin +/datum/reagent/mutationtoxin name = "Stable Mutation Toxin" id = "stablemutationtoxin" - description = "A humanizing toxin produced by slimes." + description = "A humanizing toxin." color = "#5EFF3B" //RGB: 94, 255, 59 metabolization_rate = INFINITY //So it instantly removes all of itself taste_description = "slime" var/datum/species/race = /datum/species/human var/mutationtext = "The pain subsides. You feel... human." -/datum/reagent/stableslimetoxin/on_mob_life(mob/living/carbon/human/H) +/datum/reagent/mutationtoxin/on_mob_life(mob/living/carbon/human/H) ..() if(!istype(H)) return @@ -417,7 +425,7 @@ addtimer(CALLBACK(src, .proc/mutate, H), 30) return -/datum/reagent/stableslimetoxin/proc/mutate(mob/living/carbon/human/H) +/datum/reagent/mutationtoxin/proc/mutate(mob/living/carbon/human/H) if(QDELETED(H)) return var/current_species = H.dna.species.type @@ -428,130 +436,158 @@ else to_chat(H, "The pain vanishes suddenly. You feel no different.") -/datum/reagent/stableslimetoxin/classic //The one from plasma on green slimes +/datum/reagent/mutationtoxin/classic //The one from plasma on green slimes name = "Mutation Toxin" id = "mutationtoxin" - description = "A corruptive toxin produced by slimes." + description = "A corruptive toxin." color = "#13BC5E" // rgb: 19, 188, 94 race = /datum/species/jelly/slime mutationtext = "The pain subsides. Your whole body feels like slime." -/datum/reagent/stableslimetoxin/lizard +/datum/reagent/mutationtoxin/lizard name = "Lizard Mutation Toxin" id = "lizardmutationtoxin" - description = "A lizarding toxin produced by slimes." + description = "A lizarding toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/lizard mutationtext = "The pain subsides. You feel... scaly." -/datum/reagent/stableslimetoxin/fly +/datum/reagent/mutationtoxin/fly name = "Fly Mutation Toxin" id = "flymutationtoxin" - description = "An insectifying toxin produced by slimes." + description = "An insectifying toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/fly mutationtext = "The pain subsides. You feel... buzzy." -/datum/reagent/stableslimetoxin/pod +/datum/reagent/mutationtoxin/moth + name = "Moth Mutation Toxin" + id = "mothmutationtoxin" + description = "A glowing toxin." + color = "#5EFF3B" //RGB: 94, 255, 59 + race = /datum/species/moth + mutationtext = "The pain subsides. You feel... attracted to light." + +/datum/reagent/mutationtoxin/pod name = "Podperson Mutation Toxin" id = "podmutationtoxin" - description = "A vegetalizing toxin produced by slimes." + description = "A vegetalizing toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/pod mutationtext = "The pain subsides. You feel... plantlike." -/datum/reagent/stableslimetoxin/jelly +/datum/reagent/mutationtoxin/jelly name = "Imperfect Mutation Toxin" id = "jellymutationtoxin" - description = "An jellyfying toxin produced by slimes." + description = "An jellyfying toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/jelly mutationtext = "The pain subsides. You feel... wobbly." -/datum/reagent/stableslimetoxin/golem +/datum/reagent/mutationtoxin/golem name = "Golem Mutation Toxin" id = "golemmutationtoxin" - description = "A crystal toxin produced by slimes." + description = "A crystal toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/golem/random mutationtext = "The pain subsides. You feel... rocky." -/datum/reagent/stableslimetoxin/abductor +/datum/reagent/mutationtoxin/abductor name = "Abductor Mutation Toxin" id = "abductormutationtoxin" - description = "An alien toxin produced by slimes." + description = "An alien toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/abductor mutationtext = "The pain subsides. You feel... alien." -/datum/reagent/stableslimetoxin/android +/datum/reagent/mutationtoxin/android name = "Android Mutation Toxin" id = "androidmutationtoxin" - description = "A robotic toxin produced by slimes." + description = "A robotic toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/android mutationtext = "The pain subsides. You feel... artificial." //BLACKLISTED RACES -/datum/reagent/stableslimetoxin/skeleton +/datum/reagent/mutationtoxin/skeleton name = "Skeleton Mutation Toxin" id = "skeletonmutationtoxin" - description = "A scary toxin produced by slimes." + description = "A scary toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/skeleton mutationtext = "The pain subsides. You feel... spooky." -/datum/reagent/stableslimetoxin/zombie +/datum/reagent/mutationtoxin/zombie name = "Zombie Mutation Toxin" id = "zombiemutationtoxin" - description = "An undead toxin produced by slimes." + description = "An undead toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/zombie //Not the infectious kind. The days of xenobio zombie outbreaks are long past. mutationtext = "The pain subsides. You feel... undead." -/datum/reagent/stableslimetoxin/ash +/datum/reagent/mutationtoxin/ash name = "Ash Mutation Toxin" id = "ashmutationtoxin" - description = "An ashen toxin produced by slimes." + description = "An ashen toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/lizard/ashwalker mutationtext = "The pain subsides. You feel... savage." //DANGEROUS RACES -/datum/reagent/stableslimetoxin/shadow +/datum/reagent/mutationtoxin/shadow name = "Shadow Mutation Toxin" id = "shadowmutationtoxin" - description = "A dark toxin produced by slimes." + description = "A dark toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/shadow mutationtext = "The pain subsides. You feel... darker." -/datum/reagent/stableslimetoxin/plasma +/datum/reagent/mutationtoxin/plasma name = "Plasma Mutation Toxin" id = "plasmamutationtoxin" - description = "A plasma-based toxin produced by slimes." + description = "A plasma-based toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/plasmaman mutationtext = "The pain subsides. You feel... flammable." -/datum/reagent/stableslimetoxin/unstable //PSYCH - name = "Unstable Mutation Toxin" - id = "unstablemutationtoxin" - description = "An unstable and unpredictable corruptive toxin produced by slimes." +/datum/reagent/slime_toxin + name = "Slime Mutation Toxin" + id = "slime_toxin" + description = "A toxin that turns organic material into slime." color = "#5EFF3B" //RGB: 94, 255, 59 - mutationtext = "The pain subsides. You feel... different." + taste_description = "slime" + metabolization_rate = 0.2 -/datum/reagent/stableslimetoxin/unstable/on_mob_life(mob/living/carbon/human/H) - var/list/possible_morphs = list() - for(var/type in subtypesof(/datum/species)) - var/datum/species/S = type - if(initial(S.blacklisted)) - continue - possible_morphs += S - race = pick(possible_morphs) +/datum/reagent/slime_toxin/on_mob_life(mob/living/carbon/human/H) ..() + if(!istype(H)) + return + if(!H.dna || !H.dna.species || !(H.dna.species.species_traits & SPECIES_ORGANIC)) + return + + if(isjellyperson(H)) + to_chat(H, "Your jelly shifts and morphs, turning you into another subspecies!") + var/species_type = pick(subtypesof(/datum/species/jelly)) + H.set_species(species_type) + H.reagents.del_reagent(id) + + switch(current_cycle) + if(1 to 6) + if(prob(10)) + to_chat(H, "[pick("You don't feel very well.", "Your skin feels a little slimy.")]") + if(7 to 12) + if(prob(10)) + to_chat(H, "[pick("Your appendages are melting away.", "Your limbs begin to lose their shape.")]") + if(13 to 19) + if(prob(10)) + to_chat(H, "[pick("You feel your internal organs turning into slime.", "You feel very slimelike.")]") + if(20 to INFINITY) + var/species_type = pick(subtypesof(/datum/species/jelly)) + H.set_species(species_type) + H.reagents.del_reagent(id) + to_chat(H, "You've become \a jellyperson!") /datum/reagent/mulligan name = "Mulligan Toxin" @@ -1175,8 +1211,19 @@ color = "E1A116" taste_description = "sourness" +/datum/reagent/stimulum/on_mob_add(mob/M) + ..() + if(isliving(M)) + var/mob/living/L = M + L.add_trait(TRAIT_GOTTAGOFAST, id) + +/datum/reagent/stimulum/on_mob_delete(mob/M) + if(isliving(M)) + var/mob/living/L = M + L.remove_trait(TRAIT_GOTTAGOFAST, id) + ..() + /datum/reagent/stimulum/on_mob_life(mob/living/M) // Has a speedup, and the anti-stun effects of nicotine. - M.status_flags |= GOTTAGOFAST M.AdjustStun(-20, 0) M.AdjustKnockdown(-20, 0) M.AdjustUnconscious(-20, 0) @@ -1194,8 +1241,16 @@ color = "90560B" taste_description = "burning" -/datum/reagent/nitryl/on_mob_life(mob/living/M) //Has just a speedup - M.status_flags |= GOTTAGOFAST +/datum/reagent/nitryl/on_mob_add(mob/M) + ..() + if(isliving(M)) + var/mob/living/L = M + L.add_trait(TRAIT_GOTTAGOFAST, id) + +/datum/reagent/nitryl/on_mob_delete(mob/M) + if(isliving(M)) + var/mob/living/L = M + L.remove_trait(TRAIT_GOTTAGOFAST, id) ..() /////////////////////////Coloured Crayon Powder//////////////////////////// @@ -1605,7 +1660,7 @@ can_synth = 0 taste_description = "brains" -/datum/reagent/romerol/on_mob_life(mob/living/carbon/human/H) +/datum/reagent/romerol/reaction_mob(mob/living/carbon/human/H, method=TOUCH, reac_volume) // Silently add the zombie infection organ to be activated upon death if(!H.getorganslot(ORGAN_SLOT_ZOMBIE)) var/obj/item/organ/zombie_infection/ZI = new() @@ -1709,10 +1764,39 @@ ..() if(isliving(M)) var/mob/living/L = M - L.add_disability(DISABILITY_PACIFISM, CHEMICAL_DISABILITY) + L.add_trait(TRAIT_PACIFISM, id) /datum/reagent/pax/on_mob_delete(mob/M) if(isliving(M)) var/mob/living/L = M - L.remove_disability(DISABILITY_PACIFISM, CHEMICAL_DISABILITY) - ..() \ No newline at end of file + L.remove_trait(TRAIT_PACIFISM, id) + ..() + +/datum/reagent/pax/borg + name = "synth-pax" + id = "synthpax" + description = "A colorless liquid that suppresses violence on the subjects. Cheaper to synthetize, but wears out faster than normal Pax." + metabolization_rate = 1.5 * REAGENTS_METABOLISM + +/datum/reagent/bz_metabolites + name = "BZ metabolites" + id = "bz_metabolites" + description = "A harmless metabolite of BZ gas" + color = "#FAFF00" + taste_description = "acrid cinnamon" + metabolization_rate = 0.2 * REAGENTS_METABOLISM + +/datum/reagent/bz_metabolites/on_mob_add(mob/living/L) + ..() + L.add_trait(CHANGELING_HIVEMIND_MUTE, id) + +/datum/reagent/bz_metabolites/on_mob_delete(mob/living/L) + ..() + L.remove_trait(CHANGELING_HIVEMIND_MUTE, id) + +/datum/reagent/bz_metabolites/on_mob_life(mob/living/L) + if(L.mind) + var/datum/antagonist/changeling/changeling = L.mind.has_antag_datum(/datum/antagonist/changeling) + if(changeling) + changeling.chem_charges = max(changeling.chem_charges-2, 0) + return ..() \ No newline at end of file diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm index 7f4e481a29..a361499bae 100644 --- a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm @@ -226,3 +226,63 @@ M.electrocute_act(rand(5,20), "Teslium in their body", 1, 1) //Override because it's caused from INSIDE of you playsound(M, "sparks", 50, 1) ..() + +/datum/reagent/teslium/energized_jelly + name = "Energized Jelly" + id = "energized_jelly" + description = "Electrically-charged jelly. Boosts jellypeople's nervous system, but only shocks other lifeforms." + reagent_state = LIQUID + color = "#CAFF43" + taste_description = "jelly" + +/datum/reagent/teslium/energized_jelly/on_mob_life(mob/living/M) + if(isjellyperson(M)) + shock_timer = 0 //immune to shocks + M.AdjustStun(-40, 0) + M.AdjustKnockdown(-40, 0) + M.AdjustUnconscious(-40, 0) + M.adjustStaminaLoss(-2, 0) + if(isluminescent(M)) + var/mob/living/carbon/human/H = M + var/datum/species/jelly/luminescent/L = H.dna.species + L.extract_cooldown = max(0, L.extract_cooldown - 20) + ..() + +/datum/reagent/firefighting_foam + name = "Firefighting Foam" + id = "firefighting_foam" + description = "A historical fire suppressant. Originally believed to simply displace oxygen to starve fires, it actually interferes with the combustion reaction itself. Vastly superior to the cheap water-based extinguishers found on NT vessels." + reagent_state = LIQUID + color = "#A6FAFF55" + taste_description = "the inside of a fire extinguisher" + +/datum/reagent/firefighting_foam/reaction_turf(turf/open/T, reac_volume) + if (!istype(T)) + return + + if(reac_volume >= 1) + var/obj/effect/particle_effect/foam/firefighting/F = (locate(/obj/effect/particle_effect/foam) in T) + if(!F) + F = new(T) + else if(istype(F)) + F.lifetime = initial(F.lifetime) //reduce object churn a little bit when using smoke by keeping existing foam alive a bit longer + + var/obj/effect/hotspot/hotspot = (locate(/obj/effect/hotspot) in T) + if(hotspot && !isspaceturf(T)) + if(T.air) + var/datum/gas_mixture/G = T.air + if(G.temperature > T20C) + G.temperature = max(G.temperature/2,T20C) + G.react() + qdel(hotspot) + +/datum/reagent/firefighting_foam/reaction_obj(obj/O, reac_volume) + O.extinguish() + +/datum/reagent/firefighting_foam/reaction_mob(mob/living/M, method=TOUCH, reac_volume) + if(!istype(M)) + return + if(method in list(VAPOR, TOUCH)) + M.adjust_fire_stacks(-reac_volume) + M.ExtinguishMob() + ..() \ No newline at end of file diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index 0823d64bf1..e8f9387e19 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -143,7 +143,7 @@ taste_description = "mint" /datum/reagent/toxin/minttoxin/on_mob_life(mob/living/M) - if(M.has_disability(DISABILITY_FAT)) + if(M.has_trait(TRAIT_FAT)) M.gib() return ..() @@ -164,19 +164,23 @@ toxpwr = 0.5 taste_description = "death" -/datum/reagent/toxin/zombiepowder/on_mob_life(mob/living/carbon/M) - M.status_flags |= FAKEDEATH - M.adjustOxyLoss(0.5*REM, 0) - M.Knockdown(100, 0) - M.silent = max(M.silent, 5) - M.tod = worldtime2text() +/datum/reagent/toxin/zombiepowder/on_mob_add(mob/M) ..() - . = 1 + if(isliving(M)) + var/mob/living/L = M + L.fakedeath(id) /datum/reagent/toxin/zombiepowder/on_mob_delete(mob/M) - M.status_flags &= ~FAKEDEATH + if(isliving(M)) + var/mob/living/L = M + L.cure_fakedeath(id) ..() +/datum/reagent/toxin/zombiepowder/on_mob_life(mob/living/carbon/M) + M.adjustOxyLoss(0.5*REM, 0) + ..() + . = 1 + /datum/reagent/toxin/mindbreaker name = "Mindbreaker Toxin" id = "mindbreaker" diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm index d90b93ea06..9e73f12f10 100644 --- a/code/modules/reagents/chemistry/recipes.dm +++ b/code/modules/reagents/chemistry/recipes.dm @@ -21,18 +21,8 @@ return //I recommend you set the result amount to the total volume of all components. -/datum/chemical_reaction/proc/chemical_mob_spawn(datum/reagents/holder, amount_to_spawn, reaction_name, mob_faction = "chemicalsummon") - var/static/list/chemical_mob_spawn_meancritters = list() // list of possible hostile mobs - var/static/list/chemical_mob_spawn_nicecritters = list() // and possible friendly mobs +/datum/chemical_reaction/proc/chemical_mob_spawn(datum/reagents/holder, amount_to_spawn, reaction_name, mob_class = HOSTILE_SPAWN, mob_faction = "chemicalsummon") if(holder && holder.my_atom) - if (chemical_mob_spawn_meancritters.len <= 0 || chemical_mob_spawn_nicecritters.len <= 0) - for (var/T in typesof(/mob/living/simple_animal)) - var/mob/living/simple_animal/SA = T - switch(initial(SA.gold_core_spawnable)) - if(HOSTILE_SPAWN) - chemical_mob_spawn_meancritters += T - if(FRIENDLY_SPAWN) - chemical_mob_spawn_nicecritters += T var/atom/A = holder.my_atom var/turf/T = get_turf(A) var/message = "A [reaction_name] reaction has occurred in [get_area_name(T)] [ADMIN_COORDJMP(T)]" @@ -50,18 +40,13 @@ for(var/mob/living/carbon/C in viewers(get_turf(holder.my_atom), null)) C.flash_act() - for(var/i = 1, i <= amount_to_spawn, i++) - var/chosen - if (reaction_name == "Friendly Gold Slime") - chosen = pick(chemical_mob_spawn_nicecritters) - else - chosen = pick(chemical_mob_spawn_meancritters) - var/spawnloc = get_turf(holder.my_atom) - var/mob/living/simple_animal/C = new chosen(spawnloc) - C.faction |= mob_faction + + for(var/i in 1 to amount_to_spawn) + var/mob/living/simple_animal/S = create_random_mob(get_turf(holder.my_atom), mob_class) + S.faction |= mob_faction if(prob(50)) for(var/j = 1, j <= rand(1, 3), j++) - step(C, pick(NORTH,SOUTH,EAST,WEST)) + step(S, pick(NORTH,SOUTH,EAST,WEST)) /datum/chemical_reaction/proc/goonchem_vortex(turf/T, setting_type, range) for(var/atom/movable/X in orange(range, T)) diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm index 6029d57cfc..f6a8e53ccf 100644 --- a/code/modules/reagents/chemistry/recipes/medicine.dm +++ b/code/modules/reagents/chemistry/recipes/medicine.dm @@ -184,6 +184,12 @@ results = list("cryoxadone" = 3) required_reagents = list("stable_plasma" = 1, "acetone" = 1, "mutagen" = 1) +/datum/chemical_reaction/pyroxadone + name = "Pyroxadone" + id = "pyroxadone" + results = list("pyroxadone" = 2) + required_reagents = list("cryoxadone" = 1, "slimejelly" = 1) + /datum/chemical_reaction/clonexadone name = "Clonexadone" id = "clonexadone" @@ -221,6 +227,12 @@ results = list("tricordrazine" = 3) required_reagents = list("bicaridine" = 1, "kelotane" = 1, "antitoxin" = 1) +/datum/chemical_reaction/regen_jelly + name = "Regenerative Jelly" + id = "regen_jelly" + results = list("regen_jelly" = 2) + required_reagents = list("tricordrazine" = 1, "slimejelly" = 1) + /datum/chemical_reaction/corazone name = "Corazone" id = "corazone" @@ -233,12 +245,3 @@ results = list("morphine" = 3) required_reagents = list("carbon" = 2, "hydrogen" = 2, "nitrogen" = 1, "oxygen" = 1) required_temp = 480 - -/datum/chemical_reaction/ketrazine - name = "Ketrazine" - id = "ketrazine" - results = list("ketrazine" = 3) - required_reagents = list("epinephrine" = 1, "ephedrine" = 1, "tricordrazine" = 1, "atropine" = 1) - required_catalysts = list("gold" = 1) - required_temp = 520 - mix_message = "The solution fizzes and then settles into an oily, smooth, purple liquid." diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index 6bf359fa98..5999911cb1 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -125,96 +125,12 @@ required_reagents = list("ammonia" = 2, "nitrogen" = 1, "oxygen" = 2) required_temp = 525 -////////////////////////////////// Mutation Toxins /////////////////////////////////// - -/datum/chemical_reaction/stable_mutation_toxin - name = "Stable Mutation Toxin" - id = "stablemutationtoxin" - results = list("stablemutationtoxin" = 1) - required_reagents = list("unstablemutationtoxin" = 1, "blood" = 1) //classic - -/datum/chemical_reaction/lizard_mutation_toxin - name = "Lizard Mutation Toxin" - id = "lizardmutationtoxin" - results = list("lizardmutationtoxin" = 1) - required_reagents = list("unstablemutationtoxin" = 1, "radium" = 1) //mutant - -/datum/chemical_reaction/fly_mutation_toxin - name = "Fly Mutation Toxin" - id = "flymutationtoxin" - results = list("flymutationtoxin" = 1) - required_reagents = list("unstablemutationtoxin" = 1, "mutagen" = 1) //VERY mutant - -/datum/chemical_reaction/jelly_mutation_toxin - name = "Imperfect Mutation Toxin" - id = "jellymutationtoxin" - results = list("jellymutationtoxin" = 1) - required_reagents = list("unstablemutationtoxin" = 1, "slimejelly" = 1) //why would you even make this - -/datum/chemical_reaction/abductor_mutation_toxin - name = "Abductor Mutation Toxin" - id = "abductormutationtoxin" - results = list("abductormutationtoxin" = 1) - required_reagents = list("unstablemutationtoxin" = 1, "morphine" = 1) - -/datum/chemical_reaction/android_mutation_toxin - name = "Android Mutation Toxin" - id = "androidmutationtoxin" - results = list("androidmutationtoxin" = 1) - required_reagents = list("unstablemutationtoxin" = 1, "teslium" = 1) //beep boop - -/datum/chemical_reaction/pod_mutation_toxin - name = "Podperson Mutation Toxin" - id = "podmutationtoxin" - results = list("podmutationtoxin" = 1) - required_reagents = list("unstablemutationtoxin" = 1, "eznutriment" = 1) //plant food - -/datum/chemical_reaction/golem_mutation_toxin - name = "Golem Mutation Toxin" - id = "golemmutationtoxin" - results = list("golemmutationtoxin" = 1) - required_reagents = list("unstablemutationtoxin" = 1, "silver" = 1) //not too hard to get but also not just there in xenobio - - -//BLACKLISTED RACES -/datum/chemical_reaction/skeleton_mutation_toxin - name = "Skeleton Mutation Toxin" - id = "skeletonmutationtoxin" - results = list("skeletonmutationtoxin" = 1) - required_reagents = list("amutationtoxin" = 1, "milk" = 1) //good for yer bones - -/datum/chemical_reaction/zombie_mutation_toxin - name = "Zombie Mutation Toxin" - id = "zombiemutationtoxin" - results = list("zombiemutationtoxin" = 1) - required_reagents = list("amutationtoxin" = 1, "toxin" = 1) - -/datum/chemical_reaction/ash_mutation_toxin //ash lizard - name = "Ash Mutation Toxin" - id = "ashmutationtoxin" - results = list("ashmutationtoxin" = 1) - required_reagents = list("amutationtoxin" = 1, "lizardmutationtoxin" = 1, "ash" = 1) - - -//DANGEROUS RACES -/datum/chemical_reaction/plasma_mutation_toxin - name = "Plasma Mutation Toxin" - id = "plasmamutationtoxin" - results = list("plasmamutationtoxin" = 1) - required_reagents = list("skeletonmutationtoxin" = 1, "plasma" = 1, "uranium" = 1) //this is very fucking powerful, so it's hard to make - -/datum/chemical_reaction/shadow_mutation_toxin - name = "Shadow Mutation Toxin" - id = "shadowmutationtoxin" - results = list("shadowmutationtoxin" = 1) - required_reagents = list("amutationtoxin" = 1, "liquid_dark_matter" = 1, "holywater" = 1) - //Technically a mutation toxin /datum/chemical_reaction/mulligan name = "Mulligan" id = "mulligan" results = list("mulligan" = 1) - required_reagents = list("stablemutationtoxin" = 1, "mutagen" = 1) + required_reagents = list("slime_toxin" = 1, "mutagen" = 1) ////////////////////////////////// VIROLOGY ////////////////////////////////////////// diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index 9f11498ee5..a430d93fba 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -379,6 +379,13 @@ mix_message = "A jet of sparks flies from the mixture as it merges into a flickering slurry." required_temp = 400 +/datum/chemical_reaction/energized_jelly + name = "Energized Jelly" + id = "energized_jelly" + results = list("energized_jelly" = 2) + required_reagents = list("slimejelly" = 1, "teslium" = 1) + mix_message = "The slime jelly starts glowing intermittently." + /datum/chemical_reaction/reagent_explosion/teslium_lightning name = "Teslium Destabilization" id = "teslium_lightning" @@ -418,3 +425,11 @@ strengthdiv = 7 required_temp = 575 modifier = 1 + +/datum/chemical_reaction/firefighting_foam + name = "Firefighting Foam" + id = "firefighting_foam" + results = list("firefighting_foam" = 3) + required_reagents = list("stabilizing_agent" = 1,"fluorosurfactant" = 1,"carbon" = 1) + required_temp = 200 + is_cold_recipe = 1 diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm index 71297930ac..11d41ea20f 100644 --- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm +++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm @@ -48,21 +48,27 @@ //Green /datum/chemical_reaction/slime/slimemutate name = "Mutation Toxin" - id = "mutationtoxin" - results = list("mutationtoxin" = 1) + id = "slimetoxin" + results = list("slime_toxin" = 1) required_reagents = list("plasma" = 1) required_other = 1 required_container = /obj/item/slime_extract/green -//Mutated Green -/datum/chemical_reaction/slime/slimemutate_unstable - name = "Unstable Mutation Toxin" - id = "unstablemutationtoxin" - results = list("unstablemutationtoxin" = 1) +/datum/chemical_reaction/slime/slimehuman + name = "Human Mutation Toxin" + id = "humanmuttoxin" + results = list("stablemutationtoxin" = 1) + required_reagents = list("blood" = 1) + required_other = 1 + required_container = /obj/item/slime_extract/green + +/datum/chemical_reaction/slime/slimelizard + name = "Lizard Mutation Toxin" + id = "lizardmuttoxin" + results = list("lizardmutationtoxin" = 1) required_reagents = list("radium" = 1) required_other = 1 required_container = /obj/item/slime_extract/green - mix_message = "The mixture rapidly expands and contracts, its appearance shifting into a sickening green." //Metal /datum/chemical_reaction/slime/slimemetal @@ -110,7 +116,7 @@ /datum/chemical_reaction/slime/slimemobspawn/proc/summon_mobs(datum/reagents/holder, turf/T) T.visible_message("The slime extract begins to vibrate violently!") - addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 5, "Gold Slime"), 50) + addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 5, "Gold Slime", HOSTILE_SPAWN), 50) /datum/chemical_reaction/slime/slimemobspawn/lesser name = "Slime Crit Lesser" @@ -119,7 +125,7 @@ /datum/chemical_reaction/slime/slimemobspawn/lesser/summon_mobs(datum/reagents/holder, turf/T) T.visible_message("The slime extract begins to vibrate violently!") - addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 3, "Lesser Gold Slime", "neutral"), 50) + addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 3, "Lesser Gold Slime", HOSTILE_SPAWN, "neutral"), 50) /datum/chemical_reaction/slime/slimemobspawn/friendly name = "Slime Crit Friendly" @@ -128,7 +134,7 @@ /datum/chemical_reaction/slime/slimemobspawn/friendly/summon_mobs(datum/reagents/holder, turf/T) T.visible_message("The slime extract begins to vibrate adorably!") - addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 1, "Friendly Gold Slime", "neutral"), 50) + addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 1, "Friendly Gold Slime", FRIENDLY_SPAWN, "neutral"), 50) //Silver /datum/chemical_reaction/slime/slimebork @@ -140,7 +146,6 @@ /datum/chemical_reaction/slime/slimebork/on_reaction(datum/reagents/holder) //BORK BORK BORK - var/list/borks = getborks() var/turf/T = get_turf(holder.my_atom) playsound(T, 'sound/effects/phasein.ogg', 100, 1) @@ -149,7 +154,7 @@ C.flash_act() for(var/i in 1 to 4 + rand(1,2)) - var/chosen = pick(borks) + var/chosen = getbork() var/obj/B = new chosen(T) if(prob(5))//Fry it! var/obj/item/reagent_containers/food/snacks/deepfryholder/fried @@ -161,36 +166,16 @@ step(B, pick(NORTH,SOUTH,EAST,WEST)) ..() -/datum/chemical_reaction/slime/slimebork/proc/getborks() - var/list/blocked = list(/obj/item/reagent_containers/food/snacks, - /obj/item/reagent_containers/food/snacks/store/bread, - /obj/item/reagent_containers/food/snacks/breadslice, - /obj/item/reagent_containers/food/snacks/store/cake, - /obj/item/reagent_containers/food/snacks/cakeslice, - /obj/item/reagent_containers/food/snacks/store, - /obj/item/reagent_containers/food/snacks/pie, - /obj/item/reagent_containers/food/snacks/kebab, - /obj/item/reagent_containers/food/snacks/pizza, - /obj/item/reagent_containers/food/snacks/pizzaslice, - /obj/item/reagent_containers/food/snacks/salad, - /obj/item/reagent_containers/food/snacks/meat, - /obj/item/reagent_containers/food/snacks/meat/slab, - /obj/item/reagent_containers/food/snacks/soup, - /obj/item/reagent_containers/food/snacks/grown, - /obj/item/reagent_containers/food/snacks/grown/mushroom, - /obj/item/reagent_containers/food/snacks/deepfryholder - ) - blocked |= typesof(/obj/item/reagent_containers/food/snacks/customizable) - - return typesof(/obj/item/reagent_containers/food/snacks) - blocked +/datum/chemical_reaction/slime/slimebork/proc/getbork() + return get_random_food() /datum/chemical_reaction/slime/slimebork/drinks name = "Slime Bork 2" id = "m_tele4" required_reagents = list("water" = 1) -/datum/chemical_reaction/slime/slimebork/drinks/getborks() - return subtypesof(/obj/item/reagent_containers/food/drinks) +/datum/chemical_reaction/slime/slimebork/drinks/getbork() + return get_random_drink() //Blue /datum/chemical_reaction/slime/slimefrost @@ -209,7 +194,7 @@ required_other = 1 /datum/chemical_reaction/slime/slimestabilizer/on_reaction(datum/reagents/holder) - new /obj/item/slimepotion/stabilizer(get_turf(holder.my_atom)) + new /obj/item/slimepotion/slime/stabilizer(get_turf(holder.my_atom)) ..() /datum/chemical_reaction/slime/slimefoam @@ -341,14 +326,14 @@ required_other = 1 /datum/chemical_reaction/slime/slimepsteroid/on_reaction(datum/reagents/holder) - new /obj/item/slimepotion/steroid(get_turf(holder.my_atom)) + new /obj/item/slimepotion/slime/steroid(get_turf(holder.my_atom)) ..() -/datum/chemical_reaction/slime/slimejam - name = "Slime Jam" - id = "m_jam" - results = list("slimejelly" = 10) - required_reagents = list("sugar" = 1) +/datum/chemical_reaction/slime/slimeregen + name = "Slime Regen" + id = "m_regen" + results = list("regen_jelly" = 5) + required_reagents = list("blood" = 1) required_container = /obj/item/slime_extract/purple required_other = 1 @@ -373,7 +358,7 @@ required_other = 1 /datum/chemical_reaction/slime/slimemutator/on_reaction(datum/reagents/holder) - new /obj/item/slimepotion/mutator(get_turf(holder.my_atom)) + new /obj/item/slimepotion/slime/mutator(get_turf(holder.my_atom)) ..() /datum/chemical_reaction/slime/slimebloodlust @@ -409,7 +394,7 @@ required_other = 1 /datum/chemical_reaction/slime/docility/on_reaction(datum/reagents/holder) - new /obj/item/slimepotion/docility(get_turf(holder.my_atom)) + new /obj/item/slimepotion/slime/docility(get_turf(holder.my_atom)) ..() /datum/chemical_reaction/slime/gender @@ -480,7 +465,7 @@ required_other = 1 /datum/chemical_reaction/slime/slimepotion2/on_reaction(datum/reagents/holder) - new /obj/item/slimepotion/sentience(get_turf(holder.my_atom)) + new /obj/item/slimepotion/slime/sentience(get_turf(holder.my_atom)) ..() //Adamantine diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index 640f828e18..d6213a391b 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -79,7 +79,11 @@ SplashReagents(target, TRUE) /obj/item/reagent_containers/proc/bartender_check(atom/target) - return (target.CanPass(src, get_turf(src)) && thrownby && thrownby.mind && thrownby.mind.assigned_role == "Bartender") + . = FALSE + if(target.CanPass(src, get_turf(src)) && thrownby && thrownby.actions) + for(var/datum/action/innate/drink_fling/D in thrownby.actions) + if(D.active) + return TRUE /obj/item/reagent_containers/proc/SplashReagents(atom/target, thrown = FALSE) if(!reagents || !reagents.total_volume || !spillable) diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm index bc92521b93..98bac76ab8 100644 --- a/code/modules/reagents/reagent_containers/blood_pack.dm +++ b/code/modules/reagents/reagent_containers/blood_pack.dm @@ -2,7 +2,7 @@ name = "blood pack" desc = "Contains blood used for transfusion. Must be attached to an IV drip." icon = 'icons/obj/bloodpack.dmi' - icon_state = "empty" + icon_state = "bloodpack" volume = 200 var/blood_type = null var/labelled = 0 @@ -31,14 +31,14 @@ name = "blood pack" /obj/item/reagent_containers/blood/update_icon() - var/percent = round((reagents.total_volume / volume) * 100) - switch(percent) - if(0 to 9) - icon_state = "empty" - if(10 to 50) - icon_state = "half" - if(51 to INFINITY) - icon_state = "full" + cut_overlays() + + var/v = min(round(reagents.total_volume / volume * 10), 10) + if(v > 0) + var/mutable_appearance/filling = mutable_appearance('icons/obj/reagentfillings.dmi', "bloodpack1") + filling.icon_state = "bloodpack[v]" + filling.color = mix_color_from_reagents(reagents.reagent_list) + add_overlay(filling) /obj/item/reagent_containers/blood/random icon_state = "random_bloodpack" diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm index faa56c4fba..0dec687f68 100644 --- a/code/modules/reagents/reagent_containers/borghydro.dm +++ b/code/modules/reagents/reagent_containers/borghydro.dm @@ -225,13 +225,13 @@ Borg Shaker /obj/item/reagent_containers/borghypo/peace name = "Peace Hypospray" - reagent_ids = list("dizzysolution","tiresolution","pax") + reagent_ids = list("dizzysolution","tiresolution","synthpax") accepts_reagent_upgrades = FALSE /obj/item/reagent_containers/borghypo/peace/hacked desc = "Everything's peaceful in death!" icon_state = "borghypo_s" - reagent_ids = list("dizzysolution","tiresolution","pax","tirizene","sulfonal","sodium_thiopental","cyanide","neurotoxin2") + reagent_ids = list("dizzysolution","tiresolution","synthpax","tirizene","sulfonal","sodium_thiopental","cyanide","neurotoxin2") accepts_reagent_upgrades = FALSE /obj/item/reagent_containers/borghypo/epi diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 6a27842ecf..c8a7b9744f 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -289,7 +289,7 @@ /obj/item/conveyor_construct icon = 'icons/obj/recycling.dmi' - icon_state = "conveyor0" + icon_state = "conveyor_construct" name = "conveyor belt assembly" desc = "A conveyor belt assembly." w_class = WEIGHT_CLASS_BULKY diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm index fee9e55d47..2af691679c 100644 --- a/code/modules/recycling/disposal/bin.dm +++ b/code/modules/recycling/disposal/bin.dm @@ -6,7 +6,6 @@ icon = 'icons/obj/atmospherics/pipes/disposal.dmi' anchored = TRUE density = TRUE - on_blueprints = TRUE armor = list(melee = 25, bullet = 10, laser = 10, energy = 100, bomb = 0, bio = 100, rad = 100, fire = 90, acid = 30) max_integrity = 200 resistance_flags = FIRE_PROOF diff --git a/code/modules/recycling/disposal/pipe.dm b/code/modules/recycling/disposal/pipe.dm index 4f1f9c74d1..02ca211cb8 100644 --- a/code/modules/recycling/disposal/pipe.dm +++ b/code/modules/recycling/disposal/pipe.dm @@ -6,7 +6,7 @@ icon = 'icons/obj/atmospherics/pipes/disposal.dmi' anchored = TRUE density = FALSE - on_blueprints = TRUE + obj_flags = CAN_BE_HIT | ON_BLUEPRINTS level = 1 // underfloor only dir = NONE // dir will contain dominant direction for junction pipes max_integrity = 200 diff --git a/code/modules/research/departmental_circuit_imprinter.dm b/code/modules/research/departmental_circuit_imprinter.dm index 06e7c531b8..01c4a6a22c 100644 --- a/code/modules/research/departmental_circuit_imprinter.dm +++ b/code/modules/research/departmental_circuit_imprinter.dm @@ -144,7 +144,7 @@ /obj/machinery/rnd/circuit_imprinter/department/proc/ui_header() var/list/l = list() l += "
[host_research.organization] [department_tag] Department Circuit Imprinter" - l += "Security protocols: [emagged? "Disabled" : "Enabled"]" + l += "Security protocols: [(obj_flags & EMAGGED) ? "Disabled" : "Enabled"]" l += "Material Amount: [materials.total_amount] / [materials.max_amount]" l += "Chemical volume: [reagents.total_volume] / [reagents.maximum_volume]" l += "Synchronize Research" diff --git a/code/modules/research/departmental_lathe.dm b/code/modules/research/departmental_lathe.dm index dc3c8ad66f..ab893e7853 100644 --- a/code/modules/research/departmental_lathe.dm +++ b/code/modules/research/departmental_lathe.dm @@ -187,7 +187,7 @@ /obj/machinery/rnd/protolathe/department/proc/ui_header() var/list/l = list() l += "
[host_research.organization] [department_tag] Department Lathe" - l += "Security protocols: [emagged? "Disabled" : "Enabled"]" + l += "Security protocols: [(obj_flags & EMAGGED) ? "Disabled" : "Enabled"]" l += "Material Amount: [materials.total_amount] / [materials.max_amount]" l += "Chemical volume: [reagents.total_volume] / [reagents.maximum_volume]" l += "Synchronize Research" diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index b3b0f8df99..1268b2be87 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -19,14 +19,14 @@ The currently supporting non-reagent materials. All material amounts are set as Don't add new keyword/IDs if they are made from an existing one (such as rods which are made from metal). Only add raw materials. -Design Guidlines +Design Guidelines - When adding new designs, check rdreadme.dm to see what kind of things have already been made and where new stuff is needed. - A single sheet of anything is 2000 units of material. Materials besides metal/glass require help from other jobs (mining for other types of metals and chemistry for reagents). - Add the AUTOLATHE tag to */ -//DESIGNS ARE GLOBAL. DO NOT CREATE OR DESTROY THEM AT RUNTIME OUTSIDE OF INIT, JUST REFERENCE THEM TO WHATEVER YOU'RE DOING! +//DESIGNS ARE GLOBAL. DO NOT CREATE OR DESTROY THEM AT RUNTIME OUTSIDE OF INIT, JUST REFERENCE THEM TO WHATEVER YOU'RE DOING! //why are you yelling? /datum/design //Datum for object designs, used in construction var/name = "Name" //Name of the created object. diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index f0e0d924dd..443fef319c 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -836,15 +836,6 @@ name = "Holodisk" id = "holodisk" build_type = AUTOLATHE - materials = list(MAT_METAL = 1000) + materials = list(MAT_METAL = 100, MAT_GLASS = 100) build_path = /obj/item/disk/holodisk category = list("initial", "Misc") - -//CITADEL -/datum/design/shock_collar - name = "Shock Collar" - id = "shock_collar" - build_type = AUTOLATHE - materials = list(MAT_METAL = 5000, MAT_GLASS = 2000) - build_path = /obj/item/device/electropack/shockcollar - category = list("hacked", "Security") diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index 02e4d89bad..57d0397819 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -104,6 +104,16 @@ category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_ALL +/datum/design/defibrillator_mount + name = "Defibrillator Wall Mount" + desc = "An all-in-one mounted frame for holding defibrillators, complete with ID-locked clamps and recharging cables." + id = "defibmount" + build_type = PROTOLATHE + materials = list(MAT_METAL = 2000, MAT_GLASS = 1000) + build_path = /obj/item/wallframe/defib_mount + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + /datum/design/alienscalpel name = "Alien Scalpel" desc = "An advanced scalpel obtained through Abductor technology." diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 5179782177..c47294d3fc 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -191,10 +191,10 @@ doesn't have toxins access. ..() /obj/machinery/computer/rdconsole/emag_act(mob/user) - if(!emagged) + if(!(obj_flags & EMAGGED)) to_chat(user, "You disable the security protocols") playsound(src, "sparks", 75, 1) - emagged = TRUE + obj_flags |= EMAGGED return ..() /obj/machinery/computer/rdconsole/proc/list_categories(list/categories, menu_num as num) @@ -219,7 +219,7 @@ doesn't have toxins access. var/list/l = list() l += "
[stored_research.organization] Research and Development Network" l += "Available points: [round(stored_research.research_points)] (+[round(stored_research.last_bitcoins * 60)] / minute)" - l += "Security protocols: [emagged? "Disabled" : "Enabled"]" + l += "Security protocols: [obj_flags & EMAGGED ? "Disabled" : "Enabled"]" l += "Main Menu | Back
[RDSCREEN_NOBREAK]" l += "[ui_mode == 1? "Normal View" : "Normal View"] | [ui_mode == 2? "Expert View" : "Expert View"] | [ui_mode == 3? "List View" : "List View"]" return l @@ -883,7 +883,7 @@ doesn't have toxins access. return //honestly should call them out for href exploiting :^) if(!SSresearch.science_tech.available_nodes[ls["research_node"]]) return //Nope! - research_node(ls["research_node"]) + research_node(ls["research_node"], usr) if(ls["clear_tech"]) //Erase la on the technology disk. if(t_disk) qdel(t_disk.stored_research) diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index 8a244bcea1..d712db9a47 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -128,7 +128,7 @@ add_fingerprint(usr) usr.set_machine(src) - if(!src.allowed(usr) && !emagged) + if(!src.allowed(usr) && !(obj_flags & EMAGGED)) to_chat(usr, "You do not have the required access level.") return @@ -163,9 +163,8 @@ src.updateUsrDialog() /obj/machinery/computer/rdservercontrol/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return playsound(src, "sparks", 75, 1) - emagged = TRUE + obj_flags |= EMAGGED to_chat(user, "You you disable the security protocols.") - diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index a5545f3e9a..5aa71f478e 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -17,7 +17,7 @@ display_name = "Biological Technology" description = "What makes us tick." //the MC, silly! prereq_ids = list("base") - design_ids = list("chem_heater", "chem_master", "chem_dispenser", "sleeper", "pandemic") + design_ids = list("chem_heater", "chem_master", "chem_dispenser", "sleeper", "pandemic", "defibmount") research_cost = 2500 export_price = 5000 @@ -111,7 +111,7 @@ description = "Deeper understanding of how the Bluespace dimension works" prereq_ids = list("practical_bluespace", "high_efficiency") design_ids = list("bluespace_matter_bin", "femto_mani", "triphasic_scanning", "tele_station", "tele_hub", "quantumpad", "launchpad", "launchpad_console", - "teleconsole", "bag_holding", "bluespace_crystal", "wormholeprojector") + "teleconsole", "bag_holding", "bluespace_crystal", "wormholeprojector", "bluespace_pod") research_cost = 2500 export_price = 5000 @@ -432,7 +432,7 @@ display_name = "Advanced Mining Technology" description = "Efficiency Level 127" //dumb mc references prereq_ids = list("basic_mining", "adv_engi", "adv_power", "adv_plasma") - design_ids = list("drill_diamond", "jackhammer", "hypermod", "plasmacutter", "plasmacutter_adv", "bluespace_pod") + design_ids = list("drill_diamond", "jackhammer", "hypermod", "plasmacutter", "plasmacutter_adv") research_cost = 2500 export_price = 5000 @@ -566,9 +566,9 @@ /datum/techweb_node/gravity_gun id = "gravity_gun" display_name = "One-point Bluespace-gravitational Manipulator" - description = "Fancy wording for gravity gun" + description = "Fancy wording for gravity gun." prereq_ids = list("adv_weaponry", "adv_bluespace") - design_ids = list("gravitygun") + design_ids = list("gravitygun", "mech_gravcatapult") research_cost = 2500 export_price = 5000 diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm index ca929e5e9a..45460eccbd 100644 --- a/code/modules/research/xenobiology/xenobio_camera.dm +++ b/code/modules/research/xenobiology/xenobio_camera.dm @@ -26,8 +26,11 @@ var/datum/action/innate/slime_pick_up/slime_up_action = new var/datum/action/innate/feed_slime/feed_slime_action = new var/datum/action/innate/monkey_recycle/monkey_recycle_action = new + var/datum/action/innate/slime_scan/scan_action = new + var/datum/action/innate/feed_potion/potion_action = new var/list/stored_slimes = list() + var/obj/item/slimepotion/slime/current_potion var/max_slimes = 5 var/monkeys = 0 @@ -66,6 +69,16 @@ monkey_recycle_action.Grant(user) actions += monkey_recycle_action + if(scan_action) + scan_action.target = src + scan_action.Grant(user) + actions += scan_action + + if(potion_action) + potion_action.target = src + potion_action.Grant(user) + actions += potion_action + /obj/machinery/computer/camera_advanced/xenobio/attackby(obj/item/O, mob/user, params) if(istype(O, /obj/item/reagent_containers/food/snacks/monkeycube)) monkeys++ @@ -83,6 +96,16 @@ if (loaded) to_chat(user, "You fill [src] with the monkey cubes stored in [O]. [src] now has [monkeys] monkey cubes stored.") return + else if(istype(O, /obj/item/slimepotion/slime)) + var/replaced = FALSE + if(user && !user.transferItemToLoc(O, src)) + return + if(!QDELETED(current_potion)) + current_potion.forceMove(drop_location()) + replaced = TRUE + current_potion = O + to_chat(user, "You load [O] in the console's potion slot[replaced ? ", replacing the one that was there before" : ""].") + return ..() /datum/action/innate/slime_place @@ -173,3 +196,44 @@ qdel(M) else to_chat(owner, "Target is not near a camera. Cannot proceed.") + +/datum/action/innate/slime_scan + name = "Scan Slime" + icon_icon = 'icons/mob/actions/actions_silicon.dmi' + button_icon_state = "slime_scan" + +/datum/action/innate/slime_scan/Activate() + if(!target || !isliving(owner)) + return + var/mob/living/C = owner + var/mob/camera/aiEye/remote/xenobio/remote_eye = C.remote_control + + if(GLOB.cameranet.checkTurfVis(remote_eye.loc)) + for(var/mob/living/simple_animal/slime/S in remote_eye.loc) + slime_scan(S, C) + else + to_chat(owner, "Target is not near a camera. Cannot proceed.") + +/datum/action/innate/feed_potion + name = "Apply Potion" + icon_icon = 'icons/mob/actions/actions_silicon.dmi' + button_icon_state = "slime_potion" + +/datum/action/innate/feed_potion/Activate() + if(!target || !isliving(owner)) + return + + var/mob/living/C = owner + var/mob/camera/aiEye/remote/xenobio/remote_eye = C.remote_control + var/obj/machinery/computer/camera_advanced/xenobio/X = target + + if(QDELETED(X.current_potion)) + to_chat(owner, "No potion loaded.") + return + + if(GLOB.cameranet.checkTurfVis(remote_eye.loc)) + for(var/mob/living/simple_animal/slime/S in remote_eye.loc) + X.current_potion.attack(S, C) + break + else + to_chat(owner, "Target is not near a camera. Cannot proceed.") diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index 6f9c1134ca..40811923c4 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -34,94 +34,499 @@ if(Uses) grind_results["slimejelly"] = 20 +//Effect when activated by a Luminescent. Separated into a minor and major effect. Returns cooldown in deciseconds. +/obj/item/slime_extract/proc/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + to_chat(user, "Nothing happened... This slime extract cannot be activated this way.") + return 0 + /obj/item/slime_extract/grey name = "grey slime extract" icon_state = "grey slime extract" +/obj/item/slime_extract/grey/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + var/obj/item/reagent_containers/food/snacks/monkeycube/M = new + if(!user.put_in_active_hand(M)) + M.forceMove(user.drop_location()) + playsound(user, 'sound/effects/splat.ogg', 50, 1) + to_chat(user, "You spit out a monkey cube.") + return 120 + if(SLIME_ACTIVATE_MAJOR) + to_chat(user, "Your [name] starts pulsing...") + if(do_after(user, 40, target = user)) + var/mob/living/simple_animal/slime/S = new(get_turf(user), "grey") + playsound(user, 'sound/effects/splat.ogg', 50, 1) + to_chat(user, "You spit out [S].") + return 350 + else + return 0 + /obj/item/slime_extract/gold name = "gold slime extract" icon_state = "gold slime extract" +/obj/item/slime_extract/gold/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + user.visible_message("[user] starts shaking!","Your [name] starts pulsing gently...") + if(do_after(user, 40, target = user)) + var/mob/living/simple_animal/S = create_random_mob(user.drop_location(), FRIENDLY_SPAWN) + S.faction |= "neutral" + playsound(user, 'sound/effects/splat.ogg', 50, 1) + user.visible_message("[user] spits out [S]!", "You spit out [S]!") + return 300 + + if(SLIME_ACTIVATE_MAJOR) + user.visible_message("[user] starts shaking violently!","Your [name] starts pulsing violently...") + if(do_after(user, 50, target = user)) + var/mob/living/simple_animal/S = create_random_mob(user.drop_location(), HOSTILE_SPAWN) + if(user.a_intent != INTENT_HARM) + S.faction |= "neutral" + else + S.faction |= "slime" + playsound(user, 'sound/effects/splat.ogg', 50, 1) + user.visible_message("[user] spits out [S]!", "You spit out [S]!") + return 600 + /obj/item/slime_extract/silver name = "silver slime extract" icon_state = "silver slime extract" +/obj/item/slime_extract/silver/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + var/food_type = get_random_food() + var/obj/O = new food_type + if(!user.put_in_active_hand(O)) + O.forceMove(user.drop_location()) + playsound(user, 'sound/effects/splat.ogg', 50, 1) + user.visible_message("[user] spits out [O]!", "You spit out [O]!") + return 200 + if(SLIME_ACTIVATE_MAJOR) + var/drink_type = get_random_drink() + var/obj/O = new drink_type + if(!user.put_in_active_hand(O)) + O.forceMove(user.drop_location()) + playsound(user, 'sound/effects/splat.ogg', 50, 1) + user.visible_message("[user] spits out [O]!", "You spit out [O]!") + return 200 + /obj/item/slime_extract/metal name = "metal slime extract" icon_state = "metal slime extract" +/obj/item/slime_extract/metal/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + var/obj/item/stack/sheet/glass/O = new(null, 5) + if(!user.put_in_active_hand(O)) + O.forceMove(user.drop_location()) + playsound(user, 'sound/effects/splat.ogg', 50, 1) + user.visible_message("[user] spits out [O]!", "You spit out [O]!") + return 150 + + if(SLIME_ACTIVATE_MAJOR) + var/obj/item/stack/sheet/metal/O = new(null, 5) + if(!user.put_in_active_hand(O)) + O.forceMove(user.drop_location()) + playsound(user, 'sound/effects/splat.ogg', 50, 1) + user.visible_message("[user] spits out [O]!", "You spit out [O]!") + return 200 + /obj/item/slime_extract/purple name = "purple slime extract" icon_state = "purple slime extract" +/obj/item/slime_extract/purple/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + user.nutrition += 50 + user.blood_volume += 50 + to_chat(user, "You activate [src], and your body is refilled with fresh slime jelly!") + return 150 + + if(SLIME_ACTIVATE_MAJOR) + to_chat(user, "You activate [src], and it releases regenerative chemicals!") + user.reagents.add_reagent("regen_jelly",10) + return 600 + /obj/item/slime_extract/darkpurple name = "dark purple slime extract" icon_state = "dark purple slime extract" +/obj/item/slime_extract/darkpurple/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + var/obj/item/stack/sheet/mineral/plasma/O = new(null, 1) + if(!user.put_in_active_hand(O)) + O.forceMove(user.drop_location()) + playsound(user, 'sound/effects/splat.ogg', 50, 1) + user.visible_message("[user] spits out [O]!", "You spit out [O]!") + return 150 + + if(SLIME_ACTIVATE_MAJOR) + var/turf/open/T = get_turf(user) + if(istype(T)) + T.atmos_spawn_air("plasma=20") + to_chat(user, "You activate [src], and a cloud of plasma bursts out of your skin!") + return 900 + /obj/item/slime_extract/orange name = "orange slime extract" icon_state = "orange slime extract" +/obj/item/slime_extract/orange/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + to_chat(user, "You activate [src]. You start feeling hot!") + user.reagents.add_reagent("capsaicin",10) + return 150 + + if(SLIME_ACTIVATE_MAJOR) + user.reagents.add_reagent("phosphorus",5)// + user.reagents.add_reagent("potassium",5) // = smoke, along with any reagents inside mr. slime + user.reagents.add_reagent("sugar",5) // + to_chat(user, "You activate [src], and a cloud of smoke bursts out of your skin!") + return 450 + /obj/item/slime_extract/yellow name = "yellow slime extract" icon_state = "yellow slime extract" +/obj/item/slime_extract/yellow/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + if(species.glow_intensity != LUMINESCENT_DEFAULT_GLOW) + to_chat(user, "Your glow is already enhanced!") + return + species.update_glow(user, 5) + addtimer(CALLBACK(species, /datum/species/jelly/luminescent.proc/update_glow, user, LUMINESCENT_DEFAULT_GLOW), 600) + to_chat(user, "You start glowing brighter.") + + if(SLIME_ACTIVATE_MAJOR) + user.visible_message("[user]'s skin starts flashing intermittently...", "Your skin starts flashing intermittently...") + if(do_after(user, 25, target = user)) + empulse(user, 1, 2) + user.visible_message("[user]'s skin flashes!", "Your skin flashes as you emit an electromagnetic pulse!") + return 600 + /obj/item/slime_extract/red name = "red slime extract" icon_state = "red slime extract" +/obj/item/slime_extract/red/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + to_chat(user, "You activate [src]. You start feeling fast!") + user.reagents.add_reagent("ephedrine",5) + return 450 + + if(SLIME_ACTIVATE_MAJOR) + user.visible_message("[user]'s skin flashes red for a moment...", "Your skin flashes red as you emit rage-inducing pheromones...") + for(var/mob/living/simple_animal/slime/slime in viewers(get_turf(user), null)) + slime.rabid = TRUE + slime.visible_message("The [slime] is driven into a frenzy!") + return 600 + /obj/item/slime_extract/blue name = "blue slime extract" icon_state = "blue slime extract" +/obj/item/slime_extract/blue/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + to_chat(user, "You activate [src]. Your genome feels more stable!") + user.adjustCloneLoss(-15) + user.reagents.add_reagent("mutadone", 10) + user.reagents.add_reagent("potass_iodide", 10) + return 250 + + if(SLIME_ACTIVATE_MAJOR) + var/location = get_turf(user) + var/datum/effect_system/foam_spread/s = new() + s.set_up(20, location, user.reagents) + s.start() + user.reagents.clear_reagents() + user.visible_message("Foam spews out from [user]'s skin!", "You activate [src], and foam bursts out of your skin!") + return 600 + /obj/item/slime_extract/darkblue name = "dark blue slime extract" icon_state = "dark blue slime extract" +/obj/item/slime_extract/darkblue/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + to_chat(user, "You activate [src]. You start feeling colder!") + user.ExtinguishMob() + user.adjust_fire_stacks(-20) + user.reagents.add_reagent("frostoil",4) + user.reagents.add_reagent("cryoxadone",5) + return 100 + + if(SLIME_ACTIVATE_MAJOR) + var/turf/open/T = get_turf(user) + if(istype(T)) + T.atmos_spawn_air("nitrogen=40;TEMP=2.7") + to_chat(user, "You activate [src], and icy air bursts out of your skin!") + return 900 + /obj/item/slime_extract/pink name = "pink slime extract" icon_state = "pink slime extract" +/obj/item/slime_extract/pink/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + if(user.gender != MALE && user.gender != FEMALE) + to_chat(user, "You can't swap your gender!") + return + + if(user.gender == MALE) + user.gender = FEMALE + user.visible_message("[user] suddenly looks more feminine!", "You suddenly feel more feminine!") + else + user.gender = MALE + user.visible_message("[user] suddenly looks more masculine!", "You suddenly feel more masculine!") + return 100 + + if(SLIME_ACTIVATE_MAJOR) + user.visible_message("[user]'s skin starts flashing hypnotically...", "Your skin starts forming odd patterns, pacifying creatures around you.") + for(var/mob/living/carbon/C in viewers(user, null)) + if(C != user) + C.reagents.add_reagent("pax",2) + return 600 + /obj/item/slime_extract/green name = "green slime extract" icon_state = "green slime extract" +/obj/item/slime_extract/green/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + to_chat(user, "You feel yourself reverting to human form...") + if(do_after(user, 120, target = user)) + to_chat(user, "You feel human again!") + user.set_species(/datum/species/human) + return + to_chat(user, "You stop the transformation.") + + if(SLIME_ACTIVATE_MAJOR) + to_chat(user, "You feel yourself radically changing your slime type...") + if(do_after(user, 120, target = user)) + to_chat(user, "You feel different!") + user.set_species(/datum/species/jelly/slime) + return + to_chat(user, "You stop the transformation.") + /obj/item/slime_extract/lightpink name = "light pink slime extract" icon_state = "light pink slime extract" +/obj/item/slime_extract/lightpink/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + var/obj/item/slimepotion/slime/docility/O = new(null, 1) + if(!user.put_in_active_hand(O)) + O.forceMove(user.drop_location()) + playsound(user, 'sound/effects/splat.ogg', 50, 1) + user.visible_message("[user] spits out [O]!", "You spit out [O]!") + return 150 + + if(SLIME_ACTIVATE_MAJOR) + var/obj/item/slimepotion/slime/sentience/O = new(null, 1) + if(!user.put_in_active_hand(O)) + O.forceMove(user.drop_location()) + playsound(user, 'sound/effects/splat.ogg', 50, 1) + user.visible_message("[user] spits out [O]!", "You spit out [O]!") + return 450 + /obj/item/slime_extract/black name = "black slime extract" icon_state = "black slime extract" +/obj/item/slime_extract/black/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + to_chat(user, "You feel something wrong inside you...") + user.ForceContractDisease(new /datum/disease/transformation/slime(0)) + return 100 + + if(SLIME_ACTIVATE_MAJOR) + to_chat(user, "You feel your own light turning dark...") + if(do_after(user, 120, target = user)) + to_chat(user, "You feel a longing for darkness.") + user.set_species(pick(/datum/species/shadow)) + return + to_chat(user, "You stop feeding [src].") + /obj/item/slime_extract/oil name = "oil slime extract" icon_state = "oil slime extract" +/obj/item/slime_extract/oil/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + to_chat(user, "You vomit slippery oil.") + playsound(user, 'sound/effects/splat.ogg', 50, 1) + new /obj/effect/decal/cleanable/oil/slippery(get_turf(user)) + return 450 + + if(SLIME_ACTIVATE_MAJOR) + user.visible_message("[user]'s skin starts pulsing and glowing ominously...", "You feel unstable...") + if(do_after(user, 60, target = user)) + to_chat(user, "You explode!") + explosion(get_turf(user), 1 ,3, 6) + user.gib() + return + to_chat(user, "You stop feeding [src], and the feeling passes.") + /obj/item/slime_extract/adamantine name = "adamantine slime extract" icon_state = "adamantine slime extract" +/obj/item/slime_extract/adamantine/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + if(species.armor > 0) + to_chat(user, "Your skin is already hardened!") + return + to_chat(user, "You feel your skin harden and become more resistant.") + species.armor += 25 + addtimer(CALLBACK(src, .proc/reset_armor, species), 1200) + return 450 + + if(SLIME_ACTIVATE_MAJOR) + to_chat(user, "You feel your body rapidly crystallizing...") + if(do_after(user, 120, target = user)) + to_chat(user, "You feel solid.") + user.set_species(pick(/datum/species/golem/adamantine)) + return + to_chat(user, "You stop feeding [src], and your body returns to its slimelike state.") + +/obj/item/slime_extract/adamantine/proc/reset_armor(datum/species/jelly/luminescent/species) + if(istype(species)) + species.armor -= 25 + /obj/item/slime_extract/bluespace name = "bluespace slime extract" icon_state = "bluespace slime extract" + var/teleport_ready = FALSE + var/teleport_x = 0 + var/teleport_y = 0 + var/teleport_z = 0 + +/obj/item/slime_extract/bluespace/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + to_chat(user, "You feel your body vibrating...") + if(do_after(user, 25, target = user)) + to_chat(user, "You teleport!") + do_teleport(user, get_turf(user), 6, asoundin = 'sound/weapons/emitter2.ogg') + return 300 + + if(SLIME_ACTIVATE_MAJOR) + if(!teleport_ready) + to_chat(user, "You feel yourself anchoring to this spot...") + var/turf/T = get_turf(user) + teleport_x = T.x + teleport_y = T.y + teleport_z = T.z + teleport_ready = TRUE + else + teleport_ready = FALSE + if(teleport_x && teleport_y && teleport_z) + var/turf/T = locate(teleport_x, teleport_y, teleport_z) + to_chat(user, "You snap back to your anchor point!") + do_teleport(user, T, asoundin = 'sound/weapons/emitter2.ogg') + return 450 + /obj/item/slime_extract/pyrite name = "pyrite slime extract" icon_state = "pyrite slime extract" +/obj/item/slime_extract/pyrite/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + var/chosen = pick(difflist(subtypesof(/obj/item/toy/crayon),typesof(/obj/item/toy/crayon/spraycan))) + var/obj/item/O = new chosen(null) + if(!user.put_in_active_hand(O)) + O.forceMove(user.drop_location()) + playsound(user, 'sound/effects/splat.ogg', 50, 1) + user.visible_message("[user] spits out [O]!", "You spit out [O]!") + return 150 + + if(SLIME_ACTIVATE_MAJOR) + var/chosen = pick(subtypesof(/obj/item/toy/crayon/spraycan)) + var/obj/item/O = new chosen(null) + if(!user.put_in_active_hand(O)) + O.forceMove(user.drop_location()) + playsound(user, 'sound/effects/splat.ogg', 50, 1) + user.visible_message("[user] spits out [O]!", "You spit out [O]!") + return 250 + /obj/item/slime_extract/cerulean name = "cerulean slime extract" icon_state = "cerulean slime extract" +/obj/item/slime_extract/cerulean/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + user.reagents.add_reagent("salbutamol",15) + to_chat(user, "You feel like you don't need to breathe!") + return 150 + + if(SLIME_ACTIVATE_MAJOR) + var/turf/open/T = get_turf(user) + if(istype(T)) + T.atmos_spawn_air("o2=11;n2=41;TEMP=293.15") + to_chat(user, "You activate [src], and fresh air bursts out of your skin!") + return 600 + /obj/item/slime_extract/sepia name = "sepia slime extract" icon_state = "sepia slime extract" +/obj/item/slime_extract/sepia/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + var/obj/item/device/camera/O = new(null, 1) + if(!user.put_in_active_hand(O)) + O.forceMove(user.drop_location()) + playsound(user, 'sound/effects/splat.ogg', 50, 1) + user.visible_message("[user] spits out [O]!", "You spit out [O]!") + return 150 + + if(SLIME_ACTIVATE_MAJOR) + to_chat(user, "You feel time slow down...") + if(do_after(user, 30, target = user)) + new /obj/effect/timestop(get_turf(user), 2, 50, list(user)) + return 900 + /obj/item/slime_extract/rainbow name = "rainbow slime extract" icon_state = "rainbow slime extract" +/obj/item/slime_extract/rainbow/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) + switch(activation_type) + if(SLIME_ACTIVATE_MINOR) + user.dna.features["mcolor"] = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F") + user.updateappearance(mutcolor_update=1) + species.update_glow(user) + to_chat(user, "You feel different...") + return 100 + + if(SLIME_ACTIVATE_MAJOR) + var/chosen = pick(subtypesof(/obj/item/slime_extract)) + var/obj/item/O = new chosen(null) + if(!user.put_in_active_hand(O)) + O.forceMove(user.drop_location()) + playsound(user, 'sound/effects/splat.ogg', 50, 1) + user.visible_message("[user] spits out [O]!", "You spit out [O]!") + return 150 + ////Slime-derived potions/// /obj/item/slimepotion @@ -134,19 +539,19 @@ to_chat(user, "You cannot transfer [src] to [target]! It appears the potion must be given directly to a slime to absorb." ) return -/obj/item/slimepotion/docility +/obj/item/slimepotion/slime/docility name = "docility potion" desc = "A potent chemical mix that nullifies a slime's hunger, causing it to become docile and tame." icon = 'icons/obj/chemical.dmi' icon_state = "potsilver" -/obj/item/slimepotion/docility/attack(mob/living/simple_animal/slime/M, mob/user) +/obj/item/slimepotion/slime/docility/attack(mob/living/simple_animal/slime/M, mob/user) if(!isslime(M)) to_chat(user, "The potion only works on slimes!") return ..() if(M.stat) to_chat(user, "The slime is dead!") - return ..() + return M.docile = 1 M.nutrition = 700 @@ -160,60 +565,57 @@ M.real_name = newname qdel(src) -/obj/item/slimepotion/sentience +/obj/item/slimepotion/slime/sentience name = "intelligence potion" desc = "A miraculous chemical mix that grants human like intelligence to living beings." icon = 'icons/obj/chemical.dmi' icon_state = "potpink" var/list/not_interested = list() - var/being_used = 0 + var/being_used = FALSE var/sentience_type = SENTIENCE_ORGANIC -/obj/item/slimepotion/sentience/afterattack(mob/living/M, mob/user) - if(being_used || !ismob(M) || !user.Adjacent(M)) +/obj/item/slimepotion/slime/sentience/attack(mob/living/M, mob/user) + if(being_used || !ismob(M)) return if(!isanimal(M) || M.ckey) //only works on animals that aren't player controlled to_chat(user, "[M] is already too intelligent for this to work!") - return ..() + return if(M.stat) to_chat(user, "[M] is dead!") - return ..() + return var/mob/living/simple_animal/SM = M if(SM.sentience_type != sentience_type) to_chat(user, "[src] won't work on [SM].") - return ..() - - + return to_chat(user, "You offer [src] to [SM]...") - being_used = 1 + being_used = TRUE var/list/candidates = pollCandidatesForMob("Do you want to play as [SM.name]?", ROLE_ALIEN, null, ROLE_ALIEN, 50, SM, POLL_IGNORE_SENTIENCE_POTION) // see poll_ignore.dm - var/mob/dead/observer/theghost = null - if(candidates.len) - theghost = pick(candidates) - SM.key = theghost.key + if(LAZYLEN(candidates)) + var/client/C = pick(candidates) + SM.key = C.key SM.mind.enslave_mind_to_creator(user) SM.sentience_act() to_chat(SM, "All at once it makes sense: you know what you are and who you are! Self awareness is yours!") to_chat(SM, "You are grateful to be self aware and owe [user.real_name] a great debt. Serve [user.real_name], and assist [user.p_them()] in completing [user.p_their()] goals at any cost.") to_chat(user, "[SM] accepts [src] and suddenly becomes attentive and aware. It worked!") - SM.copy_known_languages_from(user, TRUE) + SM.copy_known_languages_from(user, FALSE) after_success(user, SM) qdel(src) else to_chat(user, "[SM] looks interested for a moment, but then looks back down. Maybe you should try again later.") - being_used = 0 + being_used = FALSE ..() -/obj/item/slimepotion/sentience/proc/after_success(mob/living/user, mob/living/simple_animal/SM) +/obj/item/slimepotion/slime/sentience/proc/after_success(mob/living/user, mob/living/simple_animal/SM) return -/obj/item/slimepotion/sentience/nuclear +/obj/item/slimepotion/slime/sentience/nuclear name = "syndicate intelligence potion" desc = "A miraculous chemical mix that grants human like intelligence to living beings. It has been modified with Syndicate technology to also grant an internal radio implant to the target and authenticate with identification systems." -/obj/item/slimepotion/sentience/nuclear/after_success(mob/living/user, mob/living/simple_animal/SM) +/obj/item/slimepotion/slime/sentience/nuclear/after_success(mob/living/user, mob/living/simple_animal/SM) var/obj/item/implant/radio/imp = new(src) imp.implant(SM, user) @@ -262,25 +664,25 @@ SM.name = "[SM.name] as [user.real_name]" qdel(src) -/obj/item/slimepotion/steroid +/obj/item/slimepotion/slime/steroid name = "slime steroid" desc = "A potent chemical mix that will cause a baby slime to generate more extract." icon = 'icons/obj/chemical.dmi' icon_state = "potred" -/obj/item/slimepotion/steroid/attack(mob/living/simple_animal/slime/M, mob/user) +/obj/item/slimepotion/slime/steroid/attack(mob/living/simple_animal/slime/M, mob/user) if(!isslime(M))//If target is not a slime. to_chat(user, "The steroid only works on baby slimes!") return ..() if(M.is_adult) //Can't steroidify adults to_chat(user, "Only baby slimes can use the steroid!") - return ..() + return if(M.stat) to_chat(user, "The slime is dead!") - return ..() + return if(M.cores >= 5) to_chat(user, "The slime already has the maximum amount of extract!") - return ..() + return to_chat(user, "You feed the slime the steroid. It will now produce one more extract.") M.cores++ @@ -292,46 +694,46 @@ icon = 'icons/obj/chemical.dmi' icon_state = "potpurple" -/obj/item/slimepotion/stabilizer +/obj/item/slimepotion/slime/stabilizer name = "slime stabilizer" desc = "A potent chemical mix that will reduce the chance of a slime mutating." icon = 'icons/obj/chemical.dmi' icon_state = "potcyan" -/obj/item/slimepotion/stabilizer/attack(mob/living/simple_animal/slime/M, mob/user) +/obj/item/slimepotion/slime/stabilizer/attack(mob/living/simple_animal/slime/M, mob/user) if(!isslime(M)) to_chat(user, "The stabilizer only works on slimes!") return ..() if(M.stat) to_chat(user, "The slime is dead!") - return ..() + return if(M.mutation_chance == 0) to_chat(user, "The slime already has no chance of mutating!") - return ..() + return to_chat(user, "You feed the slime the stabilizer. It is now less likely to mutate.") M.mutation_chance = CLAMP(M.mutation_chance-15,0,100) qdel(src) -/obj/item/slimepotion/mutator +/obj/item/slimepotion/slime/mutator name = "slime mutator" desc = "A potent chemical mix that will increase the chance of a slime mutating." icon = 'icons/obj/chemical.dmi' icon_state = "potgreen" -/obj/item/slimepotion/mutator/attack(mob/living/simple_animal/slime/M, mob/user) +/obj/item/slimepotion/slime/mutator/attack(mob/living/simple_animal/slime/M, mob/user) if(!isslime(M)) to_chat(user, "The mutator only works on slimes!") return ..() if(M.stat) to_chat(user, "The slime is dead!") - return ..() + return if(M.mutator_used) to_chat(user, "This slime has already consumed a mutator, any more would be far too unstable!") - return ..() + return if(M.mutation_chance == 100) to_chat(user, "The slime is already guaranteed to mutate!") - return ..() + return to_chat(user, "You feed the slime the mutator. It is now more likely to mutate.") M.mutation_chance = CLAMP(M.mutation_chance+12,0,100) diff --git a/code/modules/ruins/lavaland_ruin_code.dm b/code/modules/ruins/lavaland_ruin_code.dm index aed4e65e38..becb7abf1d 100644 --- a/code/modules/ruins/lavaland_ruin_code.dm +++ b/code/modules/ruins/lavaland_ruin_code.dm @@ -120,13 +120,19 @@ implants = list(/obj/item/implant/weapons_auth) /datum/outfit/lavaland_syndicate/post_equip(mob/living/carbon/human/H) - H.faction |= "syndicate" + H.faction |= ROLE_SYNDICATE /obj/effect/mob_spawn/human/lavaland_syndicate/comms name = "Syndicate Comms Agent" flavour_text = "You are a syndicate agent, employed in a top secret research facility developing biological weapons. Unfortunately, your hated enemy, Nanotrasen, has begun mining in this sector. Monitor enemy activity as best you can, and try to keep a low profile. DON'T abandon the base without good cause. Use the communication equipment to provide support to any field agents, and sow disinformation to throw Nanotrasen off your trail. Do not let the base fall into enemy hands!" outfit = /datum/outfit/lavaland_syndicate/comms +/obj/effect/mob_spawn/human/lavaland_syndicate/comms/space/Initialize() + . = ..() + if(prob(90)) //only has a 10% chance of existing, otherwise it'll just be a NPC syndie. + new /mob/living/simple_animal/hostile/syndicate/ranged(get_turf(src)) + return INITIALIZE_HINT_QDEL + /datum/outfit/lavaland_syndicate/comms name = "Lavaland Syndicate Comms Agent" r_hand = /obj/item/melee/transforming/energy/sword/saber diff --git a/code/modules/ruins/objects_and_mobs/sin_ruins.dm b/code/modules/ruins/objects_and_mobs/sin_ruins.dm index 3924d29e91..33bfdb8b67 100644 --- a/code/modules/ruins/objects_and_mobs/sin_ruins.dm +++ b/code/modules/ruins/objects_and_mobs/sin_ruins.dm @@ -12,9 +12,9 @@ /obj/structure/cursed_slot_machine/attack_hand(mob/living/carbon/human/user) if(!istype(user)) return - if(in_use) + if(obj_flags & IN_USE) return - in_use = TRUE + obj_flags |= IN_USE user.adjustCloneLoss(20) if(user.stat) to_chat(user, "No... just one more try...") @@ -28,7 +28,7 @@ /obj/structure/cursed_slot_machine/proc/determine_victor(mob/living/user) icon_state = "slots1" - in_use = FALSE + obj_flags &= ~IN_USE if(prob(win_prob)) playsound(src, 'sound/lavaland/cursed_slot_machine_jackpot.ogg', 50, 0) new/obj/structure/cursed_money(get_turf(src)) diff --git a/code/modules/ruins/spaceruin_code/caravanambush.dm b/code/modules/ruins/spaceruin_code/caravanambush.dm index 8877a693cd..603af76f1a 100644 --- a/code/modules/ruins/spaceruin_code/caravanambush.dm +++ b/code/modules/ruins/spaceruin_code/caravanambush.dm @@ -25,3 +25,142 @@ desc = "A prototype of a new crowbar design, allegedly the red color scheme makes it go faster." name = "experimental crowbar" toolspeed = 0.3 + +/obj/machinery/computer/shuttle/caravan + +/obj/item/circuitboard/computer/caravan + build_path = /obj/machinery/computer/shuttle/caravan + +/obj/item/circuitboard/computer/caravan/trade1 + build_path = /obj/machinery/computer/shuttle/caravan/trade1 + +/obj/item/circuitboard/computer/caravan/pirate + build_path = /obj/machinery/computer/shuttle/caravan/pirate + +/obj/item/circuitboard/computer/caravan/syndicate1 + build_path = /obj/machinery/computer/shuttle/caravan/syndicate1 + +/obj/item/circuitboard/computer/caravan/syndicate2 + build_path = /obj/machinery/computer/shuttle/caravan/syndicate2 + +/obj/item/circuitboard/computer/caravan/syndicate3 + build_path = /obj/machinery/computer/shuttle/caravan/syndicate3 + +/obj/machinery/computer/shuttle/caravan/trade1 + name = "Small Freighter Shuttle Console" + desc = "Used to control the Small Freighter." + circuit = /obj/item/circuitboard/computer/caravan/trade1 + shuttleId = "caravantrade1" + possible_destinations = "whiteship_away;whiteship_home;whiteship_z4;whiteship_lavaland;caravantrade1_custom;caravantrade1_ambush" + +/obj/machinery/computer/camera_advanced/shuttle_docker/caravan/trade1 + name = "Small Freighter Navigation Computer" + desc = "Used to designate a precise transit location for the Small Freighter." + shuttleId = "caravantrade1" + lock_override = NONE + shuttlePortId = "caravantrade1_custom" + shuttlePortName = "Custom Location" + jumpto_ports = list("whiteship_away" = 1, "whiteship_home" = 1, "whiteship_z4" = 1, "caravantrade1_ambush" = 1) + view_range = 14 + x_offset = -5 + y_offset = -5 + designate_time = 100 + +/obj/machinery/computer/shuttle/caravan/pirate + name = "Pirate Cutter Shuttle Console" + desc = "Used to control the Pirate Cutter." + icon_screen = "syndishuttle" + icon_keyboard = "syndie_key" + light_color = LIGHT_COLOR_RED + circuit = /obj/item/circuitboard/computer/caravan/pirate + shuttleId = "caravanpirate" + possible_destinations = "caravanpirate_custom;caravanpirate_ambush" + +/obj/machinery/computer/camera_advanced/shuttle_docker/caravan/pirate + name = "Pirate Cutter Navigation Computer" + desc = "Used to designate a precise transit location for the Pirate Cutter." + icon_screen = "syndishuttle" + icon_keyboard = "syndie_key" + shuttleId = "caravanpirate" + lock_override = NONE + shuttlePortId = "caravanpirate_custom" + shuttlePortName = "Custom Location" + jumpto_ports = list("caravanpirate_ambush" = 1) + view_range = 14 + x_offset = 3 + y_offset = -6 + +/obj/machinery/computer/shuttle/caravan/syndicate1 + name = "Syndicate Fighter Shuttle Console" + desc = "Used to control the Syndicate Fighter." + icon_screen = "syndishuttle" + icon_keyboard = "syndie_key" + light_color = LIGHT_COLOR_RED + req_access = list(ACCESS_SYNDICATE) + circuit = /obj/item/circuitboard/computer/caravan/syndicate1 + shuttleId = "caravansyndicate1" + possible_destinations = "caravansyndicate1_custom;caravansyndicate1_ambush;caravansyndicate1_listeningpost" + +/obj/machinery/computer/camera_advanced/shuttle_docker/caravan/syndicate1 + name = "Syndicate Fighter Navigation Computer" + desc = "Used to designate a precise transit location for the Syndicate Fighter." + icon_screen = "syndishuttle" + icon_keyboard = "syndie_key" + shuttleId = "caravansyndicate1" + lock_override = NONE + shuttlePortId = "caravansyndicate1_custom" + shuttlePortName = "Custom Location" + jumpto_ports = list("caravansyndicate1_ambush" = 1, "caravansyndicate1_listeningpost" = 1) + view_range = 7 + x_offset = 2 + y_offset = 0 + +/obj/machinery/computer/shuttle/caravan/syndicate2 + name = "Syndicate Fighter Shuttle Console" + desc = "Used to control the Syndicate Fighter." + icon_screen = "syndishuttle" + icon_keyboard = "syndie_key" + req_access = list(ACCESS_SYNDICATE) + light_color = LIGHT_COLOR_RED + circuit = /obj/item/circuitboard/computer/caravan/syndicate2 + shuttleId = "caravansyndicate2" + possible_destinations = "caravansyndicate2_custom;caravansyndicate2_ambush;caravansyndicate1_listeningpost" + +/obj/machinery/computer/camera_advanced/shuttle_docker/caravan/syndicate2 + name = "Syndicate Fighter Navigation Computer" + desc = "Used to designate a precise transit location for the Syndicate Fighter." + icon_screen = "syndishuttle" + icon_keyboard = "syndie_key" + shuttleId = "caravansyndicate2" + lock_override = NONE + shuttlePortId = "caravansyndicate2_custom" + shuttlePortName = "Custom Location" + jumpto_ports = list("caravansyndicate2_ambush" = 1, "caravansyndicate1_listeningpost" = 1) + view_range = 7 + x_offset = 0 + y_offset = 2 + +/obj/machinery/computer/shuttle/caravan/syndicate3 + name = "Syndicate Drop Ship Console" + desc = "Used to control the Syndicate Drop Ship." + icon_screen = "syndishuttle" + icon_keyboard = "syndie_key" + req_access = list(ACCESS_SYNDICATE) + light_color = LIGHT_COLOR_RED + circuit = /obj/item/circuitboard/computer/caravan/syndicate3 + shuttleId = "caravansyndicate3" + possible_destinations = "caravansyndicate3_custom;caravansyndicate3_ambush;caravansyndicate3_listeningpost" + +/obj/machinery/computer/camera_advanced/shuttle_docker/caravan/syndicate3 + name = "Syndicate Drop Ship Navigation Computer" + desc = "Used to designate a precise transit location for the Syndicate Drop Ship." + icon_screen = "syndishuttle" + icon_keyboard = "syndie_key" + shuttleId = "caravansyndicate3" + lock_override = NONE + shuttlePortId = "caravansyndicate3_custom" + shuttlePortName = "Custom Location" + jumpto_ports = list("caravansyndicate3_ambush" = 1, "caravansyndicate3_listeningpost" = 1) + view_range = 10 + x_offset = -1 + y_offset = -3 \ No newline at end of file diff --git a/code/modules/security_levels/security_levels.dm b/code/modules/security_levels/security_levels.dm index 7fb23c75e5..d4e21edb32 100644 --- a/code/modules/security_levels/security_levels.dm +++ b/code/modules/security_levels/security_levels.dm @@ -41,7 +41,8 @@ GLOBAL_VAR_INIT(security_level, 0) if(SSshuttle.emergency.mode == SHUTTLE_CALL || SSshuttle.emergency.mode == SHUTTLE_RECALL) SSshuttle.emergency.modTimer(2) GLOB.security_level = SEC_LEVEL_BLUE - sound_to_playing_players('sound/misc/voybluealert.ogg') + sound_to_playing_players('sound/misc/voybluealert.ogg') // Citadel change - Makes alerts play a sound + for(var/obj/machinery/firealarm/FA in GLOB.machines) if(is_station_level(FA.z)) FA.update_icon() @@ -56,7 +57,8 @@ GLOBAL_VAR_INIT(security_level, 0) else minor_announce(CONFIG_GET(string/alert_red_downto), "Attention! Code red!") GLOB.security_level = SEC_LEVEL_RED - sound_to_playing_players('sound/misc/voyalert.ogg') + sound_to_playing_players('sound/misc/voyalert.ogg') // Citadel change - Makes alerts play a sound + for(var/obj/machinery/firealarm/FA in GLOB.machines) if(is_station_level(FA.z)) FA.update_icon() @@ -70,7 +72,8 @@ GLOBAL_VAR_INIT(security_level, 0) else if(GLOB.security_level == SEC_LEVEL_BLUE) SSshuttle.emergency.modTimer(0.5) GLOB.security_level = SEC_LEVEL_DELTA - sound_to_playing_players('sound/misc/deltakalaxon.ogg') + sound_to_playing_players('sound/misc/deltakalaxon.ogg') // Citadel change - Makes alerts play a sound + for(var/obj/machinery/firealarm/FA in GLOB.machines) if(is_station_level(FA.z)) FA.update_icon() @@ -81,6 +84,12 @@ GLOBAL_VAR_INIT(security_level, 0) if(D.red_alert_access) D.visible_message("[D] whirrs as it automatically lifts access requirements!") playsound(D, 'sound/machines/boltsup.ogg', 50, TRUE) + //Citadel change, makes red and delta alerts override nightshift lights + SSnightshift.nightshift_override = TRUE + if(SSnightshift.nightshift) + SSnightshift.nightshift = FALSE + SSnightshift.updatenightlights() + //End of citadel changes SSblackbox.record_feedback("tally", "security_level_changes", 1, get_security_level()) else return diff --git a/code/modules/shuttle/arrivals.dm b/code/modules/shuttle/arrivals.dm index 318c896efd..b7fd4c3d58 100644 --- a/code/modules/shuttle/arrivals.dm +++ b/code/modules/shuttle/arrivals.dm @@ -11,8 +11,6 @@ callTime = INFINITY ignitionTime = 50 - roundstart_move = TRUE //force a call to dockRoundstart - var/sound_played var/damaged //too damaged to undock? var/list/areas //areas in our shuttle @@ -22,16 +20,20 @@ var/perma_docked = FALSE //highlander with RESPAWN??? OH GOD!!! /obj/docking_port/mobile/arrivals/Initialize(mapload) - if(SSshuttle.arrivals) - WARNING("More than one arrivals docking_port placed on map!") - return INITIALIZE_HINT_QDEL - SSshuttle.arrivals = src - + if(!timid) + register() + . = ..() preferred_direction = dir return INITIALIZE_HINT_LATELOAD //for latejoin list +/obj/docking_port/mobile/arrivals/register() + ..() + if(SSshuttle.arrivals) + WARNING("More than one arrivals docking_port placed on map! Ignoring duplicates.") + SSshuttle.arrivals = src + /obj/docking_port/mobile/arrivals/LateInitialize() areas = list() @@ -54,13 +56,6 @@ SSjob.latejoin_trackers = new_latejoin -/obj/docking_port/mobile/arrivals/dockRoundstart() - SSshuttle.generate_transit_dock(src) - Launch() - timer = world.time - check() - return TRUE - /obj/docking_port/mobile/arrivals/check() . = ..() diff --git a/code/modules/shuttle/computer.dm b/code/modules/shuttle/computer.dm index 226de32755..4f2d932b1f 100644 --- a/code/modules/shuttle/computer.dm +++ b/code/modules/shuttle/computer.dm @@ -66,9 +66,9 @@ to_chat(usr, "Unable to comply.") /obj/machinery/computer/shuttle/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return req_access = list() - emagged = TRUE + obj_flags |= EMAGGED to_chat(user, "You fried the consoles ID checking system.") diff --git a/code/modules/shuttle/emergency.dm b/code/modules/shuttle/emergency.dm index e11a120ba1..e9182edeae 100644 --- a/code/modules/shuttle/emergency.dm +++ b/code/modules/shuttle/emergency.dm @@ -36,14 +36,14 @@ var/name = ID.registered_name var/job = ID.assignment - if(emagged) + if(obj_flags & EMAGGED) name = Gibberish(name, 0) job = Gibberish(job, 0) A += list(list("name" = name, "job" = job)) data["authorizations"] = A data["enabled"] = (IS_DOCKED && !ENGINES_STARTED) - data["emagged"] = emagged + data["emagged"] = obj_flags & EMAGGED ? 1 : 0 return data /obj/machinery/computer/emergency_shuttle/ui_act(action, params, datum/tgui/ui) @@ -119,16 +119,16 @@ if(SSshuttle.emergency.mode == SHUTTLE_STRANDED) authorized.Cut() - emagged = FALSE + obj_flags &= ~EMAGGED if(ENGINES_STARTED || (!IS_DOCKED)) return . // Check to see if we've reached criteria for early launch - if((authorized.len >= auth_need) || emagged) + if((authorized.len >= auth_need) || (obj_flags & EMAGGED)) // shuttle timers use 1/10th seconds internally SSshuttle.emergency.setTimer(ENGINES_START_TIME) - var/system_error = emagged ? "SYSTEM ERROR:" : null + var/system_error = obj_flags & EMAGGED ? "SYSTEM ERROR:" : null minor_announce("The emergency shuttle will launch in \ [TIME_LEFT] seconds", system_error, alert=TRUE) . = TRUE @@ -138,7 +138,7 @@ if(!IS_DOCKED) return - if(emagged || ENGINES_STARTED) //SYSTEM ERROR: THE SHUTTLE WILL LA-SYSTEM ERROR: THE SHUTTLE WILL LA-SYSTEM ERROR: THE SHUTTLE WILL LAUNCH IN 10 SECONDS + if((obj_flags & EMAGGED) || ENGINES_STARTED) //SYSTEM ERROR: THE SHUTTLE WILL LA-SYSTEM ERROR: THE SHUTTLE WILL LA-SYSTEM ERROR: THE SHUTTLE WILL LAUNCH IN 10 SECONDS to_chat(user, "The shuttle is already about to launch!") return @@ -149,7 +149,7 @@ has emagged the emergency shuttle [time] seconds before launch.", 0, 1) log_game("[key_name(user)] has emagged the emergency shuttle in \ [COORD(src)] [time] seconds before launch.") - emagged = TRUE + obj_flags |= EMAGGED var/datum/species/S = new for(var/i in 1 to 10) // the shuttle system doesn't know who these people are, but they @@ -184,7 +184,6 @@ height = 11 dir = EAST port_direction = WEST - roundstart_move = "emergency_away" var/sound_played = 0 //If the launch sound has been sent to all players on the shuttle itself /obj/docking_port/mobile/emergency/canDock(obj/docking_port/stationary/S) @@ -262,7 +261,7 @@ if(shuttle_areas[get_area(player)]) has_people = TRUE var/location = get_turf(player.mind.current) - if(!(player.mind.special_role == "traitor" || player.mind.special_role == "Syndicate" || player.mind.special_role == "blood brother") && !istype(location, /turf/open/floor/plasteel/shuttle/red) && !istype(location, /turf/open/floor/mineral/plastitanium/brig)) + if(!(player.mind.has_antag_datum(/datum/antagonist)) && !istype(location, /turf/open/floor/plasteel/shuttle/red) && !istype(location, /turf/open/floor/mineral/plastitanium/brig)) return FALSE return has_people @@ -415,7 +414,7 @@ /obj/docking_port/mobile/pod/request() var/obj/machinery/computer/shuttle/S = getControlConsole() - if(GLOB.security_level == SEC_LEVEL_RED || GLOB.security_level == SEC_LEVEL_DELTA || (S && S.emagged)) + if(GLOB.security_level == SEC_LEVEL_RED || GLOB.security_level == SEC_LEVEL_DELTA || (S && (S.obj_flags & EMAGGED))) if(launch_status == UNLAUNCHED) launch_status = EARLY_LAUNCHED return ..() @@ -446,9 +445,9 @@ return /obj/machinery/computer/shuttle/pod/emag_act(mob/user) - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED to_chat(user, "You fry the pod's alert level checking system.") /obj/docking_port/stationary/random @@ -537,7 +536,6 @@ width = 8 height = 8 dir = EAST - roundstart_move = "backup_away" /obj/docking_port/mobile/emergency/backup/Initialize() // We want to be a valid emergency shuttle diff --git a/code/modules/shuttle/manipulator.dm b/code/modules/shuttle/manipulator.dm index 721ee601f7..299d9e1eaa 100644 --- a/code/modules/shuttle/manipulator.dm +++ b/code/modules/shuttle/manipulator.dm @@ -23,6 +23,14 @@ /obj/machinery/shuttle_manipulator/Initialize() . = ..() update_icon() + SSshuttle.manipulator = src + +/obj/machinery/shuttle_manipulator/Destroy(force) + if(!force) + . = QDEL_HINT_LETMELIVE + else + SSshuttle.manipulator = null + . = ..() /obj/machinery/shuttle_manipulator/update_icon() cut_overlays() @@ -182,8 +190,7 @@ update_icon() -/obj/machinery/shuttle_manipulator/proc/action_load( - datum/map_template/shuttle/loading_template) +/obj/machinery/shuttle_manipulator/proc/action_load(datum/map_template/shuttle/loading_template, obj/docking_port/stationary/destination_port) // Check for an existing preview if(preview_shuttle && (loading_template != preview_template)) preview_shuttle.jumpToNullSpace() @@ -199,16 +206,15 @@ var/mode = SHUTTLE_IDLE var/obj/docking_port/stationary/D - if(existing_shuttle) + if(istype(destination_port)) + D = destination_port + else if(existing_shuttle) timer = existing_shuttle.timer mode = existing_shuttle.mode D = existing_shuttle.get_docked() - else - D = preview_shuttle.findRoundstartDock() if(!D) - var/m = "No dock found for preview shuttle, aborting." - WARNING(m) + var/m = "No dock found for preview shuttle ([preview_template.name]), aborting." throw EXCEPTION(m) var/result = preview_shuttle.canDock(D) @@ -216,11 +222,11 @@ // but we can ignore the someone else docked error because we'll // be moving into their place shortly if((result != SHUTTLE_CAN_DOCK) && (result != SHUTTLE_SOMEONE_ELSE_DOCKED)) - var/m = "Unsuccessful dock of [preview_shuttle] ([result])." - WARNING(m) + WARNING("Template shuttle [preview_shuttle] cannot dock at [D] ([result]).") return - existing_shuttle.jumpToNullSpace() + if(existing_shuttle) + existing_shuttle.jumpToNullSpace() preview_shuttle.initiate_docking(D) . = preview_shuttle diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index d87750c394..6a8fd7b3a1 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -167,6 +167,9 @@ var/last_dock_time + var/datum/map_template/shuttle/roundstart_template + var/json_key + /obj/docking_port/stationary/Initialize(mapload) . = ..() SSshuttle.stationary += src @@ -184,6 +187,22 @@ highlight("#f00") #endif +/obj/docking_port/stationary/proc/load_roundstart() + if(json_key) + var/sid = SSmapping.config.shuttles[json_key] + roundstart_template = SSmapping.shuttle_templates[sid] + if(!roundstart_template) + CRASH("json_key:[json_key] value \[[sid]\] resulted in a null shuttle template for [src]") + else if(roundstart_template) // passed a PATH + var/sid = "[initial(roundstart_template.port_id)]_[initial(roundstart_template.suffix)]" + + roundstart_template = SSmapping.shuttle_templates[sid] + if(!roundstart_template) + CRASH("Invalid path ([roundstart_template]) passed to docking port.") + + if(roundstart_template) + SSshuttle.manipulator.action_load(roundstart_template, src) + //returns first-found touching shuttleport /obj/docking_port/stationary/get_docked() . = locate(/obj/docking_port/mobile) in loc @@ -234,7 +253,6 @@ var/mode = SHUTTLE_IDLE //current shuttle mode var/callTime = 100 //time spent in transit (deciseconds). Should not be lower then 10 seconds without editing the animation of the hyperspace ripples. var/ignitionTime = 55 // time spent "starting the engines". Also rate limits how often we try to reserve transit space if its ever full of transiting shuttles. - var/roundstart_move //id of port to send shuttle to at roundstart // The direction the shuttle prefers to travel in var/preferred_direction = NORTH @@ -251,8 +269,9 @@ var/list/movement_force = list("KNOCKDOWN" = 3, "THROW" = 2) // A timid shuttle will not register itself with the shuttle subsystem - // All shuttle templates are timid - var/timid = FALSE + // All shuttle templates MUST be timid, imports will fail if they're not + // Shuttle defined already on the map MUST NOT be timid, or they won't work + var/timid = TRUE var/list/ripples = list() var/engine_coeff = 1 //current engine coeff @@ -473,12 +492,6 @@ for(var/obj/machinery/door/poddoor/shuttledock/pod in GLOB.airlocks) pod.check() -/obj/docking_port/mobile/proc/findRoundstartDock() - return SSshuttle.getDock(roundstart_move) - -/obj/docking_port/mobile/proc/dockRoundstart() - . = dock_id(roundstart_move) - /obj/docking_port/mobile/proc/dock_id(id) var/port = SSshuttle.getDock(id) if(port) @@ -489,6 +502,10 @@ /obj/effect/landmark/shuttle_import name = "Shuttle Import" +// Never move the shuttle import landmark, otherwise things get WEIRD +/obj/effect/landmark/shuttle_import/onShuttleMove() + return FALSE + //used by shuttle subsystem to check timers /obj/docking_port/mobile/proc/check() check_effects() diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index eacacef933..a0bc4f0d1f 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -34,7 +34,6 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( width = 12 dwidth = 5 height = 7 - roundstart_move = "supply_away" // When TRUE, these vars allow exporting emagged/contraband items, and add some special interactions to existing exports. var/contraband = FALSE diff --git a/code/modules/shuttle/syndicate.dm b/code/modules/shuttle/syndicate.dm index 410935db5a..3f4d0cbee7 100644 --- a/code/modules/shuttle/syndicate.dm +++ b/code/modules/shuttle/syndicate.dm @@ -51,7 +51,7 @@ icon_screen = "syndishuttle" icon_keyboard = "syndie_key" shuttleId = "syndicate" - station_lock_override = TRUE + lock_override = CAMERA_LOCK_STATION shuttlePortId = "syndicate_custom" shuttlePortName = "custom location" jumpto_ports = list("syndicate_ne" = 1, "syndicate_nw" = 1, "syndicate_n" = 1, "syndicate_se" = 1, "syndicate_sw" = 1, "syndicate_s" = 1) diff --git a/code/modules/shuttle/white_ship.dm b/code/modules/shuttle/white_ship.dm index b6d9bda8b2..79c2fda7ed 100644 --- a/code/modules/shuttle/white_ship.dm +++ b/code/modules/shuttle/white_ship.dm @@ -9,7 +9,7 @@ name = "White Ship Navigation Computer" desc = "Used to designate a precise transit location for the White Ship." shuttleId = "whiteship" - station_lock_override = TRUE + lock_override = CAMERA_LOCK_STATION shuttlePortId = "whiteship_custom" shuttlePortName = "Custom Location" jumpto_ports = list("whiteship_away" = 1, "whiteship_home" = 1, "whiteship_z4" = 1) diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm index ae317ad861..19162d5259 100644 --- a/code/modules/spells/spell.dm +++ b/code/modules/spells/spell.dm @@ -104,7 +104,6 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th pass_flags = PASSTABLE density = FALSE opacity = 0 - base_action = /datum/action/spell_action/spell var/school = "evocation" //not relevant at now, but may be important later if there are changes to how spells work. the ones I used for now will probably be changed... maybe spell presets? lacking flexibility but with some other benefit? @@ -151,6 +150,7 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th action_icon = 'icons/mob/actions/actions_spells.dmi' action_icon_state = "spell_default" action_background_icon_state = "bg_spell" + base_action = /datum/action/spell_action/spell /obj/effect/proc_holder/spell/proc/cast_check(skipcharge = 0,mob/user = usr) //checks if the spell can be cast based on its settings; skipcharge is used when an additional cast_check is called inside the spell @@ -478,8 +478,8 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th perform(targets,user=user) -/obj/effect/proc_holder/spell/proc/updateButtonIcon() - action.UpdateButtonIcon() +/obj/effect/proc_holder/spell/proc/updateButtonIcon(status_only, force) + action.UpdateButtonIcon(status_only, force) /obj/effect/proc_holder/spell/proc/can_be_cast_by(mob/caster) if((human_req || clothes_req) && !ishuman(caster)) diff --git a/code/modules/spells/spell_types/construct_spells.dm b/code/modules/spells/spell_types/construct_spells.dm index 69a8ab07b7..07e75002bc 100644 --- a/code/modules/spells/spell_types/construct_spells.dm +++ b/code/modules/spells/spell_types/construct_spells.dm @@ -82,7 +82,7 @@ desc = "This spell reaches into Nar-Sie's realm, summoning one of the legendary fragments across time and space." school = "conjuration" - charge_max = 3000 + charge_max = 2400 clothes_req = 0 invocation = "none" invocation_type = "none" @@ -95,30 +95,26 @@ /obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone/cult cult_req = 1 - charge_max = 4000 + charge_max = 3600 /obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone/noncult summon_type = list(/obj/item/device/soulstone/anybody) - - -/obj/effect/proc_holder/spell/aoe_turf/conjure/lesserforcewall +/obj/effect/proc_holder/spell/targeted/forcewall/cult name = "Shield" desc = "This spell creates a temporary forcefield to shield yourself and allies from incoming fire." - school = "transmutation" - charge_max = 300 - clothes_req = 0 + charge_max = 400 + clothes_req = FALSE invocation = "none" invocation_type = "none" - range = 0 - summon_type = list(/obj/effect/forcefield/cult) - summon_lifespan = 200 + wall_type = /obj/effect/forcefield/cult action_icon = 'icons/mob/actions/actions_cult.dmi' action_icon_state = "cultforcewall" action_background_icon_state = "bg_demon" + /obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift name = "Phase Shift" desc = "This spell allows you to pass through walls." @@ -279,4 +275,38 @@ /obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift/golem charge_max = 800 jaunt_in_type = /obj/effect/temp_visual/dir_setting/cult/phase - jaunt_out_type = /obj/effect/temp_visual/dir_setting/cult/phase/out \ No newline at end of file + jaunt_out_type = /obj/effect/temp_visual/dir_setting/cult/phase/out + + +/obj/effect/proc_holder/spell/dumbfire/juggernaut + name = "Gauntlet Echo" + desc = "Channels energy into your gauntlet - firing its essence forward in a slow-moving but devastating blow." + proj_icon_state = "cursehand0" + proj_name = "Shadowfist" + proj_type = "/obj/effect/proc_holder/spell/targeted/inflict_handler/juggernaut" //IMPORTANT use only subtypes of this + proj_lifespan = 15 + proj_step_delay = 7 + charge_max = 350 + clothes_req = FALSE + action_icon = 'icons/mob/actions/actions_cult.dmi' + action_icon_state = "cultfist" + action_background_icon_state = "bg_demon" + sound = 'sound/weapons/resonator_blast.ogg' + proj_trigger_range = 0 + ignore_factions = list("cult") + +/obj/effect/proc_holder/spell/targeted/inflict_handler/juggernaut + name = "Gauntlet Echo" + amt_dam_brute = 30 + amt_knockdown = 50 + sound = 'sound/weapons/punch3.ogg' + +/obj/effect/proc_holder/spell/targeted/inflict_handler/juggernaut/cast(list/targets,mob/user = usr) + var/turf/T = get_turf(src) + playsound(T, 'sound/weapons/resonator_blast.ogg', 100, FALSE) + new /obj/effect/temp_visual/cult/sac(T) + for(var/obj/O in range(src,1)) + if(O.density && !istype(O, /obj/structure/destructible/cult)) + O.take_damage(90, BRUTE, "gauntlet echo", 0) + new /obj/effect/temp_visual/cult/turf/floor + ..() diff --git a/code/modules/spells/spell_types/dumbfire.dm b/code/modules/spells/spell_types/dumbfire.dm index f86c29fdc2..f4a56fc466 100644 --- a/code/modules/spells/spell_types/dumbfire.dm +++ b/code/modules/spells/spell_types/dumbfire.dm @@ -22,6 +22,7 @@ var/proj_lifespan = 100 //in deciseconds * proj_step_delay var/proj_step_delay = 1 //lower = faster + var/list/ignore_factions = list() //Faction types that will be ignored /obj/effect/proc_holder/spell/dumbfire/choose_targets(mob/user = usr) @@ -74,8 +75,18 @@ var/mob/living/L = locate(/mob/living) in range(projectile, proj_trigger_range) - user if(L && L.stat != DEAD) - projectile.cast(L.loc,user=user) - break + if(!ignore_factions.len) + projectile.cast(L.loc,user=user) + break + else + var/faction_check = FALSE + for(var/faction in L.faction) + if(ignore_factions.Find(faction)) + faction_check = TRUE + break + if(!faction_check) + projectile.cast(L.loc,user=user) + break if(proj_trail && projectile) proj_trail(projectile) diff --git a/code/modules/spells/spell_types/forcewall.dm b/code/modules/spells/spell_types/forcewall.dm index a9d13728a3..9efbbdf875 100644 --- a/code/modules/spells/spell_types/forcewall.dm +++ b/code/modules/spells/spell_types/forcewall.dm @@ -29,7 +29,6 @@ /obj/effect/forcefield/wizard/Initialize(mapload, mob/summoner) . = ..() wizard = summoner - QDEL_IN(src, 300) /obj/effect/forcefield/wizard/CanPass(atom/movable/mover, turf/target) if(mover == wizard) diff --git a/code/modules/spells/spell_types/genetic.dm b/code/modules/spells/spell_types/genetic.dm index c43dacac46..43069e0033 100644 --- a/code/modules/spells/spell_types/genetic.dm +++ b/code/modules/spells/spell_types/genetic.dm @@ -2,7 +2,7 @@ name = "Genetic" desc = "This spell inflicts a set of mutations and disabilities upon the target." - var/list/disabilities = list() //disabilities + var/list/traits = list() //disabilities var/list/mutations = list() //mutation strings var/duration = 100 //deciseconds /* @@ -22,13 +22,13 @@ continue for(var/A in mutations) target.dna.add_mutation(A) - for(var/A in disabilities) - target.add_disability(A, GENETICS_SPELL) + for(var/A in traits) + target.add_trait(A, GENETICS_SPELL) addtimer(CALLBACK(src, .proc/remove, target), duration) /obj/effect/proc_holder/spell/targeted/genetic/proc/remove(mob/living/carbon/target) if(!QDELETED(target)) for(var/A in mutations) target.dna.remove_mutation(A) - for(var/A in disabilities) - target.remove_disability(A, GENETICS_SPELL) \ No newline at end of file + for(var/A in traits) + target.remove_trait(A, GENETICS_SPELL) \ No newline at end of file diff --git a/code/modules/station_goals/shield.dm b/code/modules/station_goals/shield.dm index 13216826a4..c9acfebb9c 100644 --- a/code/modules/station_goals/shield.dm +++ b/code/modules/station_goals/shield.dm @@ -122,7 +122,7 @@ /obj/machinery/satellite/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/device/multitool)) - to_chat(user, "// NTSAT-[id] // Mode : [active ? "PRIMARY" : "STANDBY"] //[emagged ? "DEBUG_MODE //" : ""]") + to_chat(user, "// NTSAT-[id] // Mode : [active ? "PRIMARY" : "STANDBY"] //[(obj_flags & EMAGGED) ? "DEBUG_MODE //" : ""]") else return ..() @@ -147,14 +147,14 @@ continue if(get_dist(M,src) > kill_range) continue - if(!emagged && space_los(M)) + if(!(obj_flags & EMAGGED) && space_los(M)) Beam(get_turf(M),icon_state="sat_beam",time=5,maxdistance=kill_range) qdel(M) /obj/machinery/satellite/meteor_shield/toggle(user) if(!..(user)) return FALSE - if(emagged) + if(obj_flags & EMAGGED) if(active) change_meteor_chance(2) else @@ -167,12 +167,12 @@ /obj/machinery/satellite/meteor_shield/Destroy() . = ..() - if(active && emagged) + if(active && (obj_flags & EMAGGED)) change_meteor_chance(0.5) /obj/machinery/satellite/meteor_shield/emag_act() - if(emagged) + if(obj_flags & EMAGGED) return - emagged = TRUE + obj_flags |= EMAGGED if(active) change_meteor_chance(2) diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index fa8d04d987..c178d7f72f 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -11,6 +11,8 @@ var/mob/living/carbon/original_owner = null var/status = BODYPART_ORGANIC var/body_zone //"chest", "l_arm", etc , used for def_zone + var/aux_zone // used for hands + var/aux_layer var/body_part = null //bitflag used to check which clothes cover this bodypart var/use_digitigrade = NOT_DIGITIGRADE //Used for alternate legs, useless elsewhere var/brutestate = 0 @@ -217,7 +219,7 @@ C = owner no_update = 0 - if(C.has_disability(DISABILITY_HUSK)) + if(C.has_trait(TRAIT_HUSK)) species_id = "husk" //overrides species_id dmg_overlay_type = "" //no damage overlay shown when husked should_draw_gender = FALSE @@ -297,6 +299,7 @@ . += image('icons/mob/dam_mob.dmi', "[dmg_overlay_type]_[body_zone]_0[burnstate]", -DAMAGE_LAYER, image_dir) var/image/limb = image(layer = -BODYPARTS_LAYER, dir = image_dir) + var/image/aux . += limb if(animal_origin) @@ -331,6 +334,9 @@ limb.icon_state = "[species_id]_[body_zone]_[icon_gender]" else limb.icon_state = "[species_id]_[body_zone]" + if(aux_zone) + aux = image(limb.icon, "[species_id]_[aux_zone]", -aux_layer, image_dir) + . += aux else limb.icon = icon @@ -345,6 +351,8 @@ var/draw_color = mutation_color || species_color || (skin_tone && skintone2hex(skin_tone)) if(draw_color) limb.color = "#[draw_color]" + if(aux_zone) + aux.color = "#[draw_color]" /obj/item/bodypart/deconstruct(disassembled = TRUE) drop_organs() @@ -407,6 +415,8 @@ max_damage = 50 body_zone ="l_arm" body_part = ARM_LEFT + aux_zone = "l_hand" + aux_layer = HANDS_PART_LAYER held_index = 1 px_x = -6 px_y = 0 @@ -441,6 +451,8 @@ max_damage = 50 body_zone = "r_arm" body_part = ARM_RIGHT + aux_zone = "r_hand" + aux_layer = HANDS_PART_LAYER held_index = 2 px_x = 6 px_y = 0 diff --git a/code/modules/surgery/bodyparts/head.dm b/code/modules/surgery/bodyparts/head.dm index 4afe4df220..50dd2641e4 100644 --- a/code/modules/surgery/bodyparts/head.dm +++ b/code/modules/surgery/bodyparts/head.dm @@ -61,7 +61,7 @@ C = owner real_name = C.real_name - if(C.has_disability(DISABILITY_HUSK)) + if(C.has_trait(TRAIT_HUSK)) real_name = "Unknown" hair_style = "Bald" facial_hair_style = "Shaved" diff --git a/code/modules/surgery/lipoplasty.dm b/code/modules/surgery/lipoplasty.dm index 480edb4bd3..5a201bfc84 100644 --- a/code/modules/surgery/lipoplasty.dm +++ b/code/modules/surgery/lipoplasty.dm @@ -4,7 +4,7 @@ possible_locs = list("chest") /datum/surgery/lipoplasty/can_start(mob/user, mob/living/carbon/target) - if(target.has_disability(DISABILITY_FAT)) + if(target.has_trait(TRAIT_FAT)) return 1 return 0 diff --git a/code/modules/surgery/organ_manipulation.dm b/code/modules/surgery/organ_manipulation.dm index 97e24b4cd5..8ce80ec8a0 100644 --- a/code/modules/surgery/organ_manipulation.dm +++ b/code/modules/surgery/organ_manipulation.dm @@ -119,11 +119,11 @@ current_type = "extract" var/list/organs = target.getorganszone(target_zone) - var/mob/living/simple_animal/borer/B = target.has_brain_worms() +/* var/mob/living/simple_animal/borer/B = target.has_brain_worms() if(target.has_brain_worms()) user.visible_message("[user] begins to extract [B] from [target]'s [parse_zone(target_zone)].", "You begin to extract [B] from [target]'s [parse_zone(target_zone)]...") - return TRUE + return TRUE*/ if(!organs.len) to_chat(user, "There are no removable organs in [target]'s [parse_zone(target_zone)]!") @@ -164,13 +164,13 @@ "You insert [tool] into [target]'s [parse_zone(target_zone)].") else if(current_type == "extract") - var/mob/living/simple_animal/borer/B = target.has_brain_worms() +/* var/mob/living/simple_animal/borer/B = target.has_brain_worms() if(B && B.victim == target) user.visible_message("[user] successfully extracts [B] from [target]'s [parse_zone(target_zone)]!", "You successfully extract [B] from [target]'s [parse_zone(target_zone)].") add_logs(user, target, "surgically removed [B] from", addition="INTENT: [uppertext(user.a_intent)]") B.leave_victim() - return FALSE + return FALSE */ if(I && I.owner == target) user.visible_message("[user] successfully extracts [I] from [target]'s [parse_zone(target_zone)]!", "You successfully extract [I] from [target]'s [parse_zone(target_zone)].") diff --git a/code/modules/surgery/organs/ears.dm b/code/modules/surgery/organs/ears.dm index 2a12005956..83646ab4d0 100644 --- a/code/modules/surgery/organs/ears.dm +++ b/code/modules/surgery/organs/ears.dm @@ -25,7 +25,7 @@ return var/mob/living/carbon/C = owner // genetic deafness prevents the body from using the ears, even if healthy - if(C.has_disability(DISABILITY_DEAF)) + if(C.has_trait(TRAIT_DEAF)) deaf = max(deaf, 1) else if(C.ears && (C.ears.flags_2 & HEALS_EARS_2)) @@ -42,7 +42,7 @@ var/mob/living/carbon/C = owner - if(iscarbon(owner) && C.has_disability(DISABILITY_DEAF)) + if(iscarbon(owner) && C.has_trait(TRAIT_DEAF)) deaf = 1 /obj/item/organ/ears/proc/adjustEarDamage(ddmg, ddeaf) @@ -82,6 +82,7 @@ name = "cat ears" icon = 'icons/obj/clothing/hats.dmi' icon_state = "kitty" + damage_multiplier = 2 /obj/item/organ/ears/cat/Insert(mob/living/carbon/human/H, special = 0, drop_if_replaced = TRUE) ..() diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm index 430308ca3f..d9b0a726ee 100644 --- a/code/modules/surgery/organs/eyes.dm +++ b/code/modules/surgery/organs/eyes.dm @@ -316,3 +316,8 @@ parent = loc if(!istype(parent)) return INITIALIZE_HINT_QDEL + +/obj/item/organ/eyes/moth + name = "moth eyes" + desc = "These eyes seem to have increased sensitivity to bright light, with no improvement to low light vision." + flash_protect = -1 \ No newline at end of file diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index 0afa4f225b..42f5adfeca 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -249,10 +249,13 @@ var/bz_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/bz][MOLES]) if(bz_pp > BZ_trip_balls_min) H.hallucination += 20 + H.reagents.add_reagent("bz_metabolites",5) if(prob(33)) H.adjustBrainLoss(3, 150) + else if(bz_pp > 0.01) H.hallucination += 5//Removed at 2 per tick so this will slowly build up + H.reagents.add_reagent("bz_metabolites",1) // Tritium diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm index 325ebb3ef9..09926a3fdc 100644 --- a/code/modules/surgery/organs/tongue.dm +++ b/code/modules/surgery/organs/tongue.dm @@ -16,7 +16,7 @@ /datum/language/narsie, /datum/language/beachbum, /datum/language/ratvar, - /datum/language/aphasia + /datum/language/aphasia, )) /obj/item/organ/tongue/Initialize(mapload) diff --git a/code/modules/surgery/plastic_surgery.dm b/code/modules/surgery/plastic_surgery.dm index 909a658ffd..f1f2c11a05 100644 --- a/code/modules/surgery/plastic_surgery.dm +++ b/code/modules/surgery/plastic_surgery.dm @@ -13,8 +13,8 @@ user.visible_message("[user] begins to alter [target]'s appearance.", "You begin to alter [target]'s appearance...") /datum/surgery_step/reshape_face/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - if(target.status_flags & DISFIGURED) - target.status_flags &= ~DISFIGURED + if(target.has_trait(TRAIT_DISFIGURED, TRAIT_GENERIC)) + target.remove_trait(TRAIT_DISFIGURED, TRAIT_GENERIC) user.visible_message("[user] successfully restores [target]'s appearance!", "You successfully restore [target]'s appearance.") else var/oldname = target.real_name diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm new file mode 100644 index 0000000000..001952ea65 --- /dev/null +++ b/code/modules/unit_tests/_unit_tests.dm @@ -0,0 +1,5 @@ +//include unit test files in this module in this ifdef + +#ifdef UNIT_TESTS +#include "unit_test.dm" +#endif diff --git a/code/modules/unit_tests/unit_test.dm b/code/modules/unit_tests/unit_test.dm new file mode 100644 index 0000000000..49974f2cb0 --- /dev/null +++ b/code/modules/unit_tests/unit_test.dm @@ -0,0 +1,77 @@ +/* + +Usage: +Override /Run() to run your test code + +Call Fail() to fail the test (You should specify a reason) + +You may use /New() and /Destroy() for setup/teardown respectively + +You can use the run_loc_bottom_left and run_loc_top_right to get turfs for testing + +*/ + +GLOBAL_DATUM(current_test, /datum/unit_test) +GLOBAL_VAR_INIT(failed_any_test, FALSE) +GLOBAL_VAR(test_log) + +/datum/unit_test + //Bit of metadata for the future maybe + var/list/procs_tested + + //usable vars + var/turf/run_loc_bottom_left + var/turf/run_loc_top_right + + //internal shit + var/succeeded = TRUE + var/list/fail_reasons + +/datum/unit_test/New() + run_loc_bottom_left = locate(1, 1, 1) + run_loc_top_right = locate(5, 5, 1) + +/datum/unit_test/Destroy() + //clear the test area + for(var/atom/movable/AM in block(run_loc_bottom_left, run_loc_top_right)) + qdel(AM) + return ..() + +/datum/unit_test/proc/Run() + Fail("Run() called parent or not implemented") + +/datum/unit_test/proc/Fail(reason = "No reason") + succeeded = FALSE + + if(!istext(reason)) + reason = "FORMATTED: [reason != null ? reason : "NULL"]" + + LAZYADD(fail_reasons, reason) + +/proc/RunUnitTests() + CHECK_TICK + + for(var/I in subtypesof(/datum/unit_test)) + var/datum/unit_test/test = new I + + GLOB.current_test = test + var/duration = REALTIMEOFDAY + + test.Run() + + duration = REALTIMEOFDAY - duration + GLOB.current_test = null + GLOB.failed_any_test |= !test.succeeded + + var/list/log_entry = list("[test.succeeded ? "PASS" : "FAIL"]: [I] [duration / 10]s") + var/list/fail_reasons = test.fail_reasons + + qdel(test) + + for(var/J in 1 to LAZYLEN(fail_reasons)) + log_entry += "\tREASON #[J]: [fail_reasons[J]]" + log_test(log_entry.Join("\n")) + + CHECK_TICK + + SSticker.force_ending = TRUE diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index d3b17ab013..3e7e026ef4 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -1061,7 +1061,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. /datum/uplink_item/device_tools/potion name = "Syndicate Sentience Potion" - item = /obj/item/slimepotion/sentience/nuclear + item = /obj/item/slimepotion/slime/sentience/nuclear desc = "A potion recovered at great risk by undercover syndicate operatives and then subsequently modified with syndicate technology. Using it will make any animal sentient, and bound to serve you, as well as implanting an internal radio for communication and an internal ID card for opening doors." cost = 4 include_modes = list(/datum/game_mode/nuclear) @@ -1293,6 +1293,17 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. limited_stock = 2 //you can't use more than two! restricted_roles = list("Shaft Miner") +/datum/uplink_item/device_tools/clown_bomb + name = "Clown Bomb" + desc = "The Clown bomb is a hilarious device capable of massive pranks. It has an adjustable timer, \ + with a minimum of 60 seconds, and can be bolted to the floor with a wrench to prevent \ + movement. The bomb is bulky and cannot be moved; upon ordering this item, a smaller beacon will be \ + transported to you that will teleport the actual bomb to it upon activation. Note that this bomb can \ + be defused, and some crew may attempt to do so." + item = /obj/item/device/sbeacondrop/clownbomb + cost = 15 + restricted_roles = list("Clown") + // Pointless /datum/uplink_item/badass category = "(Pointless) Badassery" @@ -1370,7 +1381,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. exclude_modes = list(/datum/game_mode/nuclear) cant_discount = TRUE var/starting_crate_value = 50 - + /datum/uplink_item/badass/surplus/super name = "Super Surplus Crate" desc = "A dusty SUPER-SIZED from the back of the Syndicate warehouse. Rumored to contain a valuable assortment of items, \ diff --git a/code/modules/vore/eating/belly_vr.dm b/code/modules/vore/eating/belly_vr.dm index 986e6aad5a..45c3c73498 100644 --- a/code/modules/vore/eating/belly_vr.dm +++ b/code/modules/vore/eating/belly_vr.dm @@ -287,7 +287,7 @@ internal_contents.Add(subprey) to_chat(subprey, "As [M] melts away around you, you find yourself in [owner]'s [name]") - //Drop all items into the belly/floor. + //Drop all items into the belly for(var/obj/item/W in M) if(!M.dropItemToGround(W)) qdel(W) diff --git a/code/modules/vore/eating/voreitems.dm b/code/modules/vore/eating/voreitems.dm index 1215605eac..a1d52d109a 100644 --- a/code/modules/vore/eating/voreitems.dm +++ b/code/modules/vore/eating/voreitems.dm @@ -1,22 +1,63 @@ -/obj/item/restraints/handcuffs/cable/vorecuffs - name = "vorecuffs" - desc = "Because Poojawa is at a loss for actually making people stop being muppets during vore." - icon_state = "vorecuffs" - lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' - materials = list() - breakouttime = 20 //Deciseconds = 2s - trashtype = /obj/item/restraints/handcuffs/cable/vorecuffs/used +// -------------- Sickshot ------------- +/obj/item/gun/energy/sickshot + name = "\improper MPA6 \'Sickshot\'" + desc = "A device that can trigger convusions in specific areas to eject foreign material from a host. Must be used very close to a target. Not for Combat usage." -/obj/item/restraints/handcuffs/cable/vorecuffs/used - desc = "You don't see this coder related vore trick." - icon_state = "vorecuffs_used" - item_state = "vorecuffs" + icon_state = "dragnet" + item_state = "dragnet" + ammo_x_offset = 1 + ammo_type = list(/obj/item/ammo_casing/energy/sickshot) -/obj/item/restraints/handcuffs/cable/vorecuffs/used/attack() - return +/obj/item/ammo_casing/energy/sickshot + projectile_type = /obj/item/projectile/sickshot + e_cost = 100 -/obj/structure/closet/crate/vore - name = "Slimy ooze" - desc = "A mass of ooze, with something within" - icon_state = "vore_ooze" +//Projectile +/obj/item/projectile/sickshot + name = "sickshot pulse" + icon_state = "e_netting" + damage = 1 + damage_type = STAMINA + range = 2 + +/obj/item/projectile/sickshot/on_hit(var/atom/movable/target, var/blocked = 0) + if(iscarbon(target)) + var/mob/living/carbon/H = target + if(prob(5)) + for(var/X in H.vore_organs) + var/datum/belly/B = H.vore_organs[X] + B.release_all_contents() + H.visible_message("[H] contracts strangely, spewing out contents on the floor!", \ + "You spew out everything inside you on the floor!") + return + + +////////////////////////// Anti-Noms Drugs ////////////////////////// + +/datum/reagent/medicine/ickypak + name = "Ickypak" + id = "ickypak" + description = "A foul-smelling green liquid, for inducing muscle contractions to expel accidentally ingested things." + reagent_state = LIQUID + color = "#0E900E" + metabolization_rate = 0.25 * REAGENTS_METABOLISM + +/datum/reagent/medicine/ickypak/on_mob_life(var/mob/living/M, method=INGEST) + if(prob(10)) + M.visible_message("[M] retches!", \ + "You don't feel good...") + for(var/I in M.vore_organs) + var/datum/belly/B = M.vore_organs[I] + for(var/atom/movable/A in B.internal_contents) + if(prob(55)) + playsound(M, 'sound/effects/splat.ogg', 50, 1) + B.release_specific_contents(A) + M.visible_message("[M] contracts strangely, spewing out something!", \ + "You spew out something from inside you!") + return ..() + +/datum/chemical_reaction/ickypak + name = "Ickypak" + id = "ickypak" + results = list("ickypak" = 2) + required_reagents = list("chlorine" = 2 , "oil" = 1) \ No newline at end of file diff --git a/code/modules/zombie/items.dm b/code/modules/zombie/items.dm index f203af610a..cc42b7a67e 100644 --- a/code/modules/zombie/items.dm +++ b/code/modules/zombie/items.dm @@ -11,7 +11,7 @@ var/icon_left = "bloodhand_left" var/icon_right = "bloodhand_right" hitsound = 'sound/hallucinations/growl1.ogg' - force = 20 + force = 21 // Just enough to break airlocks with melee attacks damtype = "brute" var/removing_airlock = FALSE diff --git a/config/admin_nicknames.txt b/config/admin_nicknames.txt new file mode 100644 index 0000000000..76198b6c05 --- /dev/null +++ b/config/admin_nicknames.txt @@ -0,0 +1,2 @@ +Badmin +Spanmin \ No newline at end of file diff --git a/config/admin_ranks.txt b/config/admin_ranks.txt index 3cf5cbfb72..2c87bda64b 100644 --- a/config/admin_ranks.txt +++ b/config/admin_ranks.txt @@ -19,7 +19,7 @@ # +BAN = the ability to ban, jobban and fullban # +STEALTH = the ability to stealthmin (make yourself appear with a fake name to everyone but other admins # +POSSESS = the ability to possess objects -# +REJUV (or +REJUVINATE) = the ability to heal, respawn, modify damage and use godmode +# +POLL (or +POLL) = the ability to create in game server polls (requires DB) # +BUILD (or +BUILDMODE) = the ability to use buildmode # +SERVER = higher-risk admin verbs and abilities, such as those which affect the server configuration. # +DEBUG = debug tools used for diagnosing and fixing problems. It's useful to give this to coders so they can investigate problems on a live server. @@ -34,12 +34,12 @@ Admin Observer = -AUTOLOGIN Moderator = +ADMIN Admin Candidate = +@ -Trial Admin = +@ +SPAWN +REJUV +VAREDIT +BAN -Badmin = +@ +POSSESS +BUILDMODE +SERVER +FUN +Trial Admin = +@ +SPAWN +VAREDIT +BAN +Badmin = +@ +POSSESS +POLL +BUILDMODE +SERVER +FUN Game Admin = +@ +STEALTH +SOUNDS +DEBUG Game Master = +EVERYTHING Lazy Master = +EVERYTHING -AUTOLOGIN Host = +EVERYTHING -Coder = +DEBUG +VAREDIT +SERVER +SPAWN -AUTOLOGIN +Coder = +DEBUG +VAREDIT +SERVER +SPAWN +POLL -AUTOLOGIN diff --git a/config/admins.txt b/config/admins.txt index 0f5684b465..ca77fd3f4a 100644 --- a/config/admins.txt +++ b/config/admins.txt @@ -1,139 +1,9 @@ -############################################################################################### -# Basically, ckey goes first. Rank goes after the "=" # -# Case is not important for ckey. # -# Case IS important for the rank. # -# All punctuation (spaces etc) EXCEPT '-', '_' and '@' will be stripped from rank names. # -# Ranks can be anything defined in admin_ranks.txt # -# NOTE: if the rank-name cannot be found in admin_ranks.txt, they will not be adminned! ~Carn # -# NOTE: syntax was changed to allow hyphenation of ranknames, since spaces are stripped. # -############################################################################################### -<<<<<<< HEAD - -Jayehh = Host -======= -Optimumtact = Host -NewSta = Game Master -Expletives = Game Master -kingofkosmos = Game Master -MrStonedOne = Lazy Master -microscopics = Game Master -Gun Hog = Game Master -KorPhaeron = Game Master -razharas = Game Master -Lordpidey = Game Master -Niknakflak = Game Master -rolan7 = Game Master -quarxink = Game Master -adrix89 = Game Master -tle = Game Master -xsi = Game Master -scaredofshadows = Game Master -neofite = Game Master -trubblebass = Game Master -mport2004 = Game Master -deuryn = Game Master -agouri = Game Master -errorage = Game Master -superxpdude = Game Master -petethegoat = Game Master -korphaeron = Game Master -nodrak = Game Master -carnwennan = Game Master -ikarrus = Game Master -cheridan = Game Master -giacomand = Game Master -rockdtben = Game Master -sieve = Game Master -aranclanos = Game Master -intigracy = Game Master -dumpdavidson = Game Master -kazeespada = Game Master -malkevin = Game Master -incoming = Game Master -demas = Game Master -fleure = Game Master -ricotez = Game Master -misterperson = Game Master -crimsonvision = Game Master -iamgoofball = Game Master -zelacks = Game Master -androidsfv = Game Master -miggles = Game Master -jordie0608 = Game Master -s0ldi3rkr4s0 = Game Master -ergovisavi = Game Master -vistapowa = Game Master -miauw62 = Game Master -kazeespada = Game Master -rumia29 = Game Master -bobylein = Game Master -sirbayer = Game Master -hornygranny = Game Master -yota = Game Master -firecage = Game Master -donkieyo = Game Master -argoneus = Game Master -paprka = Game Master -cookingboy3 = Game Master -limeliz = Game Master -steelpoint = Game Master -phil235 = Game Master -CorruptComputer = Game Master -xxnoob = Game Master -tkdrg = Game Master -Cuboos = Game Master -thunder12345 = Game Master -wjohnston = Game Master -mandurrh = Game Master -thurgatar = Game Master -xerux = Game Master -dannno = Game Master -lo6a4evskiy = Game Master -vekter = Game Master -Ahammer18 = Game Master -ACCount12 = Game Master -fayrik = Game Master -shadowlight213 = Game Master -drovidicorv = Game Master -Dunc = Game Master -MMMiracles = Game Master -bear1ake = Game Master -CoreOverload = Game Master -Jalleo = Game Master -ChangelingRain = Game Master -FoxPMcCloud = Game Master -Xhuis = Game Master -Astralenigma = Game Master -Tokiko1 = Game Master -SuperSayu = Game Master -Lzimann = Game Master -As334 = Game Master -neersighted = Game Master -Swankcookie = Game Master -Ressler = Game Master -Folix = Game Master -Bawhoppennn = Game Master -Anturke = Host -Lumipharon = Game Master -bgobandit = Game Master -coiax = Game Master -RandomMarine = Game Master -PKPenguin321 = Game Master -TechnoAlchemist = Game Master -Aloraydrel = Game Master -Quiltyquilty = Game Master -SnipeDragon = Game Master -Fjeld = Game Master -kevinz000 = Game Master -Tacolizard = Game Master -TrustyGun = Game Master -Cyberboss = Game Master -PJB3005 = Game Master -Sweaterkittens = Game Master -Feemjmeem = Game Master -JStheguy = Game Master -excessiveuseofcobby = Game Master -Plizzard = Game Master -octareenroon91 = Game Master -Serpentarium = Game Master ->>>>>>> bdfbafd... [READY]integrated circuitry port+upgrade. (#32481) +############################################################################################### +# Basically, ckey goes first. Rank goes after the "=" # +# Case is not important for ckey. # +# Case IS important for the rank. # +# All punctuation (spaces etc) EXCEPT '-', '_' and '@' will be stripped from rank names. # +# Ranks can be anything defined in admin_ranks.txt # +# NOTE: if the rank-name cannot be found in admin_ranks.txt, they will not be adminned! ~Carn # +# NOTE: syntax was changed to allow hyphenation of ranknames, since spaces are stripped. # +############################################################################################### diff --git a/config/comms.txt b/config/comms.txt index 4408819f2e..865011032e 100644 --- a/config/comms.txt +++ b/config/comms.txt @@ -2,7 +2,9 @@ #COMMS_KEY default_pwd ## World address and port for server recieving cross server messages -#CROSS_SERVER_ADDRESS byond:\\address:port +## Use '+' to denote spaces in ServerName +## Repeat this entry to add more servers +#CROSS_SERVER ServerName byond:\\address:port ## Name that the server calls itself in communications #CROSS_COMMS_NAME diff --git a/config/config.txt b/config/config.txt index 5582a79250..0440549c88 100644 --- a/config/config.txt +++ b/config/config.txt @@ -35,6 +35,14 @@ ROUND_END_COUNTDOWN 90 ## This flag is automatically enabled if SQL_ENABLED isn't ADMIN_LEGACY_SYSTEM +## Comment this out if you want to use the SQL based mentor system, the legacy system uses mentors.txt. +## You need to set up your database to use the SQL based system. +## This flag is automatically enabled if SQL_ENABLED isn't +MENTOR_LEGACY_SYSTEM + +#Mentors only see ckeys by default. Uncomment to have them only see mob name +#MENTORS_MOBNAME_ONLY + ## Comment this out if you want to use the SQL based banning system. The legacy systems use the files in the data folder. You need to set up your database to use the SQL based system. BAN_LEGACY_SYSTEM @@ -62,6 +70,7 @@ BAN_LEGACY_SYSTEM ## Allows admins to bypass job playtime requirements. #USE_EXP_RESTRICTIONS_ADMIN_BYPASS + ## log OOC channel LOG_OOC @@ -123,6 +132,9 @@ LOG_MANIFEST ## Comment this out to stop admins being able to choose their personal ooccolor ALLOW_ADMIN_OOCCOLOR +## Job slot open/close by identification consoles delay in seconds +ID_CONSOLE_JOBSLOT_DELAY 30 + ## If metadata is supported ALLOW_METADATA @@ -253,6 +265,12 @@ TICKLAG 0.5 ## Uncomment this to let players see their own notes (they can still be set by admins only) #SEE_OWN_NOTES +### Comment these two out to prevent notes fading out over time for admins. +## Notes older then this will start fading out. +NOTE_FRESH_DAYS 91.31055 +## Notes older then this will be completely faded out. +NOTE_STALE_DAYS 365.2422 + ##Note: all population caps can be used with each other if desired. ## Uncomment for 'soft' population caps, players will be warned while joining if the living crew exceeds the listed number. @@ -401,4 +419,4 @@ DISABLE_HIGH_POP_MC_MODE_AMOUNT 60 ## By default, this is 15x15, which gets simplified to 7 by BYOND, as it is a 1:1 screen ratio. ## For reference, Goonstation uses a resolution of 21x15 for it's widescreen mode. ## Do note that changing this value will affect the title screen. The title screen will have to be updated manually if this is changed. -DEFAULT_VIEW 15x15 +DEFAULT_VIEW 21x15 diff --git a/config/game_options.txt b/config/game_options.txt index fb40070640..a3c6399013 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -61,7 +61,7 @@ ANIMAL_DELAY 1 ALERT_GREEN All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced. ALERT_BLUE_UPTO The station has received reliable information about possible hostile activity on the station. Security staff may have weapons visible, random searches are permitted. ALERT_BLUE_DOWNTO The immediate threat has passed. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still allowed. -ALERT_RED_UPTO There is an immediate serious threat to the station. Security may have weapons unholstered at all times. Random searches are allowed and advised. +ALERT_RED_UPTO There is an immediate serious threat to the station. Security may have weapons unholstered at all times. Random searches are allowed and advised. Additionally, access requirements on some doors have been lifted. ALERT_RED_DOWNTO The station's destruction has been averted. There is still however an immediate serious threat to the station. Security may have weapons unholstered at all times, random searches are allowed and advised. ALERT_DELTA Destruction of the station is imminent. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill. @@ -112,12 +112,6 @@ CONTINUOUS CULT CONTINUOUS CLOCKWORK_CULT CONTINUOUS CHANGELING CONTINUOUS WIZARD -<<<<<<< HEAD -CONTINUOUS BLOB -CONTINUOUS ABDUCTION -#CONTINUOUS RAGINMAGES -======= ->>>>>>> e38e6b8... Antag Panel / Check antagonists Refactor (#34236) #CONTINUOUS MONKEY ##Note: do not toggle continuous off for these modes, as they have no antagonists and would thus end immediately! @@ -140,18 +134,12 @@ MIDROUND_ANTAG CULT MIDROUND_ANTAG CLOCKWORK_CULT MIDROUND_ANTAG CHANGELING MIDROUND_ANTAG WIZARD -<<<<<<< HEAD -MIDROUND_ANTAG BLOB -MIDROUND_ANTAG ABDUCTION -#MIDROUND_ANTAG RAGINMAGES -======= ->>>>>>> e38e6b8... Antag Panel / Check antagonists Refactor (#34236) #MIDROUND_ANTAG MONKEY -## Uncomment these for overrides of the minimum / maximum number of players in a round type. +## Uncomment these for overrides of the minimum / maximum number of players in a round type. ## If you set any of these occasionally check to see if you still need them as the modes ## will still be actively rebalanced around the SUGGESTED populations, not your overrides. -## Notes: For maximum number of players a value of -1 means no maximum. Setting minimums to +## Notes: For maximum number of players a value of -1 means no maximum. Setting minimums to ## VERY low numbers (< 5) can lead to errors if the roundtypes were not designed for that. #MIN_POP TRAITOR 0 @@ -388,27 +376,17 @@ LAW_WEIGHT buildawall,0 ## Attempting to upload laws past this point will fail unless the AI is reset SILICON_MAX_LAW_AMOUNT 12 -## Uncomment to give players the choice of their species before they join the game -JOIN_WITH_MUTANT_RACE - - ## Roundstart Races ##------------------------------------------------------------------------------------------- ## Uncommenting races will allow them to be choosen at roundstart while join_with_muntant_race is on. You'll need at least one. ## You probably want humans on your space station, but technically speaking you can turn them off without any ill effect ROUNDSTART_RACES human -ROUNDSTART_RACES mammal -ROUNDSTART_RACES avian -ROUNDSTART_RACES aquatic -ROUNDSTART_RACES insect -ROUNDSTART_RACES xeno -ROUNDSTART_RACES datashark -ROUNDSTART_RACES guilmon ## Races that are strictly worse than humans that could probably be turned on without balance concerns ROUNDSTART_RACES lizard #ROUNDSTART_RACES fly +#ROUNDSTART_RACES moth ROUNDSTART_RACES plasmaman #ROUNDSTART_RACES shadow @@ -507,6 +485,18 @@ MICE_ROUNDSTART 10 ## If the percentage of players alive (doesn't count conversions) drops below this threshold the emergency shuttle will be forcefully called (provided it can be) #EMERGENCY_SHUTTLE_AUTOCALL_THRESHOLD 0.2 +## Determines if players are allowed to print integrated circuits, uncomment to allow. +#IC_PRINTING + +## CITADEL Races +ROUNDSTART_RACES mammal +ROUNDSTART_RACES avian +ROUNDSTART_RACES aquatic +ROUNDSTART_RACES insect +ROUNDSTART_RACES xeno +ROUNDSTART_RACES datashark +ROUNDSTART_RACES guilmon + ## CREW OBJECTIVES ## ## Comment to disable objectives for innocent crew members. ALLOW_CREW_OBJECTIVES @@ -520,3 +510,11 @@ ALLOW_MISCREANTS ## Determines if players are allowed to print integrated circuits, uncomment to allow. #IC_PRINTING + +## NIGHT SHIFT ## +## Comment to disable nightshift +NIGHTSHIFT_ENABLED + +## These values determine the start and end of night shift. By default, night shift starts at 8 PM, and ends at 6 AM. +NIGHTSHIFT_START 20 +NIGHTSHIFT_FINISH 6 diff --git a/config/maps.txt b/config/maps.txt index 4717a566cf..99a4543853 100644 --- a/config/maps.txt +++ b/config/maps.txt @@ -10,9 +10,10 @@ Format: maxplayers [number] (0 or less disables this requirement) default (The last map with this defined will get all votes of players who have not explicitly voted for a map) voteweight [number] (How much to count each player vote as, defaults to 1, setting to 0.5 counts each vote as half a vote, 2 as double, etc, Setting to 0 disables the map but allows players to still pick it) + disabled (disables the map) endmap -map tgstation2 +map boxstation default #voteweight 1.5 endmap @@ -32,3 +33,6 @@ endmap map deltastation minplayers 50 endmap + +map runtimestation +endmap \ No newline at end of file diff --git a/config/policies.txt b/config/policies.txt new file mode 100644 index 0000000000..1d01782c4c --- /dev/null +++ b/config/policies.txt @@ -0,0 +1,5 @@ +## SERVER POLICIES ## +# Each line is pure html that gets sent to the user under certain conditions + +# When a mob is polymorphed +POLYMORPH Note that you are allowed to act as an antagonist while transformed into a hostile mob, unless you volunteered for or sought out transformation. diff --git a/config/spaceRuinBlacklist.txt b/config/spaceRuinBlacklist.txt index 2999ada48c..2530d07a4e 100644 --- a/config/spaceRuinBlacklist.txt +++ b/config/spaceRuinBlacklist.txt @@ -18,6 +18,7 @@ #_maps/RandomRuins/SpaceRuins/derelict6.dmm #_maps/RandomRuins/SpaceRuins/spacebar.dmm #_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm +#_maps/RandomRuins/SpaceRuins/deepstorage.dmm #_maps/RandomRuins/SpaceRuins/emptyshell.dmm #_maps/RandomRuins/SpaceRuins/gasthelizards.dmm #_maps/RandomRuins/SpaceRuins/intactemptyship.dmm @@ -40,6 +41,5 @@ #_maps/RandomRuins/SpaceRuins/vaporwave.dmm #_maps/RandomRuins/SpaceRuins/bus.dmm #_maps/RandomRuins/SpaceRuins/miracle.dmm -#_maps/RandomRuins/SpaceRuins/dragoontomb.dmm #_maps/RandomRuins/SpaceRuins/oldstation.dmm #_maps/RandomRuins/SpaceRuins/whiteshipdock.dmm diff --git a/goon/icons/obj/closet.dmi b/goon/icons/obj/closet.dmi new file mode 100644 index 0000000000..6083923033 Binary files /dev/null and b/goon/icons/obj/closet.dmi differ diff --git a/html/browser/common.css b/html/browser/common.css index 1f9a355fd7..2f43c8c6d7 100644 --- a/html/browser/common.css +++ b/html/browser/common.css @@ -1,5 +1,5 @@ -body -{ +body +{ padding: 0; margin: 0; background-color: #272727; @@ -14,9 +14,9 @@ hr height: 1px; } -a, a:link, a:visited, a:active, .linkOn, .linkOff -{ - color: #ffffff; +a, button, a:link, a:visited, a:active, .linkOn, .linkOff +{ + color: #ffffff; text-decoration: none; background: #40628a; border: 1px solid #161616; @@ -25,15 +25,15 @@ a, a:link, a:visited, a:active, .linkOn, .linkOff cursor:default; } -a:hover -{ +a:hover +{ color: #40628a; background: #ffffff; } a.white, a.white:link, a.white:visited, a.white:active -{ - color: #40628a; +{ + color: #40628a; text-decoration: none; background: #ffffff; border: 1px solid #161616; @@ -42,22 +42,22 @@ a.white, a.white:link, a.white:visited, a.white:active cursor:default; } -a.white:hover -{ +a.white:hover +{ color: #ffffff; background: #40628a; } .linkOn, a.linkOn:link, a.linkOn:visited, a.linkOn:active, a.linkOn:hover -{ - color: #ffffff; +{ + color: #ffffff; background: #2f943c; border-color: #24722e; } .linkOff, a.linkOff:link, a.linkOff:visited, a.linkOff:active, a.linkOff:hover -{ - color: #ffffff; +{ + color: #ffffff; background: #999999; border-color: #666666; } @@ -89,15 +89,15 @@ li padding: 0 0 2px 0; } -img, a img -{ - border-style:none; +img, a img +{ + border-style:none; } h1, h2, h3, h4, h5, h6 { margin: 0; - padding: 16px 0 8px 0; + padding: 16px 0 8px 0; color: #517087; } @@ -146,7 +146,7 @@ h4 } .uiContent -{ +{ clear: both; padding: 8px; font-family: Verdana, Geneva, sans-serif; @@ -189,7 +189,7 @@ h4 } .notice.icon -{ +{ padding: 2px 4px 0 20px; } @@ -303,4 +303,71 @@ div.notice { width: 100%; clear: both; -} \ No newline at end of file +} + + +.switch { + position: relative; + display: inline-block; + width: 50px; + height: 26px; +} + +.switch input {display:none;} + +.slider { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #383838; + transition: .4s; +} + +.slider:before { + position: absolute; + content: ""; + height: 18px; + width: 18px; + left: 4px; + bottom: 4px; + background-color: #98B0C3; + transition: .4s; +} + +input:checked + .slider { + background-color: #40628a; +} + +input:focus + .slider { + box-shadow: 0 0 1px #2196F3; +} + +input:checked + .slider:before { + transform: translateX(24px); +} + +.switch span { + display: inline-block; + position: relative; + width: 60px; + margin-left: 60px; +} + +ul.sparse { + padding-bottom:20px; +} + +.sparse li { + margin-top: 2px; +} + +.slider.round { + border-radius: 34px; +} + +.slider.round:before { + border-radius: 50%; +} diff --git a/html/changelogs/AutoChangeLog-pr-4281.yml b/html/changelogs/AutoChangeLog-pr-4281.yml new file mode 100644 index 0000000000..b685347ec7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4281.yml @@ -0,0 +1,4 @@ +author: "deathride58" +delete-after: True +changes: + - rscadd: "When it's night time in the server's timezone, all lights aboard the station will dim to simulate a graveyard shift. It's possible for lights to dim in the middle of a shift." diff --git a/html/changelogs/AutoChangeLog-pr-4374.yml b/html/changelogs/AutoChangeLog-pr-4374.yml new file mode 100644 index 0000000000..feef86b179 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4374.yml @@ -0,0 +1,4 @@ +author: "deathride58" +delete-after: True +changes: + - rscadd: "Citadel is now widescreen by default." diff --git a/html/changelogs/AutoChangeLog-pr-5179.yml b/html/changelogs/AutoChangeLog-pr-5179.yml new file mode 100644 index 0000000000..b55c6f1a9d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5179.yml @@ -0,0 +1,4 @@ +author: "Cebutris" +delete-after: True +changes: + - rscadd: "Stunswords! Stunbatons that look like swords. That's all." diff --git a/html/changelogs/AutoChangeLog-pr-5226.yml b/html/changelogs/AutoChangeLog-pr-5226.yml new file mode 100644 index 0000000000..7754702bb8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5226.yml @@ -0,0 +1,4 @@ +author: "CosmicScientist" +delete-after: True +changes: + - balance: "tomatoes and similar ovary laden edibles are fruit, not veg, beware plasmamen and mothmen" diff --git a/html/changelogs/AutoChangeLog-pr-5227.yml b/html/changelogs/AutoChangeLog-pr-5227.yml new file mode 100644 index 0000000000..9137d84c4d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5227.yml @@ -0,0 +1,4 @@ +author: "Jittai" +delete-after: True +changes: + - bugfix: "Cloning doesn't runtime (and indefinitely get stuck) on cloning non-humans." diff --git a/html/changelogs/AutoChangeLog-pr-5231.yml b/html/changelogs/AutoChangeLog-pr-5231.yml new file mode 100644 index 0000000000..20148bd9f9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5231.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - rscdel: "Space ghost syndicate comms guy removed." diff --git a/html/changelogs/AutoChangeLog-pr-5234.yml b/html/changelogs/AutoChangeLog-pr-5234.yml new file mode 100644 index 0000000000..497219475b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5234.yml @@ -0,0 +1,4 @@ +author: "Xhuis" +delete-after: True +changes: + - balance: "Servant golems no longer appear in the magic mirror race list." diff --git a/html/changelogs/AutoChangeLog-pr-5236.yml b/html/changelogs/AutoChangeLog-pr-5236.yml new file mode 100644 index 0000000000..4be6d7557e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5236.yml @@ -0,0 +1,10 @@ +author: "Poojawa" +delete-after: True +changes: + - bugfix: "so many things." + - rscadd: "Vore eject gun given to medical lockers, same as defib. Looks like a dragnet. will eject people out of all vore bellies. May need to fire more than once." + - bugfix: "Dogborg item blacklist is a thing again, scrubpups are able to process items into fuel." + - tweak: "Dogborgs are able to consume devourable simple mobs for fuel or for weird ERP." + - tweak: "Stargazer slimes are admin-only, way too much of a bad idea to hand out willy nilly." + - tweak: "Genital layering refractored to use mutable appearance. Also no longer always present on character screen." + - bugfix: "probly other things I forgot I tweaked, like cake hat nerfing" diff --git a/html/changelogs/AutoChangeLog-pr-5243.yml b/html/changelogs/AutoChangeLog-pr-5243.yml new file mode 100644 index 0000000000..02e8d99a7e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5243.yml @@ -0,0 +1,5 @@ +author: "Zna12" +delete-after: True +changes: + - rscadd: "Added the AM4-B, Zero's personal version." + - rscadd: "Added the AM4-C, An autolathe craftable version. (Hidden behind the hacking like the others.)" diff --git a/html/changelogs/AutoChangeLog-pr-5250.yml b/html/changelogs/AutoChangeLog-pr-5250.yml new file mode 100644 index 0000000000..7a6428ae22 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5250.yml @@ -0,0 +1,4 @@ +author: "deathride58" +delete-after: True +changes: + - tweak: "The chatbox is now a liiiiittle darker to avoid contrasting as much with the dark UI" diff --git a/html/changelogs/AutoChangeLog-pr-5251.yml b/html/changelogs/AutoChangeLog-pr-5251.yml new file mode 100644 index 0000000000..db555577c1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5251.yml @@ -0,0 +1,4 @@ +author: "deathride58" +delete-after: True +changes: + - bugfix: "Genitals now reset properly between previews" diff --git a/html/changelogs/AutoChangeLog-pr-5252.yml b/html/changelogs/AutoChangeLog-pr-5252.yml new file mode 100644 index 0000000000..37bfc15568 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5252.yml @@ -0,0 +1,4 @@ +author: "deathride58" +delete-after: True +changes: + - tweak: "The input bar is now located right underneath the chatbox" diff --git a/html/changelogs/AutoChangeLog-pr-5253.yml b/html/changelogs/AutoChangeLog-pr-5253.yml new file mode 100644 index 0000000000..691dc5ff80 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5253.yml @@ -0,0 +1,4 @@ +author: "Improvedname" +delete-after: True +changes: + - rscadd: "more loadout stuff" diff --git a/html/changelogs/AutoChangeLog-pr-5254.yml b/html/changelogs/AutoChangeLog-pr-5254.yml new file mode 100644 index 0000000000..8bc456c5f2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5254.yml @@ -0,0 +1,4 @@ +author: "improvedname" +delete-after: True +changes: + - rscadd: "adds yeehaw to the dj's disco soundboard" diff --git a/html/changelogs/AutoChangeLog-pr-5255.yml b/html/changelogs/AutoChangeLog-pr-5255.yml new file mode 100644 index 0000000000..55e1005eeb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5255.yml @@ -0,0 +1,4 @@ +author: "Xhuis" +delete-after: True +changes: + - bugfix: "Races that have eyes that look different from regular humans' no longer have white eyespots where human eyes appear." diff --git a/html/changelogs/AutoChangeLog-pr-5256.yml b/html/changelogs/AutoChangeLog-pr-5256.yml new file mode 100644 index 0000000000..d8ae782a67 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5256.yml @@ -0,0 +1,5 @@ +author: "Xhuis" +delete-after: True +changes: + - balance: "Brass skewers now must be at least one tile apart." + - balance: "Steam vents can no longer be placed within cardinal directions of other steam vents, and will not hide objects they're placed on top of." diff --git a/html/changelogs/AutoChangeLog-pr-5257.yml b/html/changelogs/AutoChangeLog-pr-5257.yml new file mode 100644 index 0000000000..828c170b02 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5257.yml @@ -0,0 +1,4 @@ +author: "Epoc" +delete-after: True +changes: + - bugfix: "Soap now has inhand sprites" diff --git a/html/changelogs/AutoChangeLog-pr-5258.yml b/html/changelogs/AutoChangeLog-pr-5258.yml new file mode 100644 index 0000000000..6e463096b8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5258.yml @@ -0,0 +1,4 @@ +author: "Dax Dupont" +delete-after: True +changes: + - tweak: "Hijack objectives will only be given out if there are 30 or more players." diff --git a/html/changelogs/AutoChangeLog-pr-5260.yml b/html/changelogs/AutoChangeLog-pr-5260.yml new file mode 100644 index 0000000000..c9227f98ef --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5260.yml @@ -0,0 +1,4 @@ +author: "Xhuis, Cosmic, Fwoosh, and epochayur" +delete-after: True +changes: + - rscadd: "Added pineapples to botany, and a recipe for Hawaiian pizza." diff --git a/html/changelogs/AutoChangeLog-pr-5261.yml b/html/changelogs/AutoChangeLog-pr-5261.yml new file mode 100644 index 0000000000..6cb03a3d39 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5261.yml @@ -0,0 +1,4 @@ +author: "DeityLink" +delete-after: True +changes: + - rscadd: "You can now see the rays from a holopad displaying a hologram!" diff --git a/html/changelogs/AutoChangeLog-pr-5263.yml b/html/changelogs/AutoChangeLog-pr-5263.yml new file mode 100644 index 0000000000..7465adcf3d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5263.yml @@ -0,0 +1,4 @@ +author: "Improvedname" +delete-after: True +changes: + - rscadd: "Adds kinkmate board" diff --git a/html/changelogs/AutoChangeLog-pr-5264.yml b/html/changelogs/AutoChangeLog-pr-5264.yml new file mode 100644 index 0000000000..a5a138066b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5264.yml @@ -0,0 +1,4 @@ +author: "oranges" +delete-after: True +changes: + - rscdel: "removes ketrazine" diff --git a/html/changelogs/AutoChangeLog-pr-5265.yml b/html/changelogs/AutoChangeLog-pr-5265.yml new file mode 100644 index 0000000000..e0d8ed3dfb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5265.yml @@ -0,0 +1,4 @@ +author: "Xhuis" +delete-after: True +changes: + - bugfix: "Securing pipe fittings now transfers fingerprints to the new pipe." diff --git a/html/changelogs/AutoChangeLog-pr-5266.yml b/html/changelogs/AutoChangeLog-pr-5266.yml new file mode 100644 index 0000000000..c654800f07 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5266.yml @@ -0,0 +1,4 @@ +author: "Xhuis" +delete-after: True +changes: + - bugfix: "Servant cyborgs with the Standard module now correctly have Abscond." diff --git a/html/changelogs/AutoChangeLog-pr-5270.yml b/html/changelogs/AutoChangeLog-pr-5270.yml new file mode 100644 index 0000000000..42def967d5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5270.yml @@ -0,0 +1,4 @@ +author: "Xhuis" +delete-after: True +changes: + - bugfix: "The firelock below the Circuitry Lab airlock on Boxstation will no longer cover it up when the airlock is open." diff --git a/html/changelogs/AutoChangeLog-pr-5271.yml b/html/changelogs/AutoChangeLog-pr-5271.yml new file mode 100644 index 0000000000..86dc2f2234 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5271.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - code_imp: "Removed the now-unused revenant spawn landmark." diff --git a/html/changelogs/AutoChangeLog-pr-5274.yml b/html/changelogs/AutoChangeLog-pr-5274.yml new file mode 100644 index 0000000000..cbcad33f63 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5274.yml @@ -0,0 +1,6 @@ +author: "Dax Dupont" +delete-after: True +changes: + - tweak: "Moved the lathe from box's cargo room to box's cargo office which miners now can access." + - tweak: "Harmonized medbay storage access requirements so all maps allow all medbay personnel into medbay storage like on Meta and Delta." + - tweak: "Moved service lathes into a dedicated service hall/storage area if they weren't accessible by janitor or bartender." diff --git a/html/changelogs/AutoChangeLog-pr-5275.yml b/html/changelogs/AutoChangeLog-pr-5275.yml new file mode 100644 index 0000000000..e6144401ef --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5275.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Some airlock animations should no longer be glitchy and restart in the middle" diff --git a/html/changelogs/AutoChangeLog-pr-5276.yml b/html/changelogs/AutoChangeLog-pr-5276.yml new file mode 100644 index 0000000000..c2631addca --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5276.yml @@ -0,0 +1,4 @@ +author: "MrDoomBringer" +delete-after: True +changes: + - imageadd: "Conveyor Belts now look better when they are crowbar'd off the ground." diff --git a/html/changelogs/AutoChangeLog-pr-5281.yml b/html/changelogs/AutoChangeLog-pr-5281.yml new file mode 100644 index 0000000000..a1936eb7c7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5281.yml @@ -0,0 +1,4 @@ +author: "Kor" +delete-after: True +changes: + - bugfix: "Fixed mecha grav catapults not being included in techwebs." diff --git a/html/changelogs/AutoChangeLog-pr-5283.yml b/html/changelogs/AutoChangeLog-pr-5283.yml new file mode 100644 index 0000000000..a8008bfd43 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5283.yml @@ -0,0 +1,4 @@ +author: "MrDoomBringer" +delete-after: True +changes: + - rscadd: "Due to complicated quantum-bluespace-entanglement shenanigans, the Bluespace Drop Pod upgrade for the express supply console is now slightly more difficult to research." diff --git a/html/changelogs/AutoChangeLog-pr-5290.yml b/html/changelogs/AutoChangeLog-pr-5290.yml new file mode 100644 index 0000000000..e8c0fdd3b1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5290.yml @@ -0,0 +1,4 @@ +author: "ShizCalev" +delete-after: True +changes: + - rscadd: "The Syndicate Comms Officer ghost role has been readded with a minor chance of actually existing." diff --git a/html/changelogs/AutoChangeLog-pr-5291.yml b/html/changelogs/AutoChangeLog-pr-5291.yml new file mode 100644 index 0000000000..f49edce0bb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5291.yml @@ -0,0 +1,4 @@ +author: "Slignerd" +delete-after: True +changes: + - balance: "Following an immense number of complaints filed by security and command personnel, the Captain's spare ID will from now on be placed inside his locker. We fail to see how this would help the Captain access the spare in the event he lost his ID, but the complainants have been VERY insistent." diff --git a/html/changelogs/AutoChangeLog-pr-5292.yml b/html/changelogs/AutoChangeLog-pr-5292.yml new file mode 100644 index 0000000000..0a620cfcc8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5292.yml @@ -0,0 +1,5 @@ +author: "Xhuis" +delete-after: True +changes: + - balance: "Integration cog power generation has been increased to 10 W per second (up from 5 W per second.) Power consumed from the APC remains at 5 W per second." + - balance: "Integration cogs will now continue generating power at half-speed when the APC they are in has no energy." diff --git a/html/changelogs/AutoChangeLog-pr-5293.yml b/html/changelogs/AutoChangeLog-pr-5293.yml new file mode 100644 index 0000000000..5ef0c7c365 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5293.yml @@ -0,0 +1,4 @@ +author: "ShiggyDiggyDo" +delete-after: True +changes: + - rscadd: "You can now win stylish steampunk watches at your local arcade machine!" diff --git a/html/changelogs/AutoChangeLog-pr-5294.yml b/html/changelogs/AutoChangeLog-pr-5294.yml new file mode 100644 index 0000000000..21c40b3b00 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5294.yml @@ -0,0 +1,5 @@ +author: "Robustin" +delete-after: True +changes: + - bugfix: "Command reports should now properly weight the appearance of modes based on their existence in our actual game rotation." + - balance: "The current mode now has a 35% chance of not appearing in the report." diff --git a/html/changelogs/AutoChangeLog-pr-5296.yml b/html/changelogs/AutoChangeLog-pr-5296.yml new file mode 100644 index 0000000000..1cbf8963bb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5296.yml @@ -0,0 +1,4 @@ +author: "Robustin" +delete-after: True +changes: + - bugfix: "Vape Pens (e-cigs) will now consume reagents proportional to the vape size and static smoke production." diff --git a/html/changelogs/AutoChangeLog-pr-5297.yml b/html/changelogs/AutoChangeLog-pr-5297.yml new file mode 100644 index 0000000000..00d121e8b2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5297.yml @@ -0,0 +1,5 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - rscadd: "The ability to throw drinks without spilling them has been moved from something bartender's just know how to do to a book that they spawn with, the ability has also been made into a toggle." + - rscadd: "Any number of people can read the book to learn the ability, and it can also be ordered in the bartending crate in cargo. Bartenders are encouraged to keep their trade secrets close to their stylish black vests." diff --git a/html/changelogs/AutoChangeLog-pr-5298.yml b/html/changelogs/AutoChangeLog-pr-5298.yml new file mode 100644 index 0000000000..0adccb3697 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5298.yml @@ -0,0 +1,5 @@ +author: "Dax Dupont" +delete-after: True +changes: + - rscadd: "Added logout button to the record screen in the security records console." + - rscadd: "Allows you to print photos that are in the security records." diff --git a/html/changelogs/AutoChangeLog-pr-5299.yml b/html/changelogs/AutoChangeLog-pr-5299.yml new file mode 100644 index 0000000000..9d7e7f4497 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5299.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - rscadd: "Destroying windows will now spawn tiny shards" diff --git a/html/changelogs/AutoChangeLog-pr-5300.yml b/html/changelogs/AutoChangeLog-pr-5300.yml new file mode 100644 index 0000000000..3ac75a68cc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5300.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - rscadd: "The Rapid Piping Device can now dispense transit tubes." diff --git a/html/changelogs/AutoChangeLog-pr-5302.yml b/html/changelogs/AutoChangeLog-pr-5302.yml new file mode 100644 index 0000000000..b8c110faf5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5302.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - rscadd: "Morgue trays now detect if a body inside them possesses a consciousness, and alerts people nearby" diff --git a/html/changelogs/AutoChangeLog-pr-5304.yml b/html/changelogs/AutoChangeLog-pr-5304.yml new file mode 100644 index 0000000000..13eb671eb8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5304.yml @@ -0,0 +1,4 @@ +author: "ShizCalev" +delete-after: True +changes: + - bugfix: "Fixed some broken cultist & wizard antagonist ghost polls." diff --git a/html/changelogs/AutoChangeLog-pr-5305.yml b/html/changelogs/AutoChangeLog-pr-5305.yml new file mode 100644 index 0000000000..f8060a68c7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5305.yml @@ -0,0 +1,5 @@ +author: "coiax" +delete-after: True +changes: + - balance: "Romerol is now effective on dead bodies, not just ones that are +still alive." diff --git a/html/changelogs/AutoChangeLog-pr-5306.yml b/html/changelogs/AutoChangeLog-pr-5306.yml new file mode 100644 index 0000000000..91459f1278 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5306.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "The pirate ship can now fly again." diff --git a/html/changelogs/AutoChangeLog-pr-5309.yml b/html/changelogs/AutoChangeLog-pr-5309.yml new file mode 100644 index 0000000000..a00a37a320 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5309.yml @@ -0,0 +1,4 @@ +author: "XDTM" +delete-after: True +changes: + - bugfix: "Fixes intelligence potions removing previously known mob languages" diff --git a/html/changelogs/AutoChangeLog-pr-5310.yml b/html/changelogs/AutoChangeLog-pr-5310.yml new file mode 100644 index 0000000000..3e22df90a9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5310.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Research investigate logs now actually include the name of the researcher." diff --git a/html/changelogs/AutoChangeLog-pr-5314.yml b/html/changelogs/AutoChangeLog-pr-5314.yml new file mode 100644 index 0000000000..83175d129f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5314.yml @@ -0,0 +1,4 @@ +author: "XDTM" +delete-after: True +changes: + - tweak: "Slime scanning now has a more readable output, especially when scanning multiple slimes at once" diff --git a/html/changelogs/AutoChangeLog-pr-5315.yml b/html/changelogs/AutoChangeLog-pr-5315.yml new file mode 100644 index 0000000000..235bdb221c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5315.yml @@ -0,0 +1,6 @@ +author: "Dax Dupont" +delete-after: True +changes: + - balance: "Regular cyborgs now start with a normal high capacity cell instead of a snowflake cell. Resulting in less confusing and 2.5MJ more electric charge." + - bugfix: "Fixed name of the upgraded power cell" + - refactor: "Removed duplicate cell giving code in transformation proc." diff --git a/icons/effects/128x128.dmi b/icons/effects/128x128.dmi index 5b73044c50..d916318402 100644 Binary files a/icons/effects/128x128.dmi and b/icons/effects/128x128.dmi differ diff --git a/icons/effects/187x381.dmi b/icons/effects/187x381.dmi deleted file mode 100644 index dd43297db5..0000000000 Binary files a/icons/effects/187x381.dmi and /dev/null differ diff --git a/icons/effects/211x247.dmi b/icons/effects/211x247.dmi deleted file mode 100644 index 35b25ffe14..0000000000 Binary files a/icons/effects/211x247.dmi and /dev/null differ diff --git a/icons/effects/254x361.dmi b/icons/effects/254x361.dmi deleted file mode 100644 index 4fd6543c32..0000000000 Binary files a/icons/effects/254x361.dmi and /dev/null differ diff --git a/icons/effects/340x428.dmi b/icons/effects/340x428.dmi deleted file mode 100644 index eb735c0ba9..0000000000 Binary files a/icons/effects/340x428.dmi and /dev/null differ diff --git a/icons/effects/96x32.dmi b/icons/effects/96x32.dmi index 69c2812053..937b2e8d42 100644 Binary files a/icons/effects/96x32.dmi and b/icons/effects/96x32.dmi differ diff --git a/icons/effects/96x96.dmi b/icons/effects/96x96.dmi index 644d2a0860..7c227e7744 100644 Binary files a/icons/effects/96x96.dmi and b/icons/effects/96x96.dmi differ diff --git a/icons/effects/beam.dmi b/icons/effects/beam.dmi index e7f61d605d..0731583733 100644 Binary files a/icons/effects/beam.dmi and b/icons/effects/beam.dmi differ diff --git a/icons/effects/clockwork.dmi b/icons/effects/clockwork.dmi deleted file mode 100644 index ae4461cb21..0000000000 Binary files a/icons/effects/clockwork.dmi and /dev/null differ diff --git a/icons/effects/cult_effects.dmi b/icons/effects/cult_effects.dmi index 925950b9a3..230eac74c3 100644 Binary files a/icons/effects/cult_effects.dmi and b/icons/effects/cult_effects.dmi differ diff --git a/icons/effects/lighting_object.png b/icons/effects/lighting_object.png deleted file mode 100644 index ac3a7fee38..0000000000 Binary files a/icons/effects/lighting_object.png and /dev/null differ diff --git a/icons/effects/mapping_helpers.dmi b/icons/effects/mapping_helpers.dmi new file mode 100644 index 0000000000..bc7db47066 Binary files /dev/null and b/icons/effects/mapping_helpers.dmi differ diff --git a/icons/effects/revenant.dmi b/icons/effects/revenant.dmi deleted file mode 100644 index 61386fc459..0000000000 Binary files a/icons/effects/revenant.dmi and /dev/null differ diff --git a/icons/minimaps/BirdboatStation_1.png b/icons/minimaps/BirdboatStation_1.png deleted file mode 100644 index a6c1a4dd93..0000000000 Binary files a/icons/minimaps/BirdboatStation_1.png and /dev/null differ diff --git a/icons/minimaps/DreamStation_1.png b/icons/minimaps/DreamStation_1.png deleted file mode 100644 index 75ac12fec8..0000000000 Binary files a/icons/minimaps/DreamStation_1.png and /dev/null differ diff --git a/icons/minimaps/Efficiency Station_1.png b/icons/minimaps/Efficiency Station_1.png deleted file mode 100644 index 3c952a2149..0000000000 Binary files a/icons/minimaps/Efficiency Station_1.png and /dev/null differ diff --git a/icons/minimaps/MiniStation_1.png b/icons/minimaps/MiniStation_1.png deleted file mode 100644 index 52689a1a57..0000000000 Binary files a/icons/minimaps/MiniStation_1.png and /dev/null differ diff --git a/icons/misc/fullscreen.dmi b/icons/misc/fullscreen.dmi deleted file mode 100644 index 4bf628bd41..0000000000 Binary files a/icons/misc/fullscreen.dmi and /dev/null differ diff --git a/icons/misc/language.dmi b/icons/misc/language.dmi index 4e627f16c7..dcd10a51b7 100644 Binary files a/icons/misc/language.dmi and b/icons/misc/language.dmi differ diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index 3a7b0648fd..5c2b85dcf6 100644 Binary files a/icons/mob/actions.dmi and b/icons/mob/actions.dmi differ diff --git a/icons/mob/actions/actions_cult.dmi b/icons/mob/actions/actions_cult.dmi index f96242ea9e..07432d2a27 100644 Binary files a/icons/mob/actions/actions_cult.dmi and b/icons/mob/actions/actions_cult.dmi differ diff --git a/icons/mob/actions/actions_silicon.dmi b/icons/mob/actions/actions_silicon.dmi index 5b198649ba..cd997a25ac 100644 Binary files a/icons/mob/actions/actions_silicon.dmi and b/icons/mob/actions/actions_silicon.dmi differ diff --git a/icons/mob/actions/actions_slime.dmi b/icons/mob/actions/actions_slime.dmi index 94cf319958..acf7a31c6e 100644 Binary files a/icons/mob/actions/actions_slime.dmi and b/icons/mob/actions/actions_slime.dmi differ diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi index 8504b18a4a..89ab95225c 100644 Binary files a/icons/mob/animal.dmi and b/icons/mob/animal.dmi differ diff --git a/icons/mob/augmentation/augments_standard.dmi b/icons/mob/augmentation/augments_standard.dmi deleted file mode 100644 index a532348d6d..0000000000 Binary files a/icons/mob/augmentation/augments_standard.dmi and /dev/null differ diff --git a/icons/mob/citadel_refs/datashark_parts.dmi b/icons/mob/citadel_refs/datashark_parts.dmi deleted file mode 100644 index 35a422964a..0000000000 Binary files a/icons/mob/citadel_refs/datashark_parts.dmi and /dev/null differ diff --git a/icons/mob/citadel_refs/snowflake_parts.dmi b/icons/mob/citadel_refs/snowflake_parts.dmi new file mode 100644 index 0000000000..98d5ceb09c Binary files /dev/null and b/icons/mob/citadel_refs/snowflake_parts.dmi differ diff --git a/icons/mob/human_parts.dmi b/icons/mob/human_parts.dmi index 773ec5f912..cad42b171c 100644 Binary files a/icons/mob/human_parts.dmi and b/icons/mob/human_parts.dmi differ diff --git a/icons/mob/human_parts_greyscale.dmi b/icons/mob/human_parts_greyscale.dmi index cbab2b0e8c..c65a214932 100644 Binary files a/icons/mob/human_parts_greyscale.dmi and b/icons/mob/human_parts_greyscale.dmi differ diff --git a/icons/mob/inhands/equipment/custodial_lefthand.dmi b/icons/mob/inhands/equipment/custodial_lefthand.dmi index b099ee1524..90ffd2495e 100644 Binary files a/icons/mob/inhands/equipment/custodial_lefthand.dmi and b/icons/mob/inhands/equipment/custodial_lefthand.dmi differ diff --git a/icons/mob/inhands/equipment/custodial_righthand.dmi b/icons/mob/inhands/equipment/custodial_righthand.dmi index 8e0174150a..33e708f8c9 100644 Binary files a/icons/mob/inhands/equipment/custodial_righthand.dmi and b/icons/mob/inhands/equipment/custodial_righthand.dmi differ diff --git a/icons/mob/inhands/equipment/shields_lefthand.dmi b/icons/mob/inhands/equipment/shields_lefthand.dmi index 9748457dc3..6b5ca3857d 100644 Binary files a/icons/mob/inhands/equipment/shields_lefthand.dmi and b/icons/mob/inhands/equipment/shields_lefthand.dmi differ diff --git a/icons/mob/inhands/equipment/shields_righthand.dmi b/icons/mob/inhands/equipment/shields_righthand.dmi index f67cbc6b9e..e3de91087a 100644 Binary files a/icons/mob/inhands/equipment/shields_righthand.dmi and b/icons/mob/inhands/equipment/shields_righthand.dmi differ diff --git a/icons/mob/inhands/weapons/polearms_lefthand.dmi b/icons/mob/inhands/weapons/polearms_lefthand.dmi index f07dc02a0b..5529edfa51 100644 Binary files a/icons/mob/inhands/weapons/polearms_lefthand.dmi and b/icons/mob/inhands/weapons/polearms_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons/polearms_righthand.dmi b/icons/mob/inhands/weapons/polearms_righthand.dmi index 510cb3b4da..e902dcdc3b 100644 Binary files a/icons/mob/inhands/weapons/polearms_righthand.dmi and b/icons/mob/inhands/weapons/polearms_righthand.dmi differ diff --git a/icons/mob/inhands/weapons/swords_lefthand.dmi b/icons/mob/inhands/weapons/swords_lefthand.dmi index 231a98f537..5e7b04a25a 100644 Binary files a/icons/mob/inhands/weapons/swords_lefthand.dmi and b/icons/mob/inhands/weapons/swords_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons/swords_righthand.dmi b/icons/mob/inhands/weapons/swords_righthand.dmi index 6b491b05ee..b330dc8f95 100644 Binary files a/icons/mob/inhands/weapons/swords_righthand.dmi and b/icons/mob/inhands/weapons/swords_righthand.dmi differ diff --git a/icons/mob/lavaland/dragon.dmi b/icons/mob/lavaland/dragon.dmi deleted file mode 100644 index 7cc2b92a17..0000000000 Binary files a/icons/mob/lavaland/dragon.dmi and /dev/null differ diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi index 8dabf5fce4..1649706279 100644 Binary files a/icons/mob/mob.dmi and b/icons/mob/mob.dmi differ diff --git a/icons/mob/screen1.dmi b/icons/mob/screen1.dmi deleted file mode 100644 index 51e5df832b..0000000000 Binary files a/icons/mob/screen1.dmi and /dev/null differ diff --git a/icons/mob/screen_full.dmi b/icons/mob/screen_full.dmi index 502e9ad3f9..76c3672627 100644 Binary files a/icons/mob/screen_full.dmi and b/icons/mob/screen_full.dmi differ diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index be23fa9f13..f35ef2c1a5 100644 Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ diff --git a/icons/mob/wings.dmi b/icons/mob/wings.dmi index 5f261b76fe..b2990a1509 100644 Binary files a/icons/mob/wings.dmi and b/icons/mob/wings.dmi differ diff --git a/icons/obj/aibots.dmi b/icons/obj/aibots.dmi deleted file mode 100644 index 860f76001b..0000000000 Binary files a/icons/obj/aibots.dmi and /dev/null differ diff --git a/icons/obj/assemblies.dmi b/icons/obj/assemblies.dmi index 6a862a263a..5714953e3f 100644 Binary files a/icons/obj/assemblies.dmi and b/icons/obj/assemblies.dmi differ diff --git a/icons/obj/atmospherics/pipes/transit_tube.dmi b/icons/obj/atmospherics/pipes/transit_tube.dmi index c3c7bdc07f..05958f34a6 100644 Binary files a/icons/obj/atmospherics/pipes/transit_tube.dmi and b/icons/obj/atmospherics/pipes/transit_tube.dmi differ diff --git a/icons/obj/atmospherics/pipes/transit_tube_pod.dmi b/icons/obj/atmospherics/pipes/transit_tube_pod.dmi deleted file mode 100644 index a52b80f820..0000000000 Binary files a/icons/obj/atmospherics/pipes/transit_tube_pod.dmi and /dev/null differ diff --git a/icons/obj/atmospherics/pipes/transit_tube_station.dmi b/icons/obj/atmospherics/pipes/transit_tube_station.dmi deleted file mode 100644 index ca8515fded..0000000000 Binary files a/icons/obj/atmospherics/pipes/transit_tube_station.dmi and /dev/null differ diff --git a/icons/obj/biogenerator.dmi b/icons/obj/biogenerator.dmi deleted file mode 100644 index 7989d6f355..0000000000 Binary files a/icons/obj/biogenerator.dmi and /dev/null differ diff --git a/icons/obj/bloodpack.dmi b/icons/obj/bloodpack.dmi index ac879aa33c..3a5b9fd706 100644 Binary files a/icons/obj/bloodpack.dmi and b/icons/obj/bloodpack.dmi differ diff --git a/icons/obj/decals.dmi b/icons/obj/decals.dmi index a5c487a184..3d382d25b3 100644 Binary files a/icons/obj/decals.dmi and b/icons/obj/decals.dmi differ diff --git a/icons/obj/doors/airlocks/abductor/overlays.dmi b/icons/obj/doors/airlocks/abductor/overlays.dmi index ddb3fffcb8..6bc8aae620 100644 Binary files a/icons/obj/doors/airlocks/abductor/overlays.dmi and b/icons/obj/doors/airlocks/abductor/overlays.dmi differ diff --git a/icons/obj/doors/airlocks/glass_large/overlays.dmi b/icons/obj/doors/airlocks/glass_large/overlays.dmi index f85a73d8e7..04e7d7093c 100644 Binary files a/icons/obj/doors/airlocks/glass_large/overlays.dmi and b/icons/obj/doors/airlocks/glass_large/overlays.dmi differ diff --git a/icons/obj/doors/airlocks/hatch/overlays.dmi b/icons/obj/doors/airlocks/hatch/overlays.dmi index e41af3e44c..affcbbf2ce 100644 Binary files a/icons/obj/doors/airlocks/hatch/overlays.dmi and b/icons/obj/doors/airlocks/hatch/overlays.dmi differ diff --git a/icons/obj/doors/airlocks/survival/survival.dmi b/icons/obj/doors/airlocks/survival/survival.dmi index 478834eb93..f6d8d3ce6b 100644 Binary files a/icons/obj/doors/airlocks/survival/survival.dmi and b/icons/obj/doors/airlocks/survival/survival.dmi differ diff --git a/icons/obj/doors/airlocks/survival/survival_overlays.dmi b/icons/obj/doors/airlocks/survival/survival_overlays.dmi index f6b0d8eb69..f8e62144cd 100644 Binary files a/icons/obj/doors/airlocks/survival/survival_overlays.dmi and b/icons/obj/doors/airlocks/survival/survival_overlays.dmi differ diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index 77c3b647bc..2053ca5b8e 100644 Binary files a/icons/obj/drinks.dmi and b/icons/obj/drinks.dmi differ diff --git a/icons/obj/food/food.dmi b/icons/obj/food/food.dmi index 26822c2c01..cd15db0552 100644 Binary files a/icons/obj/food/food.dmi and b/icons/obj/food/food.dmi differ diff --git a/icons/obj/food/pizzaspaghetti.dmi b/icons/obj/food/pizzaspaghetti.dmi index 245c737865..fe20d75248 100644 Binary files a/icons/obj/food/pizzaspaghetti.dmi and b/icons/obj/food/pizzaspaghetti.dmi differ diff --git a/icons/obj/guns/cit_guns.dmi b/icons/obj/guns/cit_guns.dmi index 69d8f37810..1cfa52b3cd 100644 Binary files a/icons/obj/guns/cit_guns.dmi and b/icons/obj/guns/cit_guns.dmi differ diff --git a/icons/obj/hydroponics/growing_fruits.dmi b/icons/obj/hydroponics/growing_fruits.dmi index 7207733b14..d309884be0 100644 Binary files a/icons/obj/hydroponics/growing_fruits.dmi and b/icons/obj/hydroponics/growing_fruits.dmi differ diff --git a/icons/obj/hydroponics/harvest.dmi b/icons/obj/hydroponics/harvest.dmi index 0426b2f1f0..742c02985d 100644 Binary files a/icons/obj/hydroponics/harvest.dmi and b/icons/obj/hydroponics/harvest.dmi differ diff --git a/icons/obj/hydroponics/seeds.dmi b/icons/obj/hydroponics/seeds.dmi index 8ce90d87d4..4c898aecd3 100644 Binary files a/icons/obj/hydroponics/seeds.dmi and b/icons/obj/hydroponics/seeds.dmi differ diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi deleted file mode 100644 index db20116e39..0000000000 Binary files a/icons/obj/items.dmi and /dev/null differ diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items_and_weapons.dmi index 3d26d56181..a1abe445a7 100644 Binary files a/icons/obj/items_and_weapons.dmi and b/icons/obj/items_and_weapons.dmi differ diff --git a/icons/obj/machines/defib_mount.dmi b/icons/obj/machines/defib_mount.dmi new file mode 100644 index 0000000000..3f6e3e1d17 Binary files /dev/null and b/icons/obj/machines/defib_mount.dmi differ diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi index bd5c8ebcfe..b2299a75fe 100644 Binary files a/icons/obj/projectiles.dmi and b/icons/obj/projectiles.dmi differ diff --git a/icons/obj/projectiles_impact.dmi b/icons/obj/projectiles_impact.dmi new file mode 100644 index 0000000000..42fe9621be Binary files /dev/null and b/icons/obj/projectiles_impact.dmi differ diff --git a/icons/obj/projectiles_muzzle.dmi b/icons/obj/projectiles_muzzle.dmi new file mode 100644 index 0000000000..4799b11b2f Binary files /dev/null and b/icons/obj/projectiles_muzzle.dmi differ diff --git a/icons/obj/projectiles_tracer.dmi b/icons/obj/projectiles_tracer.dmi new file mode 100644 index 0000000000..3270ac441b Binary files /dev/null and b/icons/obj/projectiles_tracer.dmi differ diff --git a/icons/obj/reagentfillings.dmi b/icons/obj/reagentfillings.dmi index e4a2ea7a34..6e7973ef6d 100644 Binary files a/icons/obj/reagentfillings.dmi and b/icons/obj/reagentfillings.dmi differ diff --git a/icons/obj/recycling.dmi b/icons/obj/recycling.dmi index c2bd8bcd53..7aaacf4524 100644 Binary files a/icons/obj/recycling.dmi and b/icons/obj/recycling.dmi differ diff --git a/icons/obj/shards.dmi b/icons/obj/shards.dmi index 5ae1402c36..a575ab292f 100644 Binary files a/icons/obj/shards.dmi and b/icons/obj/shards.dmi differ diff --git a/icons/obj/stationobjs.dmi b/icons/obj/stationobjs.dmi index 28b186f274..787f40a0b3 100644 Binary files a/icons/obj/stationobjs.dmi and b/icons/obj/stationobjs.dmi differ diff --git a/icons/obj/suitstorage.dmi b/icons/obj/suitstorage.dmi deleted file mode 100644 index e61f9567c6..0000000000 Binary files a/icons/obj/suitstorage.dmi and /dev/null differ diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi deleted file mode 100644 index 12052e7ab2..0000000000 Binary files a/icons/obj/weapons.dmi and /dev/null differ diff --git a/icons/turf/dirt.dmi b/icons/turf/dirt.dmi deleted file mode 100644 index 4f533a6228..0000000000 Binary files a/icons/turf/dirt.dmi and /dev/null differ diff --git a/icons/turf/floors/warning.dmi b/icons/turf/floors/warning.dmi deleted file mode 100644 index ece3f5a9e0..0000000000 Binary files a/icons/turf/floors/warning.dmi and /dev/null differ diff --git a/icons/turf/screen1_parallax.dmi b/icons/turf/screen1_parallax.dmi deleted file mode 100644 index cd0f232bbc..0000000000 Binary files a/icons/turf/screen1_parallax.dmi and /dev/null differ diff --git a/icons/turf/space_parallax1.dmi b/icons/turf/space_parallax1.dmi deleted file mode 100644 index a538bf0f0d..0000000000 Binary files a/icons/turf/space_parallax1.dmi and /dev/null differ diff --git a/icons/turf/space_parallax2.dmi b/icons/turf/space_parallax2.dmi deleted file mode 100644 index e93cc831d4..0000000000 Binary files a/icons/turf/space_parallax2.dmi and /dev/null differ diff --git a/icons/turf/space_parallax3.dmi b/icons/turf/space_parallax3.dmi deleted file mode 100644 index 2261ab17f7..0000000000 Binary files a/icons/turf/space_parallax3.dmi and /dev/null differ diff --git a/icons/turf/space_parallax4.dmi b/icons/turf/space_parallax4.dmi deleted file mode 100644 index 560bacd009..0000000000 Binary files a/icons/turf/space_parallax4.dmi and /dev/null differ diff --git a/interface/interface.dm b/interface/interface.dm index cfd3518a61..c362f9943e 100644 --- a/interface/interface.dm +++ b/interface/interface.dm @@ -81,6 +81,7 @@ var/adminhotkeys = {" Admin: +\tF3 = asay \tF5 = Aghost (admin-ghost) \tF6 = player-panel \tF7 = admin-pm diff --git a/interface/skin.dmf b/interface/skin.dmf index 24a4376d3a..8a2b53f5f1 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -68,6 +68,7 @@ window "mainwindow" left = "mapwindow" right = "infowindow" is-vert = true + splitter = 75 elem "input" type = INPUT pos = 5,420 @@ -248,4 +249,3 @@ window "statwindow" anchor2 = 100,100 is-default = true saved-params = "" - diff --git a/modular_citadel/code/_globalvars/lists/mobs.dm b/modular_citadel/code/_globalvars/lists/mobs.dm new file mode 100644 index 0000000000..5317685d00 --- /dev/null +++ b/modular_citadel/code/_globalvars/lists/mobs.dm @@ -0,0 +1,2 @@ +GLOBAL_LIST_EMPTY(mentors) //all clients whom are admins +GLOBAL_PROTECT(mentors) \ No newline at end of file diff --git a/modular_citadel/code/controllers/configuration/entries/general.dm b/modular_citadel/code/controllers/configuration/entries/general.dm new file mode 100644 index 0000000000..94acd4c48e --- /dev/null +++ b/modular_citadel/code/controllers/configuration/entries/general.dm @@ -0,0 +1,4 @@ +/datum/config_entry/flag/mentors_mobname_only + +/datum/config_entry/flag/mentor_legacy_system //Defines whether the server uses the legacy mentor system with mentors.txt or the SQL system + protection = CONFIG_ENTRY_LOCKED \ No newline at end of file diff --git a/modular_citadel/code/controllers/subsystem/cit_nightshift.dm b/modular_citadel/code/controllers/subsystem/cit_nightshift.dm new file mode 100644 index 0000000000..8f5fbeea62 --- /dev/null +++ b/modular_citadel/code/controllers/subsystem/cit_nightshift.dm @@ -0,0 +1,52 @@ +/obj/machinery/light + var/obeysnightshift = FALSE + var/nightshift = FALSE + +/obj/machinery/light/Initialize() + . = ..() + var/area/a = get_area(src) + if(a.type in GLOB.the_station_areas) + obeysnightshift = TRUE + SSnightshift.nightlights += src + +/obj/machinery/light/Destroy() + if(obeysnightshift && src in SSnightshift.nightlights) + SSnightshift.nightlights -= src + . = ..() + +SUBSYSTEM_DEF(nightshift) + name = "Night shift" + wait = 3000 + flags = SS_BACKGROUND + + var/nightshift = FALSE + var/nightshift_light_power = 0.45 + var/nightshift_light_color = "#FFDDCC" + var/nightshift_override = FALSE + + var/list/nightlights = list() + +/datum/controller/subsystem/nightshift/Initialize() + if(CONFIG_GET(flag/nightshift_enabled) && !nightshift_override) + var/nighttime = text2num(time2text(world.timeofday,"hh")) + if(!nightshift && ((nighttime >= CONFIG_GET(number/nightshift_start)) || (nighttime <= CONFIG_GET(number/nightshift_finish)))) + nightshift = TRUE + . = ..() + +/datum/controller/subsystem/nightshift/fire(resumed = 0) + if(CONFIG_GET(flag/nightshift_enabled) && !nightshift_override) + var/nighttime = text2num(time2text(world.timeofday,"hh")) + if(GLOB.security_level < SEC_LEVEL_RED && ((nighttime >= CONFIG_GET(number/nightshift_start)) || (nighttime <= CONFIG_GET(number/nightshift_finish)))) + if(!nightshift) + nightshift = TRUE + updatenightlights() + priority_announce("Good afternoon, crew. To reduce power consumption and stimulate the circadian rhythms of some species, all of the lights aboard the station have been dimmed for the night.", sound='sound/misc/notice2.ogg', sender_override="Automated Lighting System Announcement") + else if(nightshift) + nightshift = FALSE + updatenightlights() + priority_announce("Good morning, crew. As it is now day time, all of the lights aboard the station have been restored to their former brightness.", sound='sound/misc/notice2.ogg', sender_override="Automated Lighting System Announcement") + +/datum/controller/subsystem/nightshift/proc/updatenightlights() + for(var/obj/machinery/light/nightlight in nightlights) + if(nightlight) + nightlight.update(FALSE) diff --git a/modular_citadel/code/controllers/subsystem/shuttle.dm b/modular_citadel/code/controllers/subsystem/shuttle.dm new file mode 100644 index 0000000000..0ec7a375e5 --- /dev/null +++ b/modular_citadel/code/controllers/subsystem/shuttle.dm @@ -0,0 +1,6 @@ +/datum/controller/subsystem/shuttle/proc/autoEnd() //CIT CHANGE - allows shift to end after 3 hours has passed. + if(world.time > auto_call && EMERGENCY_IDLE_OR_RECALLED) //3 hours + SSshuttle.emergency.request(null, 1.5) + priority_announce("The shift has come to an end and the shuttle called.") + log_game("Round time limit reached. Shuttle has been auto-called.") + message_admins("Round time limit reached. Shuttle called.") \ No newline at end of file diff --git a/modular_citadel/code/datums/uplink_items_cit.dm b/modular_citadel/code/datums/uplink_items_cit.dm index 392e26ba71..ed412bb547 100644 --- a/modular_citadel/code/datums/uplink_items_cit.dm +++ b/modular_citadel/code/datums/uplink_items_cit.dm @@ -1,4 +1,4 @@ -/datum/uplink_item/stealthy_tools/syndi_borer +/*/datum/uplink_item/stealthy_tools/syndi_borer name = "Syndicate Brain Slug" desc = "A small cortical borer, modified to be completely loyal to the owner. \ Genetically infertile, these brain slugs can assist medically in a support role, or take direct action \ @@ -7,7 +7,7 @@ refundable = TRUE cost = 10 surplus = 20 //Let's not have this be too common - exclude_modes = list(/datum/game_mode/nuclear) + exclude_modes = list(/datum/game_mode/nuclear) */ /datum/uplink_item/stealthy_tools/holoparasite name="Holoparasite Injector" diff --git a/modular_citadel/code/game/objects/items/circuitboards/machine_circuitboards.dm b/modular_citadel/code/game/objects/items/circuitboards/machine_circuitboards.dm new file mode 100644 index 0000000000..e0abfbb574 --- /dev/null +++ b/modular_citadel/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -0,0 +1,4 @@ +/obj/item/circuitboard/machine/kinkmate + name = "Kinkmate Vendor (Machine Board)" + build_path = /obj/machinery/vending/kink + req_components = list(/obj/item/vending_refill/kink) \ No newline at end of file diff --git a/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm b/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm index 3c564f1807..682e6b6496 100644 --- a/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm +++ b/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm @@ -18,8 +18,7 @@ throw_speed = 3 throw_range = 5 sharpness = IS_SHARP - embed_chance = 40 - embedded_impact_pain_multiplier = 10 + embedding = list("embedded_pain_multiplier" = 6, "embed_chance" = 40, "embedded_fall_chance" = 10) armour_penetration = 0 block_chance = 60 light_color = "#37FFF7" @@ -317,7 +316,7 @@ unwield() return ..() - if(user.has_disability(DISABILITY_CLUMSY) && (wielded) && prob(40)) + if(user.has_trait(TRAIT_CLUMSY) && (wielded) && prob(40)) impale(user) return @@ -392,7 +391,7 @@ It appears to have a wooden grip and a shaved down guard." icon_state = "cxsword_hilt_traitor" armour_penetration = 35 - embed_chance = 75 + embedding = list("embedded_pain_multiplier" = 10, "embed_chance" = 70, "embedded_fall_chance" = 0) block_chance = 50 hitsound_on = 'sound/weapons/blade1.ogg' light_color = "#37F0FF" diff --git a/modular_citadel/code/game/objects/items/stunsword.dm b/modular_citadel/code/game/objects/items/stunsword.dm new file mode 100644 index 0000000000..3d541bb139 --- /dev/null +++ b/modular_citadel/code/game/objects/items/stunsword.dm @@ -0,0 +1,31 @@ +/obj/item/melee/baton/stunsword + name = "stunsword" + desc = "not actually sharp, this sword is functionally identical to a stunbaton" + icon = 'modular_citadel/icons/obj/stunsword.dmi' + icon_state = "stunsword" + item_state = "sword" + lefthand_file = 'modular_citadel/icons/mob/inhands/stunsword_left.dmi' + righthand_file = 'modular_citadel/icons/mob/inhands/stunsword_right.dmi' + +/obj/item/device/ssword_kit + name = "stunsword kit" + desc = "a modkit for making a stunbaton into a stunsword" + icon = 'icons/obj/vending_restock.dmi' + icon_state = "refill_donksoft" + var/product = /obj/item/melee/baton/stunsword //what it makes + var/list/fromitem = list(/obj/item/melee/baton, /obj/item/melee/baton/loaded) //what it needs + afterattack(obj/O, mob/user as mob) + if(istype(O, product)) + to_chat(user,"[O] is already modified!") + else if(O.type in fromitem) //makes sure O is the right thing + var/obj/item/melee/baton/B = O + if(!B.cell) //checks for a powercell in the baton. If there isn't one, continue. If there is, warn the user to take it out + new product(usr.loc) //spawns the product + user.visible_message("[user] modifies [O]!","You modify the [O]!") + qdel(O) //Gets rid of the baton + qdel(src) //gets rid of the kit + + else + to_chat(user,"Remove the powercell first!") //We make this check because the stunsword starts without a battery. + else + to_chat(user, " You can't modify [O] with this kit!") \ No newline at end of file diff --git a/code/game/objects/structures/beds_chairs/sofa.dm b/modular_citadel/code/game/objects/structures/beds_chairs/sofa.dm similarity index 100% rename from code/game/objects/structures/beds_chairs/sofa.dm rename to modular_citadel/code/game/objects/structures/beds_chairs/sofa.dm diff --git a/modular_citadel/code/init.dm b/modular_citadel/code/init.dm index 416c3f07c4..8432df7ac3 100644 --- a/modular_citadel/code/init.dm +++ b/modular_citadel/code/init.dm @@ -1,4 +1,26 @@ //init file stolen from hippie /proc/cit_initialize() - initialize_global_loadout_items() \ No newline at end of file + load_mentors() + initialize_global_loadout_items() + + //body parts and things + init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_body_markings, GLOB.mam_body_markings_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_tails, GLOB.mam_tails_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_ears, GLOB.mam_ears_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/mam_tails_animated, GLOB.mam_tails_animated_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/taur, GLOB.taur_list) +// init_sprite_accessory_subtypes(/datum/sprite_accessory/beaks/avian, GLOB.avian_beaks_list) +// init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/avian, GLOB.avian_tails_list) +// init_sprite_accessory_subtypes(/datum/sprite_accessory/avian_wings, GLOB.avian_wings_list) +// init_sprite_accessory_subtypes(/datum/sprite_accessory/avian_open_wings, GLOB.avian_open_wings_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/xeno_head, GLOB.xeno_head_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/xeno_tail, GLOB.xeno_tail_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/xeno_dorsal, GLOB.xeno_dorsal_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/penis, GLOB.cock_shapes_list) + for(var/K in GLOB.cock_shapes_list) + var/datum/sprite_accessory/penis/value = GLOB.cock_shapes_list[K] + GLOB.cock_shapes_icons[K] = value.icon_state + init_sprite_accessory_subtypes(/datum/sprite_accessory/vagina, GLOB.vagina_shapes_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/breasts, GLOB.breasts_shapes_list) + GLOB.breasts_size_list = list("a","b","c","d","e") //We need the list to choose from initialized, but it's no longer a sprite_accessory thing. \ No newline at end of file diff --git a/modular_citadel/code/modules/admin/admin.dm b/modular_citadel/code/modules/admin/admin.dm new file mode 100644 index 0000000000..8e3bc66a22 --- /dev/null +++ b/modular_citadel/code/modules/admin/admin.dm @@ -0,0 +1,6 @@ +/client/proc/citaPPoptions(mob/M) // why is this client and not /datum/admins? noone knows, in PP src == client, instead of holder. wtf. + var/body = "
" + if(M.client) + body += "Make mentor | " + body += "Remove mentor" + return body \ No newline at end of file diff --git a/modular_citadel/code/modules/admin/holder2.dm b/modular_citadel/code/modules/admin/holder2.dm new file mode 100644 index 0000000000..f581de8dfc --- /dev/null +++ b/modular_citadel/code/modules/admin/holder2.dm @@ -0,0 +1,14 @@ +/datum/admins + var/following = null + +/datum/admins/associate(client/C) + removeMentor(C.ckey) //safety to avoid multiple datums and other weird shit i cannot comprehend + ..() + if(istype(C)) + C.mentor_datum_set(TRUE) + +/datum/admins/disassociate() + if(owner) + owner.remove_mentor_verbs() + owner.mentor_datum = null + ..() \ No newline at end of file diff --git a/modular_citadel/code/modules/admin/secrets.dm b/modular_citadel/code/modules/admin/secrets.dm new file mode 100644 index 0000000000..9fbc8501dd --- /dev/null +++ b/modular_citadel/code/modules/admin/secrets.dm @@ -0,0 +1,8 @@ +/datum/admins/proc/CitadelMentorLogSecret() + var/dat = "Mentor Log
" + for(var/l in GLOB.mentorlog) + dat += "
  • [l]
  • " + + if(!GLOB.mentorlog.len) + dat += "No mentors have done anything this round!" + usr << browse(dat, "window=mentor_log") \ No newline at end of file diff --git a/modular_citadel/code/modules/admin/topic.dm b/modular_citadel/code/modules/admin/topic.dm new file mode 100644 index 0000000000..bdd8758882 --- /dev/null +++ b/modular_citadel/code/modules/admin/topic.dm @@ -0,0 +1,55 @@ +/datum/admins/proc/citaTopic(href, href_list) + +/datum/admins/proc/makeMentor(ckey) + if(!usr.client) + return + if (!check_rights(0)) + return + if(!ckey) + return + var/client/C = GLOB.directory[ckey] + if(C) + if(check_rights_for(C, R_ADMIN,0)) + to_chat(usr, "The client chosen is an admin! Cannot mentorize.") + return + if(SSdbcore.Connect()) + var/datum/DBQuery/query_get_mentor = SSdbcore.NewQuery("SELECT id FROM [format_table_name("mentor")] WHERE ckey = '[ckey]'") + if(query_get_mentor.NextRow()) + to_chat(usr, "[ckey] is already a mentor.") + return + var/datum/DBQuery/query_add_mentor = SSdbcore.NewQuery("INSERT INTO `[format_table_name("mentor")]` (`id`, `ckey`) VALUES (null, '[ckey]')") + if(!query_add_mentor.warn_execute()) + return + var/datum/DBQuery/query_add_admin_log = SSdbcore.NewQuery("INSERT INTO `[format_table_name("admin_log")]` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Added new mentor [ckey]');") + if(!query_add_admin_log.warn_execute()) + return + else + to_chat(usr, "Failed to establish database connection. The changes will last only for the current round.") + new /datum/mentors(ckey) + to_chat(usr, "New mentor added.") + +/datum/admins/proc/removeMentor(ckey) + if(!usr.client) + return + if (!check_rights(0)) + return + if(!ckey) + return + var/client/C = GLOB.directory[ckey] + if(C) + if(check_rights_for(C, R_ADMIN,0)) + to_chat(usr, "The client chosen is an admin, not a mentor! Cannot de-mentorize.") + return + C.remove_mentor_verbs() + C.mentor_datum = null + GLOB.mentors -= C + if(SSdbcore.Connect()) + var/datum/DBQuery/query_remove_mentor = SSdbcore.NewQuery("DELETE FROM [format_table_name("mentor")] WHERE ckey = '[ckey]'") + if(!query_remove_mentor.warn_execute()) + return + var/datum/DBQuery/query_add_admin_log = SSdbcore.NewQuery("INSERT INTO `[format_table_name("admin_log")]` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Removed mentor [ckey]');") + if(!query_add_admin_log.warn_execute()) + return + else + to_chat(usr, "Failed to establish database connection. The changes will last only for the current round.") + to_chat(usr, "Mentor removed.") \ No newline at end of file diff --git a/modular_citadel/code/modules/client/client_procs.dm b/modular_citadel/code/modules/client/client_procs.dm new file mode 100644 index 0000000000..5bb53ee0f2 --- /dev/null +++ b/modular_citadel/code/modules/client/client_procs.dm @@ -0,0 +1,14 @@ +/client/proc/mentor_datum_set(admin) + mentor_datum = GLOB.mentor_datums[ckey] + if(!mentor_datum && check_rights_for(src, R_ADMIN,0)) // admin with no mentor datum?let's fix that + new /datum/mentors(ckey) + if(mentor_datum) + if(!check_rights_for(src, R_ADMIN,0) && !admin) + GLOB.mentors |= src // don't add admins to this list too. + mentor_datum.owner = src + add_mentor_verbs() + mentor_memo_output("Show") + +/client/proc/is_mentor() // admins are mentors too. + if(mentor_datum || check_rights_for(src, R_ADMIN,0)) + return TRUE diff --git a/modular_citadel/code/modules/client/loadout/_donator.dm b/modular_citadel/code/modules/client/loadout/_donator.dm index d663d572cd..133973c0fa 100644 --- a/modular_citadel/code/modules/client/loadout/_donator.dm +++ b/modular_citadel/code/modules/client/loadout/_donator.dm @@ -142,6 +142,7 @@ name = "Russian flask" category = slot_in_backpack path = /obj/item/reagent_containers/food/drinks/flask/russian + cost = 2 ckeywhitelist = list("slomka") /datum/gear/stalkermask @@ -167,3 +168,9 @@ category = slot_w_uniform path = /obj/item/clothing/suit/vermillion ckeywhitelist = list("fractious") + +/datum/gear/AM4B + name = "Foam Force AM4-B" + category = slot_in_backpack + path = /obj/item/gun/ballistic/automatic/AM4B + ckeywhitelist = list("zeronetalpha") diff --git a/modular_citadel/code/modules/client/loadout/backpack.dm b/modular_citadel/code/modules/client/loadout/backpack.dm index 2779d6f124..1e3de1b4dd 100644 --- a/modular_citadel/code/modules/client/loadout/backpack.dm +++ b/modular_citadel/code/modules/client/loadout/backpack.dm @@ -18,6 +18,20 @@ category = slot_in_backpack path = /obj/item/toy/plush/slimeplushie +/datum/gear/plushvar + name = "Ratvar Plushie" + category = slot_in_backpack + path = /obj/item/toy/plush/plushvar + cost = 5 + restricted_roles = list("Chaplain") + +/datum/gear/narplush + name = "Narsie Plushie" + category = slot_in_backpack + path = /obj/item/toy/plush/narplush + cost = 5 + restricted_roles = list("Chaplain") + /datum/gear/dildo name = "Customizable dildo" category = slot_in_backpack diff --git a/modular_citadel/code/modules/client/loadout/glasses.dm b/modular_citadel/code/modules/client/loadout/glasses.dm index 68ba745311..23e9d5527b 100644 --- a/modular_citadel/code/modules/client/loadout/glasses.dm +++ b/modular_citadel/code/modules/client/loadout/glasses.dm @@ -7,17 +7,17 @@ name = "Eyepatch" category = slot_glasses path = /obj/item/clothing/glasses/eyepatch - + /datum/gear/heat name = "Heat goggles" category = slot_glasses path = /obj/item/clothing/glasses/heat - + /datum/gear/hipster name = "Hipster glasses" category = slot_glasses path = /obj/item/clothing/glasses/regular/hipster - + /datum/gear/jamjar name = "Jamjar glasses" category = slot_glasses @@ -33,7 +33,18 @@ category = slot_glasses path = /obj/item/clothing/glasses/orange +/datum/gear/red + name = "Red Glasses" + category = slot_glasses + path = /obj/item/clothing/glasses/red + /datum/gear/prescription name = "Prescription glasses" category = slot_glasses path = /obj/item/clothing/glasses/regular + +/datum/gear/sechud + name = "Security Hud" + category = slot_glasses + path = /obj/item/clothing/glasses/hud/security + restricted_roles = list("Security Officer", "Warden", "Head of Security") diff --git a/modular_citadel/code/modules/client/loadout/gloves.dm b/modular_citadel/code/modules/client/loadout/gloves.dm new file mode 100644 index 0000000000..ec67fbc0ec --- /dev/null +++ b/modular_citadel/code/modules/client/loadout/gloves.dm @@ -0,0 +1,4 @@ +/datum/gear/fingerless + name = "Fingerless Gloves" + category = slot_gloves + path = /obj/item/clothing/gloves/fingerless \ No newline at end of file diff --git a/modular_citadel/code/modules/client/loadout/hands.dm b/modular_citadel/code/modules/client/loadout/hands.dm index cc5e6b8e71..94815a7243 100644 --- a/modular_citadel/code/modules/client/loadout/hands.dm +++ b/modular_citadel/code/modules/client/loadout/hands.dm @@ -47,3 +47,15 @@ name = "Wallet" category = slot_hands path = /obj/item/storage/wallet + +/datum/gear/flask + name = "Flask" + category = slot_hands + path = /obj/item/reagent_containers/food/drinks/flask + cost = 2 + +/datum/gear/zippolighter + name = "Zippo Lighter" + category = slot_hands + path = /obj/item/lighter + cost = 2 diff --git a/modular_citadel/code/modules/client/loadout/head.dm b/modular_citadel/code/modules/client/loadout/head.dm index 66701903d5..1615e37625 100644 --- a/modular_citadel/code/modules/client/loadout/head.dm +++ b/modular_citadel/code/modules/client/loadout/head.dm @@ -1,6 +1,6 @@ /datum/gear/baseball name = "Ballcap" - category = slot_head + category = slot_head path = /obj/item/clothing/head/soft/mime /datum/gear/beanie @@ -37,3 +37,31 @@ name = "Slime hat" category = slot_head path = /obj/item/clothing/head/collectable/slime + +/datum/gear/fedora + name = "Fedora" + category = slot_head + path = /obj/item/clothing/head/fedora + +/datum/gear/that + name = "Top Hat" + category = slot_head + path = /obj/item/clothing/head/that + +/datum/gear/navybluehosberet + name = "Head of security's Naviblue beret" + category = slot_head + path = /obj/item/clothing/head/beret/sec/navyhos + restricted_roles = list("Head of Security") + +/datum/gear/navyblueofficerberet + name = "Security officer's Navyblue beret" + category = slot_head + path = /obj/item/clothing/head/beret/sec/navyofficer + restricted_roles = list("Security Officer") + +/datum/gear/navybluewardenberet + name = "Warden's navyblue beret" + category = slot_head + path = /obj/item/clothing/head/beret/sec/navywarden + restricted_roles = list("Warden") diff --git a/modular_citadel/code/modules/client/loadout/suit.dm b/modular_citadel/code/modules/client/loadout/suit.dm index 9e0a3272ab..7e08dce8bd 100644 --- a/modular_citadel/code/modules/client/loadout/suit.dm +++ b/modular_citadel/code/modules/client/loadout/suit.dm @@ -57,3 +57,31 @@ name = "Winter coat" category = slot_wear_suit path = /obj/item/clothing/suit/hooded/wintercoat + +/datum/gear/militaryjacket + name = "Military Jacket" + category = slot_wear_suit + path = /obj/item/clothing/suit/jacket/miljacket + +/datum/gear/ianshirt + name = "Ian Shirt" + category = slot_wear_suit + path = /obj/item/clothing/suit/ianshirt + +/datum/gear/navybluejackethos + name = "head of security's navyblue jacket" + category = slot_wear_suit + path = /obj/item/clothing/suit/security/hos + restricted_roles = list("Head of Security") + +/datum/gear/navybluejacketwarden + name = "warden navyblue jacket" + category = slot_wear_suit + path = /obj/item/clothing/suit/security/warden + restricted_roles = list("Warden") + +/datum/gear/navybluejacketofficer + name = "security officer's navyblue jacket" + category = slot_wear_suit + path = /obj/item/clothing/suit/security/officer + restricted_roles = list("Security Officer") \ No newline at end of file diff --git a/modular_citadel/code/modules/client/loadout/uniform.dm b/modular_citadel/code/modules/client/loadout/uniform.dm index f2936572a1..66d96ad910 100644 --- a/modular_citadel/code/modules/client/loadout/uniform.dm +++ b/modular_citadel/code/modules/client/loadout/uniform.dm @@ -78,6 +78,65 @@ category = slot_w_uniform path = /obj/item/clothing/under/kilt + +/datum/gear/navyblueuniformhos + name = "Head of Security navyblue uniform" + category = slot_w_uniform + path = /obj/item/clothing/under/rank/head_of_security/navyblue + restricted_roles = list("Head of Security") + +/datum/gear/navyblueuniformwarden + name = "Warden navyblue uniform" + category = slot_w_uniform + path = /obj/item/clothing/under/rank/warden/navyblue + restricted_roles = list("Warden") + +/datum/gear/navyblueuniformofficer + name = "security officer navyblue uniform" + category = slot_w_uniform + path = /obj/item/clothing/under/rank/security/navyblue + restricted_roles = list("Security officer") + +/datum/gear/camoshorts + name = "Camo Pants" + category = slot_w_uniform + path = /obj/item/clothing/under/pants/camo + +/datum/gear/bjeans + name = "Black Jeans" + category = slot_w_uniform + path = /obj/item/clothing/under/pants/blackjeans + +/datum/gear/cjeans + name = "Classic Jeans" + category = slot_w_uniform + path = /obj/item/clothing/under/pants/classicjeans + +/datum/gear/khaki + name = "Khaki Pants" + category = slot_w_uniform + path = /obj/item/clothing/under/pants/khaki + +/datum/gear/wpants + name = "White Pants" + category = slot_w_uniform + path = /obj/item/clothing/under/pants/white + +/datum/gear/rpants + name = "Red Pants" + category = slot_w_uniform + path = /obj/item/clothing/under/pants/red + +/datum/gear/tpants + name = "Tan Pants" + category = slot_w_uniform + path = /obj/item/clothing/under/pants/tan + +/datum/gear/trpants + name = "Track Pants" + category = slot_w_uniform + path = /obj/item/clothing/under/pants/track + /datum/gear/secskirt name = "Security skirt" category = slot_w_uniform @@ -89,3 +148,9 @@ category = slot_w_uniform path = /obj/item/clothing/under/rank/head_of_security/skirt restricted_roles = list("Head of Security") + +/datum/gear/turtleneck + name = "Tactitool Turtleneck" + category = slot_w_uniform + path = /obj/item/clothing/under/syndicate/cosmetic + diff --git a/modular_citadel/code/modules/client/verbs/who.dm b/modular_citadel/code/modules/client/verbs/who.dm new file mode 100644 index 0000000000..091dd7bf79 --- /dev/null +++ b/modular_citadel/code/modules/client/verbs/who.dm @@ -0,0 +1,125 @@ +/client/verb/mentorwho() + set category = "Mentor" + set name = "Mentorwho" + var/msg = "Current Mentors:\n" + for(var/X in GLOB.mentors) + var/client/C = X + if(!C) + GLOB.mentors -= C + continue // weird runtime that happens randomly + var/suffix = "" + if(holder) + if(isobserver(C.mob)) + suffix += " - Observing" + else if(istype(C.mob,/mob/dead/new_player)) + suffix += " - Lobby" + else + suffix += " - Playing" + + if(C.is_afk()) + suffix += " (AFK)" + msg += "\t[C][suffix]\n" + to_chat(src, msg) + +/client/verb/who() + set name = "Who" + set category = "OOC" + + var/msg = "" + + var/list/Lines = list() + if(length(GLOB.admins)) + Lines += "Admins:" + for(var/X in GLOB.admins) + var/client/C = X + if(C && C.holder && !C.holder.fakekey) + Lines += "\t [C.key][show_admin_info(C)] ([round(C.avgping, 1)]ms)" + if(length(GLOB.mentors)) + Lines += "Mentors:" + for(var/X in GLOB.mentors) + var/client/C = X + if(C) + Lines += "\t [C.key][show_admin_info(C)] ([round(C.avgping, 1)]ms)" + + Lines += "Players:" + for(var/X in sortList(GLOB.clients)) + var/client/C = X + if(!C) continue + var/key = C.key + if(C.holder && C.holder.fakekey) + key = C.holder.fakekey + Lines += "\t [key][show_admin_info(C)] ([round(C.avgping, 1)]ms)" + + for(var/line in Lines) + msg += "[line]\n" + + msg += "Total Players: [length(GLOB.clients)]" + to_chat(src, msg) + +/client/proc/show_admin_info(var/client/C) + if(!C) + return "" + + if(!check_rights_for(src, R_ADMIN)) + return "" + + var/entry = "" + if(C.holder && C.holder.fakekey) + entry += " (as [C.holder.fakekey])" + if (isnewplayer(C.mob)) + entry += " - In Lobby" + else + entry += " - Playing as [C.mob.real_name]" + switch(C.mob.stat) + if(UNCONSCIOUS) + entry += " - Unconscious" + if(DEAD) + if(isobserver(C.mob)) + var/mob/dead/observer/O = C.mob + if(O.started_as_observer) + entry += " - Observing" + else + entry += " - DEAD" + else + entry += " - DEAD" + if(is_special_character(C.mob)) + entry += " - Antagonist" + entry += " (?)" + return entry + +/client/verb/adminwho() + set category = "Admin" + set name = "Adminwho" + + var/msg = "Current Admins:\n" + if(check_rights_for(src, R_ADMIN)) + for(var/X in GLOB.admins) + var/client/C = X + if(!check_rights_for(C, R_ADMIN)) + continue + msg += "\t[C] is a [C.holder.rank]" + + if(C.holder.fakekey) + msg += " (as [C.holder.fakekey])" + + if(isobserver(C.mob)) + msg += " - Observing" + else if(isnewplayer(C.mob)) + msg += " - Lobby" + else + msg += " - Playing" + + if(C.is_afk()) + msg += " (AFK)" + msg += "\n" + else + for(var/X in GLOB.admins) + var/client/C = X + if(!check_rights_for(C, R_ADMIN)) + continue + if(C.is_afk()) + continue //Don't show afk admins to adminwho + if(!C.holder.fakekey) + msg += "\t[C] is a [C.holder.rank]\n" + msg += "Adminhelps are also sent to Discord. If no admins are available in game adminhelp anyways and an admin on Discord will see it and respond." + to_chat(src, msg) diff --git a/modular_citadel/code/modules/clothing/under.dm b/modular_citadel/code/modules/clothing/under.dm new file mode 100644 index 0000000000..bf77704122 --- /dev/null +++ b/modular_citadel/code/modules/clothing/under.dm @@ -0,0 +1,7 @@ +/obj/item/clothing/under/syndicate/cosmetic + name = "tactitool turtleneck" + desc = "Just looking at it makes you want to buy an SKS, go into the woods, and -operate-." + icon_state = "tactifool" + item_state = "bl_suit" + item_color = "tactifool" + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) \ No newline at end of file diff --git a/modular_citadel/code/modules/mentor/follow.dm b/modular_citadel/code/modules/mentor/follow.dm new file mode 100644 index 0000000000..7c53c5c0fb --- /dev/null +++ b/modular_citadel/code/modules/mentor/follow.dm @@ -0,0 +1,26 @@ +/client/proc/mentor_follow(mob/living/M) + if(!is_mentor()) + return + if(isnull(M)) + return + if(!ismob(usr)) + return + mentor_datum.following = M + usr.reset_perspective(M) + verbs += /client/proc/mentor_unfollow + to_chat(GLOB.admins, "MENTOR: [key_name(usr)] is now following [key_name(M)]") + to_chat(usr, "Click the \"Stop Following\" button in the Mentor tab to stop following [key_name(M)].") + log_mentor("[key_name(usr)] began following [key_name(M)]") + +/client/proc/mentor_unfollow() + set category = "Mentor" + set name = "Stop Following" + set desc = "Stop following the followed." + + if(!is_mentor()) + return + usr.reset_perspective() + verbs -= /client/proc/mentor_unfollow + to_chat(GLOB.admins, "MENTOR: [key_name(usr)] is no longer following [key_name(mentor_datum.following)]") + log_mentor("[key_name(usr)] stopped following [key_name(mentor_datum.following)]") + mentor_datum.following = null diff --git a/modular_citadel/code/modules/mentor/mentor.dm b/modular_citadel/code/modules/mentor/mentor.dm new file mode 100644 index 0000000000..e0cdf565b6 --- /dev/null +++ b/modular_citadel/code/modules/mentor/mentor.dm @@ -0,0 +1,113 @@ +GLOBAL_LIST_EMPTY(mentor_datums) +GLOBAL_PROTECT(mentor_datums) + +GLOBAL_VAR_INIT(mentor_href_token, GenerateToken()) +GLOBAL_PROTECT(mentor_href_token) + +/datum/mentors + var/name = "someone's mentor datum" + var/client/owner // the actual mentor, client type + var/target // the mentor's ckey + var/href_token // href token for mentor commands, uses the same token used by admins. + var/mob/following + +/datum/mentors/New(ckey) + if(!ckey) + QDEL_IN(src, 0) + throw EXCEPTION("Mentor datum created without a ckey") + return + target = ckey(ckey) + name = "[ckey]'s mentor datum" + href_token = GenerateToken() + GLOB.mentor_datums[target] = src + //set the owner var and load commands + owner = GLOB.directory[ckey] + if(owner) + owner.mentor_datum = src + owner.add_mentor_verbs() + if(!check_rights_for(owner, R_ADMIN,0)) // don't add admins to mentor list. + GLOB.mentors += owner + +/datum/mentors/proc/CheckMentorHREF(href, href_list) + var/auth = href_list["mentor_token"] + . = auth && (auth == href_token || auth == GLOB.mentor_href_token) + if(.) + return + var/msg = !auth ? "no" : "a bad" + message_admins("[key_name_admin(usr)] clicked an href with [msg] authorization key!") + if(CONFIG_GET(flag/debug_admin_hrefs)) + message_admins("Debug mode enabled, call not blocked. Please ask your coders to review this round's logs.") + log_world("UAH: [href]") + return TRUE + log_admin_private("[key_name(usr)] clicked an href with [msg] authorization key! [href]") + +/proc/RawMentorHrefToken(forceGlobal = FALSE) + var/tok = GLOB.mentor_href_token + if(!forceGlobal && usr) + var/client/C = usr.client + to_chat(world, C) + to_chat(world, usr) + if(!C) + CRASH("No client for HrefToken()!") + var/datum/mentors/holder = C.mentor_datum + if(holder) + tok = holder.href_token + return tok + +/proc/MentorHrefToken(forceGlobal = FALSE) + return "mentor_token=[RawMentorHrefToken(forceGlobal)]" + +/datum/mentors/Topic(href, href_list) + ..() + if(!usr || !usr.client || usr.client != owner || !usr.client.is_mentor()) + return + if(!CheckMentorHREF(href, href_list)) + return + if(href_list["mentor_msg"]) + if(CONFIG_GET(flag/mentors_mobname_only)) + var/mob/M = locate(href_list["mentor_msg"]) + usr.client.cmd_mentor_pm(M,null) + else + usr.client.cmd_mentor_pm(href_list["mentor_msg"],null) + return + + //Mentor Follow + if(href_list["mentor_follow"]) + var/mob/living/M = locate(href_list["mentor_follow"]) + + if(istype(M)) + usr.client.mentor_follow(M) + + return + +/proc/load_mentors() + GLOB.mentor_datums.Cut() + for(var/client/C in GLOB.mentors) + C.remove_mentor_verbs() + C.mentor_datum = null + GLOB.mentors.Cut() + if(CONFIG_GET(flag/mentor_legacy_system))//legacy + var/list/lines = world.file2list("config/mentors.txt") + for(var/line in lines) + if(!length(line)) + continue + if(findtextEx(line, "#", 1, 2)) + continue + new /datum/mentors(line) + else//Database + if(!SSdbcore.Connect()) + log_world("Failed to connect to database in load_mentors(). Reverting to legacy system.") + WRITE_FILE(GLOB.world_game_log, "Failed to connect to database in load_mentors(). Reverting to legacy system.") + CONFIG_SET(flag/mentor_legacy_system, TRUE) + load_mentors() + return + var/datum/DBQuery/query_load_mentors = SSdbcore.NewQuery("SELECT ckey FROM [format_table_name("mentor")]") + if(!query_load_mentors.Execute()) + return + while(query_load_mentors.NextRow()) + var/ckey = ckey(query_load_mentors.item[1]) + new /datum/mentors(ckey) + +// new client var: mentor_datum. Acts the same way holder does towards admin: it holds the mentor datum. if set, the guy's a mentor. +/client + var/datum/mentors/mentor_datum \ No newline at end of file diff --git a/code/modules/mentor/verbs/mentor_memo.dm b/modular_citadel/code/modules/mentor/mentor_memo.dm similarity index 78% rename from code/modules/mentor/verbs/mentor_memo.dm rename to modular_citadel/code/modules/mentor/mentor_memo.dm index 08302f7e7e..b9f6833e32 100644 --- a/code/modules/mentor/verbs/mentor_memo.dm +++ b/modular_citadel/code/modules/mentor/mentor_memo.dm @@ -1,8 +1,9 @@ /client/proc/mentor_memo() set name = "Mentor Memos" set category = "Server" - if(!check_rights(0)) return - if(!GLOB.dbcon.IsConnected()) + if(!check_rights(0)) + return + if(!SSdbcore.IsConnected()) to_chat(src, "Failed to establish database connection.") return var/memotask = input(usr,"Choose task.","Memo") in list("Show","Write","Edit","Remove") @@ -13,8 +14,9 @@ /client/proc/show_mentor_memo() set name = "Show Memos" set category = "Mentor" - if(!check_mentor()) return - if(!GLOB.dbcon.IsConnected()) + if(!is_mentor()) + return + if(!SSdbcore.IsConnected()) to_chat(src, "Failed to establish database connection.") return mentor_memo_output("Show") @@ -22,13 +24,13 @@ /client/proc/mentor_memo_output(task) if(!task) return - if(!GLOB.dbcon.IsConnected()) + if(!SSdbcore.IsConnected()) to_chat(src, "Failed to establish database connection.") return - var/sql_ckey = sanitizeSQL(src.ckey) + var/sql_ckey = sanitizeSQL(ckey) switch(task) if("Write") - var/DBQuery/query_memocheck = GLOB.dbcon.NewQuery("SELECT ckey FROM [format_table_name("mentor_memo")] WHERE ckey = '[sql_ckey]'") + var/datum/DBQuery/query_memocheck = SSdbcore.NewQuery("SELECT ckey FROM [format_table_name("mentor_memo")] WHERE ckey = '[sql_ckey]'") if(!query_memocheck.Execute()) var/err = query_memocheck.ErrorMsg() log_game("SQL ERROR obtaining ckey from memo table. Error : \[[err]\]\n") @@ -41,7 +43,7 @@ return memotext = sanitizeSQL(memotext) var/timestamp = SQLtime() - var/DBQuery/query_memoadd = GLOB.dbcon.NewQuery("INSERT INTO [format_table_name("mentor_memo")] (ckey, memotext, timestamp) VALUES ('[sql_ckey]', '[memotext]', '[timestamp]')") + var/datum/DBQuery/query_memoadd = SSdbcore.NewQuery("INSERT INTO [format_table_name("mentor_memo")] (ckey, memotext, timestamp) VALUES ('[sql_ckey]', '[memotext]', '[timestamp]')") if(!query_memoadd.Execute()) var/err = query_memoadd.ErrorMsg() log_game("SQL ERROR adding new memo. Error : \[[err]\]\n") @@ -49,7 +51,7 @@ log_admin("[key_name(src)] has set a mentor memo: [memotext]") message_admins("[key_name_admin(src)] has set a mentor memo:
    [memotext]") if("Edit") - var/DBQuery/query_memolist = GLOB.dbcon.NewQuery("SELECT ckey FROM [format_table_name("mentor_memo")]") + var/datum/DBQuery/query_memolist = SSdbcore.NewQuery("SELECT ckey FROM [format_table_name("mentor_memo")]") if(!query_memolist.Execute()) var/err = query_memolist.ErrorMsg() log_game("SQL ERROR obtaining ckey from memo table. Error : \[[err]\]\n") @@ -65,7 +67,7 @@ if(!target_ckey) return var/target_sql_ckey = sanitizeSQL(target_ckey) - var/DBQuery/query_memofind = GLOB.dbcon.NewQuery("SELECT memotext FROM [format_table_name("mentor_memo")] WHERE ckey = '[target_sql_ckey]'") + var/datum/DBQuery/query_memofind = SSdbcore.NewQuery("SELECT memotext FROM [format_table_name("mentor_memo")] WHERE ckey = '[target_sql_ckey]'") if(!query_memofind.Execute()) var/err = query_memofind.ErrorMsg() log_game("SQL ERROR obtaining memotext from memo table. Error : \[[err]\]\n") @@ -78,7 +80,7 @@ new_memo = sanitizeSQL(new_memo) var/edit_text = "Edited by [sql_ckey] on [SQLtime()] from
    [old_memo]
    to
    [new_memo]
    " edit_text = sanitizeSQL(edit_text) - var/DBQuery/update_query = GLOB.dbcon.NewQuery("UPDATE [format_table_name("mentor_memo")] SET memotext = '[new_memo]', last_editor = '[sql_ckey]', edits = CONCAT(IFNULL(edits,''),'[edit_text]') WHERE ckey = '[target_sql_ckey]'") + var/datum/DBQuery/update_query = SSdbcore.NewQuery("UPDATE [format_table_name("mentor_memo")] SET memotext = '[new_memo]', last_editor = '[sql_ckey]', edits = CONCAT(IFNULL(edits,''),'[edit_text]') WHERE ckey = '[target_sql_ckey]'") if(!update_query.Execute()) var/err = update_query.ErrorMsg() log_game("SQL ERROR editing memo. Error : \[[err]\]\n") @@ -90,7 +92,7 @@ log_admin("[key_name(src)] has edited [target_sql_ckey]'s mentor memo from [old_memo] to [new_memo]") message_admins("[key_name_admin(src)] has edited [target_sql_ckey]'s mentor memo from
    [old_memo]
    to
    [new_memo]") if("Show") - var/DBQuery/query_memoshow = GLOB.dbcon.NewQuery("SELECT ckey, memotext, timestamp, last_editor FROM [format_table_name("mentor_memo")]") + var/datum/DBQuery/query_memoshow = SSdbcore.NewQuery("SELECT ckey, memotext, timestamp, last_editor FROM [format_table_name("mentor_memo")]") if(!query_memoshow.Execute()) var/err = query_memoshow.ErrorMsg() log_game("SQL ERROR obtaining ckey, memotext, timestamp, last_editor from memo table. Error : \[[err]\]\n") @@ -110,7 +112,7 @@ return to_chat(src, output) if("Remove") - var/DBQuery/query_memodellist = GLOB.dbcon.NewQuery("SELECT ckey FROM [format_table_name("mentor_memo")]") + var/datum/DBQuery/query_memodellist = SSdbcore.NewQuery("SELECT ckey FROM [format_table_name("mentor_memo")]") if(!query_memodellist.Execute()) var/err = query_memodellist.ErrorMsg() log_game("SQL ERROR obtaining ckey from memo table. Error : \[[err]\]\n") @@ -126,7 +128,7 @@ if(!target_ckey) return var/target_sql_ckey = sanitizeSQL(target_ckey) - var/DBQuery/query_memodel = GLOB.dbcon.NewQuery("DELETE FROM [format_table_name("memo")] WHERE ckey = '[target_sql_ckey]'") + var/datum/DBQuery/query_memodel = SSdbcore.NewQuery("DELETE FROM [format_table_name("memo")] WHERE ckey = '[target_sql_ckey]'") if(!query_memodel.Execute()) var/err = query_memodel.ErrorMsg() log_game("SQL ERROR removing memo. Error : \[[err]\]\n") diff --git a/modular_citadel/code/modules/mentor/mentor_verbs.dm b/modular_citadel/code/modules/mentor/mentor_verbs.dm new file mode 100644 index 0000000000..ae23cbf5d6 --- /dev/null +++ b/modular_citadel/code/modules/mentor/mentor_verbs.dm @@ -0,0 +1,12 @@ +GLOBAL_PROTECT(mentor_verbs) +GLOBAL_LIST_INIT(mentor_verbs, list( + /client/proc/cmd_mentor_say, + /client/proc/show_mentor_memo + )) + +/client/proc/add_mentor_verbs() + if(mentor_datum) + verbs += GLOB.mentor_verbs + +/client/proc/remove_mentor_verbs() + verbs -= GLOB.mentor_verbs diff --git a/code/modules/mentor/verbs/mentorhelp.dm b/modular_citadel/code/modules/mentor/mentorhelp.dm similarity index 65% rename from code/modules/mentor/verbs/mentorhelp.dm rename to modular_citadel/code/modules/mentor/mentorhelp.dm index bb66eed19d..87b05a3f26 100644 --- a/code/modules/mentor/verbs/mentorhelp.dm +++ b/modular_citadel/code/modules/mentor/mentorhelp.dm @@ -1,39 +1,36 @@ /client/verb/mentorhelp(msg as text) set category = "Mentor" - set name = "mentorhelp" - - //remove out adminhelp verb temporarily to prevent spamming of mentors. - src.verbs -= /client/verb/mentorhelp - spawn(300) - src.verbs += /client/verb/mentorhelp // 30 second cool-down for mentorhelp + set name = "Mentorhelp" //clean the input msg if(!msg) return + + //remove out mentorhelp verb temporarily to prevent spamming of mentors. + verbs -= /client/verb/mentorhelp + spawn(300) + verbs += /client/verb/mentorhelp // 30 second cool-down for mentorhelp + msg = sanitize(copytext(msg,1,MAX_MESSAGE_LEN)) if(!msg) return if(!mob) return //this doesn't happen - var/show_char = config.mentors_mobname_only - var/mentor_msg = "MENTORHELP: [key_name_mentor(src, 1, 0, 0, show_char)]: [msg]" - var/admin_msg = "MENTORHELP: [ADMIN_FULLMONTY(src.mob)]: [msg]" + var/show_char = CONFIG_GET(flag/mentors_mobname_only) + var/mentor_msg = "MENTORHELP: [key_name_mentor(src, 1, 0, 1, show_char)]: [msg]" log_mentor("MENTORHELP: [key_name_mentor(src, 0, 0, 0, 0)]: [msg]") - for(var/client/X in GLOB.mentors) - to_chat(X, 'sound/items/bikehorn.ogg') + for(var/client/X in GLOB.mentors | GLOB.admins) + X << 'sound/items/bikehorn.ogg' to_chat(X, mentor_msg) - for(var/client/A in GLOB.admins) - to_chat(A, 'sound/items/bikehorn.ogg') - to_chat(A, admin_msg) - to_chat(src, "PM to-Mentors: [msg]") return /proc/get_mentor_counts() . = list("total" = 0, "afk" = 0, "present" = 0) - for(var/client/X in GLOB.mentors) + for(var/X in GLOB.mentors) + var/client/C = X .["total"]++ - if(X.is_afk()) + if(C.is_afk()) .["afk"]++ else .["present"]++ @@ -71,14 +68,14 @@ if(key) if(include_link) - if(config.mentors_mobname_only) - . += "" + if(CONFIG_GET(flag/mentors_mobname_only)) + . += "" else - . += "" + . += "" if(C && C.holder && C.holder.fakekey) . += "Administrator" - else if (char_name_only && config.mentors_mobname_only) + else if (char_name_only && CONFIG_GET(flag/mentors_mobname_only)) if(istype(C.mob,/mob/dead/new_player) || istype(C.mob, /mob/dead/observer)) //If they're in the lobby or observing, display their ckey . += key else if(C && C.mob) //If they're playing/in the round, only show the mob name @@ -96,6 +93,6 @@ . += "*no key*" if(include_follow) - . += " (F)" + . += " (F)" return . \ No newline at end of file diff --git a/code/modules/mentor/verbs/mentorpm.dm b/modular_citadel/code/modules/mentor/mentorpm.dm similarity index 67% rename from code/modules/mentor/verbs/mentorpm.dm rename to modular_citadel/code/modules/mentor/mentorpm.dm index 9a441d022f..881933d5d6 100644 --- a/code/modules/mentor/verbs/mentorpm.dm +++ b/modular_citadel/code/modules/mentor/mentorpm.dm @@ -2,8 +2,8 @@ /client/proc/cmd_mentor_pm_panel() set category = "Mentor" set name = "Mentor PM" - if(!holder) - to_chat(src, "Error: Mentor-PM-Panel: Only Mentors may use this command.") + if(!is_mentor()) + to_chat(src, "Error: Mentor-PM-Panel: Only Mentors and Admins may use this command.") return var/list/client/targets[0] for(var/client/T) @@ -12,7 +12,7 @@ var/list/sorted = sortList(targets) var/target = input(src,"To whom shall we send a message?","Mentor PM",null) in sorted|null cmd_mentor_pm(targets[target],null) - feedback_add_details("Mentor_verb","APM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + SSblackbox.record_feedback("tally", "Mentor_verb", 1, "APM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! //takes input from cmd_mentor_pm_context, cmd_Mentor_pm_panel or /client/Topic and sends them a PM. @@ -27,8 +27,8 @@ else if(istype(whom,/client)) C = whom if(!C) - if(holder) to_chat(src, "Error: Mentor-PM: Client not found.") - else mentorhelp(msg) //Mentor we are replying to left. Mentorhelp instead + if(is_mentor()) to_chat(src, "Error: Mentor-PM: Client not found.") + else mentorhelp(msg) //Mentor we are replying to left. Mentorhelp instead(check below) return //get message text, limit it's length.and clean/escape html @@ -37,8 +37,8 @@ if(!msg) return if(!C) - if(holder) to_chat(src, "Error: Mentor-PM: Client not found.") - else mentorhelp(msg) //Mentor we are replying to has vanished, Mentorhelp instead + if(is_mentor()) to_chat(src, "Error: Mentor-PM: Client not found.") + else mentorhelp(msg) //Mentor we are replying to has vanished, Mentorhelp instead (how the fuck does this work?let's hope it works,shrug) return msg = sanitize(copytext(msg,1,MAX_MESSAGE_LEN)) @@ -48,9 +48,9 @@ msg = emoji_parse(msg) C << 'sound/items/bikehorn.ogg' - var/show_char = config.mentors_mobname_only - if(check_mentor_other(C)) - if(check_mentor()) //both are mentors + var/show_char = CONFIG_GET(flag/mentors_mobname_only) + if(C.is_mentor()) + if(is_mentor())//both are mentors to_chat(C, "Mentor PM from-[key_name_mentor(src, C, 1, 0, 0)]: [msg]") to_chat(src, "Mentor PM to-[key_name_mentor(C, C, 1, 0, 0)]: [msg]") @@ -59,16 +59,13 @@ to_chat(src, "Mentor PM to-[key_name_mentor(C, C, 1, 0, 0)]: [msg]") else - if(check_mentor()) //sender is an mentor but recipient is not. + if(is_mentor()) //sender is an mentor but recipient is not. to_chat(C, "Mentor PM from-[key_name_mentor(src, C, 1, 0, 0)]: [msg]") to_chat(src, "Mentor PM to-[key_name_mentor(C, C, 1, 0, show_char)]: [msg]") //we don't use message_Mentors here because the sender/receiver might get it too - var/show_char_sender = !check_mentor_other(src) && config.mentors_mobname_only - var/show_char_recip = !check_mentor_other(C) && config.mentors_mobname_only - for(var/client/X in GLOB.mentors) + var/show_char_sender = !is_mentor() && CONFIG_GET(flag/mentors_mobname_only) + var/show_char_recip = !C.is_mentor() && CONFIG_GET(flag/mentors_mobname_only) + for(var/client/X in GLOB.mentors | GLOB.admins) if(X.key!=key && X.key!=C.key) //check client/X is an Mentor and isn't the sender or recipient - to_chat(X, "Mentor PM: [key_name_mentor(src, X, 0, 0, show_char_sender)]->[key_name_mentor(C, X, 0, 0, show_char_recip)]: \blue [msg]") //inform X - for(var/client/A in GLOB.admins) - if(A.key!=key && A.key!=C.key) //check client/A is an Mentor and isn't the sender or recipient - to_chat(A, "Mentor PM: [key_name_mentor(src, A, 0, 0, show_char_sender)]->[key_name_mentor(C, A, 0, 0, show_char_recip)]: \blue [msg]") //inform A \ No newline at end of file + to_chat(X, "Mentor PM: [key_name_mentor(src, X, 0, 0, show_char_sender)]->[key_name_mentor(C, X, 0, 0, show_char_recip)]: [msg]") //inform X \ No newline at end of file diff --git a/code/modules/mentor/verbs/mentorsay.dm b/modular_citadel/code/modules/mentor/mentorsay.dm similarity index 51% rename from code/modules/mentor/verbs/mentorsay.dm rename to modular_citadel/code/modules/mentor/mentorsay.dm index 377761bb89..b921f8863a 100644 --- a/code/modules/mentor/verbs/mentorsay.dm +++ b/modular_citadel/code/modules/mentor/mentorsay.dm @@ -2,7 +2,8 @@ set category = "Mentor" set name = "Msay" //Gave this shit a shorter name so you only have to time out "msay" rather than "mentor say" to use it --NeoFite set hidden = 1 - if(!check_mentor()) return + if(!is_mentor()) + return msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN) if(!msg) return @@ -10,13 +11,8 @@ msg = emoji_parse(msg) log_mentor("MSAY: [key_name(src)] : [msg]") - - if(check_rights(R_ADMIN,0)) - msg = "MENTOR: [key_name(src, 0, 0)]: [msg]" - to_chat(GLOB.mentors, msg) - to_chat(GLOB.admins, msg) - + if(check_rights_for(src, R_ADMIN,0)) + msg = "MENTOR: [key_name(src, 0, 0)]: [msg]" else - msg = "MENTOR: [key_name(src, 0, 0)]: [msg]" - to_chat(GLOB.mentors, msg) - to_chat(GLOB.admins, msg) + msg = "MENTOR: [key_name(src, 0, 0)]: [msg]" + to_chat(GLOB.admins | GLOB.mentors, msg) diff --git a/modular_citadel/code/modules/mob/living/carbon/human/life.dm b/modular_citadel/code/modules/mob/living/carbon/human/life.dm new file mode 100644 index 0000000000..1f7c39a5ff --- /dev/null +++ b/modular_citadel/code/modules/mob/living/carbon/human/life.dm @@ -0,0 +1,12 @@ +/mob/living/carbon/human/Life() + //citadel code + if(stat != DEAD) + handle_arousal() + . = ..() + +/mob/living/carbon/human/calculate_affecting_pressure(pressure) + if(ismob(loc)) + return ONE_ATMOSPHERE + if(istype(loc, /obj/item/device/dogborg/sleeper)) + return ONE_ATMOSPHERE + . = ..() \ No newline at end of file diff --git a/modular_citadel/icons/mob/inhands/stunsword_left.dmi b/modular_citadel/icons/mob/inhands/stunsword_left.dmi new file mode 100644 index 0000000000..68adffaa61 Binary files /dev/null and b/modular_citadel/icons/mob/inhands/stunsword_left.dmi differ diff --git a/modular_citadel/icons/mob/inhands/stunsword_right.dmi b/modular_citadel/icons/mob/inhands/stunsword_right.dmi new file mode 100644 index 0000000000..57ef58126e Binary files /dev/null and b/modular_citadel/icons/mob/inhands/stunsword_right.dmi differ diff --git a/power.dmi b/modular_citadel/icons/obj/power.dmi similarity index 100% rename from power.dmi rename to modular_citadel/icons/obj/power.dmi diff --git a/modular_citadel/icons/obj/stunsword.dmi b/modular_citadel/icons/obj/stunsword.dmi new file mode 100644 index 0000000000..bfe4b45cd9 Binary files /dev/null and b/modular_citadel/icons/obj/stunsword.dmi differ diff --git a/modular_citadel/interface/skin.dmf b/modular_citadel/interface/skin.dmf index e38b0dbd76..eca2dda112 100644 --- a/modular_citadel/interface/skin.dmf +++ b/modular_citadel/interface/skin.dmf @@ -1,5 +1,6 @@ macro "default" + menu "menu" elem name = "&File" @@ -61,8 +62,8 @@ window "mainwindow" menu = "menu" elem "split" type = CHILD - pos = 3,0 - size = 634x417 + pos = 0,0 + size = 637x440 anchor1 = 0,0 anchor2 = 100,100 background-color = #272727 @@ -70,29 +71,7 @@ window "mainwindow" left = "mapwindow" right = "infowindow" is-vert = true - elem "input" - type = INPUT - pos = 5,420 - size = 595x20 - anchor1 = 0,100 - anchor2 = 100,100 - font-size = 10 - background-color = #d3b5b5 - is-default = true - saved-params = "command" - elem "say" - type = BUTTON - pos = 600,420 - size = 37x20 - anchor1 = 100,100 - anchor2 = none - text-color = #ffffff - background-color = #272727 - saved-params = "is-checked" - text = "Chat" - command = ".winset \"say.is-checked=true ? input.command=\"!say \\\"\" : input.command=\"" - is-flat = true - button-type = pushbox + splitter = 75 elem "asset_cache_browser" type = BROWSER pos = 0,0 @@ -130,7 +109,6 @@ window "mapwindow" anchor2 = 100,100 font-family = "Arial" font-size = 7 - text-color = none is-default = true saved-params = "icon-size" zoom-mode = distort @@ -233,11 +211,39 @@ window "outputwindow" anchor2 = none background-color = #272727 saved-params = "pos;size;is-minimized;is-maximized" + titlebar = false + statusbar = false + can-close = false + can-minimize = false + can-resize = false is-pane = true + elem "input" + type = INPUT + pos = 2,460 + size = 595x20 + anchor1 = 0,100 + anchor2 = 100,100 + font-size = 10 + background-color = #d3b5b5 + is-default = true + saved-params = "command" + elem "say" + type = BUTTON + pos = 600,460 + size = 37x20 + anchor1 = 100,100 + anchor2 = none + text-color = #ffffff + background-color = #272727 + saved-params = "is-checked" + text = "Chat" + command = ".winset \"say.is-checked=true ? input.command=\"!say \\\"\" : input.command=\"" + is-flat = true + button-type = pushbox elem "browseroutput" type = BROWSER pos = 0,0 - size = 640x480 + size = 640x456 anchor1 = 0,0 anchor2 = 100,100 background-color = #272727 @@ -248,7 +254,7 @@ window "outputwindow" elem "output" type = OUTPUT pos = 0,0 - size = 640x480 + size = 640x456 anchor1 = 0,0 anchor2 = 100,100 text-color = #40628a @@ -259,7 +265,7 @@ window "outputwindow" window "statwindow" elem "statwindow" type = MAIN - pos = 0,0 + pos = 281,0 size = 640x480 anchor1 = none anchor2 = none @@ -279,4 +285,5 @@ window "statwindow" tab-text-color = #ffffff tab-background-color = #272727 prefix-color = #ebebeb - suffix-color = #ebebeb \ No newline at end of file + suffix-color = #ebebeb + diff --git a/modular_citadel/simplemob_vore_values.dm b/modular_citadel/simplemob_vore_values.dm index 9c141c6547..9a4740ef1b 100644 --- a/modular_citadel/simplemob_vore_values.dm +++ b/modular_citadel/simplemob_vore_values.dm @@ -54,6 +54,10 @@ /mob/living/simple_animal/hostile/poison/giant_spider devourable = TRUE +/mob/living/simple_animal/hostile/retaliate/poison/snake + devourable = TRUE + no_vore = FALSE //oh yes my pretty. + /mob/living/simple_animal/hostile/gorilla devourable = TRUE no_vore = FALSE diff --git a/sound/misc/Yeehaw.ogg b/sound/misc/Yeehaw.ogg new file mode 100644 index 0000000000..05bec20b9c Binary files /dev/null and b/sound/misc/Yeehaw.ogg differ diff --git a/storage.dmi b/storage.dmi deleted file mode 100644 index 91055cc42c..0000000000 Binary files a/storage.dmi and /dev/null differ diff --git a/strings/clockwork_cult_changelog.txt b/strings/clockwork_cult_changelog.txt index 5e6beedf2e..c963ca91d1 100644 --- a/strings/clockwork_cult_changelog.txt +++ b/strings/clockwork_cult_changelog.txt @@ -1,6 +1 @@ -When revived by a vitality matrix, servants will gain a 1-minute debuff that prevents revival again. -Vitality matrices must now be placed at least one tile apart. -Servants are now teleported to and locked on Reebe once the Ark starts. -Cyborgs are now damaged by brass skewers. -Vitality matrices no longer work on buckled mobs (including skewered ones.) -Pressure sensors have much less health. \ No newline at end of file +Stargazers have been removed. Integration cogs are now the primary way of creating power. \ No newline at end of file diff --git a/strings/names/moth.txt b/strings/names/moth.txt new file mode 100644 index 0000000000..ce1e4543f5 --- /dev/null +++ b/strings/names/moth.txt @@ -0,0 +1,40 @@ +Attacus +Ascalapha +Catocala +Hyalophora +Argema +Opodiphthera +Actias +Antheraea +Sphingidae +Helicoverpa +Spodoptera +Maruca +Thaumetopoea +Mythimna +Plutella +Timandra +Eugnorisma +Eacles +Epiphyas +Bombyx +Ochropleura +Xanthorhoe +Mythimna +Chloroclystis +Naenia +Aphomia +Eupithecia +Callosamia +Cryphia +Acherontia +Lymantria +Cydia +Ostrinia +Xestia +Plodia +Axylia +Naenia +Cucullia +Euplexia +Diarsia \ No newline at end of file diff --git a/strings/phobia.json b/strings/phobia.json index 343a475b56..f88750bbaf 100644 --- a/strings/phobia.json +++ b/strings/phobia.json @@ -59,5 +59,17 @@ "calcium", "the ride never ends", "doot" + ], + + "snakes": [ + "snake", + "snek", + "snecko", + "boop", + "slither", + "fangs", + "anaconda", + "viper", + "python" ] -} \ No newline at end of file +} diff --git a/tgstation.dme b/tgstation.dme index 9992b9f1df..af81f3d408 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -16,14 +16,11 @@ #include "_maps\_basemap.dm" #include "code\_compile_options.dm" #include "code\world.dm" -#include "code\__DATASTRUCTURES\globals.dm" -#include "code\__DATASTRUCTURES\heap.dm" -#include "code\__DATASTRUCTURES\linked_lists.dm" -#include "code\__DATASTRUCTURES\priority_queue.dm" -#include "code\__DATASTRUCTURES\stacks.dm" +#include "code\__DEFINES\_globals.dm" #include "code\__DEFINES\_tick.dm" #include "code\__DEFINES\access.dm" #include "code\__DEFINES\admin.dm" +#include "code\__DEFINES\antagonists.dm" #include "code\__DEFINES\atmospherics.dm" #include "code\__DEFINES\atom_hud.dm" #include "code\__DEFINES\callbacks.dm" @@ -62,6 +59,7 @@ #include "code\__DEFINES\mobs.dm" #include "code\__DEFINES\monkeys.dm" #include "code\__DEFINES\networks.dm" +#include "code\__DEFINES\obj_flags.dm" #include "code\__DEFINES\pinpointers.dm" #include "code\__DEFINES\pipe_construction.dm" #include "code\__DEFINES\preferences.dm" @@ -86,6 +84,7 @@ #include "code\__DEFINES\tgui.dm" #include "code\__DEFINES\time.dm" #include "code\__DEFINES\tools.dm" +#include "code\__DEFINES\traits.dm" #include "code\__DEFINES\turf_flags.dm" #include "code\__DEFINES\typeids.dm" #include "code\__DEFINES\voreconstants.dm" @@ -98,9 +97,11 @@ #include "code\__HELPERS\areas.dm" #include "code\__HELPERS\AStar.dm" #include "code\__HELPERS\cmp.dm" +#include "code\__HELPERS\dates.dm" #include "code\__HELPERS\files.dm" #include "code\__HELPERS\game.dm" #include "code\__HELPERS\global_lists.dm" +#include "code\__HELPERS\heap.dm" #include "code\__HELPERS\icon_smoothing.dm" #include "code\__HELPERS\icons.dm" #include "code\__HELPERS\level_traits.dm" @@ -290,6 +291,7 @@ #include "code\controllers\subsystem\processing\projectiles.dm" #include "code\datums\action.dm" #include "code\datums\ai_laws.dm" +#include "code\datums\armor.dm" #include "code\datums\beam.dm" #include "code\datums\browser.dm" #include "code\datums\callback.dm" @@ -300,6 +302,7 @@ #include "code\datums\datumvars.dm" #include "code\datums\dna.dm" #include "code\datums\dog_fashion.dm" +#include "code\datums\embedding_behavior.dm" #include "code\datums\emotes.dm" #include "code\datums\explosion.dm" #include "code\datums\forced_movement.dm" @@ -327,22 +330,6 @@ #include "code\datums\actions\beam_rifle.dm" #include "code\datums\actions\flightsuit.dm" #include "code\datums\actions\ninja.dm" -#include "code\datums\antagonists\abductor.dm" -#include "code\datums\antagonists\antag_datum.dm" -#include "code\datums\antagonists\blob.dm" -#include "code\datums\antagonists\brother.dm" -#include "code\datums\antagonists\changeling.dm" -#include "code\datums\antagonists\clockcult.dm" -#include "code\datums\antagonists\cult.dm" -#include "code\datums\antagonists\datum_traitor.dm" -#include "code\datums\antagonists\devil.dm" -#include "code\datums\antagonists\internal_affairs.dm" -#include "code\datums\antagonists\monkey.dm" -#include "code\datums\antagonists\ninja.dm" -#include "code\datums\antagonists\nukeop.dm" -#include "code\datums\antagonists\pirate.dm" -#include "code\datums\antagonists\revolution.dm" -#include "code\datums\antagonists\wizard.dm" #include "code\datums\brain_damage\brain_trauma.dm" #include "code\datums\brain_damage\imaginary_friend.dm" #include "code\datums\brain_damage\mild.dm" @@ -501,169 +488,31 @@ #include "code\game\area\areas\ruins\lavaland.dm" #include "code\game\area\areas\ruins\space.dm" #include "code\game\area\areas\ruins\templates.dm" -#include "code\game\gamemodes\antag_hud.dm" -#include "code\game\gamemodes\antag_spawner.dm" -#include "code\game\gamemodes\antag_spawner_cit.dm" -#include "code\game\gamemodes\antag_team.dm" -#include "code\game\gamemodes\cit_objectives.dm" #include "code\game\gamemodes\events.dm" #include "code\game\gamemodes\game_mode.dm" #include "code\game\gamemodes\objective.dm" #include "code\game\gamemodes\objective_items.dm" -#include "code\game\gamemodes\blob\blob_report.dm" -#include "code\game\gamemodes\blob\overmind.dm" -#include "code\game\gamemodes\blob\powers.dm" -#include "code\game\gamemodes\blob\theblob.dm" -#include "code\game\gamemodes\blob\blobs\blob_mobs.dm" -#include "code\game\gamemodes\blob\blobs\core.dm" -#include "code\game\gamemodes\blob\blobs\factory.dm" -#include "code\game\gamemodes\blob\blobs\node.dm" -#include "code\game\gamemodes\blob\blobs\resource.dm" -#include "code\game\gamemodes\blob\blobs\shield.dm" #include "code\game\gamemodes\brother\traitor_bro.dm" -#include "code\game\gamemodes\changeling\cellular_emporium.dm" #include "code\game\gamemodes\changeling\changeling.dm" -#include "code\game\gamemodes\changeling\changeling_power.dm" #include "code\game\gamemodes\changeling\traitor_chan.dm" -#include "code\game\gamemodes\changeling\powers\absorb.dm" -#include "code\game\gamemodes\changeling\powers\adrenaline.dm" -#include "code\game\gamemodes\changeling\powers\augmented_eyesight.dm" -#include "code\game\gamemodes\changeling\powers\biodegrade.dm" -#include "code\game\gamemodes\changeling\powers\chameleon_skin.dm" -#include "code\game\gamemodes\changeling\powers\digitalcamo.dm" -#include "code\game\gamemodes\changeling\powers\fakedeath.dm" -#include "code\game\gamemodes\changeling\powers\fleshmend.dm" -#include "code\game\gamemodes\changeling\powers\headcrab.dm" -#include "code\game\gamemodes\changeling\powers\hivemind.dm" -#include "code\game\gamemodes\changeling\powers\humanform.dm" -#include "code\game\gamemodes\changeling\powers\lesserform.dm" -#include "code\game\gamemodes\changeling\powers\linglink.dm" -#include "code\game\gamemodes\changeling\powers\mimic_voice.dm" -#include "code\game\gamemodes\changeling\powers\mutations.dm" -#include "code\game\gamemodes\changeling\powers\panacea.dm" -#include "code\game\gamemodes\changeling\powers\regenerate.dm" -#include "code\game\gamemodes\changeling\powers\revive.dm" -#include "code\game\gamemodes\changeling\powers\shriek.dm" -#include "code\game\gamemodes\changeling\powers\spiders.dm" -#include "code\game\gamemodes\changeling\powers\strained_muscles.dm" -#include "code\game\gamemodes\changeling\powers\tiny_prick.dm" -#include "code\game\gamemodes\changeling\powers\transform.dm" #include "code\game\gamemodes\clock_cult\clock_cult.dm" -#include "code\game\gamemodes\clock_cult\clock_effect.dm" -#include "code\game\gamemodes\clock_cult\clock_item.dm" -#include "code\game\gamemodes\clock_cult\clock_mobs.dm" -#include "code\game\gamemodes\clock_cult\clock_scripture.dm" -#include "code\game\gamemodes\clock_cult\clock_structure.dm" -#include "code\game\gamemodes\clock_cult\clock_effects\city_of_cogs_rift.dm" -#include "code\game\gamemodes\clock_cult\clock_effects\clock_overlay.dm" -#include "code\game\gamemodes\clock_cult\clock_effects\clock_sigils.dm" -#include "code\game\gamemodes\clock_cult\clock_effects\general_markers.dm" -#include "code\game\gamemodes\clock_cult\clock_effects\servant_blocker.dm" -#include "code\game\gamemodes\clock_cult\clock_effects\spatial_gateway.dm" -#include "code\game\gamemodes\clock_cult\clock_helpers\clock_powerdrain.dm" -#include "code\game\gamemodes\clock_cult\clock_helpers\component_helpers.dm" -#include "code\game\gamemodes\clock_cult\clock_helpers\fabrication_helpers.dm" -#include "code\game\gamemodes\clock_cult\clock_helpers\hierophant_network.dm" -#include "code\game\gamemodes\clock_cult\clock_helpers\power_helpers.dm" -#include "code\game\gamemodes\clock_cult\clock_helpers\ratvarian_language.dm" -#include "code\game\gamemodes\clock_cult\clock_helpers\scripture_checks.dm" -#include "code\game\gamemodes\clock_cult\clock_helpers\slab_abilities.dm" -#include "code\game\gamemodes\clock_cult\clock_items\clock_components.dm" -#include "code\game\gamemodes\clock_cult\clock_items\clockwork_armor.dm" -#include "code\game\gamemodes\clock_cult\clock_items\clockwork_slab.dm" -#include "code\game\gamemodes\clock_cult\clock_items\clockwork_weaponry.dm" -#include "code\game\gamemodes\clock_cult\clock_items\construct_chassis.dm" -#include "code\game\gamemodes\clock_cult\clock_items\integration_cog.dm" -#include "code\game\gamemodes\clock_cult\clock_items\judicial_visor.dm" -#include "code\game\gamemodes\clock_cult\clock_items\replica_fabricator.dm" -#include "code\game\gamemodes\clock_cult\clock_items\soul_vessel.dm" -#include "code\game\gamemodes\clock_cult\clock_items\wraith_spectacles.dm" -#include "code\game\gamemodes\clock_cult\clock_items\clock_weapons\_call_weapon.dm" -#include "code\game\gamemodes\clock_cult\clock_items\clock_weapons\ratvarian_spear.dm" -#include "code\game\gamemodes\clock_cult\clock_mobs\_eminence.dm" -#include "code\game\gamemodes\clock_cult\clock_mobs\clockwork_marauder.dm" -#include "code\game\gamemodes\clock_cult\clock_scriptures\scripture_applications.dm" -#include "code\game\gamemodes\clock_cult\clock_scriptures\scripture_cyborg.dm" -#include "code\game\gamemodes\clock_cult\clock_scriptures\scripture_drivers.dm" -#include "code\game\gamemodes\clock_cult\clock_scriptures\scripture_scripts.dm" -#include "code\game\gamemodes\clock_cult\clock_structures\_trap_object.dm" -#include "code\game\gamemodes\clock_cult\clock_structures\ark_of_the_clockwork_justicar.dm" -#include "code\game\gamemodes\clock_cult\clock_structures\clockwork_obelisk.dm" -#include "code\game\gamemodes\clock_cult\clock_structures\eminence_spire.dm" -#include "code\game\gamemodes\clock_cult\clock_structures\heralds_beacon.dm" -#include "code\game\gamemodes\clock_cult\clock_structures\mania_motor.dm" -#include "code\game\gamemodes\clock_cult\clock_structures\ocular_warden.dm" -#include "code\game\gamemodes\clock_cult\clock_structures\ratvar_the_clockwork_justicar.dm" -#include "code\game\gamemodes\clock_cult\clock_structures\stargazer.dm" -#include "code\game\gamemodes\clock_cult\clock_structures\taunting_trail.dm" -#include "code\game\gamemodes\clock_cult\clock_structures\wall_gear.dm" -#include "code\game\gamemodes\clock_cult\clock_structures\trap_triggers\lever.dm" -#include "code\game\gamemodes\clock_cult\clock_structures\trap_triggers\pressure_sensor.dm" -#include "code\game\gamemodes\clock_cult\clock_structures\trap_triggers\repeater.dm" -#include "code\game\gamemodes\clock_cult\clock_structures\traps\brass_skewer.dm" -#include "code\game\gamemodes\clock_cult\clock_structures\traps\steam_vent.dm" +#include "code\game\gamemodes\cult\blood_magic.dm" #include "code\game\gamemodes\cult\cult.dm" -#include "code\game\gamemodes\cult\cult_comms.dm" -#include "code\game\gamemodes\cult\cult_items.dm" -#include "code\game\gamemodes\cult\cult_structures.dm" -#include "code\game\gamemodes\cult\ritual.dm" -#include "code\game\gamemodes\cult\rune_spawn_action.dm" -#include "code\game\gamemodes\cult\runes.dm" -#include "code\game\gamemodes\cult\supply.dm" -#include "code\game\gamemodes\cult\talisman.dm" -#include "code\game\gamemodes\devil\devil.dm" #include "code\game\gamemodes\devil\devil_game_mode.dm" #include "code\game\gamemodes\devil\game_mode.dm" #include "code\game\gamemodes\devil\objectives.dm" #include "code\game\gamemodes\devil\devil agent\devil_agent.dm" -#include "code\game\gamemodes\devil\imp\imp.dm" -#include "code\game\gamemodes\devil\true_devil\_true_devil.dm" -#include "code\game\gamemodes\devil\true_devil\inventory.dm" #include "code\game\gamemodes\extended\extended.dm" -#include "code\game\gamemodes\malfunction\Malf_Modules.dm" #include "code\game\gamemodes\meteor\meteor.dm" #include "code\game\gamemodes\meteor\meteors.dm" -#include "code\game\gamemodes\miniantags\abduction\abductee_objectives.dm" -#include "code\game\gamemodes\miniantags\abduction\abduction.dm" -#include "code\game\gamemodes\miniantags\abduction\abduction_gear.dm" -#include "code\game\gamemodes\miniantags\abduction\abduction_outfits.dm" -#include "code\game\gamemodes\miniantags\abduction\abduction_surgery.dm" -#include "code\game\gamemodes\miniantags\abduction\gland.dm" -#include "code\game\gamemodes\miniantags\abduction\machinery\camera.dm" -#include "code\game\gamemodes\miniantags\abduction\machinery\console.dm" -#include "code\game\gamemodes\miniantags\abduction\machinery\dispenser.dm" -#include "code\game\gamemodes\miniantags\abduction\machinery\experiment.dm" -#include "code\game\gamemodes\miniantags\abduction\machinery\pad.dm" -#include "code\game\gamemodes\miniantags\borer\borer.dm" -#include "code\game\gamemodes\miniantags\borer\borer_chemicals.dm" -#include "code\game\gamemodes\miniantags\borer\borer_event.dm" -#include "code\game\gamemodes\miniantags\borer\borer_html.dm" -#include "code\game\gamemodes\miniantags\borer\borer_topic.dm" -#include "code\game\gamemodes\miniantags\borer\syndi_borer.dm" -#include "code\game\gamemodes\miniantags\bot_swarm\swarmer.dm" -#include "code\game\gamemodes\miniantags\bot_swarm\swarmer_event.dm" -#include "code\game\gamemodes\miniantags\monkey\monkey.dm" -#include "code\game\gamemodes\miniantags\morph\morph.dm" -#include "code\game\gamemodes\miniantags\revenant\revenant.dm" -#include "code\game\gamemodes\miniantags\revenant\revenant_abilities.dm" -#include "code\game\gamemodes\miniantags\revenant\revenant_blight.dm" -#include "code\game\gamemodes\miniantags\revenant\revenant_spawn_event.dm" -#include "code\game\gamemodes\miniantags\sintouched\objectives.dm" -#include "code\game\gamemodes\miniantags\slaughter\slaughter.dm" -#include "code\game\gamemodes\miniantags\slaughter\slaughterevent.dm" +#include "code\game\gamemodes\monkey\monkey.dm" #include "code\game\gamemodes\nuclear\nuclear.dm" -#include "code\game\gamemodes\nuclear\nuclear_challenge.dm" -#include "code\game\gamemodes\nuclear\nuclearbomb.dm" -#include "code\game\gamemodes\nuclear\pinpointer.dm" #include "code\game\gamemodes\revolution\revolution.dm" #include "code\game\gamemodes\sandbox\airlock_maker.dm" #include "code\game\gamemodes\sandbox\h_sandbox.dm" #include "code\game\gamemodes\sandbox\sandbox.dm" #include "code\game\gamemodes\traitor\double_agents.dm" #include "code\game\gamemodes\traitor\traitor.dm" -#include "code\game\gamemodes\wizard\artefact.dm" -#include "code\game\gamemodes\wizard\soulstone.dm" -#include "code\game\gamemodes\wizard\spellbook.dm" #include "code\game\gamemodes\wizard\wizard.dm" #include "code\game\machinery\_machinery.dm" #include "code\game\machinery\ai_slipper.dm" @@ -678,6 +527,7 @@ #include "code\game\machinery\cloning.dm" #include "code\game\machinery\constructable_frame.dm" #include "code\game\machinery\dance_machine.dm" +#include "code\game\machinery\defibrillator_mount.dm" #include "code\game\machinery\deployable.dm" #include "code\game\machinery\dna_scanner.dm" #include "code\game\machinery\doppler_array.dm" @@ -757,6 +607,7 @@ #include "code\game\machinery\doors\checkForMultipleDoors.dm" #include "code\game\machinery\doors\door.dm" #include "code\game\machinery\doors\firedoor.dm" +#include "code\game\machinery\doors\passworddoor.dm" #include "code\game\machinery\doors\poddoor.dm" #include "code\game\machinery\doors\shutters.dm" #include "code\game\machinery\doors\unpowered.dm" @@ -866,8 +717,11 @@ #include "code\game\objects\effects\temporary_visuals\clockcult.dm" #include "code\game\objects\effects\temporary_visuals\cult.dm" #include "code\game\objects\effects\temporary_visuals\miscellaneous.dm" -#include "code\game\objects\effects\temporary_visuals\projectile_beam.dm" #include "code\game\objects\effects\temporary_visuals\temporary_visual.dm" +#include "code\game\objects\effects\temporary_visuals\projectiles\impact.dm" +#include "code\game\objects\effects\temporary_visuals\projectiles\muzzle.dm" +#include "code\game\objects\effects\temporary_visuals\projectiles\projectile_effects.dm" +#include "code\game\objects\effects\temporary_visuals\projectiles\tracer.dm" #include "code\game\objects\items\AI_modules.dm" #include "code\game\objects\items\airlock_painter.dm" #include "code\game\objects\items\apc_frame.dm" @@ -880,6 +734,7 @@ #include "code\game\objects\items\charter.dm" #include "code\game\objects\items\chrono_eraser.dm" #include "code\game\objects\items\cigs_lighters.dm" +#include "code\game\objects\items\clown.dm" #include "code\game\objects\items\clown_items.dm" #include "code\game\objects\items\control_wand.dm" #include "code\game\objects\items\cosmetics.dm" @@ -1067,6 +922,7 @@ #include "code\game\objects\structures\girders.dm" #include "code\game\objects\structures\grille.dm" #include "code\game\objects\structures\guncase.dm" +#include "code\game\objects\structures\headpike.dm" #include "code\game\objects\structures\hivebot.dm" #include "code\game\objects\structures\holosign.dm" #include "code\game\objects\structures\janicart.dm" @@ -1087,7 +943,6 @@ #include "code\game\objects\structures\reflector.dm" #include "code\game\objects\structures\safe.dm" #include "code\game\objects\structures\showcase.dm" -#include "code\game\objects\structures\signs.dm" #include "code\game\objects\structures\spirit_board.dm" #include "code\game\objects\structures\statues.dm" #include "code\game\objects\structures\table_frames.dm" @@ -1101,7 +956,6 @@ #include "code\game\objects\structures\beds_chairs\alien_nest.dm" #include "code\game\objects\structures\beds_chairs\bed.dm" #include "code\game\objects\structures\beds_chairs\chair.dm" -#include "code\game\objects\structures\beds_chairs\sofa.dm" #include "code\game\objects\structures\crates_lockers\closets.dm" #include "code\game\objects\structures\crates_lockers\crates.dm" #include "code\game\objects\structures\crates_lockers\closets\bodybag.dm" @@ -1130,6 +984,11 @@ #include "code\game\objects\structures\crates_lockers\crates\large.dm" #include "code\game\objects\structures\crates_lockers\crates\secure.dm" #include "code\game\objects\structures\crates_lockers\crates\wooden.dm" +#include "code\game\objects\structures\signs\_signs.dm" +#include "code\game\objects\structures\signs\signs_departments.dm" +#include "code\game\objects\structures\signs\signs_maps.dm" +#include "code\game\objects\structures\signs\signs_plaques.dm" +#include "code\game\objects\structures\signs\signs_warning.dm" #include "code\game\objects\structures\transit_tubes\station.dm" #include "code\game\objects\structures\transit_tubes\transit_tube.dm" #include "code\game\objects\structures\transit_tubes\transit_tube_construction.dm" @@ -1224,6 +1083,151 @@ #include "code\modules\admin\verbs\SDQL2\SDQL_2.dm" #include "code\modules\admin\verbs\SDQL2\SDQL_2_parser.dm" #include "code\modules\admin\verbs\SDQL2\SDQL_2_wrappers.dm" +#include "code\modules\antagonists\_common\antag_datum.dm" +#include "code\modules\antagonists\_common\antag_helpers.dm" +#include "code\modules\antagonists\_common\antag_hud.dm" +#include "code\modules\antagonists\_common\antag_spawner.dm" +#include "code\modules\antagonists\_common\antag_team.dm" +#include "code\modules\antagonists\abductor\abductor.dm" +#include "code\modules\antagonists\abductor\abductee\abductee_objectives.dm" +#include "code\modules\antagonists\abductor\equipment\abduction_gear.dm" +#include "code\modules\antagonists\abductor\equipment\abduction_outfits.dm" +#include "code\modules\antagonists\abductor\equipment\abduction_surgery.dm" +#include "code\modules\antagonists\abductor\equipment\gland.dm" +#include "code\modules\antagonists\abductor\machinery\camera.dm" +#include "code\modules\antagonists\abductor\machinery\console.dm" +#include "code\modules\antagonists\abductor\machinery\dispenser.dm" +#include "code\modules\antagonists\abductor\machinery\experiment.dm" +#include "code\modules\antagonists\abductor\machinery\pad.dm" +#include "code\modules\antagonists\blob\blob.dm" +#include "code\modules\antagonists\blob\blob\blob_report.dm" +#include "code\modules\antagonists\blob\blob\overmind.dm" +#include "code\modules\antagonists\blob\blob\powers.dm" +#include "code\modules\antagonists\blob\blob\theblob.dm" +#include "code\modules\antagonists\blob\blob\blobs\blob_mobs.dm" +#include "code\modules\antagonists\blob\blob\blobs\core.dm" +#include "code\modules\antagonists\blob\blob\blobs\factory.dm" +#include "code\modules\antagonists\blob\blob\blobs\node.dm" +#include "code\modules\antagonists\blob\blob\blobs\resource.dm" +#include "code\modules\antagonists\blob\blob\blobs\shield.dm" +#include "code\modules\antagonists\brother\brother.dm" +#include "code\modules\antagonists\changeling\cellular_emporium.dm" +#include "code\modules\antagonists\changeling\changeling.dm" +#include "code\modules\antagonists\changeling\changeling_power.dm" +#include "code\modules\antagonists\changeling\powers\absorb.dm" +#include "code\modules\antagonists\changeling\powers\adrenaline.dm" +#include "code\modules\antagonists\changeling\powers\augmented_eyesight.dm" +#include "code\modules\antagonists\changeling\powers\biodegrade.dm" +#include "code\modules\antagonists\changeling\powers\chameleon_skin.dm" +#include "code\modules\antagonists\changeling\powers\digitalcamo.dm" +#include "code\modules\antagonists\changeling\powers\fakedeath.dm" +#include "code\modules\antagonists\changeling\powers\fleshmend.dm" +#include "code\modules\antagonists\changeling\powers\headcrab.dm" +#include "code\modules\antagonists\changeling\powers\hivemind.dm" +#include "code\modules\antagonists\changeling\powers\humanform.dm" +#include "code\modules\antagonists\changeling\powers\lesserform.dm" +#include "code\modules\antagonists\changeling\powers\linglink.dm" +#include "code\modules\antagonists\changeling\powers\mimic_voice.dm" +#include "code\modules\antagonists\changeling\powers\mutations.dm" +#include "code\modules\antagonists\changeling\powers\panacea.dm" +#include "code\modules\antagonists\changeling\powers\regenerate.dm" +#include "code\modules\antagonists\changeling\powers\revive.dm" +#include "code\modules\antagonists\changeling\powers\shriek.dm" +#include "code\modules\antagonists\changeling\powers\spiders.dm" +#include "code\modules\antagonists\changeling\powers\strained_muscles.dm" +#include "code\modules\antagonists\changeling\powers\tiny_prick.dm" +#include "code\modules\antagonists\changeling\powers\transform.dm" +#include "code\modules\antagonists\clockcult\clock_effect.dm" +#include "code\modules\antagonists\clockcult\clock_item.dm" +#include "code\modules\antagonists\clockcult\clock_mobs.dm" +#include "code\modules\antagonists\clockcult\clock_scripture.dm" +#include "code\modules\antagonists\clockcult\clock_structure.dm" +#include "code\modules\antagonists\clockcult\clockcult.dm" +#include "code\modules\antagonists\clockcult\clock_effects\city_of_cogs_rift.dm" +#include "code\modules\antagonists\clockcult\clock_effects\clock_overlay.dm" +#include "code\modules\antagonists\clockcult\clock_effects\clock_sigils.dm" +#include "code\modules\antagonists\clockcult\clock_effects\general_markers.dm" +#include "code\modules\antagonists\clockcult\clock_effects\servant_blocker.dm" +#include "code\modules\antagonists\clockcult\clock_effects\spatial_gateway.dm" +#include "code\modules\antagonists\clockcult\clock_helpers\clock_powerdrain.dm" +#include "code\modules\antagonists\clockcult\clock_helpers\component_helpers.dm" +#include "code\modules\antagonists\clockcult\clock_helpers\fabrication_helpers.dm" +#include "code\modules\antagonists\clockcult\clock_helpers\hierophant_network.dm" +#include "code\modules\antagonists\clockcult\clock_helpers\power_helpers.dm" +#include "code\modules\antagonists\clockcult\clock_helpers\ratvarian_language.dm" +#include "code\modules\antagonists\clockcult\clock_helpers\scripture_checks.dm" +#include "code\modules\antagonists\clockcult\clock_helpers\slab_abilities.dm" +#include "code\modules\antagonists\clockcult\clock_items\clock_components.dm" +#include "code\modules\antagonists\clockcult\clock_items\clockwork_armor.dm" +#include "code\modules\antagonists\clockcult\clock_items\clockwork_slab.dm" +#include "code\modules\antagonists\clockcult\clock_items\clockwork_weaponry.dm" +#include "code\modules\antagonists\clockcult\clock_items\construct_chassis.dm" +#include "code\modules\antagonists\clockcult\clock_items\integration_cog.dm" +#include "code\modules\antagonists\clockcult\clock_items\judicial_visor.dm" +#include "code\modules\antagonists\clockcult\clock_items\replica_fabricator.dm" +#include "code\modules\antagonists\clockcult\clock_items\soul_vessel.dm" +#include "code\modules\antagonists\clockcult\clock_items\wraith_spectacles.dm" +#include "code\modules\antagonists\clockcult\clock_items\clock_weapons\_call_weapon.dm" +#include "code\modules\antagonists\clockcult\clock_items\clock_weapons\ratvarian_spear.dm" +#include "code\modules\antagonists\clockcult\clock_mobs\_eminence.dm" +#include "code\modules\antagonists\clockcult\clock_mobs\clockwork_marauder.dm" +#include "code\modules\antagonists\clockcult\clock_scriptures\scripture_applications.dm" +#include "code\modules\antagonists\clockcult\clock_scriptures\scripture_cyborg.dm" +#include "code\modules\antagonists\clockcult\clock_scriptures\scripture_drivers.dm" +#include "code\modules\antagonists\clockcult\clock_scriptures\scripture_scripts.dm" +#include "code\modules\antagonists\clockcult\clock_structures\_trap_object.dm" +#include "code\modules\antagonists\clockcult\clock_structures\ark_of_the_clockwork_justicar.dm" +#include "code\modules\antagonists\clockcult\clock_structures\clockwork_obelisk.dm" +#include "code\modules\antagonists\clockcult\clock_structures\eminence_spire.dm" +#include "code\modules\antagonists\clockcult\clock_structures\heralds_beacon.dm" +#include "code\modules\antagonists\clockcult\clock_structures\mania_motor.dm" +#include "code\modules\antagonists\clockcult\clock_structures\ocular_warden.dm" +#include "code\modules\antagonists\clockcult\clock_structures\ratvar_the_clockwork_justicar.dm" +#include "code\modules\antagonists\clockcult\clock_structures\stargazer.dm" +#include "code\modules\antagonists\clockcult\clock_structures\taunting_trail.dm" +#include "code\modules\antagonists\clockcult\clock_structures\wall_gear.dm" +#include "code\modules\antagonists\clockcult\clock_structures\trap_triggers\lever.dm" +#include "code\modules\antagonists\clockcult\clock_structures\trap_triggers\pressure_sensor.dm" +#include "code\modules\antagonists\clockcult\clock_structures\trap_triggers\repeater.dm" +#include "code\modules\antagonists\clockcult\clock_structures\traps\brass_skewer.dm" +#include "code\modules\antagonists\clockcult\clock_structures\traps\steam_vent.dm" +#include "code\modules\antagonists\cult\cult.dm" +#include "code\modules\antagonists\cult\cult_comms.dm" +#include "code\modules\antagonists\cult\cult_items.dm" +#include "code\modules\antagonists\cult\cult_structures.dm" +#include "code\modules\antagonists\cult\ritual.dm" +#include "code\modules\antagonists\cult\rune_spawn_action.dm" +#include "code\modules\antagonists\cult\runes.dm" +#include "code\modules\antagonists\devil\devil.dm" +#include "code\modules\antagonists\devil\devil_helpers.dm" +#include "code\modules\antagonists\devil\imp\imp.dm" +#include "code\modules\antagonists\devil\sintouched\objectives.dm" +#include "code\modules\antagonists\devil\true_devil\_true_devil.dm" +#include "code\modules\antagonists\devil\true_devil\inventory.dm" +#include "code\modules\antagonists\monkey\monkey.dm" +#include "code\modules\antagonists\morph\morph.dm" +#include "code\modules\antagonists\ninja\ninja.dm" +#include "code\modules\antagonists\nukeop\nukeop.dm" +#include "code\modules\antagonists\nukeop\equipment\nuclear_challenge.dm" +#include "code\modules\antagonists\nukeop\equipment\nuclearbomb.dm" +#include "code\modules\antagonists\nukeop\equipment\pinpointer.dm" +#include "code\modules\antagonists\pirate\pirate.dm" +#include "code\modules\antagonists\revenant\revenant.dm" +#include "code\modules\antagonists\revenant\revenant_abilities.dm" +#include "code\modules\antagonists\revenant\revenant_blight.dm" +#include "code\modules\antagonists\revenant\revenant_spawn_event.dm" +#include "code\modules\antagonists\revolution\revolution.dm" +#include "code\modules\antagonists\slaughter\slaughter.dm" +#include "code\modules\antagonists\slaughter\slaughterevent.dm" +#include "code\modules\antagonists\swarmer\swarmer.dm" +#include "code\modules\antagonists\swarmer\swarmer_event.dm" +#include "code\modules\antagonists\traitor\datum_traitor.dm" +#include "code\modules\antagonists\traitor\equipment\Malf_Modules.dm" +#include "code\modules\antagonists\traitor\IAA\internal_affairs.dm" +#include "code\modules\antagonists\wizard\wizard.dm" +#include "code\modules\antagonists\wizard\equipment\artefact.dm" +#include "code\modules\antagonists\wizard\equipment\soulstone.dm" +#include "code\modules\antagonists\wizard\equipment\spellbook.dm" #include "code\modules\assembly\assembly.dm" #include "code\modules\assembly\bomb.dm" #include "code\modules\assembly\doorcontrol.dm" @@ -1340,7 +1344,6 @@ #include "code\modules\client\verbs\ooc.dm" #include "code\modules\client\verbs\ping.dm" #include "code\modules\client\verbs\suicide.dm" -#include "code\modules\client\verbs\who.dm" #include "code\modules\clothing\chameleon.dm" #include "code\modules\clothing\clothing.dm" #include "code\modules\clothing\ears\_ears.dm" @@ -1590,6 +1593,7 @@ #include "code\modules\hydroponics\grown\mushrooms.dm" #include "code\modules\hydroponics\grown\nettle.dm" #include "code\modules\hydroponics\grown\onion.dm" +#include "code\modules\hydroponics\grown\pineapple.dm" #include "code\modules\hydroponics\grown\potato.dm" #include "code\modules\hydroponics\grown\pumpkin.dm" #include "code\modules\hydroponics\grown\random.dm" @@ -1860,6 +1864,7 @@ #include "code\modules\mob\living\carbon\human\species_types\humans.dm" #include "code\modules\mob\living\carbon\human\species_types\jellypeople.dm" #include "code\modules\mob\living\carbon\human\species_types\lizardpeople.dm" +#include "code\modules\mob\living\carbon\human\species_types\mothmen.dm" #include "code\modules\mob\living\carbon\human\species_types\plasmamen.dm" #include "code\modules\mob\living\carbon\human\species_types\podpeople.dm" #include "code\modules\mob\living\carbon\human\species_types\shadowpeople.dm" @@ -1949,6 +1954,7 @@ #include "code\modules\mob\living\simple_animal\friendly\penguin.dm" #include "code\modules\mob\living\simple_animal\friendly\pet.dm" #include "code\modules\mob\living\simple_animal\friendly\sloth.dm" +#include "code\modules\mob\living\simple_animal\friendly\snake.dm" #include "code\modules\mob\living\simple_animal\friendly\drone\_drone.dm" #include "code\modules\mob\living\simple_animal\friendly\drone\drones_as_items.dm" #include "code\modules\mob\living\simple_animal\friendly\drone\extra_drone_types.dm" @@ -2454,6 +2460,7 @@ #include "code\modules\tgui\states\self.dm" #include "code\modules\tgui\states\zlevel.dm" #include "code\modules\tooltip\tooltip.dm" +#include "code\modules\unit_tests\_unit_tests.dm" #include "code\modules\uplink\uplink.dm" #include "code\modules\uplink\uplink_devices.dm" #include "code\modules\uplink\uplink_items.dm" @@ -2477,6 +2484,7 @@ #include "code\modules\vore\eating\living_vr.dm" #include "code\modules\vore\eating\simple_animal_vr.dm" #include "code\modules\vore\eating\vore_vr.dm" +#include "code\modules\vore\eating\voreitems.dm" #include "code\modules\vore\eating\vorepanel_vr.dm" #include "code\modules\VR\vr_human.dm" #include "code\modules\VR\vr_sleeper.dm" @@ -2496,24 +2504,37 @@ #include "modular_citadel\code\init.dm" #include "modular_citadel\code\__HELPERS\lists.dm" #include "modular_citadel\code\__HELPERS\mobs.dm" +#include "modular_citadel\code\_globalvars\lists\mobs.dm" +#include "modular_citadel\code\controllers\configuration\entries\general.dm" +#include "modular_citadel\code\controllers\subsystem\cit_nightshift.dm" #include "modular_citadel\code\controllers\subsystem\job.dm" +#include "modular_citadel\code\controllers\subsystem\shuttle.dm" #include "modular_citadel\code\datums\uplink_items_cit.dm" #include "modular_citadel\code\datums\mutations\hulk.dm" #include "modular_citadel\code\game\gamemodes\miniantags\bot_swarm\swarmer_event.dm" #include "modular_citadel\code\game\machinery\Sleeper.dm" #include "modular_citadel\code\game\objects\ids.dm" #include "modular_citadel\code\game\objects\items\handcuffs.dm" +#include "modular_citadel\code\game\objects\items\circuitboards\machine_circuitboards.dm" +#include "modular_citadel\code\game\objects\items\stunsword.dm" #include "modular_citadel\code\game\objects\items\devices\aicard.dm" #include "modular_citadel\code\game\objects\items\devices\PDA\PDA.dm" #include "modular_citadel\code\game\objects\items\devices\radio\shockcollar.dm" #include "modular_citadel\code\game\objects\items\melee\eutactic_blades.dm" +#include "modular_citadel\code\modules\admin\admin.dm" +#include "modular_citadel\code\modules\admin\holder2.dm" +#include "modular_citadel\code\modules\admin\secrets.dm" +#include "modular_citadel\code\modules\admin\topic.dm" +#include "modular_citadel\code\game\objects\structures\beds_chairs\sofa.dm" #include "modular_citadel\code\modules\cargo\console.dm" #include "modular_citadel\code\modules\cargo\packs.dm" +#include "modular_citadel\code\modules\client\client_procs.dm" #include "modular_citadel\code\modules\client\preferences.dm" #include "modular_citadel\code\modules\client\preferences_savefile.dm" #include "modular_citadel\code\modules\client\loadout\_donator.dm" #include "modular_citadel\code\modules\client\loadout\backpack.dm" #include "modular_citadel\code\modules\client\loadout\glasses.dm" +#include "modular_citadel\code\modules\client\loadout\gloves.dm" #include "modular_citadel\code\modules\client\loadout\hands.dm" #include "modular_citadel\code\modules\client\loadout\head.dm" #include "modular_citadel\code\modules\client\loadout\loadout.dm" @@ -2522,11 +2543,21 @@ #include "modular_citadel\code\modules\client\loadout\shoes.dm" #include "modular_citadel\code\modules\client\loadout\suit.dm" #include "modular_citadel\code\modules\client\loadout\uniform.dm" +#include "modular_citadel\code\modules\client\verbs\who.dm" +#include "modular_citadel\code\modules\clothing\under.dm" #include "modular_citadel\code\modules\clothing\under\turtlenecks.dm" #include "modular_citadel\code\modules\crafting\recipes.dm" +#include "modular_citadel\code\modules\mentor\follow.dm" +#include "modular_citadel\code\modules\mentor\mentor.dm" +#include "modular_citadel\code\modules\mentor\mentor_memo.dm" +#include "modular_citadel\code\modules\mentor\mentor_verbs.dm" +#include "modular_citadel\code\modules\mentor\mentorhelp.dm" +#include "modular_citadel\code\modules\mentor\mentorpm.dm" +#include "modular_citadel\code\modules\mentor\mentorsay.dm" #include "modular_citadel\code\modules\mining\mine_items.dm" #include "modular_citadel\code\modules\mob\living\banana_spider.dm" #include "modular_citadel\code\modules\mob\living\carbon\human\human_defense.dm" +#include "modular_citadel\code\modules\mob\living\carbon\human\life.dm" #include "modular_citadel\code\modules\mob\living\silicon\robot\robot_modules.dm" #include "modular_citadel\interface\skin.dmf" // END_INCLUDE diff --git a/tgui/assets/tgui.js b/tgui/assets/tgui.js index a8c649cdc3..54f5f3beb3 100644 --- a/tgui/assets/tgui.js +++ b/tgui/assets/tgui.js @@ -7,12 +7,12 @@ return t.set(e,+a+n)}function O(t,e){return Jo(this,t,void 0===e?1:+e)}function real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,"int":8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830},sc=[8364,129,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,141,381,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,157,382,376],pc=RegExp("&(#?(?:x[\\w\\d]+|\\d+|"+Object.keys(oc).join("|")+"));?","g"),uc=//g,lc=/&/g;var vc=function(){return e(this.node)},bc=function(t){this.type=ku,this.text=t.template};bc.prototype={detach:vc,firstNode:function(){return this.node},render:function(){return this.node||(this.node=document.createTextNode(this.text)),this.node},toString:function(t){return t?Ee(this.text):this.text},unrender:function(t){return t?this.detach():void 0}};var yc=bc,xc=Se,_c=Ce,wc=function(t,e,n){var a;this.ref=e,this.resolved=!1,this.root=t.root,this.parentFragment=t.parentFragment,this.callback=n,a=ls(t.root,e,t.parentFragment),void 0!=a?this.resolve(a):bs.addUnresolved(this)};wc.prototype={resolve:function(t){this.keypath&&!t&&bs.addUnresolved(this),this.resolved=!0,this.keypath=t,this.callback(t)},forceResolution:function(){this.resolve(E(this.ref))},rebind:function(t,e){var n;void 0!=this.keypath&&(n=this.keypath.replace(t,e),void 0!==n&&this.resolve(n))},unbind:function(){this.resolved||bs.removeUnresolved(this)}};var kc=wc,Ec=function(t,e,n){this.parentFragment=t.parentFragment,this.ref=e,this.callback=n,this.rebind()},Sc={"@keypath":{prefix:"c",prop:["context"]},"@index":{prefix:"i",prop:["index"]},"@key":{prefix:"k",prop:["key","index"]}};Ec.prototype={rebind:function(){var t,e=this.ref,n=this.parentFragment,a=Sc[e];if(!a)throw Error('Unknown special reference "'+e+'" - valid references are @index, @key and @keypath');if(this.cached)return this.callback(E("@"+a.prefix+Pe(this.cached,a)));if(-1!==a.prop.indexOf("index")||-1!==a.prop.indexOf("key"))for(;n;){if(n.owner.currentSubtype===Bu&&void 0!==(t=Pe(n,a)))return this.cached=n,n.registerIndexRef(this),this.callback(E("@"+a.prefix+t));n=!n.parent&&n.owner&&n.owner.component&&n.owner.component.parentFragment&&!n.owner.component.instance.isolated?n.owner.component.parentFragment:n.parent}else for(;n;){if(void 0!==(t=Pe(n,a)))return this.callback(E("@"+a.prefix+t.str));n=n.parent}},unbind:function(){this.cached&&this.cached.unregisterIndexRef(this)}};var Cc=Ec,Pc=function(t,e,n){this.parentFragment=t.parentFragment,this.ref=e,this.callback=n,e.ref.fragment.registerIndexRef(this),this.rebind()};Pc.prototype={rebind:function(){var t,e=this.ref.ref;t="k"===e.ref.t?"k"+e.fragment.key:"i"+e.fragment.index,void 0!==t&&this.callback(E("@"+t))},unbind:function(){this.ref.ref.fragment.unregisterIndexRef(this)}};var Ac=Pc,Oc=Ae;Ae.resolve=function(t){var e,n,a={};for(e in t.refs)n=t.refs[e],a[n.ref.n]="k"===n.ref.t?n.fragment.key:n.fragment.index;return a};var Tc,Rc=Oe,Lc=Te,jc={},Mc=Function.prototype.bind;Tc=function(t,e,n,a){var r,i=this;r=t.root,this.root=r,this.parentFragment=e,this.callback=a,this.owner=t,this.str=n.s,this.keypaths=[],this.pending=n.r.length,this.refResolvers=n.r.map(function(t,e){return Rc(i,t,function(t){i.resolve(e,t)})}),this.ready=!0,this.bubble()},Tc.prototype={bubble:function(){this.ready&&(this.uniqueString=Le(this.str,this.keypaths),this.keypath=je(this.uniqueString),this.createEvaluator(),this.callback(this.keypath))},unbind:function(){for(var t;t=this.refResolvers.pop();)t.unbind()},resolve:function(t,e){this.keypaths[t]=e,this.bubble()},createEvaluator:function(){var t,e,n,a,r,i=this;a=this.keypath,t=this.root.viewmodel.computations[a.str],t?this.root.viewmodel.mark(a):(r=Lc(this.str,this.refResolvers.length),e=this.keypaths.map(function(t){var e;return"undefined"===t?function(){}:t.isSpecial?(e=t.value,function(){return e}):function(){var e=i.root.viewmodel.get(t,{noUnwrap:!0,fullRootGet:!0});return"function"==typeof e&&(e=De(e,i.root)),e}}),n={deps:this.keypaths.filter(Me),getter:function(){var t=e.map(Re);return r.apply(null,t)}},t=this.root.viewmodel.compute(a,n))},rebind:function(t,e){this.refResolvers.forEach(function(n){return n.rebind(t,e)})}};var Dc=Tc,Nc=function(t,e,n){var a=this;this.resolver=e,this.root=e.root,this.parentFragment=n,this.viewmodel=e.root.viewmodel,"string"==typeof t?this.value=t:t.t===Nu?this.refResolver=Rc(this,t.n,function(t){a.resolve(t)}):new Dc(e,n,t,function(t){a.resolve(t)})};Nc.prototype={resolve:function(t){this.keypath&&this.viewmodel.unregister(this.keypath,this),this.keypath=t,this.value=this.viewmodel.get(t),this.bind(),this.resolver.bubble()},bind:function(){this.viewmodel.register(this.keypath,this)},rebind:function(t,e){this.refResolver&&this.refResolver.rebind(t,e)},setValue:function(t){this.value=t,this.resolver.bubble()},unbind:function(){this.keypath&&this.viewmodel.unregister(this.keypath,this),this.refResolver&&this.refResolver.unbind()},forceResolution:function(){this.refResolver&&this.refResolver.forceResolution()}};var Fc=Nc,Ic=function(t,e,n){var a,r,i,o,s=this;this.parentFragment=o=t.parentFragment,this.root=a=t.root,this.mustache=t,this.ref=r=e.r,this.callback=n,this.unresolved=[],(i=ls(a,r,o))?this.base=i:this.baseResolver=new kc(this,r,function(t){s.base=t,s.baseResolver=null,s.bubble()}),this.members=e.m.map(function(t){return new Fc(t,s,o)}),this.ready=!0,this.bubble()};Ic.prototype={getKeypath:function(){var t=this.members.map(Ne);return!t.every(Fe)||this.baseResolver?null:this.base.join(t.join("."))},bubble:function(){this.ready&&!this.baseResolver&&this.callback(this.getKeypath())},unbind:function(){this.members.forEach(K)},rebind:function(t,e){var n;if(this.base){var a=this.base.replace(t,e);a&&a!==this.base&&(this.base=a,n=!0)}this.members.forEach(function(a){a.rebind(t,e)&&(n=!0)}),n&&this.bubble()},forceResolution:function(){this.baseResolver&&(this.base=E(this.ref),this.baseResolver.unbind(),this.baseResolver=null),this.members.forEach(Ie),this.bubble()}};var Bc=Ic,qc=Be,Uc=qe,Gc=Ue,Vc={getValue:_c,init:qc,resolve:Uc,rebind:Gc},zc=function(t){this.type=Eu,Vc.init(this,t)};zc.prototype={update:function(){this.node.data=void 0==this.value?"":this.value},resolve:Vc.resolve,rebind:Vc.rebind,detach:vc,unbind:xc,render:function(){return this.node||(this.node=document.createTextNode(n(this.value))),this.node},unrender:function(t){t&&e(this.node)},getValue:Vc.getValue,setValue:function(t){var e;this.keypath&&(e=this.root.viewmodel.wrapped[this.keypath.str])&&(t=e.get()),s(t,this.value)||(this.value=t,this.parentFragment.bubble(),this.node&&bs.addView(this))},firstNode:function(){return this.node},toString:function(t){var e=""+n(this.value);return t?Ee(e):e}};var Wc=zc,Hc=Ge,Kc=Ve,Qc=ze,$c=We,Yc=He,Jc=Ke,Xc=Qe,Zc=$e,tl=Ye,el=function(t,e){Vc.rebind.call(this,t,e)},nl=Xe,al=Ze,rl=ln,il=dn,ol=fn,sl=gn,pl=function(t){this.type=Cu,this.subtype=this.currentSubtype=t.template.n,this.inverted=this.subtype===Iu,this.pElement=t.pElement,this.fragments=[],this.fragmentsToCreate=[],this.fragmentsToRender=[],this.fragmentsToUnrender=[],t.template.i&&(this.indexRefs=t.template.i.split(",").map(function(t,e){return{n:t,t:0===e?"k":"i"}})),this.renderedFragments=[],this.length=0,Vc.init(this,t)};pl.prototype={bubble:Hc,detach:Kc,find:Qc,findAll:$c,findAllComponents:Yc,findComponent:Jc,findNextNode:Xc,firstNode:Zc,getIndexRef:function(t){if(this.indexRefs)for(var e=this.indexRefs.length;e--;){var n=this.indexRefs[e];if(n.n===t)return n}},getValue:Vc.getValue,shuffle:tl,rebind:el,render:nl,resolve:Vc.resolve,setValue:al,toString:rl,unbind:il,unrender:ol,update:sl};var ul,cl,ll=pl,dl=vn,fl=bn,hl=yn,ml=xn,gl={};try{co("table").innerHTML="foo"}catch(Ao){ul=!0,cl={TABLE:['',"
    "],THEAD:['',"
    "],TBODY:['',"
    "],TR:['',"
    "],SELECT:['"]}}var vl=function(t,e,n){var a,r,i,o,s,p=[];if(null!=t&&""!==t){for(ul&&(r=cl[e.tagName])?(a=_n("DIV"),a.innerHTML=r[0]+t+r[1],a=a.querySelector(".x"),"SELECT"===a.tagName&&(i=a.options[a.selectedIndex])):e.namespaceURI===no.svg?(a=_n("DIV"),a.innerHTML=''+t+"",a=a.querySelector(".x")):(a=_n(e.tagName),a.innerHTML=t,"SELECT"===a.tagName&&(i=a.options[a.selectedIndex]));o=a.firstChild;)p.push(o),n.appendChild(o);if("SELECT"===e.tagName)for(s=p.length;s--;)p[s]!==i&&(p[s].selected=!1)}return p},bl=wn,yl=En,xl=Sn,_l=Cn,wl=Pn,kl=An,El=function(t){this.type=Su,Vc.init(this,t)};El.prototype={detach:dl,find:fl,findAll:hl,firstNode:ml,getValue:Vc.getValue,rebind:Vc.rebind,render:yl,resolve:Vc.resolve,setValue:xl,toString:_l,unbind:xc,unrender:wl,update:kl};var Sl,Cl,Pl,Al,Ol=El,Tl=function(){this.parentFragment.bubble()},Rl=On,Ll=function(t){return this.node?lo(this.node,t)?this.node:this.fragment&&this.fragment.find?this.fragment.find(t):void 0:null},jl=function(t,e){e._test(this,!0)&&e.live&&(this.liveQueries||(this.liveQueries=[])).push(e),this.fragment&&this.fragment.findAll(t,e)},Ml=function(t,e){this.fragment&&this.fragment.findAllComponents(t,e)},Dl=function(t){return this.fragment?this.fragment.findComponent(t):void 0},Nl=Tn,Fl=Rn,Il=Ln,Bl=/^true|on|yes|1$/i,ql=/^[0-9]+$/,Ul=function(t,e){var n,a,r;return r=e.a||{},a={},n=r.twoway,void 0!==n&&(a.twoway=0===n||Bl.test(n)),n=r.lazy,void 0!==n&&(0!==n&&ql.test(n)?a.lazy=parseInt(n):a.lazy=0===n||Bl.test(n)),a},Gl=jn;Sl="altGlyph altGlyphDef altGlyphItem animateColor animateMotion animateTransform clipPath feBlend feColorMatrix feComponentTransfer feComposite feConvolveMatrix feDiffuseLighting feDisplacementMap feDistantLight feFlood feFuncA feFuncB feFuncG feFuncR feGaussianBlur feImage feMerge feMergeNode feMorphology feOffset fePointLight feSpecularLighting feSpotLight feTile feTurbulence foreignObject glyphRef linearGradient radialGradient textPath vkern".split(" "),Cl="attributeName attributeType baseFrequency baseProfile calcMode clipPathUnits contentScriptType contentStyleType diffuseConstant edgeMode externalResourcesRequired filterRes filterUnits glyphRef gradientTransform gradientUnits kernelMatrix kernelUnitLength keyPoints keySplines keyTimes lengthAdjust limitingConeAngle markerHeight markerUnits markerWidth maskContentUnits maskUnits numOctaves pathLength patternContentUnits patternTransform patternUnits pointsAtX pointsAtY pointsAtZ preserveAlpha preserveAspectRatio primitiveUnits refX refY repeatCount repeatDur requiredExtensions requiredFeatures specularConstant specularExponent spreadMethod startOffset stdDeviation stitchTiles surfaceScale systemLanguage tableValues targetX targetY textLength viewBox viewTarget xChannelSelector yChannelSelector zoomAndPan".split(" "),Pl=function(t){for(var e={},n=t.length;n--;)e[t[n].toLowerCase()]=t[n];return e},Al=Pl(Sl.concat(Cl));var Vl=function(t){var e=t.toLowerCase();return Al[e]||e},zl=function(t,e){var n,a;if(n=e.indexOf(":"),-1===n||(a=e.substr(0,n),"xmlns"===a))t.name=t.element.namespace!==no.html?Vl(e):e;else if(e=e.substring(n+1),t.name=Vl(e),t.namespace=no[a.toLowerCase()],t.namespacePrefix=a,!t.namespace)throw'Unknown namespace ("'+a+'")'},Wl=Mn,Hl=Dn,Kl=Nn,Ql=Fn,$l={"accept-charset":"acceptCharset",accesskey:"accessKey",bgcolor:"bgColor","class":"className",codebase:"codeBase",colspan:"colSpan",contenteditable:"contentEditable",datetime:"dateTime",dirname:"dirName","for":"htmlFor","http-equiv":"httpEquiv",ismap:"isMap",maxlength:"maxLength",novalidate:"noValidate",pubdate:"pubDate",readonly:"readOnly",rowspan:"rowSpan",tabindex:"tabIndex",usemap:"useMap"},Yl=In,Jl=qn,Xl=Un,Zl=Gn,td=Vn,ed=zn,nd=Wn,ad=Hn,rd=Kn,id=Qn,od=$n,sd=Yn,pd=Jn,ud=Xn,cd=Zn,ld=function(t){this.init(t)};ld.prototype={bubble:Gl,init:Hl,rebind:Kl,render:Ql,toString:Yl,unbind:Jl,update:cd};var dd,fd=ld,hd=function(t,e){var n,a,r=[];for(n in e)"twoway"!==n&&"lazy"!==n&&e.hasOwnProperty(n)&&(a=new fd({element:t,name:n,value:e[n],root:t.root}),r[n]=a,"value"!==n&&r.push(a));return(a=r.value)&&r.push(a),r};"undefined"!=typeof document&&(dd=co("div"));var md=function(t,e){this.element=t,this.root=t.root,this.parentFragment=t.parentFragment,this.attributes=[],this.fragment=new rg({root:t.root,owner:this,template:[e]})};md.prototype={bubble:function(){this.node&&this.update(),this.element.bubble()},rebind:function(t,e){this.fragment.rebind(t,e)},render:function(t){this.node=t,this.isSvg=t.namespaceURI===no.svg,this.update()},unbind:function(){this.fragment.unbind()},update:function(){var t,e,n=this;t=""+this.fragment,e=ta(t,this.isSvg),this.attributes.filter(function(t){return ea(e,t)}).forEach(function(t){n.node.removeAttribute(t.name)}),e.forEach(function(t){n.node.setAttribute(t.name,t.value)}),this.attributes=e},toString:function(){return""+this.fragment}};var gd=md,vd=function(t,e){return e?e.map(function(e){return new gd(t,e)}):[]},bd=function(t){var e,n,a,r;if(this.element=t,this.root=t.root,this.attribute=t.attributes[this.name||"value"],e=this.attribute.interpolator,e.twowayBinding=this,n=e.keypath){if("}"===n.str.slice(-1))return g("Two-way binding does not work with expressions (`%s` on <%s>)",e.resolver.uniqueString,t.name,{ractive:this.root}),!1;if(n.isSpecial)return g("Two-way binding does not work with %s",e.resolver.ref,{ractive:this.root}),!1}else{var i=e.template.r?"'"+e.template.r+"' reference":"expression";m("The %s being used for two-way binding is ambiguous, and may cause unexpected results. Consider initialising your data to eliminate the ambiguity",i,{ractive:this.root}),e.resolver.forceResolution(),n=e.keypath}this.attribute.isTwoway=!0,this.keypath=n,a=this.root.viewmodel.get(n),void 0===a&&this.getInitialValue&&(a=this.getInitialValue(),void 0!==a&&this.root.viewmodel.set(n,a)),(r=na(t))&&(this.resetValue=a,r.formBindings.push(this))};bd.prototype={handleChange:function(){var t=this;bs.start(this.root),this.attribute.locked=!0,this.root.viewmodel.set(this.keypath,this.getValue()),bs.scheduleTask(function(){return t.attribute.locked=!1}),bs.end()},rebound:function(){var t,e,n;e=this.keypath,n=this.attribute.interpolator.keypath,e!==n&&(N(this.root._twowayBindings[e.str],this),this.keypath=n,t=this.root._twowayBindings[n.str]||(this.root._twowayBindings[n.str]=[]),t.push(this))},unbind:function(){}},bd.extend=function(t){var e,n=this;return e=function(t){bd.call(this,t),this.init&&this.init()},e.prototype=Eo(n.prototype),a(e.prototype,t),e.extend=bd.extend,e};var yd,xd=bd,_d=aa;yd=xd.extend({getInitialValue:function(){return""},getValue:function(){return this.element.node.value},render:function(){var t,e=this.element.node,n=!1;this.rendered=!0,t=this.root.lazy,this.element.lazy===!0?t=!0:this.element.lazy===!1?t=!1:p(this.element.lazy)?(t=!1,n=+this.element.lazy):p(t||"")&&(n=+t,t=!1,this.element.lazy=n),this.handler=n?ia:_d,e.addEventListener("change",_d,!1),t||(e.addEventListener("input",this.handler,!1),e.attachEvent&&e.addEventListener("keyup",this.handler,!1)),e.addEventListener("blur",ra,!1)},unrender:function(){var t=this.element.node;this.rendered=!1,t.removeEventListener("change",_d,!1),t.removeEventListener("input",this.handler,!1),t.removeEventListener("keyup",this.handler,!1),t.removeEventListener("blur",ra,!1)}});var wd=yd,kd=wd.extend({getInitialValue:function(){return this.element.fragment?""+this.element.fragment:""},getValue:function(){return this.element.node.innerHTML}}),Ed=kd,Sd=oa,Cd={},Pd=xd.extend({name:"checked",init:function(){this.siblings=Sd(this.root._guid,"radio",this.element.getAttribute("name")),this.siblings.push(this)},render:function(){var t=this.element.node;t.addEventListener("change",_d,!1),t.attachEvent&&t.addEventListener("click",_d,!1)},unrender:function(){var t=this.element.node;t.removeEventListener("change",_d,!1),t.removeEventListener("click",_d,!1)},handleChange:function(){bs.start(this.root),this.siblings.forEach(function(t){t.root.viewmodel.set(t.keypath,t.getValue())}),bs.end()},getValue:function(){return this.element.node.checked},unbind:function(){N(this.siblings,this)}}),Ad=Pd,Od=xd.extend({name:"name",init:function(){this.siblings=Sd(this.root._guid,"radioname",this.keypath.str),this.siblings.push(this),this.radioName=!0},getInitialValue:function(){return this.element.getAttribute("checked")?this.element.getAttribute("value"):void 0},render:function(){var t=this.element.node;t.name="{{"+this.keypath.str+"}}",t.checked=this.root.viewmodel.get(this.keypath)==this.element.getAttribute("value"),t.addEventListener("change",_d,!1),t.attachEvent&&t.addEventListener("click",_d,!1)},unrender:function(){var t=this.element.node;t.removeEventListener("change",_d,!1),t.removeEventListener("click",_d,!1)},getValue:function(){var t=this.element.node;return t._ractive?t._ractive.value:t.value},handleChange:function(){this.element.node.checked&&xd.prototype.handleChange.call(this)},rebound:function(t,e){var n;xd.prototype.rebound.call(this,t,e),(n=this.element.node)&&(n.name="{{"+this.keypath.str+"}}")},unbind:function(){N(this.siblings,this)}}),Td=Od,Rd=xd.extend({name:"name",getInitialValue:function(){return this.noInitialValue=!0,[]},init:function(){var t,e;this.checkboxName=!0,this.siblings=Sd(this.root._guid,"checkboxes",this.keypath.str),this.siblings.push(this),this.noInitialValue&&(this.siblings.noInitialValue=!0),this.siblings.noInitialValue&&this.element.getAttribute("checked")&&(t=this.root.viewmodel.get(this.keypath),e=this.element.getAttribute("value"),t.push(e))},unbind:function(){N(this.siblings,this)},render:function(){var t,e,n=this.element.node;t=this.root.viewmodel.get(this.keypath),e=this.element.getAttribute("value"),i(t)?this.isChecked=L(t,e):this.isChecked=t==e,n.name="{{"+this.keypath.str+"}}",n.checked=this.isChecked,n.addEventListener("change",_d,!1),n.attachEvent&&n.addEventListener("click",_d,!1)},unrender:function(){var t=this.element.node;t.removeEventListener("change",_d,!1),t.removeEventListener("click",_d,!1)},changed:function(){var t=!!this.isChecked;return this.isChecked=this.element.node.checked,this.isChecked===t},handleChange:function(){this.isChecked=this.element.node.checked,xd.prototype.handleChange.call(this)},getValue:function(){return this.siblings.filter(sa).map(pa)}}),Ld=Rd,jd=xd.extend({name:"checked",render:function(){var t=this.element.node;t.addEventListener("change",_d,!1),t.attachEvent&&t.addEventListener("click",_d,!1)},unrender:function(){var t=this.element.node;t.removeEventListener("change",_d,!1),t.removeEventListener("click",_d,!1)},getValue:function(){return this.element.node.checked}}),Md=jd,Dd=xd.extend({getInitialValue:function(){var t,e,n,a,r=this.element.options;if(void 0===this.element.getAttribute("value")&&(e=t=r.length,t)){for(;e--;)if(r[e].getAttribute("selected")){n=r[e].getAttribute("value"),a=!0;break}if(!a)for(;++ee;e+=1)if(a=t[e],t[e].selected)return r=a._ractive?a._ractive.value:a.value},forceUpdate:function(){var t=this,e=this.getValue();void 0!==e&&(this.attribute.locked=!0,bs.scheduleTask(function(){return t.attribute.locked=!1}),this.root.viewmodel.set(this.keypath,e))}}),Nd=Dd,Fd=Nd.extend({getInitialValue:function(){return this.element.options.filter(function(t){return t.getAttribute("selected")}).map(function(t){return t.getAttribute("value")})},render:function(){var t;this.element.node.addEventListener("change",_d,!1),t=this.root.viewmodel.get(this.keypath),void 0===t&&this.handleChange()},unrender:function(){this.element.node.removeEventListener("change",_d,!1)},setValue:function(){throw Error("TODO not implemented yet")},getValue:function(){var t,e,n,a,r,i;for(t=[],e=this.element.node.options,a=e.length,n=0;a>n;n+=1)r=e[n],r.selected&&(i=r._ractive?r._ractive.value:r.value,t.push(i));return t},handleChange:function(){var t,e,n;return t=this.attribute,e=t.value,n=this.getValue(),void 0!==e&&j(n,e)||Nd.prototype.handleChange.call(this),this},forceUpdate:function(){var t=this,e=this.getValue();void 0!==e&&(this.attribute.locked=!0,bs.scheduleTask(function(){return t.attribute.locked=!1}),this.root.viewmodel.set(this.keypath,e))},updateModel:function(){void 0!==this.attribute.value&&this.attribute.value.length||this.root.viewmodel.set(this.keypath,this.initialValue)}}),Id=Fd,Bd=xd.extend({render:function(){this.element.node.addEventListener("change",_d,!1)},unrender:function(){this.element.node.removeEventListener("change",_d,!1)},getValue:function(){return this.element.node.files}}),qd=Bd,Ud=wd.extend({getInitialValue:function(){},getValue:function(){var t=parseFloat(this.element.node.value);return isNaN(t)?void 0:t}}),Gd=ua,Vd=la,zd=da,Wd=fa,Hd=ha,Kd=/^event(?:\.(.+))?/,Qd=ba,$d=ya,Yd={},Jd={touchstart:!0,touchmove:!0,touchend:!0,touchcancel:!0,touchleave:!0},Xd=_a,Zd=wa,tf=ka,ef=Ea,nf=Sa,af=function(t,e,n){this.init(t,e,n)};af.prototype={bubble:Vd,fire:zd,getAction:Wd,init:Hd,listen:$d,rebind:Xd,render:Zd,resolve:tf,unbind:ef,unrender:nf};var rf=af,of=function(t,e){var n,a,r,i,o=[];for(a in e)if(e.hasOwnProperty(a))for(r=a.split("-"),n=r.length;n--;)i=new rf(t,r[n],e[a]),o.push(i);return o},sf=function(t,e){var n,a,r,i=this;this.element=t,this.root=n=t.root,a=e.n||e,("string"==typeof a||(r=new rg({template:a,root:n,owner:t}),a=""+r,r.unbind(),""!==a))&&(e.a?this.params=e.a:e.d&&(this.fragment=new rg({template:e.d,root:n,owner:t}),this.params=this.fragment.getArgsList(),this.fragment.bubble=function(){this.dirtyArgs=this.dirtyValue=!0,i.params=this.getArgsList(),i.ready&&i.update()}),this.fn=v("decorators",n,a),this.fn||l(Io(a,"decorator")))};sf.prototype={init:function(){var t,e,n;if(t=this.element.node,this.params?(n=[t].concat(this.params),e=this.fn.apply(this.root,n)):e=this.fn.call(this.root,t),!e||!e.teardown)throw Error("Decorator definition must return an object with a teardown method");this.actual=e,this.ready=!0},update:function(){this.actual.update?this.actual.update.apply(this.root,this.params):(this.actual.teardown(!0),this.init())},rebind:function(t,e){this.fragment&&this.fragment.rebind(t,e)},teardown:function(t){this.torndown=!0,this.ready&&this.actual.teardown(),!t&&this.fragment&&this.fragment.unbind()}};var pf,uf,cf,lf=sf,df=La,ff=ja,hf=Ba,mf=function(t){return t.replace(/-([a-zA-Z])/g,function(t,e){return e.toUpperCase()})};Xi?(uf={},cf=co("div").style,pf=function(t){var e,n,a;if(t=mf(t),!uf[t])if(void 0!==cf[t])uf[t]=t;else for(a=t.charAt(0).toUpperCase()+t.substring(1),e=ro.length;e--;)if(n=ro[e],void 0!==cf[n+a]){uf[t]=n+a;break}return uf[t]}):pf=null;var gf,vf,bf=pf;Xi?(vf=window.getComputedStyle||Po.getComputedStyle,gf=function(t){var e,n,a,r,o;if(e=vf(this.node),"string"==typeof t)return o=e[bf(t)],"0px"===o&&(o=0),o;if(!i(t))throw Error("Transition$getStyle must be passed a string, or an array of strings representing CSS properties");for(n={},a=t.length;a--;)r=t[a],o=e[bf(r)],"0px"===o&&(o=0),n[r]=o;return n}):gf=null;var yf=gf,xf=function(t,e){var n;if("string"==typeof t)this.node.style[bf(t)]=e;else for(n in t)t.hasOwnProperty(n)&&(this.node.style[bf(n)]=t[n]);return this},_f=function(t){var e;this.duration=t.duration,this.step=t.step,this.complete=t.complete,"string"==typeof t.easing?(e=t.root.easing[t.easing],e||(g(Io(t.easing,"easing")),e=qa)):e="function"==typeof t.easing?t.easing:qa,this.easing=e,this.start=ns(),this.end=this.start+this.duration,this.running=!0,_s.add(this)};_f.prototype={tick:function(t){var e,n;return this.running?t>this.end?(this.step&&this.step(1),this.complete&&this.complete(1),!1):(e=t-this.start,n=this.easing(e/this.duration),this.step&&this.step(n),!0):!1},stop:function(){this.abort&&this.abort(),this.running=!1}};var wf,kf,Ef,Sf,Cf,Pf,Af,Of,Tf=_f,Rf=RegExp("^-(?:"+ro.join("|")+")-"),Lf=function(t){return t.replace(Rf,"")},jf=RegExp("^(?:"+ro.join("|")+")([A-Z])"),Mf=function(t){var e;return t?(jf.test(t)&&(t="-"+t),e=t.replace(/[A-Z]/g,function(t){return"-"+t.toLowerCase()})):""},Df={},Nf={};Xi?(kf=co("div").style,function(){void 0!==kf.transition?(Ef="transition",Sf="transitionend",Cf=!0):void 0!==kf.webkitTransition?(Ef="webkitTransition",Sf="webkitTransitionEnd",Cf=!0):Cf=!1}(),Ef&&(Pf=Ef+"Duration",Af=Ef+"Property",Of=Ef+"TimingFunction"),wf=function(t,e,n,a,r){setTimeout(function(){var i,o,s,p,u;p=function(){o&&s&&(t.root.fire(t.name+":end",t.node,t.isIntro),r())},i=(t.node.namespaceURI||"")+t.node.tagName,t.node.style[Af]=a.map(bf).map(Mf).join(","),t.node.style[Of]=Mf(n.easing||"linear"),t.node.style[Pf]=n.duration/1e3+"s",u=function(e){var n;n=a.indexOf(mf(Lf(e.propertyName))),-1!==n&&a.splice(n,1),a.length||(t.node.removeEventListener(Sf,u,!1),s=!0,p())},t.node.addEventListener(Sf,u,!1),setTimeout(function(){for(var r,c,l,d,f,h=a.length,g=[];h--;)d=a[h],r=i+d,Cf&&!Nf[r]&&(t.node.style[bf(d)]=e[d],Df[r]||(c=t.getStyle(d),Df[r]=t.getStyle(d)!=e[d],Nf[r]=!Df[r],Nf[r]&&(t.node.style[bf(d)]=c))),(!Cf||Nf[r])&&(void 0===c&&(c=t.getStyle(d)),l=a.indexOf(d),-1===l?m("Something very strange happened with transitions. Please raise an issue at https://github.com/ractivejs/ractive/issues - thanks!",{node:t.node}):a.splice(l,1),f=/[^\d]*$/.exec(e[d])[0],g.push({name:bf(d),interpolator:qo(parseFloat(c),parseFloat(e[d])),suffix:f}));g.length?new Tf({root:t.root,duration:n.duration,easing:mf(n.easing||""),step:function(e){var n,a;for(a=g.length;a--;)n=g[a],t.node.style[n.name]=n.interpolator(e)+n.suffix},complete:function(){o=!0,p()}}):o=!0,a.length||(t.node.removeEventListener(Sf,u,!1),s=!0,p())},0)},n.delay||0)}):wf=null;var Ff,If,Bf,qf,Uf,Gf=wf;if("undefined"!=typeof document){if(Ff="hidden",Uf={},Ff in document)Bf="";else for(qf=ro.length;qf--;)If=ro[qf],Ff=If+"Hidden",Ff in document&&(Bf=If);void 0!==Bf?(document.addEventListener(Bf+"visibilitychange",Ua),Ua()):("onfocusout"in document?(document.addEventListener("focusout",Ga),document.addEventListener("focusin",Va)):(window.addEventListener("pagehide",Ga),window.addEventListener("blur",Ga),window.addEventListener("pageshow",Va),window.addEventListener("focus",Va)),Uf.hidden=!1)}var Vf,zf,Wf,Hf=Uf;Xi?(zf=window.getComputedStyle||Po.getComputedStyle,Vf=function(t,e,n){var a,r=this;if(4===arguments.length)throw Error("t.animateStyle() returns a promise - use .then() instead of passing a callback");if(Hf.hidden)return this.setStyle(t,e),Wf||(Wf=us.resolve());"string"==typeof t?(a={},a[t]=e):(a=t,n=e),n||(g('The "%s" transition does not supply an options object to `t.animateStyle()`. This will break in a future version of Ractive. For more info see https://github.com/RactiveJS/Ractive/issues/340',this.name),n=this);var i=new us(function(t){var e,i,o,s,p,u,c;if(!n.duration)return r.setStyle(a),void t();for(e=Object.keys(a),i=[],o=zf(r.node),p={},u=e.length;u--;)c=e[u],s=o[bf(c)],"0px"===s&&(s=0),s!=a[c]&&(i.push(c),r.node.style[bf(c)]=s);return i.length?void Gf(r,a,n,i,t):void t()});return i}):Vf=null;var Kf=Vf,Qf=function(t,e){return"number"==typeof t?t={duration:t}:"string"==typeof t?t="slow"===t?{duration:600}:"fast"===t?{duration:200}:{duration:400}:t||(t={}),r({},t,e)},$f=za,Yf=function(t,e,n){this.init(t,e,n)};Yf.prototype={init:hf,start:$f,getStyle:yf,setStyle:xf,animateStyle:Kf,processParams:Qf};var Jf,Xf,Zf=Yf,th=Ha;Jf=function(){var t=this.node,e=this.fragment.toString(!1);if(window&&window.appearsToBeIELessEqual8&&(t.type="text/css"),t.styleSheet)t.styleSheet.cssText=e;else{for(;t.hasChildNodes();)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}},Xf=function(){this.node.type&&"text/javascript"!==this.node.type||m("Script tag was updated. This does not cause the code to be re-evaluated!",{ractive:this.root}),this.node.text=this.fragment.toString(!1)};var eh=function(){var t,e;return this.template.y?"":(t="<"+this.template.e,t+=this.attributes.map(Xa).join("")+this.conditionalAttributes.map(Xa).join(""),"option"===this.name&&Ya(this)&&(t+=" selected"),"input"===this.name&&Ja(this)&&(t+=" checked"),t+=">","textarea"===this.name&&void 0!==this.getAttribute("value")?t+=Ee(this.getAttribute("value")):void 0!==this.getAttribute("contenteditable")&&(t+=this.getAttribute("value")||""),this.fragment&&(e="script"!==this.name&&"style"!==this.name,t+=this.fragment.toString(e)),ic.test(this.template.e)||(t+=""),t)},nh=Za,ah=tr,rh=function(t){this.init(t)};rh.prototype={bubble:Tl,detach:Rl,find:Ll,findAll:jl,findAllComponents:Ml,findComponent:Dl,findNextNode:Nl,firstNode:Fl,getAttribute:Il,init:df,rebind:ff,render:th,toString:eh,unbind:nh,unrender:ah};var ih=rh,oh=/^\s*$/,sh=/^\s*/,ph=function(t){var e,n,a,r;return e=t.split("\n"),n=e[0],void 0!==n&&oh.test(n)&&e.shift(),a=D(e),void 0!==a&&oh.test(a)&&e.pop(),r=e.reduce(nr,null),r&&(t=e.map(function(t){return t.replace(r,"")}).join("\n")),t},uh=ar,ch=function(t,e){var n;return e?n=t.split("\n").map(function(t,n){return n?e+t:t}).join("\n"):t},lh='Could not find template for partial "%s"',dh=function(t){var e,n;e=this.parentFragment=t.parentFragment,this.root=e.root,this.type=Au,this.index=t.index,this.name=t.template.r,this.rendered=!1,this.fragment=this.fragmentToRender=this.fragmentToUnrender=null,Vc.init(this,t),this.keypath||((n=uh(this.root,this.name,e))?(xc.call(this),this.isNamed=!0,this.setTemplate(n)):g(lh,this.name))};dh.prototype={bubble:function(){this.parentFragment.bubble()},detach:function(){return this.fragment.detach()},find:function(t){return this.fragment.find(t)},findAll:function(t,e){return this.fragment.findAll(t,e)},findComponent:function(t){return this.fragment.findComponent(t)},findAllComponents:function(t,e){return this.fragment.findAllComponents(t,e)},firstNode:function(){return this.fragment.firstNode()},findNextNode:function(){return this.parentFragment.findNextNode(this)},getPartialName:function(){return this.isNamed&&this.name?this.name:void 0===this.value?this.name:this.value},getValue:function(){return this.fragment.getValue()},rebind:function(t,e){this.isNamed||Gc.call(this,t,e),this.fragment&&this.fragment.rebind(t,e)},render:function(){return this.docFrag=document.createDocumentFragment(),this.update(),this.rendered=!0,this.docFrag},resolve:Vc.resolve,setValue:function(t){var e;(void 0===t||t!==this.value)&&(void 0!==t&&(e=uh(this.root,""+t,this.parentFragment)),!e&&this.name&&(e=uh(this.root,this.name,this.parentFragment))&&(xc.call(this),this.isNamed=!0),e||g(lh,this.name,{ractive:this.root}),this.value=t,this.setTemplate(e||[]),this.bubble(),this.rendered&&bs.addView(this))},setTemplate:function(t){this.fragment&&(this.fragment.unbind(),this.rendered&&(this.fragmentToUnrender=this.fragment)),this.fragment=new rg({template:t,root:this.root,owner:this,pElement:this.parentFragment.pElement}),this.fragmentToRender=this.fragment},toString:function(t){var e,n,a,r;return e=this.fragment.toString(t),n=this.parentFragment.items[this.index-1],n&&n.type===ku?(a=n.text.split("\n").pop(),(r=/^\s+$/.exec(a))?ch(e,r[0]):e):e},unbind:function(){this.isNamed||xc.call(this),this.fragment&&this.fragment.unbind()},unrender:function(t){this.rendered&&(this.fragment&&this.fragment.unrender(t),this.rendered=!1)},update:function(){var t,e;this.fragmentToUnrender&&(this.fragmentToUnrender.unrender(!0),this.fragmentToUnrender=null),this.fragmentToRender&&(this.docFrag.appendChild(this.fragmentToRender.render()),this.fragmentToRender=null), this.rendered&&(t=this.parentFragment.getNode(),e=this.parentFragment.findNextNode(this),t.insertBefore(this.docFrag,e))}};var fh,hh,mh,gh=dh,vh=pr,bh=ur,yh=new is("detach"),xh=cr,_h=lr,wh=dr,kh=fr,Eh=hr,Sh=mr,Ch=function(t,e,n,a){var r=t.root,i=t.keypath;a?r.viewmodel.smartUpdate(i,e,a):r.viewmodel.mark(i)},Ph=[],Ah=["pop","push","reverse","shift","sort","splice","unshift"];Ah.forEach(function(t){var e=function(){for(var e=arguments.length,n=Array(e),a=0;e>a;a++)n[a]=arguments[a];var r,i,o,s;for(r=bp(this,t,n),i=Array.prototype[t].apply(this,arguments),bs.start(),this._ractive.setting=!0,s=this._ractive.wrappers.length;s--;)o=this._ractive.wrappers[s],bs.addRactive(o.root),Ch(o,this,t,r);return bs.end(),this._ractive.setting=!1,i};So(Ph,t,{value:e})}),fh={},fh.__proto__?(hh=function(t){t.__proto__=Ph},mh=function(t){t.__proto__=Array.prototype}):(hh=function(t){var e,n;for(e=Ah.length;e--;)n=Ah[e],So(t,n,{value:Ph[n],configurable:!0})},mh=function(t){var e;for(e=Ah.length;e--;)delete t[Ah[e]]}),hh.unpatch=mh;var Oh,Th,Rh,Lh=hh;Oh={filter:function(t){return i(t)&&(!t._ractive||!t._ractive.setting)},wrap:function(t,e,n){return new Th(t,e,n)}},Th=function(t,e,n){this.root=t,this.value=e,this.keypath=E(n),e._ractive||(So(e,"_ractive",{value:{wrappers:[],instances:[],setting:!1},configurable:!0}),Lh(e)),e._ractive.instances[t._guid]||(e._ractive.instances[t._guid]=0,e._ractive.instances.push(t)),e._ractive.instances[t._guid]+=1,e._ractive.wrappers.push(this)},Th.prototype={get:function(){return this.value},teardown:function(){var t,e,n,a,r;if(t=this.value,e=t._ractive,n=e.wrappers,a=e.instances,e.setting)return!1;if(r=n.indexOf(this),-1===r)throw Error(Rh);if(n.splice(r,1),n.length){if(a[this.root._guid]-=1,!a[this.root._guid]){if(r=a.indexOf(this.root),-1===r)throw Error(Rh);a.splice(r,1)}}else delete t._ractive,Lh.unpatch(this.value)}},Rh="Something went wrong in a rather interesting way";var jh,Mh,Dh=Oh,Nh=/^\s*[0-9]+\s*$/,Fh=function(t){return Nh.test(t)?[]:{}};try{Object.defineProperty({},"test",{value:0}),jh={filter:function(t,e,n){var a,r;return e?(e=E(e),(a=n.viewmodel.wrapped[e.parent.str])&&!a.magic?!1:(r=n.viewmodel.get(e.parent),i(r)&&/^[0-9]+$/.test(e.lastKey)?!1:r&&("object"==typeof r||"function"==typeof r))):!1},wrap:function(t,e,n){return new Mh(t,e,n)}},Mh=function(t,e,n){var a,r,i;return n=E(n),this.magic=!0,this.ractive=t,this.keypath=n,this.value=e,this.prop=n.lastKey,a=n.parent,this.obj=a.isRoot?t.viewmodel.data:t.viewmodel.get(a),r=this.originalDescriptor=Object.getOwnPropertyDescriptor(this.obj,this.prop),r&&r.set&&(i=r.set._ractiveWrappers)?void(-1===i.indexOf(this)&&i.push(this)):void gr(this,e,r)},Mh.prototype={get:function(){return this.value},reset:function(t){return this.updating?void 0:(this.updating=!0,this.obj[this.prop]=t,bs.addRactive(this.ractive),this.ractive.viewmodel.mark(this.keypath,{keepExistingWrapper:!0}),this.updating=!1,!0)},set:function(t,e){this.updating||(this.obj[this.prop]||(this.updating=!0,this.obj[this.prop]=Fh(t),this.updating=!1),this.obj[this.prop][t]=e)},teardown:function(){var t,e,n,a,r;return this.updating?!1:(t=Object.getOwnPropertyDescriptor(this.obj,this.prop),e=t&&t.set,void(e&&(a=e._ractiveWrappers,r=a.indexOf(this),-1!==r&&a.splice(r,1),a.length||(n=this.obj[this.prop],Object.defineProperty(this.obj,this.prop,this.originalDescriptor||{writable:!0,enumerable:!0,configurable:!0}),this.obj[this.prop]=n))))}}}catch(Ao){jh=!1}var Ih,Bh,qh=jh;qh&&(Ih={filter:function(t,e,n){return qh.filter(t,e,n)&&Dh.filter(t)},wrap:function(t,e,n){return new Bh(t,e,n)}},Bh=function(t,e,n){this.value=e,this.magic=!0,this.magicWrapper=qh.wrap(t,e,n),this.arrayWrapper=Dh.wrap(t,e,n)},Bh.prototype={get:function(){return this.value},teardown:function(){this.arrayWrapper.teardown(),this.magicWrapper.teardown()},reset:function(t){return this.magicWrapper.reset(t)}});var Uh=Ih,Gh=vr,Vh={},zh=xr,Wh=_r,Hh=Er,Kh=Or,Qh=Tr,$h=function(t,e){this.computation=t,this.viewmodel=t.viewmodel,this.ref=e,this.root=this.viewmodel.ractive,this.parentFragment=this.root.component&&this.root.component.parentFragment};$h.prototype={resolve:function(t){this.computation.softDeps.push(t),this.computation.unresolvedDeps[t.str]=null,this.viewmodel.register(t,this.computation,"computed")}};var Yh=$h,Jh=function(t,e){this.key=t,this.getter=e.getter,this.setter=e.setter,this.hardDeps=e.deps||[],this.softDeps=[],this.unresolvedDeps={},this.depValues={},this._dirty=this._firstRun=!0};Jh.prototype={constructor:Jh,init:function(t){var e,n=this;this.viewmodel=t,this.bypass=!0,e=t.get(this.key),t.clearCache(this.key.str),this.bypass=!1,this.setter&&void 0!==e&&this.set(e),this.hardDeps&&this.hardDeps.forEach(function(e){return t.register(e,n,"computed")})},invalidate:function(){this._dirty=!0},get:function(){var t,e,n=this,a=!1;if(this.getting){var r="The "+this.key.str+" computation indirectly called itself. This probably indicates a bug in the computation. It is commonly caused by `array.sort(...)` - if that's the case, clone the array first with `array.slice().sort(...)`";return h(r),this.value}if(this.getting=!0,this._dirty){if(this._firstRun||!this.hardDeps.length&&!this.softDeps.length?a=!0:[this.hardDeps,this.softDeps].forEach(function(t){var e,r,i;if(!a)for(i=t.length;i--;)if(e=t[i],r=n.viewmodel.get(e),!s(r,n.depValues[e.str]))return n.depValues[e.str]=r,void(a=!0)}),a){this.viewmodel.capture();try{this.value=this.getter()}catch(i){m('Failed to compute "%s"',this.key.str),d(i.stack||i),this.value=void 0}t=this.viewmodel.release(),e=this.updateDependencies(t),e&&[this.hardDeps,this.softDeps].forEach(function(t){t.forEach(function(t){n.depValues[t.str]=n.viewmodel.get(t)})})}this._dirty=!1}return this.getting=this._firstRun=!1,this.value},set:function(t){if(this.setting)return void(this.value=t);if(!this.setter)throw Error("Computed properties without setters are read-only. (This may change in a future version of Ractive!)");this.setter(t)},updateDependencies:function(t){var e,n,a,r,i;for(n=this.softDeps,e=n.length;e--;)a=n[e],-1===t.indexOf(a)&&(r=!0,this.viewmodel.unregister(a,this,"computed"));for(e=t.length;e--;)a=t[e],-1!==n.indexOf(a)||this.hardDeps&&-1!==this.hardDeps.indexOf(a)||(r=!0,Rr(this.viewmodel,a)&&!this.unresolvedDeps[a.str]?(i=new Yh(this,a.str),t.splice(e,1),this.unresolvedDeps[a.str]=i,bs.addUnresolved(i)):this.viewmodel.register(a,this,"computed"));return r&&(this.softDeps=t.slice()),r}};var Xh=Jh,Zh=Lr,tm={FAILED_LOOKUP:!0},em=jr,nm={},am=Dr,rm=Nr,im=function(t,e){this.localKey=t,this.keypath=e.keypath,this.origin=e.origin,this.deps=[],this.unresolved=[],this.resolved=!1};im.prototype={forceResolution:function(){this.keypath=this.localKey,this.setup()},get:function(t,e){return this.resolved?this.origin.get(this.map(t),e):void 0},getValue:function(){return this.keypath?this.origin.get(this.keypath):void 0},initViewmodel:function(t){this.local=t,this.setup()},map:function(t){return void 0===typeof this.keypath?this.localKey:t.replace(this.localKey,this.keypath)},register:function(t,e,n){this.deps.push({keypath:t,dep:e,group:n}),this.resolved&&this.origin.register(this.map(t),e,n)},resolve:function(t){void 0!==this.keypath&&this.unbind(!0),this.keypath=t,this.setup()},set:function(t,e){this.resolved||this.forceResolution(),this.origin.set(this.map(t),e)},setup:function(){var t=this;void 0!==this.keypath&&(this.resolved=!0,this.deps.length&&(this.deps.forEach(function(e){var n=t.map(e.keypath);if(t.origin.register(n,e.dep,e.group),e.dep.setValue)e.dep.setValue(t.origin.get(n));else{if(!e.dep.invalidate)throw Error("An unexpected error occurred. Please raise an issue at https://github.com/ractivejs/ractive/issues - thanks!");e.dep.invalidate()}}),this.origin.mark(this.keypath)))},setValue:function(t){if(!this.keypath)throw Error("Mapping does not have keypath, cannot set value. Please raise an issue at https://github.com/ractivejs/ractive/issues - thanks!");this.origin.set(this.keypath,t)},unbind:function(t){var e=this;t||delete this.local.mappings[this.localKey],this.resolved&&(this.deps.forEach(function(t){e.origin.unregister(e.map(t.keypath),t.dep,t.group)}),this.tracker&&this.origin.unregister(this.keypath,this.tracker))},unregister:function(t,e,n){var a,r;if(this.resolved){for(a=this.deps,r=a.length;r--;)if(a[r].dep===e){a.splice(r,1);break}this.origin.unregister(this.map(t),e,n)}}};var om=Fr,sm=function(t,e){var n,a,r,i;return n={},a=0,r=t.map(function(t,r){var o,s,p;s=a,p=e.length;do{if(o=e.indexOf(t,s),-1===o)return i=!0,-1;s=o+1}while(n[o]&&p>s);return o===a&&(a+=1),o!==r&&(i=!0),n[o]=!0,o})},pm=Ir,um={},cm=Ur,lm=Vr,dm=zr,fm=Wr,hm=Kr,mm={implicit:!0},gm={noCascade:!0},vm=$r,bm=Yr,ym=function(t){var e,n,a=t.adapt,r=t.data,i=t.ractive,o=t.computed,s=t.mappings;this.ractive=i,this.adaptors=a,this.onchange=t.onchange,this.cache={},this.cacheMap=Eo(null),this.deps={computed:Eo(null),"default":Eo(null)},this.depsMap={computed:Eo(null),"default":Eo(null)},this.patternObservers=[],this.specials=Eo(null),this.wrapped=Eo(null),this.computations=Eo(null),this.captureGroups=[],this.unresolvedImplicitDependencies=[],this.changes=[],this.implicitChanges={},this.noCascade={},this.data=r,this.mappings=Eo(null);for(e in s)this.map(E(e),s[e]);if(r)for(e in r)(n=this.mappings[e])&&void 0===n.getValue()&&n.setValue(r[e]);for(e in o)s&&e in s&&l("Cannot map to a computed property ('%s')",e),this.compute(E(e),o[e]);this.ready=!0};ym.prototype={adapt:Gh,applyChanges:Hh,capture:Kh,clearCache:Qh,compute:Zh,get:em,init:am,map:rm,mark:om,merge:pm,register:cm,release:lm,reset:dm,set:fm,smartUpdate:hm,teardown:vm,unregister:bm};var xm=ym;Xr.prototype={constructor:Xr,begin:function(t){this.inProcess[t._guid]=!0},end:function(t){var e=t.parent;e&&this.inProcess[e._guid]?Zr(this.queue,e).push(t):ti(this,t),delete this.inProcess[t._guid]}};var _m=Xr,wm=ei,km=/\$\{([^\}]+)\}/g,Em=new is("construct"),Sm=new is("config"),Cm=new _m("init"),Pm=0,Am=["adaptors","components","decorators","easing","events","interpolators","partials","transitions"],Om=ii,Tm=ci;ci.prototype={bubble:function(){this.dirty||(this.dirty=!0,bs.addView(this))},update:function(){this.callback(this.fragment.getValue()),this.dirty=!1},rebind:function(t,e){this.fragment.rebind(t,e)},unbind:function(){this.fragment.unbind()}};var Rm=function(t,e,n,r,o){var s,p,u,c,l,d,f={},h={},g={},v=[];for(p=t.parentFragment,u=t.root,o=o||{},a(f,o),o.content=r||[],f[""]=o.content,e.defaults.el&&m("The <%s/> component has a default `el` property; it has been disregarded",t.name),c=p;c;){if(c.owner.type===Lu){l=c.owner.container;break}c=c.parent}return n&&Object.keys(n).forEach(function(e){var a,r,o=n[e];if("string"==typeof o)a=dc(o),h[e]=a?a.value:o;else if(0===o)h[e]=!0;else{if(!i(o))throw Error("erm wut");di(o)?(g[e]={origin:t.root.viewmodel,keypath:void 0},r=li(t,o[0],function(t){t.isSpecial?d?s.set(e,t.value):(h[e]=t.value,delete g[e]):d?s.viewmodel.mappings[e].resolve(t):g[e].keypath=t})):r=new Tm(t,o,function(t){d?s.set(e,t):h[e]=t}),v.push(r)}}),s=Eo(e.prototype),Om(s,{el:null,append:!0,data:h,partials:o,magic:u.magic||e.defaults.magic,modifyArrays:u.modifyArrays,adapt:u.adapt},{parent:u,component:t,container:l,mappings:g,inlinePartials:f,cssIds:p.cssIds}),d=!0,t.resolvers=v,s},Lm=fi,jm=function(t){var e,n;for(e=t.root;e;)(n=e._liveComponentQueries["_"+t.name])&&n.push(t.instance),e=e.parent},Mm=mi,Dm=gi,Nm=vi,Fm=bi,Im=yi,Bm=new is("teardown"),qm=_i,Um=function(t,e){this.init(t,e)};Um.prototype={detach:bh,find:xh,findAll:_h,findAllComponents:wh,findComponent:kh,findNextNode:Eh,firstNode:Sh,init:Mm,rebind:Dm,render:Nm,toString:Fm,unbind:Im,unrender:qm};var Gm=Um,Vm=function(t){this.type=Ou,this.value=t.template.c};Vm.prototype={detach:vc,firstNode:function(){return this.node},render:function(){return this.node||(this.node=document.createComment(this.value)),this.node},toString:function(){return""},unrender:function(t){t&&this.node.parentNode.removeChild(this.node)}};var zm=Vm,Wm=function(t){var e,n;this.type=Lu,this.container=e=t.parentFragment.root,this.component=n=e.component,this.container=e,this.containerFragment=t.parentFragment,this.parentFragment=n.parentFragment;var a=this.name=t.template.n||"",r=e._inlinePartials[a];r||(m('Could not find template for partial "'+a+'"',{ractive:t.root}),r=[]),this.fragment=new rg({owner:this,root:e.parent,template:r,pElement:this.containerFragment.pElement}),i(n.yielders[a])?n.yielders[a].push(this):n.yielders[a]=[this],bs.scheduleTask(function(){if(n.yielders[a].length>1)throw Error("A component template can only have one {{yield"+(a?" "+a:"")+"}} declaration at a time")})};Wm.prototype={detach:function(){return this.fragment.detach()},find:function(t){return this.fragment.find(t)},findAll:function(t,e){return this.fragment.findAll(t,e)},findComponent:function(t){return this.fragment.findComponent(t)},findAllComponents:function(t,e){return this.fragment.findAllComponents(t,e)},findNextNode:function(){return this.containerFragment.findNextNode(this)},firstNode:function(){return this.fragment.firstNode()},getValue:function(t){return this.fragment.getValue(t)},render:function(){return this.fragment.render()},unbind:function(){this.fragment.unbind()},unrender:function(t){this.fragment.unrender(t),N(this.component.yielders[this.name],this)},rebind:function(t,e){this.fragment.rebind(t,e)},toString:function(){return""+this.fragment}};var Hm=Wm,Km=function(t){this.declaration=t.template.a};Km.prototype={init:ko,render:ko,unrender:ko,teardown:ko,toString:function(){return""}};var Qm=Km,$m=wi,Ym=Ei,Jm=Si,Xm=Ci,Zm=Oi,tg=Ri,eg=function(t){this.init(t)};eg.prototype={bubble:cu,detach:lu,find:du,findAll:fu,findAllComponents:hu,findComponent:mu,findNextNode:gu,firstNode:vu,getArgsList:hc,getNode:mc,getValue:gc,init:$m,rebind:Ym,registerIndexRef:function(t){var e=this.registeredIndexRefs;-1===e.indexOf(t)&&e.push(t)},render:Jm,toString:Xm,unbind:Zm,unregisterIndexRef:function(t){var e=this.registeredIndexRefs;e.splice(e.indexOf(t),1)},unrender:tg};var ng,ag,rg=eg,ig=Li,og=["template","partials","components","decorators","events"],sg=new is("reset"),pg=function(t,e){function n(e,a,r){r&&r.partials[t]||e.forEach(function(e){e.type===Au&&e.getPartialName()===t&&a.push(e),e.fragment&&n(e.fragment.items,a,r),i(e.fragments)?n(e.fragments,a,r):i(e.items)?n(e.items,a,r):e.type===Ru&&e.instance&&n(e.instance.fragment.items,a,e.instance),e.type===Pu&&(i(e.attributes)&&n(e.attributes,a,r),i(e.conditionalAttributes)&&n(e.conditionalAttributes,a,r))})}var a,r=[];return n(this.fragment.items,r),this.partials[t]=e,a=bs.start(this,!0),r.forEach(function(e){e.value=void 0,e.setValue(t)}),bs.end(),a},ug=ji,cg=xp("reverse"),lg=Mi,dg=xp("shift"),fg=xp("sort"),hg=xp("splice"),mg=Ni,gg=Fi,vg=new is("teardown"),bg=Bi,yg=qi,xg=Ui,_g=new is("unrender"),wg=xp("unshift"),kg=Gi,Eg=new is("update"),Sg=Vi,Cg={add:Zo,animate:Es,detach:Cs,find:As,findAll:Fs,findAllComponents:Is,findComponent:Bs,findContainer:qs,findParent:Us,fire:Ws,get:Hs,insert:Qs,merge:Ys,observe:lp,observeOnce:dp,off:mp,on:gp,once:vp,pop:_p,push:wp,render:Tp,reset:ig,resetPartial:pg,resetTemplate:ug,reverse:cg,set:lg,shift:dg,sort:fg,splice:hg,subtract:mg,teardown:gg,toggle:bg,toHTML:yg,toHtml:yg,unrender:xg,unshift:wg,update:kg,updateModel:Sg},Pg=function(t,e,n){return n||Wi(t,e)?function(){var n,a="_super"in this,r=this._super;return this._super=e,n=t.apply(this,arguments),a&&(this._super=r),n}:t},Ag=Hi,Og=Yi,Tg=function(t){var e,n,a={};return t&&(e=t._ractive)?(a.ractive=e.root,a.keypath=e.keypath.str,a.index={},(n=Oc(e.proxy.parentFragment))&&(a.index=Oc.resolve(n)),a):a};ng=function(t){return this instanceof ng?void Om(this,t):new ng(t)},ag={DEBUG:{writable:!0,value:!0},DEBUG_PROMISES:{writable:!0,value:!0},extend:{value:Og},getNodeInfo:{value:Tg},parse:{value:Hp},Promise:{value:us},svg:{value:ao},magic:{value:eo},VERSION:{value:"0.7.3"},adaptors:{writable:!0,value:{}},components:{writable:!0,value:{}},decorators:{writable:!0,value:{}},easing:{writable:!0,value:po},events:{writable:!0,value:{}},interpolators:{writable:!0,value:Go},partials:{writable:!0,value:{}},transitions:{writable:!0,value:{}}},Co(ng,ag),ng.prototype=a(Cg,so),ng.prototype.constructor=ng,ng.defaults=ng.prototype;var Rg="function";if(typeof Date.now!==Rg||typeof String.prototype.trim!==Rg||typeof Object.keys!==Rg||typeof Array.prototype.indexOf!==Rg||typeof Array.prototype.forEach!==Rg||typeof Array.prototype.map!==Rg||typeof Array.prototype.filter!==Rg||"undefined"!=typeof window&&typeof window.addEventListener!==Rg)throw Error("It looks like you're attempting to use Ractive.js in an older browser. You'll need to use one of the 'legacy builds' in order to continue - see http://docs.ractivejs.org/latest/legacy-builds for more information.");var Lg=ng;return Lg})},{}],206:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={oninit:function(){var t=this;this.observe("value",function(e,n,a){var r=t.get(),i=r.min,o=r.max,s=Math.clamp(i,o,e);t.animate("percentage",Math.round((s-i)/(o-i)*100))})}}}(r),r.exports.template={v:3,t:[" ",{p:[13,1,305],t:7,e:"div",a:{"class":"bar"},f:[{p:[14,3,326],t:7,e:"div",a:{"class":["barFill ",{t:2,r:"state",p:[14,23,346]}],style:["width: ",{t:2,r:"percentage",p:[14,48,371]},"%"]}}," ",{p:[15,3,398],t:7,e:"span",a:{"class":"barText"},f:[{t:16,p:[15,25,420]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],207:[function(t,e,n){var a=t(205),r={exports:{}};!function(e){"use strict";var n=t(336),a=t(335);e.exports={computed:{clickable:function(){return!this.get("enabled")||this.get("state")&&"toggle"!=this.get("state")?!1:!0},enabled:function(){return this.get("config.status")===n.UI_INTERACTIVE?!0:!1},styles:function(){var t="";if(this.get("class")&&(t+=" "+this.get("class")),this.get("tooltip-side")&&(t=" tooltip-"+this.get("tooltip-side")),this.get("grid")&&(t+=" gridable"),this.get("enabled")){var e=this.get("state"),n=this.get("style");return e?"inactive "+e+" "+t:"active normal "+n+" "+t}return"inactive disabled "+t}},oninit:function(){var t=this;this.on("press",function(e){var n=t.get(),r=n.action,i=n.params;(0,a.act)(t.get("config.ref"),r,i),e.node.blur()})},data:{iconStackToHTML:function(t){var e="",n=t.split(",");if(n.length){e+='';for(var a=n,r=Array.isArray(a),i=0,a=r?a:a[Symbol.iterator]();;){var o;if(r){if(i>=a.length)break;o=a[i++]}else{if(i=a.next(),i.done)break;o=i.value}var s=o,p=/([\w\-]+)\s*(\dx)/g,u=p.exec(s),c=u[1],l=u[2];e+=''}}return e&&(e+=""),e}}}}(r),r.exports.template={v:3,t:[" ",{p:[70,1,2019],t:7,e:"span",a:{"class":["button ",{t:2,r:"styles",p:[70,21,2039]}],unselectable:"on","data-tooltip":[{t:2,r:"tooltip",p:[73,17,2124]}]},m:[{t:4,f:["tabindex='0'"],r:"clickable",p:[72,3,2075]}],v:{"mouseover-mousemove":"hover",mouseleave:"unhover","click-enter":{n:[{t:4,f:["press"],r:"clickable",p:[76,19,2217]}],d:[]}},f:[{t:4,f:[{p:[78,5,2265],t:7,e:"i",a:{"class":["fa fa-",{t:2,r:"icon",p:[78,21,2281]}]}}],n:50,r:"icon",p:[77,3,2247]}," ",{t:4,f:[{t:3,x:{r:["iconStackToHTML","icon_stack"],s:"_0(_1)"},p:[81,6,2335]}],n:50,r:"icon_stack",p:[80,3,2310]}," ",{t:16,p:[83,3,2383]}]}]},e.exports=a.extend(r.exports)},{205:205,335:335,336:336}],208:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"display"},f:[{t:4,f:[{p:[3,5,44],t:7,e:"header",f:[{p:[4,7,60],t:7,e:"h3",f:[{t:2,r:"title",p:[4,11,64]}]}," ",{t:4,f:[{p:[6,9,110],t:7,e:"div",a:{"class":"buttonRight"},f:[{t:16,n:"button",p:[6,34,135]}]}],n:50,r:"button",p:[5,7,86]}]}],n:50,r:"title",p:[2,3,25]}," ",{p:[10,3,202],t:7,e:"article",f:[{t:16,p:[11,5,217]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],209:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={oninit:function(){var t=this;this.on("clear",function(){t.set("value",""),t.find("input").focus()})}}}(r),r.exports.template={v:3,t:[" ",{p:[12,1,170],t:7,e:"input",a:{type:"text",value:[{t:2,r:"value",p:[12,27,196]}],placeholder:[{t:2,r:"placeholder",p:[12,51,220]}]}}," ",{p:[13,1,240],t:7,e:"ui-button",a:{icon:"refresh"},v:{press:"clear"}}]},e.exports=a.extend(r.exports)},{205:205}],210:[function(t,e,n){var a=t(205),r={exports:{}};!function(e){"use strict";e.exports={data:{graph:t(201),xaccessor:function(t){return t.x},yaccessor:function(t){return t.y}},computed:{size:function(){var t=this.get("points");return t[0].length},scale:function(){var t=this.get("points");return Math.max.apply(Math,Array.map(t,function(t){return Math.max.apply(Math,Array.map(t,function(t){return t.y}))}))},xaxis:function(){var t=this.get("xinc"),e=this.get("size");return Array.from(Array(e).keys()).filter(function(e){return e&&e%t==0})},yaxis:function(){var t=this.get("yinc"),e=this.get("scale");return Array.from(Array(t).keys()).map(function(t){return Math.round(e*(++t/100)*10)})}},oninit:function(){var t=this;this.on({enter:function(t){this.set("selected",t.index.count)},exit:function(t){this.set("selected")}}),window.addEventListener("resize",function(e){t.set("width",t.el.clientWidth)})},onrender:function(){this.set("width",this.el.clientWidth)}}}(r),r.exports.template={v:3,t:[" ",{p:[47,1,1269],t:7,e:"svg",a:{"class":"linegraph",width:"100%",height:[{t:2,x:{r:["height"],s:"_0+10"},p:[47,45,1313]}]},f:[{p:[48,3,1334],t:7,e:"g",a:{transform:"translate(0, 5)"},f:[{t:4,f:[{t:4,f:[{p:[51,9,1504],t:7,e:"line",a:{x1:[{t:2,x:{r:["xscale","."],s:"_0(_1)"},p:[51,19,1514]}],x2:[{t:2,x:{r:["xscale","."],s:"_0(_1)"},p:[51,38,1533]}],y1:"0",y2:[{t:2,r:"height",p:[51,64,1559]}],stroke:"darkgray"}}," ",{t:4,f:[{p:[53,11,1635],t:7,e:"text",a:{x:[{t:2,x:{r:["xscale","."],s:"_0(_1)"},p:[53,20,1644]}],y:[{t:2,x:{r:["height"],s:"_0-5"},p:[53,38,1662]}],"text-anchor":"middle",fill:"white"},f:[{t:2,x:{r:["size",".","xfactor"],s:"(_0-_1)*_2"},p:[53,88,1712]}," ",{t:2,r:"xunit",p:[53,113,1737]}]}],n:50,x:{r:["@index"],s:"_0%2==0"},p:[52,9,1600]}],n:52,r:"xaxis",p:[50,7,1479]}," ",{t:4,f:[{p:[57,9,1820],t:7,e:"line",a:{x1:"0",x2:[{t:2,r:"width",p:[57,26,1837]}],y1:[{t:2,x:{r:["yscale","."],s:"_0(_1)"},p:[57,41,1852]}],y2:[{t:2,x:{r:["yscale","."],s:"_0(_1)"},p:[57,60,1871]}],stroke:"darkgray"}}," ",{p:[58,9,1915],t:7,e:"text",a:{x:"0",y:[{t:2,x:{r:["yscale","."],s:"_0(_1)-5"},p:[58,24,1930]}],"text-anchor":"begin",fill:"white"},f:[{t:2,x:{r:[".","yfactor"],s:"_0*_1"},p:[58,76,1982]}," ",{t:2,r:"yunit",p:[58,92,1998]}]}],n:52,r:"yaxis",p:[56,7,1795]}," ",{t:4,f:[{p:[61,9,2071],t:7,e:"path",a:{d:[{t:2,x:{r:["area.path"],s:"_0.print()"},p:[61,18,2080]}],fill:[{t:2,rx:{r:"colors",m:[{t:30,n:"curve"}]},p:[61,47,2109]}],opacity:"0.1"}}],n:52,i:"curve",r:"curves",p:[60,7,2039]}," ",{t:4,f:[{p:[64,9,2200],t:7,e:"path",a:{d:[{t:2,x:{r:["line.path"],s:"_0.print()"},p:[64,18,2209]}],stroke:[{t:2,rx:{r:"colors",m:[{t:30,n:"curve"}]},p:[64,49,2240]}],fill:"none"}}],n:52,i:"curve",r:"curves",p:[63,7,2168]}," ",{t:4,f:[{t:4,f:[{p:[68,11,2375],t:7,e:"circle",a:{transform:["translate(",{t:2,r:".",p:[68,40,2404]},")"],r:[{t:2,x:{r:["selected","count"],s:"_0==_1?10:4"},p:[68,51,2415]}],fill:[{t:2,rx:{r:"colors",m:[{t:30,n:"curve"}]},p:[68,89,2453]}]},v:{mouseenter:"enter",mouseleave:"exit"}}],n:52,i:"count",x:{r:["line.path"],s:"_0.points()"},p:[67,9,2329]}],n:52,i:"curve",r:"curves",p:[66,7,2297]}," ",{t:4,f:[{t:4,f:[{t:4,f:[{p:[74,13,2678],t:7,e:"text",a:{transform:["translate(",{t:2,r:".",p:[74,40,2705]},") ",{t:2,x:{r:["count","size"],s:'_0<=_1/2?"translate(15, 4)":"translate(-15, 4)"'},p:[74,47,2712]}],"text-anchor":[{t:2,x:{r:["count","size"],s:'_0<=_1/2?"start":"end"'},p:[74,126,2791]}],fill:"white"},f:[{t:2,x:{r:["count","item","yfactor"],s:"_1[_0].y*_2"},p:[75,15,2861]}," ",{t:2,r:"yunit",p:[75,43,2889]}," @ ",{t:2,x:{r:["size","count","item","xfactor"],s:"(_0-_2[_1].x)*_3"},p:[75,55,2901]}," ",{t:2,r:"xunit",p:[75,92,2938]}]}],n:50,x:{r:["selected","count"],s:"_0==_1"},p:[73,11,2638]}],n:52,i:"count",x:{r:["line.path"],s:"_0.points()"},p:[72,9,2592]}],n:52,i:"curve",r:"curves",p:[71,7,2560]}," ",{t:4,f:[{p:[81,9,3063],t:7,e:"g",a:{transform:["translate(",{t:2,x:{r:["width","curves.length","@index"],s:"(_0/(_1+1))*(_2+1)"},p:[81,33,3087]},", 10)"]},f:[{p:[82,11,3154],t:7,e:"circle",a:{r:"4",fill:[{t:2,rx:{r:"colors",m:[{t:30,n:"curve"}]},p:[82,31,3174]}]}}," ",{p:[83,11,3206],t:7,e:"text",a:{x:"8",y:"4",fill:"white"},f:[{t:2,rx:{r:"legend",m:[{t:30,n:"curve"}]},p:[83,42,3237]}]}]}],n:52,i:"curve",r:"curves",p:[80,7,3031]}],x:{r:["graph","points","xaccessor","yaccessor","width","height"],s:"_0({data:_1,xaccessor:_2,yaccessor:_3,width:_4,height:_5})"},p:[49,5,1371]}]}]}]},e.exports=a.extend(r.exports)},{201:201,205:205}],211:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"notice"},f:[{t:16,p:[2,3,24]}]}]},e.exports=a.extend(r.exports)},{205:205}],212:[function(t,e,n){var a=t(205),r={exports:{}};!function(e){"use strict";var n=t(335),a=t(337);e.exports={oninit:function(){var t=this,e=a.resize.bind(this),r=function(){return t.set({resize:!1,x:null,y:null})};this.observe("config.fancy",function(a,i,o){(0,n.winset)(t.get("config.window"),"can-resize",!a),a?(document.addEventListener("mousemove",e),document.addEventListener("mouseup",r)):(document.removeEventListener("mousemove",e),document.removeEventListener("mouseup",r))}),this.on("resize",function(){return t.toggle("resize")})}}}(r),r.exports.template={v:3,t:[" ",{t:4,f:[{p:[28,3,766],t:7,e:"div",a:{"class":"resize"},v:{mousedown:"resize"}}],n:50,r:"config.fancy",p:[27,1,742]}]},e.exports=a.extend(r.exports)},{205:205,335:335,337:337}],213:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"section",a:{"class":[{t:4,f:["candystripe"],r:"candystripe",p:[1,17,16]}]},f:[{t:4,f:[{p:[3,5,84],t:7,e:"span",a:{"class":"label",style:[{t:4,f:["color:",{t:2,r:"labelcolor",p:[3,53,132]}],r:"labelcolor",p:[3,32,111]}]},f:[{t:2,r:"label",p:[3,84,163]},":"]}],n:50,r:"label",p:[2,3,65]}," ",{t:4,f:[{t:16,p:[6,5,215]}],n:50,r:"nowrap",p:[5,3,195]},{t:4,n:51,f:[{p:[8,5,242],t:7,e:"div",a:{"class":"content",style:[{t:4,f:["float:right;"],r:"right",p:[8,33,270]}]},f:[{t:16,p:[9,7,312]}]}],r:"nowrap"}]}]},e.exports=a.extend(r.exports)},{205:205}],214:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"subdisplay"},f:[{t:4,f:[{p:[3,5,47],t:7,e:"header",f:[{p:[4,7,63],t:7,e:"h4",f:[{t:2,r:"title",p:[4,11,67]}]}," ",{t:4,f:[{t:16,n:"button",p:[5,21,103]}],n:50,r:"button",p:[5,7,89]}]}],n:50,r:"title",p:[2,3,28]}," ",{p:[8,3,156],t:7,e:"article",f:[{t:16,p:[9,5,171]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],215:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={oninit:function(){var t=this;this.set("active",this.findComponent("tab").get("name")),this.on("switch",function(e){t.set("active",e.node.textContent.trim())}),this.observe("active",function(e,n,a){for(var r=t.findAllComponents("tab"),i=Array.isArray(r),o=0,r=i?r:r[Symbol.iterator]();;){var s;if(i){if(o>=r.length)break;s=r[o++]}else{if(o=r.next(),o.done)break;s=o.value}var p=s;p.set("shown",p.get("name")===e)}})}}}(r),r.exports.template={v:3,t:[" "," ",{p:[20,1,524],t:7,e:"header",f:[{t:4,f:[{p:[22,5,556],t:7,e:"ui-button",a:{pane:[{t:2,r:".",p:[22,22,573]}]},v:{press:"switch"},f:[{t:2,r:".",p:[22,47,598]}]}],n:52,r:"tabs",p:[21,3,536]}]}," ",{p:[25,1,641],t:7,e:"ui-display",f:[{t:8,r:"content",p:[26,3,657]}]}]},r.exports.components=r.exports.components||{};var i={tab:t(216)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,216:216}],216:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{t:16,p:[2,3,17]}],n:50,r:"shown",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{205:205}],217:[function(t,e,n){var a=t(205),r={exports:{}};!function(e){"use strict";var n=t(336),a=t(335),r=t(337);e.exports={computed:{visualStatus:function(){switch(this.get("config.status")){case n.UI_INTERACTIVE:return"good";case n.UI_UPDATE:return"average";case n.UI_DISABLED:return"bad";default:return"bad"}}},oninit:function(){var t=this,e=r.drag.bind(this),n=function(e){return t.set({drag:!1,x:null,y:null})};this.observe("config.fancy",function(r,i,o){(0,a.winset)(t.get("config.window"),"titlebar",!r&&t.get("config.titlebar")),r?(document.addEventListener("mousemove",e),document.addEventListener("mouseup",n)):(document.removeEventListener("mousemove",e),document.removeEventListener("mouseup",n))}),this.on({drag:function(){this.toggle("drag")},close:function(){(0,a.winset)(this.get("config.window"),"is-visible",!1),window.location.href=(0,a.href)({command:"uiclose "+this.get("config.ref")},"winset")},minimize:function(){(0,a.winset)(this.get("config.window"),"is-minimized",!0)}})}}}(r),r.exports.template={v:3,t:[" ",{t:4,f:[{p:[50,3,1440],t:7,e:"header",a:{"class":"titlebar"},v:{mousedown:"drag"},f:[{p:[51,5,1491],t:7,e:"i",a:{"class":["statusicon fa fa-eye fa-2x ",{t:2,r:"visualStatus",p:[51,42,1528]}]}}," ",{p:[52,5,1556],t:7,e:"span",a:{"class":"title"},f:[{t:16,p:[52,25,1576]}]}," ",{t:4,f:[{p:[54,7,1626],t:7,e:"i",a:{"class":"minimize fa fa-minus fa-2x"},v:{click:"minimize"}}," ",{p:[55,7,1696],t:7,e:"i",a:{"class":"close fa fa-close fa-2x"},v:{click:"close"}}],n:50,r:"config.fancy",p:[53,5,1598]}]}],n:50,r:"config.titlebar",p:[49,1,1413]}]},e.exports=a.extend(r.exports)},{205:205,335:335,336:336,337:337}],218:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";var e=[11,10,9,8];t.exports={data:{userAgent:navigator.userAgent},computed:{ie:function(){if(document.documentMode)return document.documentMode;for(var t in e){var n=document.createElement("div");if(n.innerHTML="",n.getElementsByTagName("span").length)return t}}},oninit:function(){var t=this;this.on("debug",function(){return t.toggle("debug")})}}}(r),r.exports.template={v:3,t:[" ",{t:4,f:[{p:[27,3,662],t:7,e:"ui-notice",f:[{p:[28,5,679],t:7,e:"span",f:["You have an old (IE",{t:2,r:"ie",p:[28,30,704]},"), end-of-life (click 'EOL Info' for more information) version of Internet Explorer installed."]},{p:[28,137,811],t:7,e:"br"}," ",{p:[29,5,822],t:7,e:"span",f:["To upgrade, click 'Upgrade IE' to download IE11 from Microsoft."]},{p:[29,81,898],t:7,e:"br"}," ",{p:[30,5,909],t:7,e:"span",f:["If you are unable to upgrade directly, click 'IE VMs' to download a VM with IE11 or Edge from Microsoft."]},{p:[30,122,1026],t:7,e:"br"}," ",{p:[31,5,1037],t:7,e:"span",f:["Otherwise, click 'No Frills' below to disable potentially incompatible features (and this message)."]}," ",{p:[32,5,1155],t:7,e:"hr"}," ",{p:[33,5,1166],t:7,e:"ui-button",a:{icon:"close",action:"tgui:nofrills"},f:["No Frills"]}," ",{p:[34,5,1240],t:7,e:"ui-button",a:{icon:"internet-explorer",action:"tgui:link",params:'{"url": "http://windows.microsoft.com/en-us/internet-explorer/download-ie"}'},f:["Upgrade IE"]}," ",{p:[36,5,1416],t:7,e:"ui-button",a:{icon:"edge",action:"tgui:link",params:'{"url": "https://dev.windows.com/en-us/microsoft-edge/tools/vms"}'},f:["IE VMs"]}," ",{p:[38,5,1565],t:7,e:"ui-button",a:{icon:"info",action:"tgui:link",params:'{"url": "https://support.microsoft.com/en-us/lifecycle#gp/Microsoft-Internet-Explorer"}'},f:["EOL Info"]}," ",{p:[40,5,1738],t:7,e:"ui-button",a:{icon:"bug"},v:{press:"debug"},f:["Debug Info"]}," ",{t:4,f:[{p:[42,7,1826],t:7,e:"hr"}," ",{p:[43,7,1839],t:7,e:"span",f:["Detected: IE",{t:2,r:"ie",p:[43,25,1857]}]},{p:[43,38,1870],t:7,e:"br"}," ",{p:[44,7,1883],t:7,e:"span",f:["User Agent: ",{t:2,r:"userAgent",p:[44,25,1901]}]}],n:50,r:"debug",p:[41,5,1805]}]}],n:50,x:{r:["config.fancy","ie"],s:"_0&&_1&&_1<11"},p:[26,1,621]}]},e.exports=a.extend(r.exports)},{205:205}],219:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{powerState:function(t){switch(t){case 2:return"good";case 1:return"average";default: return"bad"}},shockState:function(t){switch(t){case 2:return"good";case 1:return"average";default:return"bad"}}}}}(r),r.exports.template={v:3,t:[" ",{p:[22,1,348],t:7,e:"ui-display",a:{title:"Power Status"},f:[{p:[23,2,384],t:7,e:"ui-section",a:{label:"Main"},f:[{p:[24,3,413],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.power.main"],s:"_0(_1)"},p:[24,16,426]}]},f:[{t:2,x:{r:["data.power.main"],s:'_0?"Online":"Offline"'},p:[24,49,459]}]}," ",{t:4,f:["[ ",{p:[26,6,567],t:7,e:"span",a:{"class":"bad"},f:["Wires have been cut"]}," ]"],n:50,x:{r:["data.wires.main_1","data.wires.main_2"],s:"!_0||!_1"},p:[25,3,512]},{t:4,n:51,f:[{t:4,f:["[ ",{t:2,r:"data.power.main_timeleft",p:[29,7,674]}," seconds left ]"],n:50,x:{r:["data.power.main_timeleft"],s:"_0>0"},p:[28,4,630]}],x:{r:["data.wires.main_1","data.wires.main_2"],s:"!_0||!_1"}}," ",{p:[32,3,744],t:7,e:"div",a:{style:"float:right"},f:[{p:[33,4,774],t:7,e:"ui-button",a:{icon:"lightbulb-o",action:"disrupt-main",state:[{t:2,x:{r:["data.power.main"],s:'_0?null:"disabled"'},p:[33,63,833]}]},f:["Disrupt"]}]}]}," ",{p:[36,2,922],t:7,e:"ui-section",a:{label:"Backup"},f:[{p:[37,3,953],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.power.backup"],s:"_0(_1)"},p:[37,16,966]}]},f:[{t:2,x:{r:["data.power.backup"],s:'_0?"Online":"Offline"'},p:[37,51,1001]}]}," ",{t:4,f:["[ ",{p:[39,6,1115],t:7,e:"span",a:{"class":"bad"},f:["Wires have been cut"]}," ]"],n:50,x:{r:["data.wires.backup_1","data.wires.backup_2"],s:"!_0||!_1"},p:[38,3,1056]},{t:4,n:51,f:[{t:4,f:["[ ",{t:2,r:"data.power.backup_timeleft",p:[42,7,1224]}," seconds left ]"],n:50,x:{r:["data.power.backup_timeleft"],s:"_0>0"},p:[41,4,1178]}],x:{r:["data.wires.backup_1","data.wires.backup_2"],s:"!_0||!_1"}}," ",{p:[45,3,1296],t:7,e:"div",a:{style:"float:right"},f:[{p:[46,4,1326],t:7,e:"ui-button",a:{icon:"lightbulb-o",action:"disrupt-backup",state:[{t:2,x:{r:["data.power.backup"],s:'_0?null:"disabled"'},p:[46,65,1387]}]},f:["Disrupt"]}]}]}," ",{p:[49,2,1478],t:7,e:"ui-section",a:{label:"Electrify"},f:[{p:[50,3,1512],t:7,e:"span",a:{"class":[{t:2,x:{r:["shockState","data.shock"],s:"_0(_1)"},p:[50,16,1525]}]},f:[{t:2,x:{r:["data.shock"],s:'_0==2?"Safe":"Electrified"'},p:[50,44,1553]}]}," ",{t:4,f:["[ ",{p:[52,6,1640],t:7,e:"span",a:{"class":"bad"},f:["Wires have been cut"]}," ]"],n:50,x:{r:["data.wires.shock"],s:"!_0"},p:[51,3,1608]},{t:4,n:51,f:[{t:4,f:["[ ",{p:[55,7,1742],t:7,e:"span",a:{"class":"bad"},f:[{t:2,r:"data.shock_timeleft",p:[55,25,1760]}," seconds left"]}," ]"],n:50,x:{r:["data.shock_timeleft"],s:"_0>0"},p:[54,4,1703]}," ",{t:4,f:["[ ",{p:[58,7,1863],t:7,e:"span",a:{"class":"bad"},f:["Permanent"]}," ]"],n:50,x:{r:["data.shock_timeleft"],s:"_0==-1"},p:[57,4,1822]}],x:{r:["data.wires.shock"],s:"!_0"}}," ",{p:[61,3,1926],t:7,e:"div",a:{style:"float:right"},f:[{p:[62,4,1956],t:7,e:"ui-button",a:{icon:"wrench",action:"shock-restore",state:[{t:2,x:{r:["data.wires.shock","data.shock"],s:'_0&&_1==0?null:"disabled"'},p:[62,59,2011]}]},f:["Restore"]}," ",{p:[63,4,2094],t:7,e:"ui-button",a:{icon:"bolt",action:"shock-temp",state:[{t:2,x:{r:["data.wires.shock"],s:"!_0"},p:[63,54,2144]}]},f:["Set (Temporary)"]}," ",{p:[64,4,2199],t:7,e:"ui-button",a:{icon:"bolt",action:"shock-perm",state:[{t:2,x:{r:["data.wires.shock"],s:"!_0"},p:[64,53,2248]}]},f:["Set (Permanent)"]}]}]}]}," ",{p:[68,1,2341],t:7,e:"ui-display",a:{title:"Access & Door Control"},f:[{p:[69,2,2386],t:7,e:"ui-section",a:{label:"ID Scan"},f:[{t:4,f:["[ ",{p:[71,6,2455],t:7,e:"span",a:{"class":"bad"},f:["Wires have been cut"]}," ]"],n:50,x:{r:["data.wires.id_scanner"],s:"!_0"},p:[70,3,2418]}," ",{p:[73,3,2516],t:7,e:"div",a:{style:"float:right"},f:[{p:[74,4,2546],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.id_scanner"],s:"!_0"},p:[74,22,2564]}],icon:"power-off",action:"idscan-on",style:[{t:2,x:{r:["data.id_scanner"],s:'_0?"selected":""'},p:[74,93,2635]}]},f:["Enabled"]}," ",{p:[75,4,2698],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.id_scanner"],s:"!_0"},p:[75,22,2716]}],icon:"close",action:"idscan-off",style:[{t:2,x:{r:["data.id_scanner"],s:'_0?"":"selected"'},p:[75,90,2784]}]},f:["Disabled"]}]}]}," ",{p:[78,2,2872],t:7,e:"ui-section",a:{label:"Emergency Access"},f:[{p:[79,3,2913],t:7,e:"div",a:{style:"float:right"},f:[{p:[80,4,2943],t:7,e:"ui-button",a:{icon:"power-off",action:"emergency-on",style:[{t:2,x:{r:["data.emergency"],s:'_0?"selected":""'},p:[80,61,3e3]}]},f:["Enabled"]}," ",{p:[81,4,3062],t:7,e:"ui-button",a:{icon:"close",action:"emergency-off",style:[{t:2,x:{r:["data.emergency"],s:'_0?"":"selected"'},p:[81,58,3116]}]},f:["Disabled"]}]}]}," ",{p:[84,2,3203],t:7,e:"br"}," ",{p:[85,2,3212],t:7,e:"ui-section",a:{label:"Door bolts"},f:[{t:4,f:["[ ",{p:[87,6,3279],t:7,e:"span",a:{"class":"bad"},f:["Wires have been cut"]}," ]"],n:50,x:{r:["data.wires.bolts"],s:"!_0"},p:[86,3,3247]}," ",{p:[89,3,3340],t:7,e:"div",a:{style:"float:right"},f:[{p:[90,4,3370],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.bolts"],s:"!_0"},p:[90,22,3388]}],icon:"unlock",action:"bolt-raise",style:[{t:2,x:{r:["data.locked"],s:'_0?"":"selected"'},p:[90,85,3451]}]},f:["Raised"]}," ",{p:[91,4,3509],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.bolts"],s:"!_0"},p:[91,22,3527]}],icon:"lock",action:"bolt-drop",style:[{t:2,x:{r:["data.locked"],s:'_0?"selected":""'},p:[91,82,3587]}]},f:["Dropped"]}]}]}," ",{p:[94,2,3670],t:7,e:"ui-section",a:{label:"Door bolt lights"},f:[{t:4,f:["[ ",{p:[96,6,3744],t:7,e:"span",a:{"class":"bad"},f:["Wires have been cut"]}," ]"],n:50,x:{r:["data.wires.lights"],s:"!_0"},p:[95,3,3711]}," ",{p:[98,3,3805],t:7,e:"div",a:{style:"float:right"},f:[{p:[99,4,3835],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.lights"],s:"!_0"},p:[99,22,3853]}],icon:"power-off",action:"light-on",style:[{t:2,x:{r:["data.lights"],s:'_0?"selected":""'},p:[99,88,3919]}]},f:["Enabled"]}," ",{p:[100,4,3978],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.lights"],s:"!_0"},p:[100,22,3996]}],icon:"close",action:"light-off",style:[{t:2,x:{r:["data.lights"],s:'_0?"":"selected"'},p:[100,85,4059]}]},f:["Disabled"]}]}]}," ",{p:[103,2,4143],t:7,e:"ui-section",a:{label:"Door force sensors"},f:[{t:4,f:["[ ",{p:[105,6,4217],t:7,e:"span",a:{"class":"bad"},f:["Wires have been cut"]}," ]"],n:50,x:{r:["data.wires.safe"],s:"!_0"},p:[104,3,4186]}," ",{p:[107,3,4278],t:7,e:"div",a:{style:"float:right"},f:[{p:[108,4,4308],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.safe"],s:"!_0"},p:[108,22,4326]}],icon:"power-off",action:"safe-on",style:[{t:2,x:{r:["data.safe"],s:'_0?"selected":""'},p:[108,85,4389]}]},f:["Enabled"]}," ",{p:[109,4,4446],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.safe"],s:"!_0"},p:[109,22,4464]}],icon:"close",action:"safe-off",style:[{t:2,x:{r:["data.safe"],s:'_0?"":"selected"'},p:[109,82,4524]}]},f:["Disabled"]}]}]}," ",{p:[112,2,4606],t:7,e:"ui-section",a:{label:"Door timing saftey"},f:[{t:4,f:["[ ",{p:[114,6,4682],t:7,e:"span",a:{"class":"bad"},f:["Wires have been cut"]}," ]"],n:50,x:{r:["data.wires.timing"],s:"!_0"},p:[113,3,4649]}," ",{p:[116,3,4743],t:7,e:"div",a:{style:"float:right"},f:[{p:[117,4,4773],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.timing"],s:"!_0"},p:[117,22,4791]}],icon:"power-off",action:"speed-on",style:[{t:2,x:{r:["data.speed"],s:'_0?"selected":""'},p:[117,88,4857]}]},f:["Enabled"]}," ",{p:[118,4,4915],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.timing"],s:"!_0"},p:[118,22,4933]}],icon:"close",action:"speed-off",style:[{t:2,x:{r:["data.speed"],s:'_0?"":"selected"'},p:[118,85,4996]}]},f:["Disabled"]}]}]}," ",{p:[121,2,5079],t:7,e:"br"}," ",{p:[122,2,5088],t:7,e:"ui-section",a:{label:"Door control"},f:[{t:4,f:["[ ",{p:[124,6,5166],t:7,e:"span",a:{"class":"bad"},f:["Door is ",{t:2,x:{r:["data.locked","data.welded"],s:'(_0?"bolted":"")+(_0&&_1?" and ":"")+(_1?"welded":"")'},p:[124,32,5192]}]}," ]"],n:50,x:{r:["data.locked","data.welded"],s:"_0||_1"},p:[123,3,5125]}," ",{p:[126,3,5327],t:7,e:"div",a:{style:"float:right"},f:[{p:[127,4,5357],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.locked","data.welded","data.opened"],s:'(_0||_1)||(_2&&"disabled")'},p:[127,22,5375]}],icon:"sign-out",action:"open-close"},f:["Open door"]}," ",{p:[128,4,5502],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.locked","data.welded","data.opened"],s:'(_0||_1)||(!_2&&"disabled")'},p:[128,22,5520]}],icon:"sign-in",action:"open-close"},f:["Close door"]}]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],220:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" "," "," "," "," ",{p:[7,1,267],t:7,e:"ui-notice",f:[{t:4,f:[{p:[9,5,312],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[10,7,355],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[10,24,372]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[10,75,423]}]}]}],n:50,r:"data.siliconUser",p:[8,3,282]},{t:4,n:51,f:[{p:[13,5,514],t:7,e:"span",f:["Swipe an ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[13,31,540]}," this interface."]}],r:"data.siliconUser"}]}," ",{p:[16,1,625],t:7,e:"status"}," ",{t:4,f:[{t:4,f:[{p:[19,7,719],t:7,e:"ui-display",a:{title:"Air Controls"},f:[{p:[20,9,762],t:7,e:"ui-section",f:[{p:[21,11,786],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"exclamation-triangle":"exclamation"'},p:[21,28,803]}],style:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"caution":null'},p:[21,98,873]}],action:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"reset":"alarm"'},p:[22,23,937]}]},f:["Area Atmosphere Alarm"]}]}," ",{p:[24,9,1045],t:7,e:"ui-section",f:[{p:[25,11,1069],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0==3?"exclamation-triangle":"exclamation"'},p:[25,28,1086]}],style:[{t:2,x:{r:["data.mode"],s:'_0==3?"danger":null'},p:[25,96,1154]}],action:"mode",params:['{"mode": ',{t:2,x:{r:["data.mode"],s:"_0==3?1:3"},p:[26,44,1236]},"}"]},f:["Panic Siphon"]}]}," ",{p:[28,9,1322],t:7,e:"br"}," ",{p:[29,9,1337],t:7,e:"ui-section",f:[{p:[30,11,1361],t:7,e:"ui-button",a:{icon:"sign-out",action:"tgui:view",params:'{"screen": "vents"}'},f:["Vent Controls"]}]}," ",{p:[32,9,1494],t:7,e:"ui-section",f:[{p:[33,11,1518],t:7,e:"ui-button",a:{icon:"filter",action:"tgui:view",params:'{"screen": "scrubbers"}'},f:["Scrubber Controls"]}]}," ",{p:[35,9,1657],t:7,e:"ui-section",f:[{p:[36,11,1681],t:7,e:"ui-button",a:{icon:"cog",action:"tgui:view",params:'{"screen": "modes"}'},f:["Operating Mode"]}]}," ",{p:[38,9,1810],t:7,e:"ui-section",f:[{p:[39,11,1834],t:7,e:"ui-button",a:{icon:"bar-chart",action:"tgui:view",params:'{"screen": "thresholds"}'},f:["Alarm Thresholds"]}]}]}],n:50,x:{r:["config.screen"],s:'_0=="home"'},p:[18,3,680]},{t:4,n:51,f:[{t:4,n:50,x:{r:["config.screen"],s:'_0=="vents"'},f:[{p:[43,5,2032],t:7,e:"vents"}]},{t:4,n:50,x:{r:["config.screen"],s:'(!(_0=="vents"))&&(_0=="scrubbers")'},f:[" ",{p:[45,5,2089],t:7,e:"scrubbers"}]},{t:4,n:50,x:{r:["config.screen"],s:'(!(_0=="vents"))&&((!(_0=="scrubbers"))&&(_0=="modes"))'},f:[" ",{p:[47,5,2146],t:7,e:"modes"}]},{t:4,n:50,x:{r:["config.screen"],s:'(!(_0=="vents"))&&((!(_0=="scrubbers"))&&((!(_0=="modes"))&&(_0=="thresholds")))'},f:[" ",{p:[49,5,2204],t:7,e:"thresholds"}]}],x:{r:["config.screen"],s:'_0=="home"'}}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[17,1,636]}]},r.exports.components=r.exports.components||{};var i={vents:t(226),modes:t(222),thresholds:t(225),status:t(224),scrubbers:t(223)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,222:222,223:223,224:224,225:225,226:226}],221:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-button",a:{icon:"arrow-left",action:"tgui:view",params:'{"screen": "home"}'},f:["Back"]}]},e.exports=a.extend(r.exports)},{205:205}],222:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,115],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Operating Modes",button:0},f:[" ",{t:4,f:[{p:[8,5,168],t:7,e:"ui-section",f:[{p:[9,7,188],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["selected"],s:'_0?"check-square-o":"square-o"'},p:[9,24,205]}],state:[{t:2,x:{r:["selected","danger"],s:'_0?_1?"danger":"selected":null'},p:[10,16,267]}],action:"mode",params:['{"mode": ',{t:2,r:"mode",p:[11,40,361]},"}"]},f:[{t:2,r:"name",p:[11,51,372]}]}]}],n:52,r:"data.modes",p:[7,3,142]}]}]},r.exports.components=r.exports.components||{};var i={back:t(221)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,221:221}],223:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" "," ",{p:{button:[{p:[6,5,185],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Scrubber Controls",button:0},f:[" ",{t:4,f:[{p:[9,5,242],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"long_name",p:[9,27,264]}]},f:[{p:[10,7,287],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[11,9,323],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["power"],s:'_0?"power-off":"close"'},p:[11,26,340]}],style:[{t:2,x:{r:["power"],s:'_0?"selected":null'},p:[11,68,382]}],action:"power",params:['{"id_tag": "',{t:2,r:"id_tag",p:[12,46,459]},'", "val": ',{t:2,x:{r:["power"],s:"+!_0"},p:[12,66,479]},"}"]},f:[{t:2,x:{r:["power"],s:'_0?"On":"Off"'},p:[12,80,493]}]}]}," ",{p:[14,7,558],t:7,e:"ui-section",a:{label:"Mode"},f:[{p:[15,9,593],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["scrubbing"],s:'_0?"filter":"sign-in"'},p:[15,26,610]}],style:[{t:2,x:{r:["scrubbing"],s:'_0?null:"danger"'},p:[15,71,655]}],action:"scrubbing",params:['{"id_tag": "',{t:2,r:"id_tag",p:[16,50,738]},'", "val": ',{t:2,x:{r:["scrubbing"],s:"+!_0"},p:[16,70,758]},"}"]},f:[{t:2,x:{r:["scrubbing"],s:'_0?"Scrubbing":"Siphoning"'},p:[16,88,776]}]}]}," ",{p:[18,7,858],t:7,e:"ui-section",a:{label:"Range"},f:[{p:[19,9,894],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["widenet"],s:'_0?"expand":"compress"'},p:[19,26,911]}],style:[{t:2,x:{r:["widenet"],s:'_0?"selected":null'},p:[19,70,955]}],action:"widenet",params:['{"id_tag": "',{t:2,r:"id_tag",p:[20,48,1036]},'", "val": ',{t:2,x:{r:["widenet"],s:"+!_0"},p:[20,68,1056]},"}"]},f:[{t:2,x:{r:["widenet"],s:'_0?"Expanded":"Normal"'},p:[20,84,1072]}]}]}," ",{p:[22,7,1148],t:7,e:"ui-section",a:{label:"Filters"},f:[{p:[23,9,1186],t:7,e:"filters"}]}]}],n:52,r:"data.scrubbers",p:[8,3,212]},{t:4,n:51,f:[{p:[27,5,1257],t:7,e:"span",a:{"class":"bad"},f:["Error: No scrubbers connected."]}],r:"data.scrubbers"}]}]},r.exports.components=r.exports.components||{};var i={filters:t(311),back:t(221)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,221:221,311:311}],224:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Air Status"},f:[{t:4,f:[{t:4,f:[{p:[4,7,110],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[4,26,129]}]},f:[{p:[5,6,146],t:7,e:"span",a:{"class":[{t:2,x:{r:["danger_level"],s:'_0==2?"bad":_0==1?"average":"good"'},p:[5,19,159]}]},f:[{t:2,x:{r:["value"],s:"Math.fixed(_0,2)"},p:[6,5,237]},{t:2,r:"unit",p:[6,29,261]}]}]}],n:52,r:"adata.environment_data",p:[3,5,70]}," ",{p:[10,5,322],t:7,e:"ui-section",a:{label:"Local Status"},f:[{p:[11,7,363],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.danger_level"],s:'_0==2?"bad bold":_0==1?"average bold":"good"'},p:[11,20,376]}]},f:[{t:2,x:{r:["data.danger_level"],s:'_0==2?"Danger (Internals Required)":_0==1?"Caution":"Optimal"'},p:[12,6,475]}]}]}," ",{p:[15,5,619],t:7,e:"ui-section",a:{label:"Area Status"},f:[{p:[16,7,659],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.atmos_alarm","data.fire_alarm"],s:'_0||_1?"bad bold":"good"'},p:[16,20,672]}]},f:[{t:2,x:{r:["data.atmos_alarm","fire_alarm"],s:'_0?"Atmosphere Alarm":_1?"Fire Alarm":"Nominal"'},p:[17,8,744]}]}]}],n:50,r:"data.environment_data",p:[2,3,35]},{t:4,n:51,f:[{p:[21,5,876],t:7,e:"ui-section",a:{label:"Warning"},f:[{p:[22,7,912],t:7,e:"span",a:{"class":"bad bold"},f:["Cannot obtain air sample for analysis."]}]}],r:"data.environment_data"}," ",{t:4,f:[{p:[26,5,1040],t:7,e:"ui-section",a:{label:"Warning"},f:[{p:[27,7,1076],t:7,e:"span",a:{"class":"bad bold"},f:["Safety measures offline. Device may exhibit abnormal behavior."]}]}],n:50,r:"data.emagged",p:[25,3,1014]}]}]},e.exports=a.extend(r.exports)},{205:205}],225:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.css=" th, td {\r\n padding-right: 16px;\r\n text-align: left;\r\n }",r.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,116],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Alarm Thresholds",button:0},f:[" ",{p:[7,3,143],t:7,e:"table",f:[{p:[8,5,156],t:7,e:"thead",f:[{p:[8,12,163],t:7,e:"tr",f:[{p:[9,7,175],t:7,e:"th"}," ",{p:[10,7,192],t:7,e:"th",f:[{p:[10,11,196],t:7,e:"span",a:{"class":"bad"},f:["min2"]}]}," ",{p:[11,7,238],t:7,e:"th",f:[{p:[11,11,242],t:7,e:"span",a:{"class":"average"},f:["min1"]}]}," ",{p:[12,7,288],t:7,e:"th",f:[{p:[12,11,292],t:7,e:"span",a:{"class":"average"},f:["max1"]}]}," ",{p:[13,7,338],t:7,e:"th",f:[{p:[13,11,342],t:7,e:"span",a:{"class":"bad"},f:["max2"]}]}]}]}," ",{p:[15,5,401],t:7,e:"tbody",f:[{t:4,f:[{p:[16,32,441],t:7,e:"tr",f:[{p:[17,9,455],t:7,e:"th",f:[{t:3,r:"name",p:[17,13,459]}]}," ",{t:4,f:[{p:[18,27,502],t:7,e:"td",f:[{p:[19,11,518],t:7,e:"ui-button",a:{action:"threshold",params:['{"env": "',{t:2,r:"env",p:[19,58,565]},'", "var": "',{t:2,r:"val",p:[19,76,583]},'"}']},f:[{t:2,x:{r:["selected"],s:"Math.fixed(_0,2)"},p:[19,87,594]}]}]}],n:52,r:"settings",p:[18,9,484]}]}],n:52,r:"data.thresholds",p:[16,7,416]}]}," ",{p:[23,3,697],t:7,e:"table",f:[]}]}]}," "]},r.exports.components=r.exports.components||{};var i={back:t(221)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,221:221}],226:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,113],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Vent Controls",button:0},f:[" ",{t:4,f:[{p:[8,5,166],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"long_name",p:[8,27,188]}]},f:[{p:[9,7,211],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[10,9,247],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["power"],s:'_0?"power-off":"close"'},p:[10,26,264]}],style:[{t:2,x:{r:["power"],s:'_0?"selected":null'},p:[10,68,306]}],action:"power",params:['{"id_tag": "',{t:2,r:"id_tag",p:[11,46,383]},'", "val": ',{t:2,x:{r:["power"],s:"+!_0"},p:[11,66,403]},"}"]},f:[{t:2,x:{r:["power"],s:'_0?"On":"Off"'},p:[11,80,417]}]}]}," ",{p:[13,7,482],t:7,e:"ui-section",a:{label:"Mode"},f:[{p:[14,9,517],t:7,e:"span",f:[{t:2,x:{r:["direction"],s:'_0=="release"?"Pressurizing":"Siphoning"'},p:[14,15,523]}]}]}," ",{p:[16,7,616],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[17,9,665],t:7,e:"ui-button",a:{icon:"sign-in",style:[{t:2,x:{r:["incheck"],s:'_0?"selected":null'},p:[17,42,698]}],action:"incheck",params:['{"id_tag": "',{t:2,r:"id_tag",p:[18,48,779]},'", "val": ',{t:2,r:"checks",p:[18,68,799]},"}"]},f:["Internal"]}," ",{p:[19,9,842],t:7,e:"ui-button",a:{icon:"sign-out",style:[{t:2,x:{r:["excheck"],s:'_0?"selected":null'},p:[19,43,876]}],action:"excheck",params:['{"id_tag": "',{t:2,r:"id_tag",p:[20,48,957]},'", "val": ',{t:2,r:"checks",p:[20,68,977]},"}"]},f:["External"]}]}," ",{t:4,f:[{p:[23,9,1064],t:7,e:"ui-section",a:{label:"Internal Target Pressure"},f:[{p:[24,11,1121],t:7,e:"ui-button",a:{icon:"pencil",action:"set_internal_pressure",params:['{"id_tag": "',{t:2,r:"id_tag",p:[25,33,1210]},'"}']},f:[{t:2,x:{r:["internal"],s:"Math.fixed(_0)"},p:[25,47,1224]}]}," ",{p:[26,11,1272],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["intdefault"],s:'_0?"disabled":null'},p:[26,44,1305]}],action:"reset_internal_pressure",params:['{"id_tag": "',{t:2,r:"id_tag",p:[27,33,1407]},'"}']},f:["Reset"]}]}],n:50,r:"incheck",p:[22,7,1039]}," ",{t:4,f:[{p:[31,11,1511],t:7,e:"ui-section",a:{label:"External Target Pressure"},f:[{p:[32,13,1570],t:7,e:"ui-button",a:{icon:"pencil",action:"set_external_pressure",params:['{"id_tag": "',{t:2,r:"id_tag",p:[33,35,1661]},'"}']},f:[{t:2,x:{r:["external"],s:"Math.fixed(_0)"},p:[33,49,1675]}]}," ",{p:[34,13,1725],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["extdefault"],s:'_0?"disabled":null'},p:[34,46,1758]}],action:"reset_external_pressure",params:['{"id_tag": "',{t:2,r:"id_tag",p:[35,35,1862]},'"}']},f:["Reset"]}]}],n:50,r:"excheck",p:[30,7,1484]}]}],n:52,r:"data.vents",p:[7,3,140]},{t:4,n:51,f:[{p:[40,5,1973],t:7,e:"span",a:{"class":"bad"},f:["Error: No vents connected."]}],r:"data.vents"}]}]},r.exports.components=r.exports.components||{};var i={back:t(221)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,221:221}],227:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.css=" table {\r\n width: 100%;\r\n border-spacing: 2px;\r\n }\r\n th {\r\n text-align: left;\r\n }\r\n td {\r\n vertical-align: top;\r\n }\r\n td .button {\r\n margin-top: 4px\r\n }",r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",f:[{p:[3,5,34],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.oneAccess"],s:'_0?"unlock":"lock"'},p:[3,22,51]}],action:"one_access"},f:[{t:2,x:{r:["data.oneAccess"],s:'_0?"One":"All"'},p:[3,82,111]}," Required"]}," ",{p:[4,5,172],t:7,e:"ui-button",a:{icon:"refresh",action:"clear"},f:["Clear"]}]}," ",{p:[6,3,251],t:7,e:"hr"}," ",{p:[7,3,260],t:7,e:"table",f:[{p:[8,3,271],t:7,e:"thead",f:[{p:[9,4,283],t:7,e:"tr",f:[{t:4,f:[{p:[10,5,315],t:7,e:"th",f:[{p:[10,9,319],t:7,e:"span",a:{"class":"highlight bold"},f:[{t:2,r:"name",p:[10,38,348]}]}]}],n:52,r:"data.regions",p:[9,8,287]}]}]}," ",{p:[13,3,403],t:7,e:"tbody",f:[{p:[14,4,415],t:7,e:"tr",f:[{t:4,f:[{p:[15,5,447],t:7,e:"td",f:[{t:4,f:[{p:[16,11,481],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["req"],s:'_0?"check-square-o":"square-o"'},p:[16,28,498]}],style:[{t:2,x:{r:["req"],s:'_0?"selected":null'},p:[16,76,546]}],action:"set",params:['{"access": "',{t:2,r:"id",p:[17,46,621]},'"}']},f:[{t:2,r:"name",p:[17,56,631]}]}," ",{p:[18,9,661],t:7,e:"br"}],n:52,r:"accesses",p:[15,9,451]}]}],n:52,r:"data.regions",p:[14,8,419]}]}]}]}]}," "]},e.exports=a.extend(r.exports)},{205:205}],228:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{powerState:function(t){switch(t){case 2:return"good";case 1:return"average";default:return"bad"}}},computed:{malfAction:function(){switch(this.get("data.malfStatus")){case 1:return"hack";case 2:return"occupy";case 3:return"deoccupy"}},malfButton:function(){switch(this.get("data.malfStatus")){case 1:return"Override Programming";case 2:case 4:return"Shunt Core Process";case 3:return"Return to Main Core"}},malfIcon:function(){switch(this.get("data.malfStatus")){case 1:return"terminal";case 2:case 4:return"caret-square-o-down";case 3:return"caret-square-o-left"}},powerCellStatusState:function(){var t=this.get("data.powerCellStatus");return t>50?"good":t>25?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{t:4,f:[{p:[46,2,1206],t:7,e:"ui-notice",f:[{p:[47,3,1221],t:7,e:"b",f:[{p:[47,6,1224],t:7,e:"h3",f:["SYSTEM FAILURE"]}]}," ",{p:[48,3,1255],t:7,e:"i",f:["I/O regulators malfunction detected! Waiting for system reboot..."]},{p:[48,75,1327],t:7,e:"br"}," Automatic reboot in ",{t:2,r:"data.failTime",p:[49,23,1355]}," seconds... ",{p:[50,3,1387],t:7,e:"ui-button",a:{icon:"refresh",action:"reboot"},f:["Reboot Now"]},{p:[50,67,1451],t:7,e:"br"},{p:[50,71,1455],t:7,e:"br"},{p:[50,75,1459],t:7,e:"br"}]}],n:50,r:"data.failTime",p:[45,1,1182]},{t:4,n:51,f:[{p:[53,2,1491],t:7,e:"ui-notice",f:[{t:4,f:[{p:[55,3,1535],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[56,5,1576],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[56,22,1593]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[56,73,1644]}]}]}],n:50,r:"data.siliconUser",p:[54,4,1507]},{t:4,n:51,f:[{p:[59,3,1732],t:7,e:"span",f:["Swipe an ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[59,29,1758]}," this interface."]}],r:"data.siliconUser"}]}," ",{p:[62,2,1846],t:7,e:"ui-display",a:{title:"Power Status"},f:[{p:[63,4,1884],t:7,e:"ui-section",a:{label:"Main Breaker"},f:[{t:4,f:[{p:[65,5,1967],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.isOperating"],s:'_0?"good":"bad"'},p:[65,18,1980]}]},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[65,57,2019]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[64,3,1921]},{t:4,n:51,f:[{p:[67,5,2079],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOperating"],s:'_0?"power-off":"close"'},p:[67,22,2096]}],style:[{t:2,x:{r:["data.isOperating"],s:'_0?"selected":null'},p:[67,75,2149]}],action:"breaker"},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[68,21,2212]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}," ",{p:[71,4,2293],t:7,e:"ui-section",a:{label:"External Power"},f:[{p:[72,3,2332],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.externalPower"],s:"_0(_1)"},p:[72,16,2345]}]},f:[{t:2,x:{r:["data.externalPower"],s:'_0==2?"Good":_0==1?"Low":"None"'},p:[72,52,2381]}]}]}," ",{p:[74,4,2490],t:7,e:"ui-section",a:{label:"Power Cell"},f:[{t:4,f:[{p:[76,5,2567],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.powerCellStatus",p:[76,38,2600]}],state:[{t:2,r:"powerCellStatusState",p:[76,71,2633]}]},f:[{t:2,x:{r:["adata.powerCellStatus"],s:"Math.fixed(_0)"},p:[76,97,2659]},"%"]}],n:50,x:{r:["data.powerCellStatus"],s:"_0!=null"},p:[75,3,2525]},{t:4,n:51,f:[{p:[78,5,2724],t:7,e:"span",a:{"class":"bad"},f:["Removed"]}],x:{r:["data.powerCellStatus"],s:"_0!=null"}}]}," ",{t:4,f:[{p:[82,3,2830],t:7,e:"ui-section",a:{label:"Charge Mode"},f:[{t:4,f:[{p:[84,4,2913],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.chargeMode"],s:'_0?"good":"bad"'},p:[84,17,2926]}]},f:[{t:2,x:{r:["data.chargeMode"],s:'_0?"Auto":"Off"'},p:[84,55,2964]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[83,5,2868]},{t:4,n:51,f:[{p:[86,4,3026],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.chargeMode"],s:'_0?"refresh":"close"'},p:[86,21,3043]}],style:[{t:2,x:{r:["data.chargeMode"],s:'_0?"selected":null'},p:[86,71,3093]}],action:"charge"},f:[{t:2,x:{r:["data.chargeMode"],s:'_0?"Auto":"Off"'},p:[87,22,3156]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}," [",{p:[90,6,3236],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.chargingStatus"],s:"_0(_1)"},p:[90,19,3249]}]},f:[{t:2,x:{r:["data.chargingStatus"],s:'_0==2?"Fully Charged":_0==1?"Charging":"Not Charging"'},p:[90,56,3286]}]},"]"]}],n:50,x:{r:["data.powerCellStatus"],s:"_0!=null"},p:[81,4,2790]}]}," ",{p:[94,2,3445],t:7,e:"ui-display",a:{title:"Power Channels"},f:[{t:4,f:[{p:[96,3,3517],t:7,e:"ui-section",a:{label:[{t:2,r:"title",p:[96,22,3536]}],nowrap:0},f:[{p:[97,5,3560],t:7,e:"div",a:{"class":"content"},f:[{t:2,rx:{r:"adata.powerChannels",m:[{t:30,n:"@index"},"powerLoad"]},p:[97,26,3581]}]}," ",{p:[98,5,3634],t:7,e:"div",a:{"class":"content"},f:[{p:[98,26,3655],t:7,e:"span",a:{"class":[{t:2,x:{r:["status"],s:'_0>=2?"good":"bad"'},p:[98,39,3668]}]},f:[{t:2,x:{r:["status"],s:'_0>=2?"On":"Off"'},p:[98,73,3702]}]}]}," ",{p:[99,5,3751],t:7,e:"div",a:{"class":"content"},f:["[",{p:[99,27,3773],t:7,e:"span",f:[{t:2,x:{r:["status"],s:'_0==1||_0==3?"Auto":"Manual"'},p:[99,33,3779]}]},"]"]}," ",{p:[100,5,3849],t:7,e:"div",a:{"class":"content",style:"float:right"},f:[{t:4,f:[{p:[102,6,3942],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["status"],s:'_0==1||_0==3?"selected":null'},p:[102,39,3975]}],action:"channel",params:[{t:2,r:"topicParams.auto",p:[103,30,4057]}]},f:["Auto"]}," ",{p:[104,6,4102],t:7,e:"ui-button",a:{icon:"power-off",state:[{t:2,x:{r:["status"],s:'_0==2?"selected":null'},p:[104,41,4137]}],action:"channel",params:[{t:2,r:"topicParams.on",p:[105,13,4204]}]},f:["On"]}," ",{p:[106,6,4245],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["status"],s:'_0==0?"selected":null'},p:[106,37,4276]}],action:"channel",params:[{t:2,r:"topicParams.off",p:[107,13,4343]}]},f:["Off"]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[101,4,3895]}]}]}],n:52,r:"data.powerChannels",p:[95,4,3485]}," ",{p:[112,4,4439],t:7,e:"ui-section",a:{label:"Total Load"},f:[{p:[113,3,4474],t:7,e:"span",a:{"class":"bold"},f:[{t:2,r:"adata.totalLoad",p:[113,22,4493]}]}]}]}," ",{t:4,f:[{p:[117,4,4585],t:7,e:"ui-display",a:{title:"System Overrides"},f:[{p:[118,3,4626],t:7,e:"ui-button",a:{icon:"lightbulb-o",action:"overload"},f:["Overload"]}," ",{t:4,f:[{p:[120,5,4727],t:7,e:"ui-button",a:{icon:[{t:2,r:"malfIcon",p:[120,22,4744]}],state:[{t:2,x:{r:["data.malfStatus"],s:'_0==4?"disabled":null'},p:[120,43,4765]}],action:[{t:2,r:"malfAction",p:[120,97,4819]}]},f:[{t:2,r:"malfButton",p:[120,113,4835]}]}],n:50,r:"data.malfStatus",p:[119,3,4698]}]}],n:50,r:"data.siliconUser",p:[116,2,4556]}," ",{p:[124,2,4903],t:7,e:"ui-notice",f:[{p:[125,4,4919],t:7,e:"ui-section",a:{label:"Emergency Light Fallback"},f:[{t:4,f:[{p:[127,8,5020],t:7,e:"span",f:[{t:2,x:{r:["data.emergencyLights"],s:'_0?"Enabled":"Disabled"'},p:[127,14,5026]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[126,6,4971]},{t:4,n:51,f:[{p:[129,8,5106],t:7,e:"ui-button",a:{icon:"lightbulb-o",action:"emergency_lighting"},f:[{t:2,x:{r:["data.emergencyLights"],s:'_0?"Enabled":"Disabled"'},p:[129,66,5164]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}]}," ",{p:[133,2,5275],t:7,e:"ui-notice",f:[{p:[134,4,5291],t:7,e:"ui-section",a:{label:"Cover Lock"},f:[{t:4,f:[{p:[136,5,5372],t:7,e:"span",f:[{t:2,x:{r:["data.coverLocked"],s:'_0?"Engaged":"Disengaged"'},p:[136,11,5378]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[135,3,5326]},{t:4,n:51,f:[{p:[138,5,5450],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.coverLocked"],s:'_0?"lock":"unlock"'},p:[138,22,5467]}],action:"cover"},f:[{t:2,x:{r:["data.coverLocked"],s:'_0?"Engaged":"Disengaged"'},p:[138,79,5524]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}]}],r:"data.failTime"}]},e.exports=a.extend(r.exports)},{205:205}],229:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Alarms"},f:[{p:[2,3,31],t:7,e:"ul",f:[{t:4,f:[{p:[4,7,72],t:7,e:"li",f:[{p:[4,11,76],t:7,e:"ui-button",a:{icon:"close",style:"danger",action:"clear",params:['{"zone": "',{t:2,r:".",p:[4,83,148]},'"}']},f:[{t:2,r:".",p:[4,92,157]}]}]}],n:52,r:"data.priority",p:[3,5,41]},{t:4,n:51,f:[{p:[6,7,201],t:7,e:"li",f:[{p:[6,11,205],t:7,e:"span",a:{"class":"good"},f:["No Priority Alerts"]}]}],r:"data.priority"}," ",{t:4,f:[{p:[9,7,303],t:7,e:"li",f:[{p:[9,11,307],t:7,e:"ui-button",a:{icon:"close",style:"caution",action:"clear",params:['{"zone": "',{t:2,r:".",p:[9,84,380]},'"}']},f:[{t:2,r:".",p:[9,93,389]}]}]}],n:52,r:"data.minor",p:[8,5,275]},{t:4,n:51,f:[{p:[11,7,433],t:7,e:"li",f:[{p:[11,11,437],t:7,e:"span",a:{"class":"good"},f:["No Minor Alerts"]}]}],r:"data.minor"}]}]}]},e.exports=a.extend(r.exports)},{205:205}],230:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:[{t:2,x:{r:["data.tank","data.sensors.0.long_name"],s:"_0?_1:null"},p:[1,20,19]}]},f:[{t:4,f:[{p:[3,5,102],t:7,e:"ui-subdisplay",a:{title:[{t:2,x:{r:["data.tank","long_name"],s:"!_0?_1:null"},p:[3,27,124]}]},f:[{p:[4,7,167],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[5,3,200],t:7,e:"span",f:[{t:2,x:{r:["pressure"],s:"Math.fixed(_0,2)"},p:[5,9,206]}," kPa"]}]}," ",{t:4,f:[{p:[8,9,302],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[9,11,346],t:7,e:"span",f:[{t:2,x:{r:["temperature"],s:"Math.fixed(_0,2)"},p:[9,17,352]}," K"]}]}],n:50,r:"temperature",p:[7,7,273]}," ",{t:4,f:[{p:[13,9,462],t:7,e:"ui-section",a:{label:[{t:2,r:"id",p:[13,28,481]}]},f:[{p:[14,5,495],t:7,e:"span",f:[{t:2,x:{r:["."],s:"Math.fixed(_0,2)"},p:[14,11,501]},"%"]}]}],n:52,i:"id",r:"gases",p:[12,4,434]}]}],n:52,r:"adata.sensors",p:[2,3,73]}]}," ",{t:4,f:[{p:{button:[{p:[23,5,704],t:7,e:"ui-button",a:{icon:"refresh",action:"reconnect"},f:["Reconnect"]}]},t:7,e:"ui-display",a:{title:"Controls",button:0 -},f:[" ",{p:[25,5,792],t:7,e:"ui-section",a:{label:"Input Injector"},f:[{p:[26,7,835],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.inputting"],s:'_0?"power-off":"close"'},p:[26,24,852]}],style:[{t:2,x:{r:["data.inputting"],s:'_0?"selected":null'},p:[26,75,903]}],action:"input"},f:[{t:2,x:{r:["data.inputting"],s:'_0?"Injecting":"Off"'},p:[27,9,968]}]}]}," ",{p:[29,5,1044],t:7,e:"ui-section",a:{label:"Input Rate"},f:[{p:[30,7,1083],t:7,e:"span",f:[{t:2,x:{r:["adata.inputRate"],s:"Math.fixed(_0)"},p:[30,13,1089]}," L/s"]}]}," ",{p:[32,5,1156],t:7,e:"ui-section",a:{label:"Output Regulator"},f:[{p:[33,7,1201],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.outputting"],s:'_0?"power-off":"close"'},p:[33,24,1218]}],style:[{t:2,x:{r:["data.outputting"],s:'_0?"selected":null'},p:[33,76,1270]}],action:"output"},f:[{t:2,x:{r:["data.outputting"],s:'_0?"Open":"Closed"'},p:[34,9,1337]}]}]}," ",{p:[36,5,1412],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[37,7,1456],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure"},f:[{t:2,x:{r:["adata.outputPressure"],s:"Math.round(_0)"},p:[37,50,1499]}," kPa"]}]}]}],n:50,r:"data.tank",p:[20,1,618]}]},e.exports=a.extend(r.exports)},{205:205}],231:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,48],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,65]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,109]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,164]}]}]}," ",{p:[6,3,223],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[7,5,265],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[8,5,360],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[8,35,390]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[9,5,518],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.round(_0)"},p:[9,11,524]}," kPa"]}]}," ",{p:[11,3,586],t:7,e:"ui-section",a:{label:"Filter"},f:[{t:4,f:[{p:[13,7,654],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["selected"],s:'_0?"selected":null'},p:[13,25,672]}],action:"filter",params:['{"mode": ',{t:2,r:"id",p:[14,42,748]},"}"]},f:[{t:2,r:"name",p:[14,51,757]}]}],n:52,r:"data.filter_types",p:[12,5,619]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],232:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,48],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,65]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,109]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,164]}]}]}," ",{p:[6,3,223],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[7,5,265],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[8,5,360],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.set_pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[8,35,390]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[9,5,522],t:7,e:"span",f:[{t:2,x:{r:["adata.set_pressure"],s:"Math.round(_0)"},p:[9,11,528]}," kPa"]}]}," ",{p:[11,3,594],t:7,e:"ui-section",a:{label:"Node 1"},f:[{p:[12,5,627],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==0?"disabled":null'},p:[12,44,666]}],action:"node1",params:'{"concentration": -0.1}'}}," ",{p:[14,5,783],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==0?"disabled":null'},p:[14,39,817]}],action:"node1",params:'{"concentration": -0.01}'}}," ",{p:[16,5,935],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==100?"disabled":null'},p:[16,38,968]}],action:"node1",params:'{"concentration": 0.01}'}}," ",{p:[18,5,1087],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==100?"disabled":null'},p:[18,43,1125]}],action:"node1",params:'{"concentration": 0.1}'}}," ",{p:[20,5,1243],t:7,e:"span",f:[{t:2,x:{r:["adata.node1_concentration"],s:"Math.round(_0)"},p:[20,11,1249]},"%"]}]}," ",{p:[22,3,1319],t:7,e:"ui-section",a:{label:"Node 2"},f:[{p:[23,5,1352],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==0?"disabled":null'},p:[23,44,1391]}],action:"node2",params:'{"concentration": -0.1}'}}," ",{p:[25,5,1508],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==0?"disabled":null'},p:[25,39,1542]}],action:"node2",params:'{"concentration": -0.01}'}}," ",{p:[27,5,1660],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==100?"disabled":null'},p:[27,38,1693]}],action:"node2",params:'{"concentration": 0.01}'}}," ",{p:[29,5,1812],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==100?"disabled":null'},p:[29,43,1850]}],action:"node2",params:'{"concentration": 0.1}'}}," ",{p:[31,5,1968],t:7,e:"span",f:[{t:2,x:{r:["adata.node2_concentration"],s:"Math.round(_0)"},p:[31,11,1974]},"%"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],233:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,48],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,65]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,109]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,164]}]}]}," ",{t:4,f:[{p:[7,5,250],t:7,e:"ui-section",a:{label:"Transfer Rate"},f:[{p:[8,7,292],t:7,e:"ui-button",a:{icon:"pencil",action:"rate",params:'{"rate": "input"}'},f:["Set"]}," ",{p:[9,7,381],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.rate","data.max_rate"],s:'_0==_1?"disabled":null'},p:[9,37,411]}],action:"rate",params:'{"rate": "max"}'},f:["Max"]}," ",{p:[10,7,525],t:7,e:"span",f:[{t:2,x:{r:["adata.rate"],s:"Math.round(_0)"},p:[10,13,531]}," L/s"]}]}],n:50,r:"data.max_rate",p:[6,3,223]},{t:4,n:51,f:[{p:[13,5,605],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[14,7,649],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[15,7,746],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[15,37,776]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[16,7,906],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.round(_0)"},p:[16,13,912]}," kPa"]}]}],r:"data.max_rate"}]}]},e.exports=a.extend(r.exports)},{205:205}],234:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:{button:[{p:[3,5,67],t:7,e:"ui-button",a:{icon:"clock-o",style:[{t:2,x:{r:["data.timing"],s:'_0?"selected":null'},p:[3,38,100]}],action:[{t:2,x:{r:["data.timing"],s:'_0?"stop":"start"'},p:[3,83,145]}]},f:[{t:2,x:{r:["data.timing"],s:'_0?"Stop":"Start"'},p:[3,119,181]}]}," ",{p:[4,5,233],t:7,e:"ui-button",a:{icon:"lightbulb-o",action:"flash",style:[{t:2,x:{r:["data.flash_charging"],s:'_0?"disabled":null'},p:[4,57,285]}]},f:[{t:2,x:{r:["data.flash_charging"],s:'_0?"Recharging":"Flash"'},p:[4,102,330]}]}]},t:7,e:"ui-display",a:{title:"Cell Timer",button:0},f:[" ",{p:[6,3,410],t:7,e:"ui-section",f:[{p:[7,5,428],t:7,e:"ui-button",a:{icon:"fast-backward",action:"time",params:'{"adjust": -600}'}}," ",{p:[8,5,518],t:7,e:"ui-button",a:{icon:"backward",action:"time",params:'{"adjust": -100}'}}," ",{p:[9,5,603],t:7,e:"span",f:[{t:2,x:{r:["text","data.minutes"],s:"_0.zeroPad(_1,2)"},p:[9,11,609]},":",{t:2,x:{r:["text","data.seconds"],s:"_0.zeroPad(_1,2)"},p:[9,45,643]}]}," ",{p:[10,5,689],t:7,e:"ui-button",a:{icon:"forward",action:"time",params:'{"adjust": 100}'}}," ",{p:[11,5,772],t:7,e:"ui-button",a:{icon:"fast-forward",action:"time",params:'{"adjust": 600}'}}]}," ",{p:[13,3,875],t:7,e:"ui-section",f:[{p:[14,7,895],t:7,e:"ui-button",a:{icon:"hourglass-start",action:"preset",params:'{"preset": "short"}'},f:["Short"]}," ",{p:[15,7,999],t:7,e:"ui-button",a:{icon:"hourglass-start",action:"preset",params:'{"preset": "medium"}'},f:["Medium"]}," ",{p:[16,7,1105],t:7,e:"ui-button",a:{icon:"hourglass-start",action:"preset",params:'{"preset": "long"}'},f:["Long"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],235:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,23],t:7,e:"ui-notice",f:[{t:2,r:"data.notice",p:[3,5,40]}]}],n:50,r:"data.notice",p:[1,1,0]},{p:[6,1,82],t:7,e:"ui-display",a:{title:"Bluespace Artillery Control",button:0},f:[{t:4,f:[{p:[8,3,167],t:7,e:"ui-section",a:{label:"Target"},f:[{p:[9,5,200],t:7,e:"ui-button",a:{icon:"crosshairs",action:"recalibrate"},f:[{t:2,r:"data.target",p:[9,55,250]}]}]}," ",{p:[11,3,298],t:7,e:"ui-section",a:{label:"Controls"},f:[{t:4,f:[{p:[13,3,356],t:7,e:"ui-notice",f:[{p:[14,4,372],t:7,e:"span",f:["Bluespace Artillery firing protocols must be globally unlocked from two keycard authentication devices first!"]}]}],n:50,x:{r:["data.unlocked"],s:"!_0"},p:[12,2,330]},{t:4,n:51,f:[{p:[17,3,525],t:7,e:"ui-button",a:{icon:"warning",state:[{t:2,x:{r:["data.ready"],s:'_0?null:"disabled"'},p:[17,36,558]}],action:"fire"},f:["FIRE!"]}],x:{r:["data.unlocked"],s:"!_0"}}]}],n:50,r:"data.connected",p:[7,3,141]}," ",{t:4,f:[{p:[22,3,694],t:7,e:"ui-section",a:{label:"Maintenance"},f:[{p:[23,7,734],t:7,e:"ui-button",a:{icon:"wrench",action:"build"},f:["Complete Deployment."]}]}],n:50,x:{r:["data.connected"],s:"!_0"},p:[21,3,667]}]}]},e.exports=a.extend(r.exports)},{205:205}],236:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,15],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.hasHoldingTank"],s:'_0?"is":"is not"'},p:[2,23,35]}," connected to a tank."]}]}," ",{p:{button:[{p:[6,5,185],t:7,e:"ui-button",a:{icon:"pencil",action:"relabel"},f:["Relabel"]}]},t:7,e:"ui-display",a:{title:"Canister",button:0},f:[" ",{p:[8,3,266],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[9,5,301],t:7,e:"span",f:[{t:2,x:{r:["adata.tankPressure"],s:"Math.round(_0)"},p:[9,11,307]}," kPa"]}]}," ",{p:[11,3,373],t:7,e:"ui-section",a:{label:"Port"},f:[{p:[12,5,404],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.portConnected"],s:'_0?"good":"average"'},p:[12,18,417]}]},f:[{t:2,x:{r:["data.portConnected"],s:'_0?"Connected":"Not Connected"'},p:[12,63,462]}]}]}," ",{t:4,f:[{p:[15,3,573],t:7,e:"ui-section",a:{label:"Access"},f:[{p:[16,7,608],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.restricted"],s:'_0?"lock":"unlock"'},p:[16,24,625]}],style:[{t:2,x:{r:[],s:'"caution"'},p:[17,14,680]}],action:"restricted"},f:[{t:2,x:{r:["data.restricted"],s:'_0?"Restricted to Engineering":"Public"'},p:[18,27,722]}]}]}],n:50,r:"data.isPrototype",p:[14,3,544]}]}," ",{p:[22,1,839],t:7,e:"ui-display",a:{title:"Valve"},f:[{p:[23,3,869],t:7,e:"ui-section",a:{label:"Release Pressure"},f:[{p:[24,5,912],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[24,18,925]}],max:[{t:2,r:"data.maxReleasePressure",p:[24,52,959]}],value:[{t:2,r:"data.releasePressure",p:[25,14,1002]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[25,40,1028]}," kPa"]}]}," ",{p:[27,3,1099],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[28,5,1144],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[28,38,1177]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[30,5,1333],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[30,36,1364]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[32,5,1511],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[33,5,1606],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[33,35,1636]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}," ",{p:[36,3,1798],t:7,e:"ui-section",a:{label:"Valve"},f:[{p:[37,5,1830],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.valveOpen"],s:'_0?"unlock":"lock"'},p:[37,22,1847]}],style:[{t:2,x:{r:["data.valveOpen","data.hasHoldingTank"],s:'_0?_1?"caution":"danger":null'},p:[38,14,1901]}],action:"valve"},f:[{t:2,x:{r:["data.valveOpen"],s:'_0?"Open":"Closed"'},p:[39,22,1995]}]}]}]}," ",{t:4,f:[{p:[42,1,2090],t:7,e:"ui-display",a:{title:"Valve Toggle Timer"},f:[{t:4,f:[{p:[44,5,2155],t:7,e:"ui-section",a:{label:"Adjust Timer"},f:[{p:[45,7,2196],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.timer_is_not_default"],s:'_0?null:"disabled"'},p:[45,40,2229]}],action:"timer",params:'{"change": "reset"}'},f:["Reset"]}," ",{p:[47,7,2358],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.timer_is_not_min"],s:'_0?null:"disabled"'},p:[47,38,2389]}],action:"timer",params:'{"change": "decrease"}'},f:["Decrease"]}," ",{p:[49,7,2520],t:7,e:"ui-button",a:{icon:"pencil",state:[{t:2,x:{r:[],s:'"disabled"'},p:[49,39,2552]}],action:"timer",params:'{"change": "input"}'},f:["Set"]}," ",{p:[51,7,2637],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.timer_is_not_max"],s:'_0?null:"disabled"'},p:[51,37,2667]}],action:"timer",params:'{"change": "increase"}'},f:["Increase"]}]}],n:51,r:"data.timing",p:[43,3,2133]}," ",{p:[55,3,2833],t:7,e:"ui-section",a:{label:"Timer"},f:[{p:[56,6,2866],t:7,e:"ui-button",a:{icon:"clock-o",style:[{t:2,x:{r:["data.timing"],s:'_0?"danger":"caution"'},p:[56,39,2899]}],action:"toggle_timer"},f:[{t:2,x:{r:["data.timing"],s:'_0?"On":"Off"'},p:[57,30,2969]}]}," ",{p:[59,2,3017],t:7,e:"ui-section",a:{label:"Time until Valve Toggle"},f:[{p:[60,2,3064],t:7,e:"span",f:[{t:2,x:{r:["data.timing","data.time_left","data.timer_set"],s:"_0?_1:_2"},p:[60,8,3070]}]}]}]}]}],n:50,r:"data.isPrototype",p:[41,1,2062]},{p:{button:[{t:4,f:[{p:[69,7,3277],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.valveOpen"],s:'_0?"danger":null'},p:[69,38,3308]}],action:"eject"},f:["Eject"]}],n:50,r:"data.hasHoldingTank",p:[68,5,3242]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[73,3,3442],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holdingTank.name",p:[74,4,3473]}]}," ",{p:[76,3,3519],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holdingTank.tankPressure"],s:"Math.round(_0)"},p:[77,4,3553]}," kPa"]}],n:50,r:"data.hasHoldingTank",p:[72,3,3411]},{t:4,n:51,f:[{p:[80,3,3635],t:7,e:"ui-section",f:[{p:[81,4,3652],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.hasHoldingTank"}]}]},e.exports=a.extend(r.exports)},{205:205}],237:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={computed:{tabs:function(){return Object.keys(this.get("data.supplies"))}}}}(r),r.exports.template={v:3,t:[" ",{p:[11,1,158],t:7,e:"ui-display",a:{title:"Cargo"},f:[{p:[12,3,188],t:7,e:"ui-section",a:{label:"Shuttle"},f:[{t:4,f:[{p:[14,7,270],t:7,e:"ui-button",a:{action:"send"},f:[{t:2,r:"data.location",p:[14,32,295]}]}],n:50,x:{r:["data.docked","data.requestonly"],s:"_0&&!_1"},p:[13,5,222]},{t:4,n:51,f:[{p:[16,7,346],t:7,e:"span",f:[{t:2,r:"data.location",p:[16,13,352]}]}],x:{r:["data.docked","data.requestonly"],s:"_0&&!_1"}}]}," ",{p:[19,3,410],t:7,e:"ui-section",a:{label:"Credits"},f:[{p:[20,5,444],t:7,e:"span",f:[{t:2,x:{r:["adata.points"],s:"Math.floor(_0)"},p:[20,11,450]}]}]}," ",{p:[22,3,506],t:7,e:"ui-section",a:{label:"CentCom Message"},f:[{p:[23,7,550],t:7,e:"span",f:[{t:2,r:"data.message",p:[23,13,556]}]}]}," ",{t:4,f:[{p:[26,5,644],t:7,e:"ui-section",a:{label:"Loan"},f:[{t:4,f:[{p:[28,9,716],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.away","data.docked"],s:'_0&&_1?null:"disabled"'},p:[29,17,744]}],action:"loan"},f:["Loan Shuttle"]}],n:50,x:{r:["data.loan_dispatched"],s:"!_0"},p:[27,7,677]},{t:4,n:51,f:[{p:[32,9,868],t:7,e:"span",a:{"class":"bad"},f:["Loaned to CentCom"]}],x:{r:["data.loan_dispatched"],s:"!_0"}}]}],n:50,x:{r:["data.loan","data.requestonly"],s:"_0&&!_1"},p:[25,3,600]}]}," ",{t:4,f:[{p:{button:[{p:[40,7,1066],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["data.cart.length"],s:'_0?null:"disabled"'},p:[40,38,1097]}],action:"clear"},f:["Clear"]}]},t:7,e:"ui-display",a:{title:"Cart",button:0},f:[" ",{t:4,f:[{p:[43,7,1222],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:[{p:[44,9,1263],t:7,e:"div",a:{"class":"content"},f:["#",{t:2,r:"id",p:[44,31,1285]}]}," ",{p:[45,9,1307],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"object",p:[45,30,1328]}]}," ",{p:[46,9,1354],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"cost",p:[46,30,1375]}," Credits"]}," ",{p:[47,9,1407],t:7,e:"div",a:{"class":"content"},f:[{p:[48,11,1440],t:7,e:"ui-button",a:{icon:"minus",action:"remove",params:['{"id": "',{t:2,r:"id",p:[48,67,1496]},'"}']}}]}]}],n:52,r:"data.cart",p:[42,5,1195]},{t:4,n:51,f:[{p:[52,7,1566],t:7,e:"span",f:["Nothing in Cart"]}],r:"data.cart"}]}],n:50,x:{r:["data.requestonly"],s:"!_0"},p:[37,1,972]},{p:{button:[{t:4,f:[{p:[59,7,1735],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["data.requests.length"],s:'_0?null:"disabled"'},p:[59,38,1766]}],action:"denyall"},f:["Clear"]}],n:50,x:{r:["data.requestonly"],s:"!_0"},p:[58,5,1702]}]},t:7,e:"ui-display",a:{title:"Requests",button:0},f:[" ",{t:4,f:[{p:[63,5,1908],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:[{p:[64,7,1947],t:7,e:"div",a:{"class":"content"},f:["#",{t:2,r:"id",p:[64,29,1969]}]}," ",{p:[65,7,1989],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"object",p:[65,28,2010]}]}," ",{p:[66,7,2034],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"cost",p:[66,28,2055]}," Credits"]}," ",{p:[67,7,2085],t:7,e:"div",a:{"class":"content"},f:["By ",{t:2,r:"orderer",p:[67,31,2109]}]}," ",{p:[68,7,2134],t:7,e:"div",a:{"class":"content"},f:["Comment: ",{t:2,r:"reason",p:[68,37,2164]}]}," ",{t:4,f:[{p:[70,9,2223],t:7,e:"div",a:{"class":"content"},f:[{p:[71,11,2256],t:7,e:"ui-button",a:{icon:"check",action:"approve",params:['{"id": "',{t:2,r:"id",p:[71,68,2313]},'"}']}}," ",{p:[72,11,2336],t:7,e:"ui-button",a:{icon:"close",action:"deny",params:['{"id": "',{t:2,r:"id",p:[72,65,2390]},'"}']}}]}],n:50,x:{r:["data.requestonly"],s:"!_0"},p:[69,7,2188]}]}],n:52,r:"data.requests",p:[62,3,1879]},{t:4,n:51,f:[{p:[77,7,2473],t:7,e:"span",f:["No Requests"]}],r:"data.requests"}]}," ",{p:[80,1,2529],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"tabs",p:[80,16,2544]}]},f:[{t:4,f:[{p:[82,5,2587],t:7,e:"tab",a:{name:[{t:2,r:"name",p:[82,16,2598]}]},f:[{t:4,f:[{p:[84,9,2641],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[84,28,2660]}],candystripe:0,right:0},f:[{p:[85,11,2700],t:7,e:"ui-button",a:{action:"add",params:['{"id": "',{t:2,r:"id",p:[85,51,2740]},'"}']},f:[{t:2,r:"cost",p:[85,61,2750]}," Credits"]}]}],n:52,r:"packs",p:[83,7,2616]}]}],n:52,r:"data.supplies",p:[81,3,2558]}]}]},e.exports=a.extend(r.exports)},{205:205}],238:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={computed:{tabs:function(){return Object.keys(this.get("data.supplies"))}}}}(r),r.exports.template={v:3,t:[" ",{p:[12,1,174],t:7,e:"ui-notice",f:[{t:4,f:[{p:[14,5,220],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[15,7,263],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[15,24,280]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[15,75,331]}]}]}],n:50,r:"data.siliconUser",p:[13,3,189]},{t:4,n:51,f:[{p:[18,5,422],t:7,e:"span",f:["Swipe a QM-Level ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[18,39,456]}," this interface."]}],r:"data.siliconUser"}]}," ",{t:4,f:[{p:[23,3,568],t:7,e:"ui-display",a:{title:"Express Cargo Console"},f:[{p:[24,5,616],t:7,e:"ui-section",a:{label:"Credits"},f:[{p:[25,7,652],t:7,e:"span",f:[{t:2,x:{r:["adata.points"],s:"Math.floor(_0)"},p:[25,13,658]}]}]}," ",{p:[28,5,720],t:7,e:"ui-section",a:{label:"Notice"},f:[{p:[29,7,755],t:7,e:"span",f:[{t:2,r:"data.message",p:[29,13,761]}]}]}]}," ",{p:[32,3,824],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"tabs",p:[32,18,839]}]},f:[{t:4,f:[{p:[34,7,886],t:7,e:"tab",a:{name:[{t:2,r:"name",p:[34,18,897]}]},f:[{t:4,f:[{p:[36,11,944],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[36,30,963]}],candystripe:0,right:0},f:[{p:[37,13,1005],t:7,e:"ui-button",a:{action:"add",params:['{"id": "',{t:2,r:"id",p:[37,53,1045]},'"}']},f:[{t:2,r:"cost",p:[37,63,1055]}," Credits (Premium Pricing)"]}]}],n:52,r:"packs",p:[35,9,917]}]}],n:52,r:"data.supplies",p:[33,5,855]}]}],n:50,x:{r:["data.locked"],s:"!_0"},p:[22,1,543]}]},e.exports=a.extend(r.exports)},{205:205}],239:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Cellular Emporium",button:0},f:[{p:[2,3,49],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.can_readapt"],s:'_0?null:"disabled"'},p:[2,36,82]}],action:"readapt"},f:["Readapt"]}," ",{p:[4,3,169],t:7,e:"ui-section",a:{label:"Genetic Points Remaining",right:0},f:[{t:2,r:"data.genetic_points_remaining",p:[5,5,226]}]}]}," ",{p:[8,1,293],t:7,e:"ui-display",f:[{t:4,f:[{p:[10,3,335],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[10,22,354]}],candystripe:0,right:0},f:[{p:[11,5,388],t:7,e:"span",f:[{t:2,r:"desc",p:[11,11,394]}]}," ",{p:[12,5,415],t:7,e:"span",f:[{t:2,r:"helptext",p:[12,11,421]}]}," ",{p:[13,5,446],t:7,e:"span",f:["Cost: ",{t:2,r:"dna_cost",p:[13,17,458]}]}," ",{p:[14,5,483],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["owned","can_purchase"],s:'_0?"selected":_1?null:"disabled"'},p:[15,14,508]}],action:"evolve",params:['{"name": "',{t:2,r:"name",p:[17,25,615]},'"}']},f:[{t:2,x:{r:["owned"],s:'_0?"Evolved":"Evolve"'},p:[18,7,635]}]}]}],n:52,r:"data.abilities",p:[9,1,307]},{t:4,f:[{p:[23,3,738],t:7,e:"span",a:{"class":"warning"},f:["No abilities availible."]}],n:51,r:"data.abilities",p:[22,1,715]}]}]},e.exports=a.extend(r.exports)},{205:205}],240:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,3,31],t:7,e:"ui-section",a:{label:"Energy"},f:[{p:[3,5,64],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.maxEnergy",p:[3,26,85]}],value:[{t:2,r:"data.energy",p:[3,53,112]}]},f:[{t:2,x:{r:["adata.energy"],s:"Math.fixed(_0)"},p:[3,70,129]}," Units"]}]}]}," ",{p:[6,1,206],t:7,e:"ui-display",a:{title:"Saved Recipes",button:0},f:[{p:[7,3,251],t:7,e:"ui-section",f:[{p:[8,5,269],t:7,e:"ui-button",a:{icon:"plus",action:"add_recipe"},f:["Add Recipe"]}," ",{p:[9,2,337],t:7,e:"ui-button",a:{icon:"minus",action:"clear_recipes"},f:["Clear Recipes"]}," ",{t:4,f:[{p:[11,7,445],t:7,e:"ui-button",a:{grid:0,icon:"tint",action:"dispense_recipe",params:['{"recipe": "',{t:2,r:"contents",p:[11,80,518]},'"}']},f:[{t:2,r:"recipe_name",p:[11,96,534]}]}],n:52,r:"data.recipes",p:[10,5,415]}]}]}," ",{p:{button:[{t:4,f:[{p:[18,7,719],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.amount","."],s:'_0==_1?"selected":null'},p:[18,37,749]}],action:"amount",params:['{"target": ',{t:2,r:".",p:[18,114,826]},"}"]},f:[{t:2,r:".",p:[18,122,834]}]}],n:52,r:"data.beakerTransferAmounts",p:[17,5,675]}]},t:7,e:"ui-display",a:{title:"Dispense",button:0},f:[" ",{p:[21,3,886],t:7,e:"ui-section",f:[{t:4,f:[{p:[23,7,936],t:7,e:"ui-button",a:{grid:0,icon:"tint",action:"dispense",params:['{"reagent": "',{t:2,r:"id",p:[23,74,1003]},'"}']},f:[{t:2,r:"title",p:[23,84,1013]}]}],n:52,r:"data.chemicals",p:[22,5,904]}]}]}," ",{p:{button:[{t:4,f:[{p:[30,7,1190],t:7,e:"ui-button",a:{icon:"minus",action:"remove",params:['{"amount": ',{t:2,r:".",p:[30,66,1249]},"}"]},f:[{t:2,r:".",p:[30,74,1257]}]}],n:52,r:"data.beakerTransferAmounts",p:[29,5,1146]}," ",{p:[32,5,1295],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[32,36,1326]}],action:"eject"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[34,3,1423],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[36,7,1493],t:7,e:"span",f:[{t:2,x:{r:["adata.beakerCurrentVolume"],s:"Math.round(_0)"},p:[36,13,1499]},"/",{t:2,r:"data.beakerMaxVolume",p:[36,55,1541]}," Units"]}," ",{p:[37,7,1586],t:7,e:"br"}," ",{t:4,f:[{p:[39,9,1639],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[39,52,1682]}," units of ",{t:2,r:"name",p:[39,87,1717]}]},{p:[39,102,1732],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[38,7,1599]},{t:4,n:51,f:[{p:[41,9,1763],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[35,5,1458]},{t:4,n:51,f:[{p:[44,7,1839],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=a.extend(r.exports)},{205:205}],241:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Thermostat"},f:[{p:[2,3,35],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,67],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isActive"],s:'_0?"power-off":"close"'},p:[3,22,84]}],style:[{t:2,x:{r:["data.isActive"],s:'_0?"selected":null'},p:[4,10,137]}],state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[5,10,186]}],action:"power"},f:[{t:2,x:{r:["data.isActive"],s:'_0?"On":"Off"'},p:[6,18,249]}]}]}," ",{p:[8,3,314],t:7,e:"ui-section",a:{label:"Target"},f:[{p:[9,4,346],t:7,e:"ui-button",a:{icon:"pencil",action:"temperature",params:'{"target": "input"}'},f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[9,79,421]}," K"]}]}]}," ",{p:{button:[{p:[14,5,564],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[14,36,595]}],action:"eject"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[16,3,692],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[18,7,762],t:7,e:"span",f:["Temperature: ",{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[18,26,781]}," K"]}," ",{p:[19,7,831],t:7,e:"br"}," ",{t:4,f:[{p:[21,9,885],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[21,52,928]}," units of ",{t:2,r:"name",p:[21,87,963]}]},{p:[21,102,978],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[20,7,845]},{t:4,n:51,f:[{p:[23,9,1009],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[17,5,727]},{t:4,n:51,f:[{p:[26,7,1085],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=a.extend(r.exports)},{205:205}],242:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,2,32],t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[{p:[3,3,70],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?"Eject":"close"'},p:[3,20,87]}],style:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?"selected":null'},p:[4,11,143]}],state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[5,11,199]}],action:"eject"},f:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?"Eject and Clear Buffer":"No beaker"'},p:[7,5,268]}]}," ",{p:[10,3,357],t:7,e:"ui-section",f:[{t:4,f:[{t:4,f:[{p:[13,6,443],t:7,e:"ui-section",a:{label:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[13,25,462]}," units of ",{t:2,r:"name",p:[13,60,497]}],nowrap:0},f:[{p:[14,7,522],t:7,e:"div",a:{"class":"content",style:"float:right"},f:[{p:[15,8,572],t:7,e:"ui-button",a:{action:"transferToBuffer",params:['{"id": "',{t:2,r:"id",p:[15,61,625]},'", "amount": 1}']},f:["1"]}," ",{p:[16,8,670],t:7,e:"ui-button",a:{action:"transferToBuffer",params:['{"id": "',{t:2,r:"id",p:[16,61,723]},'", "amount": 5}']},f:["5"]}," ",{p:[17,8,768],t:7,e:"ui-button",a:{action:"transferToBuffer",params:['{"id": "',{t:2,r:"id",p:[17,61,821]},'", "amount": 10}']},f:["10"]}," ",{p:[18,8,868],t:7,e:"ui-button",a:{action:"transferToBuffer",params:['{"id": "',{t:2,r:"id",p:[18,61,921]},'", "amount": 1000}']},f:["All"]}," ",{p:[19,8,971],t:7,e:"ui-button",a:{action:"transferToBuffer",params:['{"id": "',{t:2,r:"id",p:[19,61,1024]},'", "amount": -1}']},f:["Custom"]}," ",{p:[20,8,1075],t:7,e:"ui-button",a:{action:"analyze",params:['{"id": "',{t:2,r:"id",p:[20,52,1119]},'"}']},f:["Analyze"]}]}]}],n:52,r:"data.beakerContents",p:[12,5,407]},{t:4,n:51,f:[{p:[24,5,1201],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"data.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[11,4,374]},{t:4,n:51,f:[{p:[27,5,1272],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}," ",{p:[32,2,1360],t:7,e:"ui-display",a:{title:"Buffer"},f:[{p:[33,3,1391],t:7,e:"ui-button",a:{action:"toggleMode",state:[{t:2,x:{r:["data.mode"],s:'_0?null:"selected"'},p:[33,41,1429]}]},f:["Destroy"]}," ",{p:[34,3,1487],t:7,e:"ui-button",a:{action:"toggleMode",state:[{t:2,x:{r:["data.mode"],s:'_0?"selected":null'},p:[34,41,1525]}]},f:["Transfer to Beaker"]}," ",{p:[35,3,1594],t:7,e:"ui-section",f:[{t:4,f:[{p:[37,5,1646],t:7,e:"ui-section",a:{label:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[37,24,1665]}," units of ",{t:2,r:"name",p:[37,59,1700]}],nowrap:0},f:[{p:[38,6,1724],t:7,e:"div",a:{"class":"content",style:"float:right"},f:[{p:[39,7,1773],t:7,e:"ui-button",a:{action:"transferFromBuffer",params:['{"id": "',{t:2,r:"id",p:[39,62,1828]},'", "amount": 1}']},f:["1"]}," ",{p:[40,7,1872],t:7,e:"ui-button",a:{action:"transferFromBuffer",params:['{"id": "',{t:2,r:"id",p:[40,62,1927]},'", "amount": 5}']},f:["5"]}," ",{p:[41,7,1971],t:7,e:"ui-button",a:{action:"transferFromBuffer",params:['{"id": "',{t:2,r:"id",p:[41,62,2026]},'", "amount": 10}']},f:["10"]}," ",{p:[42,7,2072],t:7,e:"ui-button",a:{action:"transferFromBuffer",params:['{"id": "',{t:2,r:"id",p:[42,62,2127]},'", "amount": 1000}']},f:["All"]}," ",{p:[43,7,2176],t:7,e:"ui-button",a:{action:"transferFromBuffer",params:['{"id": "',{t:2,r:"id",p:[43,62,2231]},'", "amount": -1}']},f:["Custom"]}," ",{p:[44,7,2281],t:7,e:"ui-button",a:{action:"analyze",params:['{"id": "',{t:2,r:"id",p:[44,51,2325]},'"}']},f:["Analyze"]}]}]}],n:52,r:"data.bufferContents",p:[36,4,1611]}]}]}," ",{t:4,f:[{p:[52,3,2461],t:7,e:"ui-display",a:{title:"Pills, Bottles and Patches"},f:[{t:4,f:[{p:[54,5,2551],t:7,e:"ui-button",a:{action:"ejectp",state:[{t:2,x:{r:["data.isPillBottleLoaded"],s:'_0?null:"disabled"'},p:[54,39,2585]}]},f:[{t:2,x:{r:["data.isPillBottleLoaded"],s:'_0?"Eject":"No Pill bottle loaded"'},p:[54,88,2634]}]}," ",{p:[55,5,2715],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.pillBotContent",p:[55,27,2737]},"/",{t:2,r:"data.pillBotMaxContent",p:[55,51,2761]}]}],n:50,r:"data.isPillBottleLoaded",p:[53,4,2514]},{t:4,n:51,f:[{p:[57,5,2813],t:7,e:"span",a:{"class":"average"},f:["No Pillbottle"]}],r:"data.isPillBottleLoaded"}," ",{p:[60,4,2877],t:7,e:"br"}," ",{p:[61,4,2887],t:7,e:"br"}," ",{p:[62,4,2897],t:7,e:"ui-button",a:{action:"createPill",params:'{"many": 0}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[62,63,2956]}]},f:["Create Pill (max 50µ)"]}," ",{p:[63,4,3040],t:7,e:"br"}," ",{p:[64,4,3050],t:7,e:"ui-button",a:{action:"createPill",params:'{"many": 1}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[64,63,3109]}]},f:["Create Multiple Pills"]}," ",{p:[65,4,3193],t:7,e:"br"}," ",{p:[66,4,3203],t:7,e:"br"}," ",{p:[67,4,3213],t:7,e:"ui-button",a:{action:"createPatch",params:'{"many": 0}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[67,64,3273]}]},f:["Create Patch (max 40µ)"]}," ",{p:[68,4,3358],t:7,e:"br"}," ",{p:[69,4,3368],t:7,e:"ui-button",a:{action:"createPatch",params:'{"many": 1}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[69,64,3428]}]},f:["Create Multiple Patches"]}," ",{p:[70,4,3514],t:7,e:"br"}," ",{p:[71,4,3524],t:7,e:"br"}," ",{p:[72,4,3534],t:7,e:"ui-button",a:{action:"createBottle",params:'{"many": 0}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[72,65,3595] -}]},f:["Create Bottle (max 30µ)"]}," ",{p:[73,4,3681],t:7,e:"br"}," ",{p:[74,4,3691],t:7,e:"ui-button",a:{action:"createBottle",params:'{"many": 1}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[74,65,3752]}]},f:["Dispense Buffer to Bottles"]}]}],n:50,x:{r:["data.condi"],s:"!_0"},p:[51,2,2438]},{t:4,n:51,f:[{p:[79,3,3874],t:7,e:"ui-display",a:{title:"Condiments bottles and packs"},f:[{p:[80,4,3929],t:7,e:"ui-button",a:{action:"createPill",params:'{"many": 0}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[80,63,3988]}]},f:["Create Pack (max 10µ)"]}," ",{p:[81,4,4072],t:7,e:"br"}," ",{p:[82,4,4082],t:7,e:"br"}," ",{p:[83,4,4092],t:7,e:"ui-button",a:{action:"createBottle",params:'{"many": 0}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[83,65,4153]}]},f:["Create Bottle (max 50µ)"]}]}],x:{r:["data.condi"],s:"!_0"}}],n:50,x:{r:["data.screen"],s:'_0=="home"'},p:[1,1,0]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.screen"],s:'_0=="analyze"'},f:[{p:[87,2,4301],t:7,e:"ui-display",a:{title:[{t:2,r:"data.analyzeVars.name",p:[87,20,4319]}]},f:[{p:[88,3,4350],t:7,e:"span",a:{"class":"highlight"},f:["Description:"]}," ",{p:[89,3,4398],t:7,e:"span",a:{"class":"content",style:"float:center"},f:[{t:2,r:"data.analyzeVars.description",p:[89,46,4441]}]}," ",{p:[90,3,4484],t:7,e:"br"}," ",{p:[91,3,4493],t:7,e:"span",a:{"class":"highlight"},f:["Color:"]}," ",{p:[92,3,4535],t:7,e:"span",a:{style:["color: ",{t:2,r:"data.analyzeVars.color",p:[92,23,4555]},"; background-color: ",{t:2,r:"data.analyzeVars.color",p:[92,69,4601]}]},f:[{t:2,r:"data.analyzeVars.color",p:[92,97,4629]}]}," ",{p:[93,3,4666],t:7,e:"br"}," ",{p:[94,3,4675],t:7,e:"span",a:{"class":"highlight"},f:["State:"]}," ",{p:[95,3,4717],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.analyzeVars.state",p:[95,25,4739]}]}," ",{p:[96,3,4776],t:7,e:"br"}," ",{p:[97,3,4785],t:7,e:"span",a:{"class":"highlight"},f:["Metabolization Rate:"]}," ",{p:[98,3,4841],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.analyzeVars.metaRate",p:[98,25,4863]},"µ/minute"]}," ",{p:[99,3,4911],t:7,e:"br"}," ",{p:[100,3,4920],t:7,e:"span",a:{"class":"highlight"},f:["Overdose Threshold:"]}," ",{p:[101,3,4975],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.analyzeVars.overD",p:[101,25,4997]}]}," ",{p:[102,3,5034],t:7,e:"br"}," ",{p:[103,3,5043],t:7,e:"span",a:{"class":"highlight"},f:["Addiction Threshold:"]}," ",{p:[104,3,5099],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.analyzeVars.addicD",p:[104,25,5121]}]}," ",{p:[105,3,5159],t:7,e:"br"}," ",{p:[106,3,5168],t:7,e:"br"}," ",{p:[107,3,5177],t:7,e:"ui-button",a:{action:"goScreen",params:'{"screen": "home"}'},f:["Back"]}]}]}],x:{r:["data.screen"],s:'_0=="home"'}}]},e.exports=a.extend(r.exports)},{205:205}],243:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-button",a:{action:"toggle"},f:[{t:2,x:{r:["data.recollection"],s:'_0?"Recital":"Recollection"'},p:[2,30,43]}]}]}," ",{t:4,f:[{p:[5,3,149],t:7,e:"ui-display",f:[{t:3,r:"data.rec_text",p:[6,3,165]}," ",{t:4,f:[{p:[8,4,231],t:7,e:"br"},{p:[8,8,235],t:7,e:"ui-button",a:{action:"rec_category",params:['{"category": "',{t:2,r:"name",p:[8,63,290]},'"}']},f:[{t:3,r:"name",p:[8,75,302]}," - ",{t:3,r:"desc",p:[8,88,315]}]}],n:52,r:"data.recollection_categories",p:[7,3,188]}," ",{t:3,r:"data.rec_section",p:[10,3,354]}," ",{t:3,r:"data.rec_binds",p:[11,3,380]}]}],n:50,r:"data.recollection",p:[4,1,120]},{t:4,n:51,f:[{p:[14,2,431],t:7,e:"ui-display",a:{title:"Power",button:0},f:[{p:[15,4,469],t:7,e:"ui-section",f:[{t:3,r:"data.power",p:[16,6,488]}]}]}," ",{p:[19,2,541],t:7,e:"ui-display",f:[{p:[20,3,557],t:7,e:"ui-section",f:[{p:[21,4,574],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.selected"],s:'_0=="Driver"?"selected":null'},p:[21,22,592]}],action:"select",params:'{"category": "Driver"}'},f:["Driver"]}," ",{p:[22,4,715],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.selected"],s:'_0=="Script"?"selected":null'},p:[22,22,733]}],action:"select",params:'{"category": "Script"}'},f:["Scripts"]}," ",{p:[23,4,857],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.selected"],s:'_0=="Application"?"selected":null'},p:[23,22,875]}],action:"select",params:'{"category": "Application"}'},f:["Applications"]}," ",{p:[24,4,1014],t:7,e:"br"},{t:3,r:"data.tier_info",p:[24,8,1018]}]}," ",{p:[26,3,1059],t:7,e:"ui-section",f:[{t:3,r:"data.scripturecolors",p:[27,4,1076]}]},{p:[28,16,1119],t:7,e:"hr"}," ",{p:[29,3,1127],t:7,e:"ui-section",f:[{t:4,f:[{p:[31,4,1172],t:7,e:"div",f:[{p:[31,9,1177],t:7,e:"ui-button",a:{tooltip:[{t:3,r:"tip",p:[31,29,1197]}],"tooltip-side":"right",action:"recite",params:['{"category": "',{t:2,r:"type",p:[31,99,1267]},'"}']},f:["Recite ",{t:3,r:"required",p:[31,118,1286]}]}," ",{t:4,f:[{t:4,f:[{p:[34,6,1362],t:7,e:"ui-button",a:{action:"bind",params:['{"category": "',{t:2,r:"type",p:[34,53,1409]},'"}']},f:["Unbind ",{t:3,r:"bound",p:[34,72,1428]}]}],n:50,r:"bound",p:[33,5,1342]},{t:4,n:51,f:[{p:[36,6,1472],t:7,e:"ui-button",a:{action:"bind",params:['{"category": "',{t:2,r:"type",p:[36,53,1519]},'"}']},f:["Quickbind"]}],r:"bound"}],n:50,r:"quickbind",p:[32,6,1319]}," ",{t:3,r:"name",p:[39,6,1586]}," ",{t:3,r:"descname",p:[39,17,1597]}," ",{t:3,r:"invokers",p:[39,32,1612]}]}],n:52,r:"data.scripture",p:[30,3,1143]}]}]}],r:"data.recollection"}]},e.exports=a.extend(r.exports)},{205:205}],244:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Codex Gigas"},f:[{p:[2,2,35],t:7,e:"ui-section",f:[{t:2,r:"data.name",p:[3,3,51]}]}," ",{p:[5,5,86],t:7,e:"ui-section",a:{label:"Prefix"},f:[{p:[6,3,117],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[6,22,136]}],action:"Dark "},f:["Dark"]}," ",{p:[7,3,221],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[7,22,240]}],action:"Hellish "},f:["Hellish"]}," ",{p:[8,3,331],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[8,22,350]}],action:"Fallen "},f:["Fallen"]}," ",{p:[9,3,439],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[9,22,458]}],action:"Fiery "},f:["Fiery"]}," ",{p:[10,3,545],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[10,22,564]}],action:"Sinful "},f:["Sinful"]}," ",{p:[11,3,653],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[11,22,672]}],action:"Blood "},f:["Blood"]}," ",{p:[12,3,759],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[12,22,778]}],action:"Fluffy "},f:["Fluffy"]}]}," ",{p:[14,5,888],t:7,e:"ui-section",a:{label:"Title"},f:[{p:[15,3,918],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[15,22,937]}],action:"Lord "},f:["Lord"]}," ",{p:[16,3,1022],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[16,22,1041]}],action:"Prelate "},f:["Prelate"]}," ",{p:[17,3,1132],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[17,22,1151]}],action:"Count "},f:["Count"]}," ",{p:[18,3,1238],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[18,22,1257]}],action:"Viscount "},f:["Viscount"]}," ",{p:[19,3,1350],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[19,22,1369]}],action:"Vizier "},f:["Vizier"]}," ",{p:[20,3,1458],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[20,22,1477]}],action:"Elder "},f:["Elder"]}," ",{p:[21,3,1564],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[21,22,1583]}],action:"Adept "},f:["Adept"]}]}," ",{p:[23,5,1691],t:7,e:"ui-section",a:{label:"Name"},f:[{p:[24,3,1720],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[24,22,1739]}],action:"hal"},f:["hal"]}," ",{p:[25,3,1821],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[25,22,1840]}],action:"ve"},f:["ve"]}," ",{p:[26,3,1920],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[26,22,1939]}],action:"odr"},f:["odr"]}," ",{p:[27,3,2021],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[27,22,2040]}],action:"neit"},f:["neit"]}," ",{p:[28,3,2124],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[28,22,2143]}],action:"ci"},f:["ci"]}," ",{p:[29,3,2223],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[29,22,2242]}],action:"quon"},f:["quon"]}," ",{p:[30,3,2326],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[30,22,2345]}],action:"mya"},f:["mya"]}," ",{p:[31,3,2427],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[31,22,2446]}],action:"folth"},f:["folth"]}," ",{p:[32,3,2532],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[32,22,2551]}],action:"wren"},f:["wren"]}," ",{p:[33,3,2635],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[33,22,2654]}],action:"geyr"},f:["geyr"]}," ",{p:[34,3,2738],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[34,22,2757]}],action:"hil"},f:["hil"]}," ",{p:[35,3,2839],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[35,22,2858]}],action:"niet"},f:["niet"]}," ",{p:[36,3,2942],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[36,22,2961]}],action:"twou"},f:["twou"]}," ",{p:[37,3,3045],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[37,22,3064]}],action:"phi"},f:["phi"]}," ",{p:[38,3,3146],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[38,22,3165]}],action:"coa"},f:["coa"]}]}," ",{p:[40,5,3268],t:7,e:"ui-section",a:{label:"suffix"},f:[{p:[41,3,3299],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==4?null:"disabled"'},p:[41,22,3318]}],action:" the Red"},f:["the Red"]}," ",{p:[42,3,3409],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==4?null:"disabled"'},p:[42,22,3428]}],action:" the Soulless"},f:["the Soulless"]}," ",{p:[43,3,3529],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==4?null:"disabled"'},p:[43,22,3548]}],action:" the Master"},f:["the Master"]}," ",{p:[44,3,3645],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==4?null:"disabled"'},p:[44,22,3664]}],action:", the Lord of all things"},f:["the Lord of all things"]}," ",{p:[45,3,3786],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==4?null:"disabled"'},p:[45,22,3805]}],action:", Jr."},f:["jr"]}]}," ",{p:[47,5,3909],t:7,e:"ui-section",a:{label:"submit"},f:[{p:[48,3,3941],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0>=4?null:"disabled"'},p:[48,21,3959]}],action:"search"},f:["search"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],245:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[2,1,2],t:7,e:"ui-button",a:{icon:"circle",action:"clean_order"},f:["Clear Order"]},{p:[2,70,71],t:7,e:"br"},{p:[2,74,75],t:7,e:"br"}," ",{p:[3,1,81],t:7,e:"i",f:["Your new computer device you always dreamed of is just four steps away..."]},{p:[3,81,161],t:7,e:"hr"}," ",{t:4,f:[" ",{p:[5,1,223],t:7,e:"div",a:{"class":"item"},f:[{p:[6,2,244],t:7,e:"h2",f:["Step 1: Select your device type"]}," ",{p:[7,2,287],t:7,e:"ui-button",a:{icon:"calc",action:"pick_device",params:'{"pick" : "1"}'},f:["Laptop"]}," ",{p:[8,2,377],t:7,e:"ui-button",a:{icon:"calc",action:"pick_device",params:'{"pick" : "2"}'},f:["LTablet"]}]}],n:50,x:{r:["data.state"],s:"_0==0"},p:[4,1,167]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.state"],s:"_0==1"},f:[{p:[11,1,502],t:7,e:"div",a:{"class":"item"},f:[{p:[12,2,523],t:7,e:"h2",f:["Step 2: Personalise your device"]}," ",{p:[13,2,566],t:7,e:"table",f:[{p:[14,3,577],t:7,e:"tr",f:[{p:[15,4,586],t:7,e:"td",f:[{p:[15,8,590],t:7,e:"b",f:["Current Price:"]}]},{p:[16,4,616],t:7,e:"td",f:[{t:2,r:"data.totalprice",p:[16,8,620]},"C"]}]}," ",{p:[18,3,653],t:7,e:"tr",f:[{p:[19,4,663],t:7,e:"td",f:[{p:[19,8,667],t:7,e:"b",f:["Battery:"]}]},{p:[20,4,687],t:7,e:"td",f:[{p:[20,8,691],t:7,e:"ui-button",a:{action:"hw_battery",params:'{"battery" : "1"}',state:[{t:2,x:{r:["data.hw_battery"],s:'_0==1?"selected":null'},p:[20,73,756]}]},f:["Standard"]}]},{p:[21,4,827],t:7,e:"td",f:[{p:[21,8,831],t:7,e:"ui-button",a:{action:"hw_battery",params:'{"battery" : "2"}',state:[{t:2,x:{r:["data.hw_battery"],s:'_0==2?"selected":null'},p:[21,73,896]}]},f:["Upgraded"]}]},{p:[22,4,967],t:7,e:"td",f:[{p:[22,8,971],t:7,e:"ui-button",a:{action:"hw_battery",params:'{"battery" : "3"}',state:[{t:2,x:{r:["data.hw_battery"],s:'_0==3?"selected":null'},p:[22,73,1036]}]},f:["Advanced"]}]}]}," ",{p:[24,3,1115],t:7,e:"tr",f:[{p:[25,4,1124],t:7,e:"td",f:[{p:[25,8,1128],t:7,e:"b",f:["Hard Drive:"]}]},{p:[26,4,1151],t:7,e:"td",f:[{p:[26,8,1155],t:7,e:"ui-button",a:{action:"hw_disk",params:'{"disk" : "1"}',state:[{t:2,x:{r:["data.hw_disk"],s:'_0==1?"selected":null'},p:[26,67,1214]}]},f:["Standard"]}]},{p:[27,4,1282],t:7,e:"td",f:[{p:[27,8,1286],t:7,e:"ui-button",a:{action:"hw_disk",params:'{"disk" : "2"}',state:[{t:2,x:{r:["data.hw_disk"],s:'_0==2?"selected":null'},p:[27,67,1345]}]},f:["Upgraded"]}]},{p:[28,4,1413],t:7,e:"td",f:[{p:[28,8,1417],t:7,e:"ui-button",a:{action:"hw_disk",params:'{"disk" : "3"}',state:[{t:2,x:{r:["data.hw_disk"],s:'_0==3?"selected":null'},p:[28,67,1476]}]},f:["Advanced"]}]}]}," ",{p:[30,3,1552],t:7,e:"tr",f:[{p:[31,4,1561],t:7,e:"td",f:[{p:[31,8,1565],t:7,e:"b",f:["Network Card:"]}]},{p:[32,4,1590],t:7,e:"td",f:[{p:[32,8,1594],t:7,e:"ui-button",a:{action:"hw_netcard",params:'{"netcard" : "0"}',state:[{t:2,x:{r:["data.hw_netcard"],s:'_0==0?"selected":null'},p:[32,73,1659]}]},f:["None"]}]},{p:[33,4,1726],t:7,e:"td",f:[{p:[33,8,1730],t:7,e:"ui-button",a:{action:"hw_netcard",params:'{"netcard" : "1"}',state:[{t:2,x:{r:["data.hw_netcard"],s:'_0==1?"selected":null'},p:[33,73,1795]}]},f:["Standard"]}]},{p:[34,4,1866],t:7,e:"td",f:[{p:[34,8,1870],t:7,e:"ui-button",a:{action:"hw_netcard",params:'{"netcard" : "2"}',state:[{t:2,x:{r:["data.hw_netcard"],s:'_0==2?"selected":null'},p:[34,73,1935]}]},f:["Advanced"]}]}]}," ",{p:[36,3,2014],t:7,e:"tr",f:[{p:[37,4,2023],t:7,e:"td",f:[{p:[37,8,2027],t:7,e:"b",f:["Nano Printer:"]}]},{p:[38,4,2052],t:7,e:"td",f:[{p:[38,8,2056],t:7,e:"ui-button",a:{action:"hw_nanoprint",params:'{"print" : "0"}',state:[{t:2,x:{r:["data.hw_nanoprint"],s:'_0==0?"selected":null'},p:[38,73,2121]}]},f:["None"]}]},{p:[39,4,2190],t:7,e:"td",f:[{p:[39,8,2194],t:7,e:"ui-button",a:{action:"hw_nanoprint",params:'{"print" : "1"}',state:[{t:2,x:{r:["data.hw_nanoprint"],s:'_0==1?"selected":null'},p:[39,73,2259]}]},f:["Standard"]}]}]}," ",{p:[41,3,2340],t:7,e:"tr",f:[{p:[42,4,2349],t:7,e:"td",f:[{p:[42,8,2353],t:7,e:"b",f:["Card Reader:"]}]},{p:[43,4,2377],t:7,e:"td",f:[{p:[43,8,2381],t:7,e:"ui-button",a:{action:"hw_card",params:'{"card" : "0"}',state:[{t:2,x:{r:["data.hw_card"],s:'_0==0?"selected":null'},p:[43,67,2440]}]},f:["None"]}]},{p:[44,4,2504],t:7,e:"td",f:[{p:[44,8,2508],t:7,e:"ui-button",a:{action:"hw_card",params:'{"card" : "1"}',state:[{t:2,x:{r:["data.hw_card"],s:'_0==1?"selected":null'},p:[44,67,2567]}]},f:["Standard"]}]}]}]}," ",{t:4,f:[" ",{p:[49,4,2706],t:7,e:"table",f:[{p:[50,5,2719],t:7,e:"tr",f:[{p:[51,6,2730],t:7,e:"td",f:[{p:[51,10,2734],t:7,e:"b",f:["Processor Unit:"]}]},{p:[52,6,2763],t:7,e:"td",f:[{p:[52,10,2767],t:7,e:"ui-button",a:{action:"hw_cpu",params:'{"cpu" : "1"}',state:[{t:2,x:{r:["data.hw_cpu"],s:'_0==1?"selected":null'},p:[52,67,2824]}]},f:["Standard"]}]},{p:[53,6,2893],t:7,e:"td",f:[{p:[53,10,2897],t:7,e:"ui-button",a:{action:"hw_cpu",params:'{"cpu" : "2"}',state:[{t:2,x:{r:["data.hw_cpu"],s:'_0==2?"selected":null'},p:[53,67,2954]}]},f:["Advanced"]}]}]}," ",{p:[55,5,3033],t:7,e:"tr",f:[{p:[56,6,3044],t:7,e:"td",f:[{p:[56,10,3048],t:7,e:"b",f:["Tesla Relay:"]}]},{p:[57,6,3074],t:7,e:"td",f:[{p:[57,10,3078],t:7,e:"ui-button",a:{action:"hw_tesla",params:'{"tesla" : "0"}',state:[{t:2,x:{r:["data.hw_tesla"],s:'_0==0?"selected":null'},p:[57,71,3139]}]},f:["None"]}]},{p:[58,6,3206],t:7,e:"td",f:[{p:[58,10,3210],t:7,e:"ui-button",a:{action:"hw_tesla",params:'{"tesla" : "1"}',state:[{t:2,x:{r:["data.hw_tesla"],s:'_0==1?"selected":null'},p:[58,71,3271]}]},f:["Standard"]}]}]}]}],n:50,x:{r:["data.devtype"],s:"_0!=2"},p:[48,3,2659]}," ",{p:[62,3,3374],t:7,e:"table",f:[{p:[63,4,3386],t:7,e:"tr",f:[{p:[64,5,3396],t:7,e:"td",f:[{p:[64,9,3400],t:7,e:"b",f:["Confirm Order:"]}]},{p:[65,5,3427],t:7,e:"td",f:[{p:[65,9,3431],t:7,e:"ui-button",a:{action:"confirm_order"},f:["CONFIRM"]}]}]}]}," ",{p:[69,2,3512],t:7,e:"hr"}," ",{p:[70,2,3519],t:7,e:"b",f:["Battery"]}," allows your device to operate without external utility power source. Advanced batteries increase battery life.",{p:[70,127,3644],t:7,e:"br"}," ",{p:[71,2,3651],t:7,e:"b",f:["Hard Drive"]}," stores file on your device. Advanced drives can store more files, but use more power, shortening battery life.",{p:[71,130,3779],t:7,e:"br"}," ",{p:[72,2,3786],t:7,e:"b",f:["Network Card"]}," allows your device to wirelessly connect to stationwide NTNet network. Basic cards are limited to on-station use, while advanced cards can operate anywhere near the station, which includes the asteroid outposts.",{p:[72,233,4017],t:7,e:"br"}," ",{p:[73,2,4024],t:7,e:"b",f:["Processor Unit"]}," is critical for your device's functionality. It allows you to run programs from your hard drive. Advanced CPUs use more power, but allow you to run more programs on background at once.",{p:[73,208,4230],t:7,e:"br"}," ",{p:[74,2,4237],t:7,e:"b",f:["Tesla Relay"]}," is an advanced wireless power relay that allows your device to connect to nearby area power controller to provide alternative power source. This component is currently unavailable on tablet computers due to size restrictions.",{p:[74,246,4481],t:7,e:"br"}," ",{p:[75,2,4488],t:7,e:"b",f:["Nano Printer"]}," is device that allows for various paperwork manipulations, such as, scanning of documents or printing new ones. This device was certified EcoFriendlyPlus and is capable of recycling existing paper for printing purposes.",{p:[75,241,4727],t:7,e:"br"}," ",{p:[76,2,4734],t:7,e:"b",f:["Card Reader"]}," adds a slot that allows you to manipulate RFID cards. Please note that this is not necessary to allow the device to read your identification, it is just necessary to manipulate other cards."]}]},{t:4,n:50,x:{r:["data.state"],s:"(!(_0==1))&&(_0==2)"},f:[" ",{p:[79,2,4981],t:7,e:"h2",f:["Step 3: Payment"]}," ",{p:[80,2,5008],t:7,e:"b",f:["Your device is now ready for fabrication.."]},{p:[80,51,5057],t:7,e:"br"}," ",{p:[81,2,5064],t:7,e:"i",f:["Please ensure the required amount of credits are in the machine, then press purchase."]},{p:[81,94,5156],t:7,e:"br"}," ",{p:[82,2,5163],t:7,e:"i",f:["Current credits: ",{p:[82,22,5183],t:7,e:"b",f:[{t:2,r:"data.credits",p:[82,25,5186]},"C"]}]},{p:[82,50,5211],t:7,e:"br"}," ",{p:[83,2,5218],t:7,e:"i",f:["Total price: ",{p:[83,18,5234],t:7,e:"b",f:[{t:2,r:"data.totalprice",p:[83,21,5237]},"C"]}]},{p:[83,49,5265],t:7,e:"br"},{p:[83,53,5269],t:7,e:"br"}," ",{p:[84,2,5276],t:7,e:"ui-button",a:{action:"purchase",state:[{t:2,x:{r:["data.credits","data.totalprice"],s:'_0>=_1?null:"disabled"'},p:[84,38,5312]}]},f:["PURCHASE"]}]},{t:4,n:50,x:{r:["data.state"],s:"(!(_0==1))&&((!(_0==2))&&(_0==3))"},f:[" ",{p:[87,2,5423],t:7,e:"h2",f:["Step 4: Thank you for your purchase"]},{p:[87,46,5467],t:7,e:"br"}," ",{p:[88,2,5474],t:7,e:"b",f:["Should you experience any issues with your new device, contact your local network admin for assistance."]}]}],x:{r:["data.state"],s:"_0==0"}}]},e.exports=a.extend(r.exports)},{205:205}],246:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,1,22],t:7,e:"ui-display",f:[{p:[3,2,37],t:7,e:"ui-section",a:{label:"Cap"},f:[{p:[4,3,65],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.is_capped"],s:'_0?"power-off":"close"'},p:[4,20,82]}],style:[{t:2,x:{r:["data.is_capped"],s:'_0?null:"selected"'},p:[4,71,133]}],action:"toggle_cap"},f:[{t:2,x:{r:["data.is_capped"],s:'_0?"On":"Off"'},p:[6,4,202]}]}]}]}],n:50,r:"data.has_cap",p:[1,1,0]},{p:[10,1,288],t:7,e:"ui-display",f:[{t:4,f:[{p:[14,2,419],t:7,e:"ui-section",f:[{p:[15,3,435],t:7,e:"ui-button",a:{action:"select_colour"},f:["Select New Colour"]}]}],n:50,r:"data.can_change_colour",p:[13,1,386]}]}," ",{p:[19,1,540],t:7,e:"ui-display",a:{title:"Stencil"},f:[{t:4,f:[{p:[21,2,599],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[21,21,618]}]},f:[{t:4,f:[{p:[23,7,655],t:7,e:"ui-button",a:{action:"select_stencil",params:['{"item":"',{t:2,r:"item",p:[23,59,707]},'"}'],style:[{t:2,x:{r:["item","data.selected_stencil"],s:'_0==_1?"selected":null'},p:[24,12,731]}]},f:[{t:2,r:"item",p:[25,4,791]}]}],n:52,r:"items",p:[22,3,632]}]}],n:52,r:"data.drawables",p:[20,3,572]}]}," ",{p:[31,1,874],t:7,e:"ui-display",a:{title:"Text Mode"},f:[{p:[32,2,907],t:7,e:"ui-section",a:{label:"Current Buffer"},f:[{t:2,r:"text_buffer",p:[32,37,942]}]}," ",{p:[34,2,976],t:7,e:"ui-section",f:[{p:[34,14,988],t:7,e:"ui-button",a:{action:"enter_text"},f:["New Text"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],247:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[2,3,33],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[3,3,66],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[3,9,72]}]}]}," ",{t:4,f:[{p:[6,5,189],t:7,e:"ui-section",a:{label:"State"},f:[{p:[7,7,223],t:7,e:"span",a:{"class":[{t:2,r:"data.occupant.statstate",p:[7,20,236]}]},f:[{t:2,r:"data.occupant.stat",p:[7,49,265]}]}]}," ",{p:[9,4,317],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[10,6,356],t:7,e:"span",a:{"class":[{t:2,r:"data.occupant.temperaturestatus",p:[10,19,369]}]},f:[{t:2,r:"data.occupant.bodyTemperature",p:[10,56,406]}," K"]}]}," ",{p:[12,5,472],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[13,7,507],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.occupant.minHealth",p:[13,20,520]}],max:[{t:2,r:"data.occupant.maxHealth",p:[13,54,554]}],value:[{t:2,r:"data.occupant.health",p:[13,90,590]}],state:[{t:2,x:{r:["data.occupant.health"],s:'_0>=0?"good":"average"'},p:[14,16,632]}]},f:[{t:2,r:"data.occupant.health",p:[14,68,684]}]}]}," ",{t:4,f:[{p:[17,7,908],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[17,26,927]}]},f:[{p:[18,9,948],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.maxHealth",p:[18,30,969]}],value:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[18,66,1005]}],state:"bad"},f:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[18,103,1042]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}]'},p:[16,5,742]}],n:50,r:"data.hasOccupant",p:[5,3,159]}]}," ",{p:[23,1,1138],t:7,e:"ui-display",a:{title:"Cell"},f:[{p:[24,3,1167],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[25,5,1199],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOperating"],s:'_0?"power-off":"close"'},p:[25,22,1216]}],style:[{t:2,x:{r:["data.isOperating"],s:'_0?"selected":null'},p:[26,14,1276]}],state:[{t:2,x:{r:["data.isOpen"],s:'_0?"disabled":null'},p:[27,14,1332]}],action:"power"},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[28,22,1391]}]}]}," ",{p:[30,3,1459],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[31,3,1495],t:7,e:"span",a:{"class":[{t:2,r:"data.temperaturestatus",p:[31,16,1508]}]},f:[{t:2,r:"data.cellTemperature",p:[31,44,1536]}," K"]}]}," ",{p:[33,2,1588],t:7,e:"ui-section",a:{label:"Door"},f:[{p:[34,5,1619],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOpen"],s:'_0?"unlock":"lock"'},p:[34,22,1636]}],action:"door"},f:[{t:2,x:{r:["data.isOpen"],s:'_0?"Open":"Closed"'},p:[34,73,1687]}]}," ",{p:[35,5,1740],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.autoEject"],s:'_0?"sign-out":"sign-in"'},p:[35,22,1757]}],action:"autoeject"},f:[{t:2,x:{r:["data.autoEject"],s:'_0?"Auto":"Manual"'},p:[35,86,1821]}]}]}]}," ",{p:{button:[{p:[40,5,1967],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[40,36,1998]}],action:"ejectbeaker"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[42,3,2101],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{t:4,f:[{p:[45,9,2211],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,r:"volume",p:[45,52,2254]}," units of ",{t:2,r:"name",p:[45,72,2274]}]},{p:[45,87,2289],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[44,7,2171]},{t:4,n:51,f:[{p:[47,9,2320],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[43,5,2136]},{t:4,n:51,f:[{p:[50,7,2396],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=a.extend(r.exports)},{205:205}],248:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,2,15],t:7,e:"ui-section",a:{label:"State"},f:[{t:4,f:[{p:[4,4,76],t:7,e:"span",a:{"class":"good"},f:["Ready"]}],n:50,r:"data.full_pressure",p:[3,3,45]},{t:4,n:51,f:[{t:4,f:[{p:[7,5,153],t:7,e:"span",a:{"class":"bad"},f:["Power Disabled"]}],n:50,r:"data.panel_open",p:[6,4,124]},{t:4,n:51,f:[{t:4,f:[{p:[10,6,248],t:7,e:"span",a:{"class":"average"},f:["Pressurizing"]}],n:50,r:"data.pressure_charging",p:[9,5,211]},{t:4,n:51,f:[{p:[12,6,310],t:7,e:"span",a:{"class":"bad"},f:["Off"]}],r:"data.pressure_charging"}],r:"data.panel_open"}],r:"data.full_pressure"}]}," ",{p:[17,2,393],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[18,3,426],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.per",p:[18,36,459]}],state:"good"},f:[{t:2,r:"data.per",p:[18,63,486]},"%"]}]}," ",{p:[20,5,530],t:7,e:"ui-section",a:{label:"Handle"},f:[{p:[21,9,567],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.flush"],s:'_0?"toggle-on":"toggle-off"'},p:[22,10,589]}],state:[{t:2,x:{r:["data.isai","data.panel_open"],s:'_0||_1?"disabled":null'},p:[23,11,647]}],action:[{t:2,x:{r:["data.flush"],s:'_0?"handle-0":"handle-1"'},p:[24,12,714]}]},f:[{t:2,x:{r:["data.flush"],s:'_0?"Disengage":"Engage"'},p:[25,5,763]}]}]}," ",{p:[27,2,837],t:7,e:"ui-section",a:{label:"Eject"},f:[{p:[28,3,867],t:7,e:"ui-button",a:{icon:"sign-out",state:[{t:2,x:{r:["data.isai"],s:'_0?"disabled":null'},p:[28,37,901]}],action:"eject"},f:["Eject Contents"]},{p:[28,114,978],t:7,e:"br"}]}," ",{p:[30,2,1002],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[31,3,1032],t:7,e:"ui-button",a:{icon:"power-off",state:[{t:2,x:{r:["data.panel_open"],s:'_0?"disabled":null'},p:[31,38,1067]}],action:[{t:2,x:{r:["data.pressure_charging"],s:'_0?"pump-0":"pump-1"'},p:[31,87,1116]}],style:[{t:2,x:{r:["data.pressure_charging"],s:'_0?"selected":null'},p:[31,145,1174]}]}},{p:[31,206,1235],t:7,e:"br"}]}]}]},e.exports=a.extend(r.exports)},{205:205}],249:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"DNA Vault Database"},f:[{p:[2,3,43],t:7,e:"ui-section",a:{label:"Human DNA"},f:[{p:[3,7,81],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.dna_max",p:[3,28,102]}],value:[{t:2,r:"data.dna",p:[3,53,127]}]},f:[{t:2,r:"data.dna",p:[3,67,141]},"/",{t:2,r:"data.dna_max",p:[3,80,154]}," Samples"]}]}," ",{p:[5,3,208],t:7,e:"ui-section",a:{label:"Plant Data"},f:[{p:[6,5,245],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.plants_max",p:[6,26,266]}],value:[{t:2,r:"data.plants",p:[6,54,294]}]},f:[{t:2,r:"data.plants",p:[6,71,311]},"/",{t:2,r:"data.plants_max",p:[6,87,327]}," Samples"]}]}," ",{p:[8,3,384],t:7,e:"ui-section",a:{label:"Animal Data"},f:[{p:[9,5,422],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.animals_max",p:[9,26,443]}],value:[{t:2,r:"data.animals",p:[9,55,472]}]},f:[{t:2,r:"data.animals",p:[9,73,490]},"/",{t:2,r:"data.animals_max",p:[9,90,507]}," Samples"]}]}]}," ",{t:4,f:[{p:[13,1,616],t:7,e:"ui-display",a:{title:"Personal Gene Therapy"},f:[{p:[14,3,663],t:7,e:"ui-section",f:[{p:[15,2,678],t:7,e:"span",f:["Applicable gene therapy treatments:"]}]}," ",{p:[17,3,747],t:7,e:"ui-section",f:[{p:[18,2,762],t:7,e:"ui-button",a:{action:"gene",params:['{"choice": "',{t:2,r:"data.choiceA",p:[18,47,807]},'"}']},f:[{t:2,r:"data.choiceA",p:[18,67,827]}]}," ",{p:[19,2,858],t:7,e:"ui-button",a:{action:"gene",params:['{"choice": "',{t:2,r:"data.choiceB",p:[19,47,903]},'"}']},f:[{t:2,r:"data.choiceB",p:[19,67,923]}]}]}]}],n:50,x:{r:["data.completed","data.used"],s:"_0&&!_1"},p:[12,1,578]}]},e.exports=a.extend(r.exports)},{205:205}],250:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[2,3,33],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[3,3,66],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[3,9,72]}]}]}," ",{t:4,f:[{p:[6,5,183],t:7,e:"ui-section",a:{label:"Items in storage"},f:[{p:[7,4,225],t:7,e:"span",f:[{t:2,r:"data.items",p:[7,10,231]}]}]}],n:50,r:"data.items",p:[5,3,159]}," ",{t:4,f:[{p:[11,5,310],t:7,e:"ui-section",a:{label:"State"},f:[{p:[12,7,344],t:7,e:"span",a:{"class":[{t:2,r:"data.occupant.statstate",p:[12,20,357]}]},f:[{t:2,r:"data.occupant.stat",p:[12,49,386]}]}]}," ",{p:[14,5,439],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[15,7,474],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.occupant.minHealth",p:[15,20,487]}],max:[{t:2,r:"data.occupant.maxHealth",p:[15,54,521]}],value:[{t:2,r:"data.occupant.health",p:[15,90,557]}],state:[{t:2,x:{r:["data.occupant.health"],s:'_0>=0?"good":"average"'},p:[16,16,599]}]},f:[{t:2,x:{r:["adata.occupant.health"],s:"Math.round(_0)"},p:[16,68,651]}]}]}," ",{t:4,f:[{p:[19,7,888],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[19,26,907]}]},f:[{p:[20,9,928],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.maxHealth",p:[20,30,949]}],value:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[20,66,985]}],state:"bad"},f:[{t:2,x:{r:["type","adata.occupant"],s:"Math.round(_1[_0])"},p:[20,103,1022]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}]'},p:[18,5,722]}," ",{p:[23,5,1109],t:7,e:"ui-section",a:{label:"Cells"},f:[{p:[24,9,1145],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.occupant.cloneLoss"],s:'_0?"bad":"good"'},p:[24,22,1158]}]},f:[{t:2,x:{r:["data.occupant.cloneLoss"],s:'_0?"Damaged":"Healthy"'},p:[24,68,1204]}]}]}," ",{p:[26,5,1287],t:7,e:"ui-section",a:{label:"Brain"},f:[{p:[27,9,1323],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.occupant.brainLoss"],s:'_0?"bad":"good"'},p:[27,22,1336]}]},f:[{t:2,x:{r:["data.occupant.brainLoss"],s:'_0?"Abnormal":"Healthy"'},p:[27,68,1382]}]}]}," ",{p:[29,5,1466],t:7,e:"ui-section",a:{label:"Bloodstream"},f:[{t:4,f:[{p:[31,11,1553],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,1)"},p:[31,54,1596]}," units of ",{t:2,r:"name",p:[31,89,1631]}]},{p:[31,104,1646],t:7,e:"br"}],n:52,r:"adata.occupant.reagents",p:[30,9,1508]},{t:4,n:51,f:[{p:[33,11,1681],t:7,e:"span",a:{"class":"good"},f:["Pure"]}],r:"adata.occupant.reagents"}]}],n:50,r:"data.occupied",p:[10,3,283]}]}," ",{p:[38,1,1777],t:7,e:"ui-display",a:{title:"Operations"},f:[{p:[39,3,1812],t:7,e:"ui-section",a:{label:"Inject"},f:[{t:4,f:[{p:[41,7,1872],t:7,e:"ui-button",a:{icon:"flask",state:[{t:2,x:{r:["data.occupied"],s:'_0?null:"disabled"'},p:[41,38,1903]}],action:"inject",params:['{"chem": "',{t:2,r:"id",p:[41,111,1976]},'"}']},f:[{t:2,r:"name",p:[41,121,1986]}]},{p:[41,141,2006],t:7,e:"br" -}],n:52,r:"data.chem",p:[40,5,1845]}]}," ",{p:[44,2,2046],t:7,e:"ui-section",a:{label:"Eject"},f:[{p:[45,6,2079],t:7,e:"ui-button",a:{icon:"sign-out",action:"eject"},f:["Eject Contents"]}]}," ",{p:[47,2,2166],t:7,e:"ui-section",a:{label:"Self Cleaning"},f:[{p:[48,3,2204],t:7,e:"ui-button",a:{icon:"recycle",action:"cleaning"},f:["Self-Clean Cycle"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],251:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,24],t:7,e:"ui-display",a:{title:[{t:2,r:"data.question",p:[2,21,42]}]},f:[{p:[3,5,66],t:7,e:"ui-section",f:[{t:4,f:[{p:[5,9,118],t:7,e:"ui-button",a:{action:"vote",params:['{"answer": "',{t:2,r:"answer",p:[6,45,174]},'"}'],style:[{t:2,x:{r:["selected"],s:'_0?"selected":null'},p:[7,18,206]}]},f:[{t:2,r:"answer",p:[7,53,241]}," (",{t:2,r:"amount",p:[7,65,253]},")"]}],n:52,r:"data.answers",p:[4,7,86]}]}]}],n:50,r:"data.shaking",p:[1,1,0]},{t:4,n:51,f:[{p:[13,3,353],t:7,e:"ui-notice",f:["The eightball is not currently being shaken."]}],r:"data.shaking"}]},e.exports=a.extend(r.exports)},{205:205}],252:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,5,17],t:7,e:"span",f:["Time Until Launch: ",{t:2,r:"data.timer_str",p:[2,30,42]}]}]}," ",{p:[4,1,83],t:7,e:"ui-notice",f:[{p:[5,3,98],t:7,e:"span",f:["Engines: ",{t:2,x:{r:["data.engines_started"],s:'_0?"Online":"Idle"'},p:[5,18,113]}]}]}," ",{p:[7,1,180],t:7,e:"ui-display",a:{title:"Early Launch"},f:[{p:[8,2,216],t:7,e:"span",f:["Authorizations Remaining: ",{t:2,x:{r:["data.emagged","data.authorizations_remaining"],s:'_0?"ERROR":_1'},p:[9,2,250]}]}," ",{p:[10,2,318],t:7,e:"ui-button",a:{icon:"exclamation-triangle",action:"authorize",style:"danger",state:[{t:2,x:{r:["data.enabled"],s:'_0?null:"disabled"'},p:[12,10,404]}]},f:["AUTHORIZE"]}," ",{p:[15,2,473],t:7,e:"ui-button",a:{icon:"minus",action:"repeal",state:[{t:2,x:{r:["data.enabled"],s:'_0?null:"disabled"'},p:[16,10,523]}]},f:["Repeal"]}," ",{p:[19,2,589],t:7,e:"ui-button",a:{icon:"close",action:"abort",state:[{t:2,x:{r:["data.enabled"],s:'_0?null:"disabled"'},p:[20,10,638]}]},f:["Repeal All"]}]}," ",{p:[24,1,722],t:7,e:"ui-display",a:{title:"Authorizations"},f:[{t:4,f:[{p:[26,3,793],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:[{t:2,r:"name",p:[26,34,824]}," (",{t:2,r:"job",p:[26,44,834]},")"]}],n:52,r:"data.authorizations",p:[25,2,760]},{t:4,n:51,f:[{p:[28,3,870],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:["No authorizations."]}],r:"data.authorizations"}]}]},e.exports=a.extend(r.exports)},{205:205}],253:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Message"},f:[{t:2,r:"data.hidden_message",p:[3,5,50]}]}," ",{p:[5,3,94],t:7,e:"ui-section",a:{label:"Created On"},f:[{t:2,r:"data.realdate",p:[6,5,131]}]}," ",{p:[8,3,169],t:7,e:"ui-section",a:{label:"Approval"},f:[{p:[9,5,204],t:7,e:"ui-button",a:{icon:"arrow-up",state:[{t:2,x:{r:["data.is_creator","data.has_liked"],s:'_0?"disabled":_1?"selected":null'},p:[11,14,252]}],action:"like"},f:[{t:2,r:"data.num_likes",p:[12,21,344]}]}," ",{p:[13,5,380],t:7,e:"ui-button",a:{icon:"circle",state:[{t:2,x:{r:["data.is_creator","data.has_liked","data.has_disliked"],s:'_0?"disabled":!_1&&!_2?"selected":null'},p:[15,14,426]}],action:"neutral"}}," ",{p:[17,5,562],t:7,e:"ui-button",a:{icon:"arrow-down",state:[{t:2,x:{r:["data.is_creator","data.has_disliked"],s:'_0?"disabled":_1?"selected":null'},p:[19,14,612]}],action:"dislike"},f:[{t:2,r:"data.num_dislikes",p:[20,24,710]}]}]}]}," ",{t:4,f:[{p:[24,3,805],t:7,e:"ui-display",a:{title:"Admin Panel"},f:[{p:[25,5,843],t:7,e:"ui-section",a:{label:"Creator Ckey"},f:[{t:2,r:"data.creator_key",p:[25,38,876]}]}," ",{p:[26,5,915],t:7,e:"ui-section",a:{label:"Creator Character Name"},f:[{t:2,r:"data.creator_name",p:[26,48,958]}]}," ",{p:[27,5,998],t:7,e:"ui-button",a:{icon:"remove",action:"delete",style:"danger"},f:["Delete"]}]}],n:50,r:"data.admin_mode",p:[23,1,778]}]},e.exports=a.extend(r.exports)},{205:205}],254:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,15],t:7,e:"span",f:["The requested interface (",{t:2,r:"config.interface",p:[2,34,46]},") was not found. Does it exist?"]}]}]},e.exports=a.extend(r.exports)},{205:205}],255:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,2,20],t:7,e:"ui-notice",f:["Currently syncing with the database"]}],n:50,r:"data.sync",p:[1,1,0]},{t:4,n:51,f:[{p:{button:[{p:[8,4,163],t:7,e:"ui-button",a:{icon:"eject",action:"eject_all"},f:["Eject all"]}," ",{p:[9,4,232],t:7,e:"ui-button",a:{icon:["toggle-",{t:2,x:{r:["data.show_materials"],s:'_0?"off":"on"'},p:[9,28,256]}],action:"toggle_materials_visibility"},f:[{t:2,x:{r:["data.show_materials"],s:'_0?"Hide":"Show"'},p:[10,5,339]}]}]},t:7,e:"ui-display",a:{title:"Materials",button:0},f:[" ",{t:4,f:[{p:[14,4,449],t:7,e:"div",a:{"class":"display tabular"},f:[{p:[15,5,484],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[16,6,520],t:7,e:"section",a:{"class":"cell"}}," ",{p:[17,6,559],t:7,e:"section",a:{"class":"cell"},f:["Mineral"]}," ",{p:[20,6,620],t:7,e:"section",a:{"class":"cell"},f:["Amount"]}," ",{p:[23,6,680],t:7,e:"section",a:{"class":"cell"}}," ",{p:[24,6,719],t:7,e:"section",a:{"class":"cell"}}]}," ",{t:4,f:[{p:[27,6,808],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[28,7,845],t:7,e:"section",a:{"class":"cell"},f:[{t:2,r:"name",p:[29,8,876]}]}," ",{p:[31,7,910],t:7,e:"section",a:{"class":"cell"},f:[{t:2,r:"amount",p:[32,8,941]}]}," ",{p:[34,7,977],t:7,e:"section",a:{"class":"cell"},f:[{p:[35,8,1008],t:7,e:"ui-button",a:{icon:"eject"},f:["Release amount"]}]}," ",{p:[37,7,1084],t:7,e:"section",a:{"class":"cell",style:"width: 40px;"},f:[{p:[38,8,1136],t:7,e:"ui-button",a:{icon:"eject"},f:["Release all"]}]}]}],n:52,r:"data.all_materials",p:[26,5,773]}]}],n:50,r:"data.show_materials",p:[13,3,417]}]}," ",{p:[45,2,1274],t:7,e:"ui-display",a:{title:"Categories"},f:[{t:4,f:[{p:[47,4,1334],t:7,e:"ui-button",f:[{t:2,r:".",p:[47,15,1345]}]}],r:"data.categories",p:[46,3,1309]}]}],r:"data.sync"}]},e.exports=a.extend(r.exports)},{205:205}],256:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Status"},f:[{p:[3,5,49],t:7,e:"ui-button",a:{action:"toggle_power",style:[{t:2,x:{r:["data.toggle"],s:'_0?"selected":null'},p:[5,18,111]}]},f:["Turn ",{t:2,x:{r:["data.toggle"],s:'_0?"off":"on"'},p:[6,16,166]}]}]}," ",{p:[9,3,235],t:7,e:"ui-display",a:{title:"Logging"},f:[{t:4,f:[{p:[11,3,292],t:7,e:"ui-section",a:{label:">"},f:[{t:2,r:".",p:[11,25,314]},{p:[11,30,319],t:7,e:"ui-section",f:[]}]}],n:52,r:"data.logs",p:[10,5,269]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],257:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={computed:{seclevelState:function(){switch(this.get("data.seclevel")){case"blue":return"average";case"red":return"bad";case"delta":return"bad bold";default:return"good"}}}}}(r),r.exports.template={v:3,t:[" ",{p:[16,1,323],t:7,e:"ui-display",f:[{p:[17,5,341],t:7,e:"ui-section",a:{label:"Alert Level"},f:[{p:[18,9,383],t:7,e:"span",a:{"class":[{t:2,r:"seclevelState",p:[18,22,396]}]},f:[{t:2,x:{r:["text","data.seclevel"],s:"_0.titleCase(_1)"},p:[18,41,415]}]}]}," ",{p:[20,5,480],t:7,e:"ui-section",a:{label:"Controls"},f:[{p:[21,9,519],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.alarm"],s:'_0?"close":"bell-o"'},p:[21,26,536]}],action:[{t:2,x:{r:["data.alarm"],s:'_0?"reset":"alarm"'},p:[21,71,581]}]},f:[{t:2,x:{r:["data.alarm"],s:'_0?"Reset":"Activate"'},p:[22,13,631]}]}]}," ",{t:4,f:[{p:[25,7,733],t:7,e:"ui-section",a:{label:"Warning"},f:[{p:[26,9,771],t:7,e:"span",a:{"class":"bad bold"},f:["Safety measures offline. Device may exhibit abnormal behavior."]}]}],n:50,r:"data.emagged",p:[24,5,705]}]}]},e.exports=a.extend(r.exports)},{205:205}],258:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Controls"},f:[{p:[2,1,31],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,2,60],t:7,e:"ui-button",a:{icon:"power-off",style:[{t:2,x:{r:["data.power"],s:'_0?"selected":"danger"'},p:[3,37,95]}],action:"power"},f:[{t:2,x:{r:["data.power"],s:'_0?"Enabled":"Disabled"'},p:[3,92,150]}]}]}," ",{p:[5,1,218],t:7,e:"ui-section",a:{label:"Tag"},f:[{p:[6,2,245],t:7,e:"ui-button",a:{icon:"pencil",action:"rename"},f:[{t:2,r:"data.tag",p:[6,43,286]}]}]}," ",{p:[8,1,327],t:7,e:"ui-section",a:{label:"Scanning mode"},f:[{p:[9,2,364],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.updating"],s:'_0?"unlock":"lock"'},p:[9,18,380]}],style:[{t:2,x:{r:["data.updating"],s:'_0?null:"danger"'},p:[9,63,425]}],action:"updating",tooltip:"Toggle between automatic scanning or scan only when a button is pressed.","tooltip-side":"right"},f:[{t:2,x:{r:["data.updating"],s:'_0?"AUTO":"MANUAL"'},p:[9,221,583]}]}]}," ",{p:[11,1,649],t:7,e:"ui-section",a:{label:"Detection range"},f:[{p:[12,2,688],t:7,e:"ui-button",a:{icon:"refresh",style:[{t:2,x:{r:["data.globalmode"],s:'_0?null:"selected"'},p:[12,35,721]}],action:"globalmode",tooltip:"Local sector or whole region scanning.","tooltip-side":"right"},f:[{t:2,x:{r:["data.globalmode"],s:'_0?"MAXIMUM":"LOCAL"'},p:[12,165,851]}]}]}]}," ",{t:4,f:[{p:[16,2,957],t:7,e:"ui-display",a:{title:"Current Location"},f:[{p:[17,3,998],t:7,e:"span",f:[{t:2,r:"data.current",p:[17,9,1004]}]}]}," ",{p:[20,2,1048],t:7,e:"ui-display",a:{title:"Detected Signals"},f:[{t:4,f:[{p:[22,3,1114],t:7,e:"ui-section",a:{label:[{t:2,r:"entrytag",p:[22,21,1132]}]},f:[{p:[23,3,1149],t:7,e:"span",f:[{t:2,r:"area",p:[23,9,1155]}," (",{t:2,r:"coord",p:[23,19,1165]},")"]}," ",{t:4,f:[{p:[25,4,1209],t:7,e:"span",f:["Dist: ",{t:2,r:"dist",p:[25,16,1221]},"m Dir: ",{t:2,r:"degrees",p:[25,31,1236]},"° (",{t:2,r:"direction",p:[25,45,1250]},")"]}],n:50,r:"direction",p:[24,3,1187]}]}],n:52,r:"data.signals",p:[21,2,1088]}]}],n:50,r:"data.power",p:[15,1,936]}]},e.exports=a.extend(r.exports)},{205:205}],259:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Labor Camp Teleporter"},f:[{p:[2,2,45],t:7,e:"ui-section",a:{label:"Teleporter Status"},f:[{p:[3,3,87],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.teleporter"],s:'_0?"good":"bad"'},p:[3,16,100]}]},f:[{t:2,x:{r:["data.teleporter"],s:'_0?"Connected":"Not connected"'},p:[3,54,138]}]}]}," ",{t:4,f:[{p:[6,4,244],t:7,e:"ui-section",a:{label:"Location"},f:[{p:[7,5,279],t:7,e:"span",f:[{t:2,r:"data.teleporter_location",p:[7,11,285]}]}]}," ",{p:[9,4,343],t:7,e:"ui-section",a:{label:"Locked status"},f:[{p:[10,5,383],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.teleporter_lock"],s:'_0?"lock":"unlock"'},p:[10,22,400]}],action:"teleporter_lock"},f:[{t:2,x:{r:["data.teleporter_lock"],s:'_0?"Locked":"Unlocked"'},p:[10,93,471]}]}," ",{p:[11,5,537],t:7,e:"ui-button",a:{action:"toggle_open"},f:[{t:2,x:{r:["data.teleporter_state_open"],s:'_0?"Open":"Closed"'},p:[11,37,569]}]}]}],n:50,r:"data.teleporter",p:[5,3,216]},{t:4,n:51,f:[{p:[14,4,666],t:7,e:"span",f:[{p:[14,10,672],t:7,e:"ui-button",a:{action:"scan_teleporter"},f:["Scan Teleporter"]}]}],r:"data.teleporter"}]}," ",{p:[17,1,770],t:7,e:"ui-display",a:{title:"Labor Camp Beacon"},f:[{p:[18,2,811],t:7,e:"ui-section",a:{label:"Beacon Status"},f:[{p:[19,3,849],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.beacon"],s:'_0?"good":"bad"'},p:[19,16,862]}]},f:[{t:2,x:{r:["data.beacon"],s:'_0?"Connected":"Not connected"'},p:[19,50,896]}]}]}," ",{t:4,f:[{p:[22,3,992],t:7,e:"ui-section",a:{label:"Location"},f:[{p:[23,4,1026],t:7,e:"span",f:[{t:2,r:"data.beacon_location",p:[23,10,1032]}]}]}],n:50,r:"data.beacon",p:[21,2,969]},{t:4,n:51,f:[{p:[26,4,1097],t:7,e:"span",f:[{p:[26,10,1103],t:7,e:"ui-button",a:{action:"scan_beacon"},f:["Scan Beacon"]}]}],r:"data.beacon"}]}," ",{p:[29,1,1193],t:7,e:"ui-display",a:{title:"Prisoner details"},f:[{p:[30,2,1233],t:7,e:"ui-section",a:{label:"Prisoner ID"},f:[{p:[31,3,1269],t:7,e:"ui-button",a:{action:"handle_id"},f:[{t:2,x:{r:["data.id","data.id_name"],s:'_0?_1:"-------------"'},p:[31,33,1299]}]}]}," ",{t:4,f:[{p:[34,2,1392],t:7,e:"ui-section",a:{label:"Set ID goal"},f:[{p:[35,4,1429],t:7,e:"ui-button",a:{action:"set_goal"},f:[{t:2,r:"data.goal",p:[35,33,1458]}]}]}],n:50,r:"data.id",p:[33,2,1374]}," ",{p:[38,2,1512],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[39,3,1545],t:7,e:"span",f:[{t:2,x:{r:["data.prisoner.name"],s:'_0?_0:"No Occupant"'},p:[39,9,1551]}]}]}," ",{t:4,f:[{p:[42,3,1661],t:7,e:"ui-section",a:{label:"Criminal Status"},f:[{p:[43,4,1702],t:7,e:"span",f:[{t:2,r:"data.prisoner.crimstat",p:[43,10,1708]}]}]}],n:50,r:"data.prisoner",p:[41,2,1636]}]}," ",{p:[47,1,1785],t:7,e:"ui-display",f:[{p:[48,2,1800],t:7,e:"center",f:[{p:[48,10,1808],t:7,e:"ui-button",a:{action:"teleport",state:[{t:2,x:{r:["data.can_teleport"],s:'_0?null:"disabled"'},p:[48,45,1843]}]},f:["Process Prisoner"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],260:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,2,15],t:7,e:"center",f:[{p:[2,10,23],t:7,e:"ui-button",a:{action:"handle_id"},f:[{t:2,x:{r:["data.id","data.id_name"],s:'_0?_1:"-------------"'},p:[2,40,53]}]}]}]}," ",{p:[4,1,135],t:7,e:"ui-display",a:{title:"Stored Items"},f:[{t:4,f:[{p:[6,3,194],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[6,22,213]}]},f:[{p:[7,4,228],t:7,e:"ui-button",a:{action:"release_items",params:['{"mobref":',{t:2,r:"mob",p:[7,56,280]},"}"],state:[{t:2,x:{r:["data.can_reclaim"],s:'_0?null:"disabled"'},p:[7,72,296]}]},f:["Drop Items"]}]}],n:52,r:"data.mobs",p:[5,2,171]}]}]},e.exports=a.extend(r.exports)},{205:205}],261:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:{button:[{p:[3,3,70],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.emagged"],s:'_0?"un":null'},p:[3,20,87]},"lock"],state:[{t:2,x:{r:["data.can_toggle_safety"],s:'_0?null:"disabled"'},p:[3,63,130]}],action:"safety"},f:["Safeties: ",{p:[4,14,209],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.emagged"],s:'_0?"bad":"good"'},p:[4,27,222]}]},f:[{t:2,x:{r:["data.emagged"],s:'_0?"OFF":"ON"'},p:[4,62,257]}]}]}]},t:7,e:"ui-display",a:{title:"Default Programs",button:0},f:[" ",{t:4,f:[{p:[8,2,363],t:7,e:"ui-button",a:{action:"load_program",params:['{"type": ',{t:2,r:"type",p:[8,52,413]},"}"],style:[{t:2,x:{r:["data.program","type"],s:'_0==_1?"selected":null'},p:[8,70,431]}]},f:[{t:2,r:"name",p:[9,5,483]}," "]},{p:[10,14,506],t:7,e:"br"}],n:52,r:"data.default_programs",p:[7,2,329]}]}," ",{t:4,f:[{p:[14,2,562],t:7,e:"ui-display",a:{title:"Dangerous Programs"},f:[{t:4,f:[{p:[16,4,638],t:7,e:"ui-button",a:{icon:"warning",action:"load_program",params:['{"type": ',{t:2,r:"type",p:[16,69,703]},"}"],style:[{t:2,x:{r:["data.program","type"],s:'_0==_1?"selected":null'},p:[16,87,721]}]},f:[{t:2,r:"name",p:[17,5,773]}," "]},{p:[18,16,798],t:7,e:"br"}],n:52,r:"data.emag_programs",p:[15,3,605]}]}],n:50,r:"data.emagged",p:[13,1,539]}]},e.exports=a.extend(r.exports)},{205:205}],262:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={computed:{occupantStatState:function(){switch(this.get("data.occupant.stat")){case 0:return"good";case 1:return"average";default:return"bad"}}}}}(r),r.exports.template={v:3,t:[" ",{p:[15,1,280],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[16,3,313],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[17,3,346],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[17,9,352]}]}]}," ",{t:4,f:[{p:[20,5,466],t:7,e:"ui-section",a:{label:"State"},f:[{p:[21,7,500],t:7,e:"span",a:{"class":[{t:2,r:"occupantStatState",p:[21,20,513]}]},f:[{t:2,x:{r:["data.occupant.stat"],s:'_0==0?"Conscious":_0==1?"Unconcious":"Dead"'},p:[21,43,536]}]}]}],n:50,r:"data.occupied",p:[19,3,439]}]}," ",{p:[25,1,680],t:7,e:"ui-display",a:{title:"Controls"},f:[{p:[26,2,712],t:7,e:"ui-section",a:{label:"Door"},f:[{p:[27,5,743],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.open"],s:'_0?"unlock":"lock"'},p:[27,22,760]}],action:"door"},f:[{t:2,x:{r:["data.open"],s:'_0?"Open":"Closed"'},p:[27,71,809]}]}]}," ",{p:[29,3,874],t:7,e:"ui-section",a:{label:"Uses"},f:[{t:2,r:"data.ready_implants",p:[30,5,905]}," ",{t:4,f:[{p:[32,7,969],t:7,e:"span",a:{"class":"fa fa-cog fa-spin"}}],n:50,r:"data.replenishing",p:[31,5,936]}]}," ",{p:[35,3,1036],t:7,e:"ui-section",a:{label:"Activate"},f:[{p:[36,7,1073],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.occupied","data.ready_implants","data.ready"],s:'_0&&_1>0&&_2?null:"disabled"'},p:[36,25,1091]}],action:"implant"},f:[{t:2,x:{r:["data.ready","data.special_name"],s:'_0?(_1?_1:"Implant"):"Recharging"'},p:[37,9,1198]}," "]},{p:[38,19,1302],t:7,e:"br"}]}]}]},e.exports=a.extend(r.exports)},{205:205}],263:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={computed:{healthState:function(){var t=this.get("data.health");return t>70?"good":t>50?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{t:4,f:[{p:[15,3,296],t:7,e:"ui-notice",f:[{p:[16,5,313],t:7,e:"span",f:["Wipe in progress!"]}]}],n:50,r:"data.wiping",p:[14,1,273]},{p:{button:[{t:4,f:[{p:[22,7,479],t:7,e:"ui-button",a:{icon:"trash",state:[{t:2,x:{r:["data.isDead"],s:'_0?"disabled":null'},p:[22,38,510]}],action:"wipe"},f:[{t:2,x:{r:["data.wiping"],s:'_0?"Stop Wiping":"Wipe"'},p:[22,89,561]}," AI"]}],n:50,r:"data.name",p:[21,5,454]}]},t:7,e:"ui-display",a:{title:[{t:2,x:{r:["data.name"],s:'_0||"Empty Card"'},p:[19,19,388]}],button:0},f:[" ",{t:4,f:[{p:[26,5,672],t:7,e:"ui-section",a:{label:"Status"},f:[{p:[27,9,709],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.isDead","data.isBraindead"],s:'_0||_1?"bad":"good"'},p:[27,22,722]}]},f:[{t:2,x:{r:["data.isDead","data.isBraindead"],s:'_0||_1?"Offline":"Operational"'},p:[27,76,776]}]}]}," ",{p:[29,5,871],t:7,e:"ui-section",a:{label:"Software Integrity"},f:[{p:[30,7,918],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.health",p:[30,40,951]}],state:[{t:2,r:"healthState",p:[30,64,975]}]},f:[{t:2,x:{r:["adata.health"],s:"Math.round(_0)"},p:[30,81,992]},"%"]}]}," ",{p:[32,5,1055],t:7,e:"ui-section",a:{label:"Laws"},f:[{t:4,f:[{p:[34,9,1117],t:7,e:"span",a:{"class":"highlight"},f:[{t:2,r:".",p:[34,33,1141]}]},{p:[34,45,1153],t:7,e:"br"}],n:52,r:"data.laws",p:[33,7,1088]}]}," ",{p:[37,5,1200],t:7,e:"ui-section",a:{label:"Settings"},f:[{p:[38,7,1237],t:7,e:"ui-button",a:{icon:"signal",style:[{t:2,x:{r:["data.wireless"],s:'_0?"selected":null'},p:[38,39,1269]}],action:"wireless"},f:["Wireless Activity"]}," ",{p:[39,7,1363],t:7,e:"ui-button",a:{icon:"microphone",style:[{t:2,x:{r:["data.radio"],s:'_0?"selected":null'},p:[39,43,1399]}],action:"radio"},f:["Subspace Radio"]}]}],n:50,r:"data.name",p:[25,3,649]}]}]},e.exports=a.extend(r.exports)},{205:205}],264:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,2,23],t:7,e:"ui-notice",f:[{p:[3,3,38],t:7,e:"span",f:["Waiting for another device to confirm your request..."]}]}],n:50,r:"data.waiting",p:[1,1,0]},{t:4,n:51,f:[{p:[6,2,132],t:7,e:"ui-display",f:[{p:[7,3,148],t:7,e:"ui-section",f:[{t:4,f:[{p:[9,5,197],t:7,e:"ui-button",a:{icon:"check",action:"auth_swipe"},f:["Authorize ",{t:2,r:"data.auth_required",p:[9,59,251]}]}],n:50,r:"data.auth_required",p:[8,4,165]},{t:4,n:51,f:[{p:[11,5,304],t:7,e:"ui-button",a:{icon:"warning",state:[{t:2,x:{r:["data.red_alert"],s:'_0?"disabled":null'},p:[11,38,337]}],action:"red_alert"},f:["Red Alert"]}," ",{p:[12,5,423],t:7,e:"ui-button",a:{icon:"wrench",state:[{t:2,x:{r:["data.emergency_maint"],s:'_0?"disabled":null'},p:[12,37,455]}],action:"emergency_maint"},f:["Emergency Maintenance Access"]}," ",{p:[13,5,572],t:7,e:"ui-button",a:{icon:"warning",state:"null",action:"bsa_unlock"},f:["Bluespace Artillery Unlock"]}],r:"data.auth_required"}]}]}],r:"data.waiting"}]},e.exports=a.extend(r.exports)},{205:205}],265:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Ore values"},f:[{t:4,f:[{p:[3,3,57],t:7,e:"ui-section",a:{label:[{t:2,r:"ore",p:[3,22,76]}]},f:[{p:[4,4,90],t:7,e:"span",f:[{t:2,r:"value",p:[4,10,96]}]}]}],n:52,r:"data.ores",p:[2,2,34]}]}," ",{p:[8,1,158],t:7,e:"ui-display",a:{title:"Points"},f:[{p:[9,2,188],t:7,e:"ui-section",a:{label:"ID"},f:[{p:[10,3,215],t:7,e:"ui-button",a:{action:"handle_id"},f:[{t:2,x:{r:["data.id","data.id_name"],s:'_0?_1:"-------------"'},p:[10,33,245]}]}]}," ",{t:4,f:[{p:[13,3,339],t:7,e:"ui-section",a:{label:"Points collected"},f:[{p:[14,4,381],t:7,e:"span",f:[{t:2,r:"data.points",p:[14,10,387]}]}]}," ",{p:[16,3,430],t:7,e:"ui-section",a:{label:"Goal"},f:[{p:[17,4,460],t:7,e:"span",f:[{t:2,r:"data.goal",p:[17,10,466]}]}]}," ",{p:[19,3,507],t:7,e:"ui-section",a:{label:"Unclaimed points"},f:[{p:[20,4,549],t:7,e:"span",f:[{t:2,r:"data.unclaimed_points",p:[20,10,555]}]}," ",{p:[21,4,592],t:7,e:"ui-button",a:{action:"claim_points",state:[{t:2,x:{r:["data.unclaimed_points"],s:'_0?null:"disabled"'},p:[21,43,631]}]},f:["Claim points"]}]}],n:50,r:"data.id",p:[12,2,320]}]}," ",{p:[25,1,745],t:7,e:"ui-display",f:[{p:[26,2,760],t:7,e:"center",f:[{p:[27,3,772],t:7,e:"ui-button",a:{action:"move_shuttle",state:[{t:2,x:{r:["data.can_go_home"],s:'_0?null:"disabled"'},p:[27,42,811]}]},f:["Move shuttle"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],266:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Known Languages"},f:[{t:4,f:[{p:[3,5,70],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[3,23,88]}]},f:[{p:[4,7,105],t:7,e:"span",f:[{t:2,r:"desc",p:[4,13,111]}]}," ",{p:[5,7,134],t:7,e:"span",f:["Key: ,",{t:2,r:"key",p:[5,19,146]}]}," ",{t:4,f:[{p:[7,9,192],t:7,e:"span",f:["(gained from mob)"]}],n:50,r:"shadow",p:[6,7,168]}," ",{p:[9,7,245],t:7,e:"span",f:[{t:2,x:{r:["can_speak"],s:'_0?"Can Speak":"Cannot Speak"'},p:[9,13,251]}]}," ",{t:4,f:[{p:[11,9,342],t:7,e:"ui-button",a:{action:"select_default",params:['{"language_name":"',{t:2,r:"name",p:[13,37,425]},'"}'],style:[{t:2,x:{r:["is_default","can_speak"],s:'_0?"selected":_1?null:"disabled"'},p:[14,18,455]}]},f:[{t:2,x:{r:["is_default"],s:'_0?"Default Language":"Select as Default"'},p:[15,10,526]}]}],n:50,r:"data.is_living",p:[10,7,310]}," ",{t:4,f:[{t:4,f:[{p:[20,11,685],t:7,e:"ui-button",a:{action:"grant_language",params:['{"language_name":"',{t:2,r:"name",p:[20,72,746]},'"}']},f:["Grant"]}],n:50,r:"shadow",p:[19,9,659]},{t:4,n:51,f:[{p:[22,11,805],t:7,e:"ui-button",a:{action:"remove_language",params:['{"language_name":"',{t:2,r:"name",p:[22,73,867]},'"}']},f:["Remove"]}],r:"shadow"}],n:50,r:"data.admin_mode",p:[18,7,626]}]}],n:52,r:"data.languages",p:[2,3,40]}]}," ",{t:4,f:[{t:4,f:[{p:[30,5,1033],t:7,e:"ui-button",a:{action:"toggle_omnitongue",style:[{t:2,x:{r:["data.omnitongue"],s:'_0?"selected":null'},p:[32,14,1092]}]},f:["Omnitongue ",{t:2,x:{r:["data.omnitongue"],s:'_0?"Enabled":"Disabled"'},p:[33,19,1152]}]}],n:50,r:"data.is_living",p:[29,3,1005]}," ",{p:[36,3,1231],t:7,e:"ui-display",a:{title:"Unknown Languages"},f:[{t:4,f:[{p:[38,7,1315],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[38,25,1333]}]},f:[{p:[39,9,1352],t:7,e:"span",f:[{t:2,r:"desc",p:[39,15,1358]}]}," ",{p:[40,9,1383],t:7,e:"span",f:["Key: ,",{t:2,r:"key",p:[40,21,1395]}]}," ",{p:[41,9,1419],t:7,e:"ui-button",a:{action:"grant_language",params:['{"language_name":"',{t:2,r:"name",p:[43,37,1502]},'"}']},f:["Grant"]}]}],n:52,r:"data.unknown_languages",p:[37,5,1275]}]}],n:50,r:"data.admin_mode",p:[28,1,978]}]},e.exports=a.extend(r.exports)},{205:205}],267:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Controls"},f:[{t:4,f:[{t:4,f:[{p:[4,4,84],t:7,e:"ui-section",a:{label:"Warning"},f:[{p:[5,5,118],t:7,e:"span",f:["Launchpad closed."]}]}],n:50,r:"data.pad_closed",p:[3,3,56]},{t:4,n:51,f:[{p:[8,4,183],t:7,e:"ui-section",a:{label:"Launchpad"},f:[{p:[9,4,218],t:7,e:"span",f:[{p:[9,10,224],t:7,e:"b",f:[{t:2,r:"data.pad_name",p:[9,13,227]}]}]},{p:[9,41,255],t:7,e:"br"}," ",{p:[10,4,264],t:7,e:"ui-button",a:{icon:"pencil",action:"rename"},f:["Rename"]}," ",{p:[11,4,328],t:7,e:"ui-button",a:{icon:"remove",style:"danger",action:"remove"},f:["Remove"]}]}," ",{p:[14,4,427],t:7,e:"ui-section",a:{label:"Set Target"},f:[{p:[15,4,463],t:7,e:"table",f:[{p:[16,4,475],t:7,e:"tr",f:[{p:[17,5,485],t:7,e:"td",a:{style:"width:25px!important"},f:[{p:[17,38,518],t:7,e:"ui-button",a:{action:"up-left"},f:["↖"]}]}," ",{p:[18,5,570],t:7,e:"td",a:{style:"width:25px!important; text-align:center"},f:[{p:[18,57,622],t:7,e:"ui-button",a:{action:"up"},f:["↑"]}]}," ",{p:[19,5,669],t:7,e:"td",a:{style:"width:25px!important; text-align:right"},f:[{p:[19,56,720],t:7,e:"ui-button",a:{action:"up-right"},f:["↗"]}]}]}," ",{p:[21,4,782],t:7,e:"tr",f:[{p:[22,5,792],t:7,e:"td",a:{style:"width:25px!important"},f:[{p:[22,38,825],t:7,e:"ui-button",a:{action:"left",style:"width:35px!important"},f:["←"]}]}," ",{p:[23,5,903],t:7,e:"td",a:{style:"width:25px!important; text-align:center"},f:[{p:[23,57,955],t:7,e:"ui-button",a:{action:"reset"},f:["R"]}]}," ",{p:[24,5,1005],t:7,e:"td",a:{style:"width:25px!important; text-align:right"},f:[{p:[24,56,1056],t:7,e:"ui-button",a:{action:"right"},f:["→"]}]}]}," ",{p:[26,4,1115],t:7,e:"tr",f:[{p:[27,5,1125],t:7,e:"td",a:{style:"width:25px!important"},f:[{p:[27,38,1158],t:7,e:"ui-button",a:{action:"down-left"},f:["↙"]}]}," ",{p:[28,5,1212],t:7,e:"td",a:{style:"width:25px!important; text-align:center"},f:[{p:[28,57,1264],t:7,e:"ui-button",a:{action:"down"},f:["↓"]}]}," ",{p:[29,5,1313],t:7,e:"td",a:{style:"width:25px!important; text-align:right"},f:[{p:[29,56,1364],t:7,e:"ui-button",a:{action:"down-right"},f:["↘"]}]}]}]}]}," ",{p:[33,4,1459],t:7,e:"ui-section",a:{label:"Current Target"},f:[{p:[34,5,1500],t:7,e:"span",f:[{t:2,r:"data.abs_y",p:[34,11,1506]}," ",{t:2,r:"data.north_south",p:[34,26,1521]}]},{p:[34,53,1548],t:7,e:"br"}," ",{p:[35,5,1558],t:7,e:"span",f:[{t:2,r:"data.abs_x",p:[35,11,1564]}," ",{t:2,r:"data.east_west",p:[35,26,1579]}]}]}," ",{p:[37,4,1627],t:7,e:"ui-section",a:{label:"Activate"},f:[{p:[38,5,1662],t:7,e:"ui-button",a:{action:"launch",tooltip:"Teleport everything on the pad to the target.","tooltip-side":"down"},f:["Launch"]}," ",{p:[39,5,1789],t:7,e:"ui-button",a:{action:"pull",tooltip:"Teleport everything from the target to the pad.","tooltip-side":"down"},f:["Pull"]}]}],r:"data.pad_closed"}],n:50,r:"data.has_pad",p:[2,2,32]},{t:4,n:51,f:[{p:[45,3,1956],t:7,e:"ui-section",a:{label:"Warning"},f:[{p:[46,4,1989],t:7,e:"span",f:["No launchpad found. Link the remote to a launchpad."]}]}],r:"data.has_pad"}]}]},e.exports=a.extend(r.exports)},{205:205}],268:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{mechChargeState:function(t){var e=this.get("data.recharge_port.mech.cell.maxcharge");return t>=e/1.5?"good":t>=e/3?"average":"bad"},mechHealthState:function(t){var e=this.get("data.recharge_port.mech.maxhealth");return t>e/1.5?"good":t>e/3?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{p:[20,1,545],t:7,e:"ui-display",a:{title:"Mech Status"},f:[{t:4,f:[{t:4,f:[{p:[23,4,646],t:7,e:"ui-section",a:{label:"Integrity"},f:[{p:[24,6,683],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"adata.recharge_port.mech.maxhealth",p:[24,27,704]}],value:[{t:2,r:"adata.recharge_port.mech.health",p:[24,74,751]}],state:[{t:2,x:{r:["mechHealthState","adata.recharge_port.mech.health"],s:"_0(_1)"},p:[24,117,794]}]},f:[{t:2,x:{r:["adata.recharge_port.mech.health"],s:"Math.round(_0)"},p:[24,171,848]},"/",{t:2,r:"adata.recharge_port.mech.maxhealth",p:[24,219,896]}]}]}," ",{t:4,f:[{t:4,f:[{p:[28,5,1061],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[28,31,1087],t:7,e:"span",a:{"class":"bad"},f:["Cell Critical Failure"]}]}],n:50,r:"data.recharge_port.mech.cell.critfail",p:[27,3,1010]},{t:4,n:51,f:[{p:[30,11,1170],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[31,13,1210],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"adata.recharge_port.mech.cell.maxcharge",p:[31,34,1231]}],value:[{t:2,r:"adata.recharge_port.mech.cell.charge",p:[31,86,1283]}],state:[{t:2,x:{r:["mechChargeState","adata.recharge_port.mech.cell.charge"],s:"_0(_1)"},p:[31,134,1331]}]},f:[{t:2,x:{r:["adata.recharge_port.mech.cell.charge"],s:"Math.round(_0)"},p:[31,193,1390]},"/",{t:2,x:{r:["adata.recharge_port.mech.cell.maxcharge"],s:"Math.round(_0)"},p:[31,246,1443]}]}]}],r:"data.recharge_port.mech.cell.critfail"}],n:50,r:"data.recharge_port.mech.cell",p:[26,4,970]},{t:4,n:51,f:[{p:[35,3,1558],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[35,29,1584],t:7,e:"span",a:{"class":"bad"},f:["Cell Missing"]}]}],r:"data.recharge_port.mech.cell"}],n:50,r:"data.recharge_port.mech",p:[22,2,610]},{t:4,n:51,f:[{p:[38,4,1662],t:7,e:"ui-section",f:["Mech Not Found"]}],r:"data.recharge_port.mech"}],n:50,r:"data.recharge_port",p:[21,3,581]},{t:4,n:51,f:[{p:[41,5,1729],t:7,e:"ui-section",f:["Recharging Port Not Found"]}," ",{p:[42,2,1782],t:7,e:"ui-button",a:{icon:"refresh",action:"reconnect"},f:["Reconnect"]}],r:"data.recharge_port"}]}]},e.exports=a.extend(r.exports)},{205:205}],269:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{t:4,f:[{p:[3,5,45],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[4,7,88],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[4,24,105]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[4,75,156]}]}]}],n:50,r:"data.siliconUser",p:[2,3,15]},{t:4,n:51,f:[{p:[7,5,247],t:7,e:"span",f:["Swipe an ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[7,31,273]}," this interface."]}],r:"data.siliconUser"}]}," ",{p:[10,1,358],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[11,3,389],t:7,e:"ui-section",a:{label:"Power"},f:[{t:4,f:[{p:[13,7,470],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[13,24,487]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[13,68,531]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[13,116,579]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[12,5,421]},{t:4,n:51,f:[{p:[15,7,639],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.on"],s:'_0?"good":"bad"'},p:[15,20,652]}],state:[{t:2,x:{r:["data.cell"],s:'_0?null:"disabled"'},p:[15,57,689]}]},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[15,92,724]}]}],x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"}}]}," ",{p:[18,3,791],t:7,e:"ui-section",a:{label:"Cell"},f:[{p:[19,5,822],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.cell"],s:'_0?null:"bad"'},p:[19,18,835]}]},f:[{t:2,x:{r:["data.cell","data.cellPercent"],s:'_0?_1+"%":"No Cell"'},p:[19,48,865]}]}]}," ",{p:[21,3,943],t:7,e:"ui-section",a:{label:"Mode"},f:[{p:[22,5,974],t:7,e:"span",a:{"class":[{t:2,r:"data.modeStatus",p:[22,18,987]}]},f:[{t:2,r:"data.mode",p:[22,39,1008]}]}]}," ",{p:[24,3,1049],t:7,e:"ui-section",a:{label:"Load"},f:[{p:[25,5,1080],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.load"],s:'_0?"good":"average"'},p:[25,18,1093]}]},f:[{t:2,x:{r:["data.load"],s:'_0?_0:"None"'},p:[25,54,1129]}]}]}," ",{p:[27,3,1191],t:7,e:"ui-section",a:{label:"Destination"},f:[{p:[28,5,1229],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.destination"],s:'_0?"good":"average"'},p:[28,18,1242]}]},f:[{t:2,x:{r:["data.destination"],s:'_0?_0:"None"'},p:[28,60,1284]}]}]}]}," ",{t:4,f:[{p:{button:[{t:4,f:[{p:[35,9,1513],t:7,e:"ui-button",a:{icon:"eject",action:"unload"},f:["Unload"]}],n:50,r:"data.load",p:[34,7,1486]}," ",{t:4,f:[{p:[38,9,1623],t:7,e:"ui-button",a:{icon:"eject",action:"ejectpai"},f:["Eject PAI"]}],n:50,r:"data.haspai",p:[37,7,1594]}," ",{p:[40,7,1709],t:7,e:"ui-button",a:{icon:"pencil",action:"setid"},f:["Set ID"]}]},t:7,e:"ui-display",a:{title:"Controls",button:0},f:[" ",{p:[42,5,1791],t:7,e:"ui-section",a:{label:"Destination"},f:[{p:[43,7,1831],t:7,e:"ui-button",a:{icon:"pencil",action:"destination"},f:["Set Destination"]}," ",{p:[44,7,1912], -t:7,e:"ui-button",a:{icon:"stop",action:"stop"},f:["Stop"]}," ",{p:[45,7,1973],t:7,e:"ui-button",a:{icon:"play",action:"go"},f:["Go"]}]}," ",{p:[47,5,2047],t:7,e:"ui-section",a:{label:"Home"},f:[{p:[48,7,2080],t:7,e:"ui-button",a:{icon:"home",action:"home"},f:["Go Home"]}," ",{p:[49,7,2144],t:7,e:"ui-button",a:{icon:"pencil",action:"sethome"},f:["Set Home"]}]}," ",{p:[51,5,2231],t:7,e:"ui-section",a:{label:"Settings"},f:[{p:[52,7,2268],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.autoReturn"],s:'_0?"check-square-o":"square-o"'},p:[52,24,2285]}],style:[{t:2,x:{r:["data.autoReturn"],s:'_0?"selected":null'},p:[52,84,2345]}],action:"autoret"},f:["Auto-Return Home"]}," ",{p:[54,7,2449],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.autoPickup"],s:'_0?"check-square-o":"square-o"'},p:[54,24,2466]}],style:[{t:2,x:{r:["data.autoPickup"],s:'_0?"selected":null'},p:[54,84,2526]}],action:"autopick"},f:["Auto-Pickup Crate"]}," ",{p:[56,7,2632],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.reportDelivery"],s:'_0?"check-square-o":"square-o"'},p:[56,24,2649]}],style:[{t:2,x:{r:["data.reportDelivery"],s:'_0?"selected":null'},p:[56,88,2713]}],action:"report"},f:["Report Deliveries"]}]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[31,1,1373]}]},e.exports=a.extend(r.exports)},{205:205}],270:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Relay"},f:[{t:4,f:[{p:[3,3,57],t:7,e:"h2",f:["NETWORK BUFFERS OVERLOADED"]}," ",{p:[4,3,96],t:7,e:"h3",f:["Overload Recovery Mode"]}," ",{p:[5,3,131],t:7,e:"i",f:["This system is suffering temporary outage due to overflow of traffic buffers. Until buffered traffic is processed, all further requests will be dropped. Frequent occurences of this error may indicate insufficient hardware capacity of your network. Please contact your network planning department for instructions on how to resolve this issue."]}," ",{p:[6,3,484],t:7,e:"h3",f:["ADMINISTRATIVE OVERRIDE"]}," ",{p:[7,3,520],t:7,e:"b",f:["CAUTION - Data loss may occur"]}," ",{p:[8,3,562],t:7,e:"ui-button",a:{icon:"signal",action:"restart"},f:["Purge buffered traffic"]}],n:50,r:"data.dos_crashed",p:[2,2,29]},{t:4,n:51,f:[{p:[12,3,663],t:7,e:"ui-section",a:{label:"Relay status"},f:[{p:[13,4,701],t:7,e:"ui-button",a:{icon:"power-off",action:"toggle"},f:[{t:2,x:{r:["data.enabled"],s:'_0?"ENABLED":"DISABLED"'},p:[14,6,752]}]}]}," ",{p:[18,3,836],t:7,e:"ui-section",a:{label:"Network buffer status"},f:[{t:2,r:"data.dos_overload",p:[19,4,883]}," / ",{t:2,r:"data.dos_capacity",p:[19,28,907]}," GQ"]}],r:"data.dos_crashed"}]}]},e.exports=a.extend(r.exports)},{205:205}],271:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={computed:{healthState:function(){var t=this.get("data.health");return t>70?"good":t>50?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" "," ",{p:[15,1,320],t:7,e:"ntosheader"}," ",{t:4,f:[{p:[18,3,363],t:7,e:"ui-notice",f:[{p:[19,5,380],t:7,e:"span",f:["Reconstruction in progress!"]}]}],n:50,r:"data.restoring",p:[17,1,337]},{p:[24,1,451],t:7,e:"ui-display",f:[{p:[26,1,467],t:7,e:"div",a:{"class":"item"},f:[{p:[27,3,489],t:7,e:"div",a:{"class":"itemLabel"},f:["Inserted AI:"]}," ",{p:[30,3,541],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[31,2,569],t:7,e:"ui-button",a:{icon:"eject",action:"PRG_eject",state:[{t:2,x:{r:["data.nocard"],s:'_0?"disabled":null'},p:[31,52,619]}]},f:[{t:2,x:{r:["data.name"],s:'_0?_0:"---"'},p:[31,89,656]}]}]}]}," ",{t:4,f:[{p:[36,2,744],t:7,e:"b",f:["ERROR: ",{t:2,r:"data.error",p:[36,12,754]}]}],n:50,r:"data.error",p:[35,1,723]},{t:4,n:51,f:[{p:[38,2,785],t:7,e:"h2",f:["System Status"]}," ",{p:[39,2,810],t:7,e:"div",a:{"class":"item"},f:[{p:[40,3,832],t:7,e:"div",a:{"class":"itemLabel"},f:["Current AI:"]}," ",{p:[43,3,885],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.name",p:[44,4,915]}]}," ",{p:[46,3,942],t:7,e:"div",a:{"class":"itemLabel"},f:["Status:"]}," ",{p:[49,3,991],t:7,e:"div",a:{"class":"itemContent"},f:[{t:4,f:["Nonfunctional"],n:50,r:"data.isDead",p:[50,4,1021]},{t:4,n:51,f:["Functional"],r:"data.isDead"}]}," ",{p:[56,3,1114],t:7,e:"div",a:{"class":"itemLabel"},f:["System Integrity:"]}," ",{p:[59,3,1173],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[60,4,1203],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.health",p:[60,37,1236]}],state:[{t:2,r:"healthState",p:[61,11,1264]}]},f:[{t:2,x:{r:["adata.health"],s:"Math.round(_0)"},p:[61,28,1281]},"%"]}]}," ",{p:[63,3,1336],t:7,e:"div",a:{"class":"itemLabel"},f:["Active Laws:"]}," ",{p:[66,3,1390],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[67,4,1420],t:7,e:"table",f:[{t:4,f:[{p:[69,6,1462],t:7,e:"tr",f:[{p:[69,10,1466],t:7,e:"td",f:[{p:[69,14,1470],t:7,e:"span",a:{"class":"highlight"},f:[{t:2,r:".",p:[69,38,1494]}]}]}]}],n:52,r:"data.ai_laws",p:[68,5,1433]}]}]}," ",{p:[73,2,1547],t:7,e:"ui-section",a:{label:"Operations"},f:[{p:[74,3,1582],t:7,e:"ui-button",a:{icon:"plus",style:[{t:2,x:{r:["data.restoring"],s:'_0?"disabled":null'},p:[74,33,1612]}],action:"PRG_beginReconstruction"},f:["Begin Reconstruction"]}]}]}],r:"data.error"}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(285)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,285:285}],272:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{t:4,f:[{p:[5,1,91],t:7,e:"ui-button",a:{action:"PRG_switchm",icon:"home",params:'{"target" : "mod"}',state:[{t:2,x:{r:["data.mmode"],s:'_0==1?"disabled":null'},p:[5,80,170]}]},f:["Access Modification"]}],n:50,r:"data.have_id_slot",p:[4,1,64]},{p:[7,1,253],t:7,e:"ui-button",a:{action:"PRG_switchm",icon:"folder-open",params:'{"target" : "manage"}',state:[{t:2,x:{r:["data.mmode"],s:'_0==2?"disabled":null'},p:[7,90,342]}]},f:["Job Management"]}," ",{p:[8,1,411],t:7,e:"ui-button",a:{action:"PRG_switchm",icon:"folder-open",params:'{"target" : "manifest"}',state:[{t:2,x:{r:["data.mmode"],s:'!_0?"disabled":null'},p:[8,92,502]}]},f:["Crew Manifest"]}," ",{t:4,f:[{p:[10,1,593],t:7,e:"ui-button",a:{action:"PRG_print",icon:"print",state:[{t:2,x:{r:["data.has_id","data.mmode"],s:'!_1||_0&&_1==1?null:"disabled"'},p:[10,51,643]}]},f:["Print"]}],n:50,r:"data.have_printer",p:[9,1,566]},{t:4,f:[{p:[14,1,766],t:7,e:"div",a:{"class":"item"},f:[{p:[15,3,788],t:7,e:"h2",f:["Crew Manifest"]}," ",{p:[16,3,814],t:7,e:"br"},"Please use security record computer to modify entries.",{p:[16,61,872],t:7,e:"br"},{p:[16,65,876],t:7,e:"br"}]}," ",{t:4,f:[{p:[19,2,916],t:7,e:"div",a:{"class":"item"},f:[{t:2,r:"name",p:[20,2,937]}," - ",{t:2,r:"rank",p:[20,13,948]}]}],n:52,r:"data.manifest",p:[18,1,890]}],n:50,x:{r:["data.mmode"],s:"!_0"},p:[13,1,745]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.mmode"],s:"_0==2"},f:[{p:[25,1,1008],t:7,e:"div",a:{"class":"item"},f:[{p:[26,3,1030],t:7,e:"h2",f:["Job Management"]}]}," ",{p:[28,1,1063],t:7,e:"table",f:[{p:[29,1,1072],t:7,e:"tr",f:[{p:[29,5,1076],t:7,e:"td",a:{style:"width:25%"},f:[{p:[29,27,1098],t:7,e:"b",f:["Job"]}]},{p:[29,42,1113],t:7,e:"td",a:{style:"width:25%"},f:[{p:[29,64,1135],t:7,e:"b",f:["Slots"]}]},{p:[29,81,1152],t:7,e:"td",a:{style:"width:25%"},f:[{p:[29,103,1174],t:7,e:"b",f:["Open job"]}]},{p:[29,123,1194],t:7,e:"td",a:{style:"width:25%"},f:[{p:[29,145,1216],t:7,e:"b",f:["Close job"]}]}]}," ",{t:4,f:[{p:[32,2,1269],t:7,e:"tr",f:[{p:[32,6,1273],t:7,e:"td",f:[{t:2,r:"title",p:[32,10,1277]}]},{p:[32,24,1291],t:7,e:"td",f:[{t:2,r:"current",p:[32,28,1295]},"/",{t:2,r:"total",p:[32,40,1307]}]},{p:[32,54,1321],t:7,e:"td",f:[{p:[32,58,1325],t:7,e:"ui-button",a:{action:"PRG_open_job",params:['{"target" : "',{t:2,r:"title",p:[32,112,1379]},'"}'],state:[{t:2,x:{r:["status_open"],s:'_0?null:"disabled"'},p:[32,132,1399]}]},f:[{t:2,r:"desc_open",p:[32,169,1436]}]},{p:[32,194,1461],t:7,e:"br"}]},{p:[32,203,1470],t:7,e:"td",f:[{p:[32,207,1474],t:7,e:"ui-button",a:{action:"PRG_close_job",params:['{"target" : "',{t:2,r:"title",p:[32,262,1529]},'"}'],state:[{t:2,x:{r:["status_close"],s:'_0?null:"disabled"'},p:[32,282,1549]}]},f:[{t:2,r:"desc_close",p:[32,320,1587]}]}]}]}],n:52,r:"data.slots",p:[30,1,1244]}]}]},{t:4,n:50,x:{r:["data.mmode"],s:"!(_0==2)"},f:[" ",{p:[40,1,1665],t:7,e:"div",a:{"class":"item"},f:[{p:[41,3,1687],t:7,e:"h2",f:["Access Modification"]}]}," ",{t:4,f:[{p:[45,3,1751],t:7,e:"span",a:{"class":"alert"},f:[{p:[45,23,1771],t:7,e:"i",f:["Please insert the ID into the terminal to proceed."]}]},{p:[45,87,1835],t:7,e:"br"}],n:50,x:{r:["data.has_id"],s:"!_0"},p:[44,1,1727]},{p:[48,1,1852],t:7,e:"div",a:{"class":"item"},f:[{p:[49,3,1874],t:7,e:"div",a:{"class":"itemLabel"},f:["Target Identity:"]}," ",{p:[52,3,1930],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[53,2,1958],t:7,e:"ui-button",a:{icon:"eject",action:"PRG_eject",params:'{"target" : "id"}'},f:[{t:2,r:"data.id_name",p:[53,72,2028]}]}]}]}," ",{p:[56,1,2076],t:7,e:"div",a:{"class":"item"},f:[{p:[57,3,2098],t:7,e:"div",a:{"class":"itemLabel"},f:["Auth Identity:"]}," ",{p:[60,3,2152],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[61,2,2180],t:7,e:"ui-button",a:{icon:"eject",action:"PRG_eject",params:'{"target" : "auth"}'},f:[{t:2,r:"data.auth_name",p:[61,74,2252]}]}]}]}," ",{p:[64,1,2302],t:7,e:"hr"}," ",{t:4,f:[{t:4,f:[{p:[68,2,2362],t:7,e:"div",a:{"class":"item"},f:[{p:[69,4,2385],t:7,e:"h2",f:["Details"]}]}," ",{t:4,f:[{p:[73,2,2436],t:7,e:"div",a:{"class":"item"},f:[{p:[74,4,2459],t:7,e:"div",a:{"class":"itemLabel"},f:["Registered Name:"]}," ",{p:[77,4,2518],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.id_owner",p:[78,3,2547]}]}]}," ",{p:[81,2,2587],t:7,e:"div",a:{"class":"item"},f:[{p:[82,4,2610],t:7,e:"div",a:{"class":"itemLabel"},f:["Rank:"]}," ",{p:[85,4,2658],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.id_rank",p:[86,3,2687]}]}]}," ",{p:[89,2,2726],t:7,e:"div",a:{"class":"item"},f:[{p:[90,4,2749],t:7,e:"div",a:{"class":"itemLabel"},f:["Demote:"]}," ",{p:[93,4,2799],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[94,3,2828],t:7,e:"ui-button",a:{action:"PRG_terminate",icon:"gear",state:[{t:2,x:{r:["data.id_rank"],s:'_0=="Unassigned"?"disabled":null'},p:[94,56,2881]}]},f:["Demote ",{t:2,r:"data.id_owner",p:[94,117,2942]}]}]}]}],n:50,r:"data.minor",p:[72,2,2415]},{t:4,n:51,f:[{p:[99,2,3007],t:7,e:"div",a:{"class":"item"},f:[{p:[100,4,3030],t:7,e:"div",a:{"class":"itemLabel"},f:["Registered Name:"]}," ",{p:[103,4,3089],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[104,3,3118],t:7,e:"ui-button",a:{action:"PRG_edit",icon:"pencil",params:'{"name" : "1"}'},f:[{t:2,r:"data.id_owner",p:[104,70,3185]}]}]}]}," ",{p:[108,2,3239],t:7,e:"div",a:{"class":"item"},f:[{p:[109,4,3262],t:7,e:"h2",f:["Assignment"]}]}," ",{p:[111,3,3294],t:7,e:"ui-button",a:{action:"PRG_togglea",icon:"gear"},f:[{t:2,x:{r:["data.assignments"],s:'_0?"Hide assignments":"Show assignments"'},p:[111,47,3338]}]}," ",{p:[112,2,3415],t:7,e:"div",a:{"class":"item"},f:[{p:[113,4,3438],t:7,e:"span",a:{id:"allvalue.jobsslot"},f:[]}]}," ",{p:[117,2,3495],t:7,e:"div",a:{"class":"item"},f:[{t:4,f:[{p:[119,4,3547],t:7,e:"div",a:{id:"all-value.jobs"},f:[{p:[120,3,3576],t:7,e:"table",f:[{p:[121,5,3589],t:7,e:"tr",f:[{p:[122,4,3598],t:7,e:"th",f:["Command"]}," ",{p:[123,4,3619],t:7,e:"td",f:[{p:[124,6,3630],t:7,e:"ui-button",a:{action:"PRG_assign",params:'{"assign_target" : "Captain"}',state:[{t:2,x:{r:["data.id_rank"],s:'_0=="Captain"?"selected":null'},p:[124,83,3707]}]},f:["Captain"]}]}]}," ",{p:[127,5,3804],t:7,e:"tr",f:[{p:[128,4,3813],t:7,e:"th",f:["Special"]}," ",{p:[129,4,3834],t:7,e:"td",f:[{p:[130,6,3845],t:7,e:"ui-button",a:{action:"PRG_assign",params:'{"assign_target" : "Custom"}'},f:["Custom"]}]}]}," ",{p:[133,5,3959],t:7,e:"tr",f:[{p:[134,4,3968],t:7,e:"th",a:{style:"color: '#FFA500';"},f:["Engineering"]}," ",{p:[135,4,4019],t:7,e:"td",f:[{t:4,f:[{p:[137,5,4067],t:7,e:"ui-button",a:{action:"PRG_assign",params:['{"assign_target" : "',{t:2,r:"job",p:[137,64,4126]},'"}'],state:[{t:2,x:{r:["data.id_rank","job"],s:'_0==_1?"selected":null'},p:[137,82,4144]}]},f:[{t:2,r:"display_name",p:[137,127,4189]}]}],n:52,r:"data.engineering_jobs",p:[136,6,4030]}]}]}," ",{p:[141,5,4260],t:7,e:"tr",f:[{p:[142,4,4269],t:7,e:"th",a:{style:"color: '#008000';"},f:["Medical"]}," ",{p:[143,4,4316],t:7,e:"td",f:[{t:4,f:[{p:[145,5,4360],t:7,e:"ui-button",a:{action:"PRG_assign",params:['{"assign_target" : "',{t:2,r:"job",p:[145,64,4419]},'"}'],state:[{t:2,x:{r:["data.id_rank","job"],s:'_0==_1?"selected":null'},p:[145,82,4437]}]},f:[{t:2,r:"display_name",p:[145,127,4482]}]}],n:52,r:"data.medical_jobs",p:[144,6,4327]}]}]}," ",{p:[149,5,4553],t:7,e:"tr",f:[{p:[150,4,4562],t:7,e:"th",a:{style:"color: '#800080';"},f:["Science"]}," ",{p:[151,4,4609],t:7,e:"td",f:[{t:4,f:[{p:[153,5,4653],t:7,e:"ui-button",a:{action:"PRG_assign",params:['{"assign_target" : "',{t:2,r:"job",p:[153,64,4712]},'"}'],state:[{t:2,x:{r:["data.id_rank","job"],s:'_0==_1?"selected":null'},p:[153,82,4730]}]},f:[{t:2,r:"display_name",p:[153,127,4775]}]}],n:52,r:"data.science_jobs",p:[152,6,4620]}]}]}," ",{p:[157,5,4846],t:7,e:"tr",f:[{p:[158,4,4855],t:7,e:"th",a:{style:"color: '#DD0000';"},f:["Security"]}," ",{p:[159,4,4903],t:7,e:"td",f:[{t:4,f:[{p:[161,5,4948],t:7,e:"ui-button",a:{action:"PRG_assign",params:['{"assign_target" : "',{t:2,r:"job",p:[161,64,5007]},'"}'],state:[{t:2,x:{r:["data.id_rank","job"],s:'_0==_1?"selected":null'},p:[161,82,5025]}]},f:[{t:2,r:"display_name",p:[161,127,5070]}]}],n:52,r:"data.security_jobs",p:[160,6,4914]}]}]}," ",{p:[165,5,5141],t:7,e:"tr",f:[{p:[166,4,5150],t:7,e:"th",a:{style:"color: '#cc6600';"},f:["Cargo"]}," ",{p:[167,4,5195],t:7,e:"td",f:[{t:4,f:[{p:[169,5,5237],t:7,e:"ui-button",a:{action:"PRG_assign",params:['{"assign_target" : "',{t:2,r:"job",p:[169,64,5296]},'"}'],state:[{t:2,x:{r:["data.id_rank","job"],s:'_0==_1?"selected":null'},p:[169,82,5314]}]},f:[{t:2,r:"display_name",p:[169,127,5359]}]}],n:52,r:"data.cargo_jobs",p:[168,6,5206]}]}]}," ",{p:[173,5,5430],t:7,e:"tr",f:[{p:[174,4,5439],t:7,e:"th",a:{style:"color: '#808080';"},f:["Civilian"]}," ",{p:[175,4,5487],t:7,e:"td",f:[{t:4,f:[{p:[177,5,5532],t:7,e:"ui-button",a:{action:"PRG_assign",params:['{"assign_target" : "',{t:2,r:"job",p:[177,64,5591]},'"}'],state:[{t:2,x:{r:["data.id_rank","job"],s:'_0==_1?"selected":null'},p:[177,82,5609]}]},f:[{t:2,r:"display_name",p:[177,127,5654]}]}],n:52,r:"data.civilian_jobs",p:[176,6,5498]}]}]}," ",{t:4,f:[{p:[182,4,5757],t:7,e:"tr",f:[{p:[183,6,5768],t:7,e:"th",a:{style:"color: '#A52A2A';"},f:["CentCom"]}," ",{p:[184,6,5817],t:7,e:"td",f:[{t:4,f:[{p:[186,7,5862],t:7,e:"ui-button",a:{action:"PRG_assign",params:['{"assign_target" : "',{t:2,r:"job",p:[186,66,5921]},'"}'],state:[{t:2,x:{r:["data.id_rank","job"],s:'_0==_1?"selected":null'},p:[186,84,5939]}]},f:[{t:2,r:"display_name",p:[186,129,5984]}]}],n:52,r:"data.centcom_jobs",p:[185,5,5827]}]}]}],n:50,r:"data.centcom_access",p:[181,5,5725]}]}]}],n:50,r:"data.assignments",p:[118,4,3518]}]}],r:"data.minor"}," ",{t:4,f:[{p:[198,4,6153],t:7,e:"div",a:{"class":"item"},f:[{p:[199,3,6175],t:7,e:"h2",f:["Central Command"]}]}," ",{p:[201,4,6215],t:7,e:"div",a:{"class":"item",style:"width: 100%"},f:[{t:4,f:[{p:[203,5,6296],t:7,e:"div",a:{"class":"itemContentWide"},f:[{p:[204,5,6331],t:7,e:"ui-button",a:{action:"PRG_access",params:['{"access_target" : "',{t:2,r:"ref",p:[204,64,6390]},'", "allowed" : "',{t:2,r:"allowed",p:[204,87,6413]},'"}'],state:[{t:2,x:{r:["allowed"],s:'_0?"toggle":null'},p:[204,109,6435]}]},f:[{t:2,r:"desc",p:[204,140,6466]}]}]}],n:52,r:"data.all_centcom_access",p:[202,3,6257]}]}],n:50,r:"data.centcom_access",p:[197,2,6121]},{t:4,n:51,f:[{p:[209,4,6538],t:7,e:"div",a:{"class":"item"},f:[{p:[210,3,6560],t:7,e:"h2",f:[{t:2,r:"data.station_name",p:[210,7,6564]}]}]}," ",{p:[212,4,6606],t:7,e:"div",a:{"class":"item",style:"width: 100%"},f:[{t:4,f:[{p:[214,5,6676],t:7,e:"div",a:{style:"float: left; width: 175px; min-height: 250px"},f:[{p:[215,4,6739],t:7,e:"div",a:{"class":"average"},f:[{p:[215,25,6760],t:7,e:"ui-button",a:{action:"PRG_regsel",state:[{t:2,x:{r:["selected"],s:'_0?"toggle":null'},p:[215,63,6798]}],params:['{"region" : "',{t:2,r:"regid",p:[215,116,6851]},'"}']},f:[{p:[215,129,6864],t:7,e:"b",f:[{t:2,r:"name",p:[215,132,6867]}]}]}]}," ",{p:[216,4,6902],t:7,e:"br"}," ",{t:4,f:[{p:[218,6,6938],t:7,e:"div",a:{"class":"itemContentWide"},f:[{p:[219,5,6973],t:7,e:"ui-button",a:{action:"PRG_access",params:['{"access_target" : "',{t:2,r:"ref",p:[219,64,7032]},'", "allowed" : "',{t:2,r:"allowed",p:[219,87,7055]},'"}'],state:[{t:2,x:{r:["allowed"],s:'_0?"toggle":null'},p:[219,109,7077]}]},f:[{t:2,r:"desc",p:[219,140,7108]}]}]}],n:52,r:"accesses",p:[217,6,6913]}]}],n:52,r:"data.regions",p:[213,3,6648]}]}],r:"data.centcom_access"}],n:50,r:"data.has_id",p:[67,3,2340]}],n:50,r:"data.authenticated",p:[66,1,2310]}]}],x:{r:["data.mmode"],s:"!_0"}}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(285)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,285:285}],273:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{chargeState:function(t){var e=this.get("data.battery.max");return t>e/2?"good":t>e/4?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" "," ",{p:[15,1,311],t:7,e:"ntosheader"}," ",{p:[17,1,328],t:7,e:"ui-display",f:[{p:[18,2,343],t:7,e:"i",f:["Welcome to computer configuration utility. Please consult your system administrator if you have any questions about your device."]},{p:[18,137,478],t:7,e:"hr"}," ",{p:[19,2,485],t:7,e:"ui-display",a:{title:"Power Supply"},f:[{p:[20,3,522],t:7,e:"ui-section",a:{label:"Power Usage"},f:[{t:2,r:"data.power_usage",p:[21,4,559]},"W"]}," ",{t:4,f:[{p:[25,4,630],t:7,e:"ui-section",a:{label:"Battery Status"},f:["Active"]}," ",{p:[28,4,701],t:7,e:"ui-section",a:{label:"Battery Rating"},f:[{t:2,r:"data.battery.max",p:[29,5,742]}]}," ",{p:[31,4,785],t:7,e:"ui-section",a:{label:"Battery Charge"},f:[{p:[32,5,826],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"adata.battery.max",p:[32,26,847]}],value:[{t:2,r:"adata.battery.charge",p:[32,56,877]}],state:[{t:2,x:{r:["chargeState","adata.battery.charge"],s:"_0(_1)"},p:[32,89,910]}]},f:[{t:2,x:{r:["adata.battery.charge"],s:"Math.round(_0)"},p:[32,128,949]},"/",{t:2,r:"adata.battery.max",p:[32,165,986]}]}]}],n:50,r:"data.battery",p:[24,3,605]},{t:4,n:51,f:[{p:[35,4,1051],t:7,e:"ui-section",a:{label:"Battery Status"},f:["Not Available"]}],r:"data.battery"}]}," ",{p:[41,2,1156],t:7,e:"ui-display",a:{title:"File System"},f:[{p:[42,3,1192],t:7,e:"ui-section",a:{label:"Used Capacity"},f:[{p:[43,4,1231],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"adata.disk_size",p:[43,25,1252]}],value:[{t:2,r:"adata.disk_used",p:[43,53,1280]}],state:"good"},f:[{t:2,x:{r:["adata.disk_used"],s:"Math.round(_0)"},p:[43,87,1314]},"GQ / ",{t:2,r:"adata.disk_size",p:[43,123,1350]},"GQ"]}]}]}," ",{p:[47,2,1419],t:7,e:"ui-display",a:{title:"Computer Components"},f:[{t:4,f:[{p:[49,4,1491],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"name",p:[49,26,1513]}]},f:[{p:[50,5,1529],t:7,e:"div",a:{style:"display: table-caption; margin-left: 3px"},f:[{t:2,r:"desc",p:[50,59,1583]}]}," ",{p:[52,5,1605],t:7,e:"ui-section",a:{label:"State"},f:[{p:[53,6,1638],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["critical"],s:'_0?"disabled":null'},p:[53,24,1656]}],action:"PC_toggle_component",params:['{"name": "',{t:2,r:"name",p:[53,105,1737]},'"}']},f:[{t:2,x:{r:["enabled"],s:'_0?"Enabled":"Disabled"'},p:[54,7,1757]}]}]}," ",{t:4,f:[{p:[59,6,1868],t:7,e:"ui-section",a:{label:"Power Usage"},f:[{t:2,r:"powerusage",p:[60,7,1908]},"W"]}],n:50,r:"powerusage",p:[58,5,1843]}]}," ",{p:[64,4,1985],t:7,e:"br"}],n:52,r:"data.hardware",p:[48,3,1463]}]}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(285)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,285:285}],274:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{t:4,f:[{p:[7,3,103],t:7,e:"h2",f:["An error has occurred and this program can not continue."]}," Additional information: ",{t:2,r:"data.error",p:[8,27,196]},{p:[8,41,210],t:7,e:"br"}," ",{p:[9,3,218],t:7,e:"i",f:["Please try again. If the problem persists contact your system administrator for assistance."]}," ",{p:[10,3,320],t:7,e:"ui-button",a:{action:"PRG_closefile"},f:["Restart program"]}],n:50,r:"data.error",p:[6,2,81]},{t:4,n:51,f:[{t:4,f:[{p:[13,4,422],t:7,e:"h2",f:["Viewing file ",{t:2,r:"data.filename",p:[13,21,439]}]}," ",{p:[14,4,466],t:7,e:"div",a:{"class":"item"},f:[{p:[15,4,489],t:7,e:"ui-button",a:{action:"PRG_closefile"},f:["CLOSE"]}," ",{p:[16,4,545],t:7,e:"ui-button",a:{action:"PRG_edit"},f:["EDIT"]}," ",{p:[17,4,595],t:7,e:"ui-button",a:{action:"PRG_printfile"},f:["PRINT"]}," "]},{p:[18,10,657],t:7,e:"hr"}," ",{t:3,r:"data.filedata",p:[19,4,666]}],n:50,r:"data.filename",p:[12,3,396]},{t:4,n:51,f:[{p:[21,4,702],t:7,e:"h2",f:["Available files (local):"]}," ",{p:[22,4,740],t:7,e:"table",f:[{p:[23,5,753],t:7,e:"tr",f:[{p:[24,6,764],t:7,e:"th",f:["File name"]}," ",{p:[25,6,789],t:7,e:"th",f:["File type"]}," ",{p:[26,6,814],t:7,e:"th",f:["File size (GQ)"]}," ",{p:[27,6,844],t:7,e:"th",f:["Operations"]}]}," ",{t:4,f:[{p:[30,6,907],t:7,e:"tr",f:[{p:[31,7,919],t:7,e:"td",f:[{t:2,r:"name",p:[31,11,923]}]}," ",{p:[32,7,944],t:7,e:"td",f:[".",{t:2,r:"type",p:[32,12,949]}]}," ",{p:[33,7,970],t:7,e:"td",f:[{t:2,r:"size",p:[33,11,974]},"GQ"]}," ",{p:[34,7,997],t:7,e:"td",f:[{p:[35,8,1010],t:7,e:"ui-button",a:{action:"PRG_openfile",params:['{"name": "',{t:2,r:"name",p:[35,59,1061]},'"}']},f:["VIEW"]}," ",{p:[36,8,1098],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["undeletable"],s:'_0?"disabled":null'},p:[36,26,1116]}],action:"PRG_deletefile",params:['{"name": "',{t:2,r:"name",p:[36,105,1195]},'"}']},f:["DELETE"]}," ",{p:[37,8,1234],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["undeletable"],s:'_0?"disabled":null'},p:[37,26,1252]}],action:"PRG_rename",params:['{"name": "',{t:2,r:"name",p:[37,101,1327]},'"}']},f:["RENAME"]}," ",{p:[38,8,1366],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["undeletable"],s:'_0?"disabled":null'},p:[38,26,1384]}],action:"PRG_clone",params:['{"name": "',{t:2,r:"name",p:[38,100,1458]},'"}']},f:["CLONE"]}," ",{t:4,f:[{p:[40,9,1531],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["undeletable"],s:'_0?"disabled":null'},p:[40,27,1549]}],action:"PRG_copytousb",params:['{"name": "',{t:2,r:"name",p:[40,105,1627]},'"}']},f:["EXPORT"]}],n:50,r:"data.usbconnected",p:[39,8,1496]}]}]}],n:52,r:"data.files",p:[29,5,880]}]}," ",{t:4,f:[{p:[47,4,1761],t:7,e:"h2",f:["Available files (portable device):"]}," ",{p:[48,4,1809],t:7,e:"table",f:[{p:[49,5,1822],t:7,e:"tr",f:[{p:[50,6,1833],t:7,e:"th",f:["File name"]}," ",{p:[51,6,1858],t:7,e:"th",f:["File type"]}," ",{p:[52,6,1883],t:7,e:"th",f:["File size (GQ)"]}," ",{p:[53,6,1913],t:7,e:"th",f:["Operations"]}]}," ",{t:4,f:[{p:[56,6,1979],t:7,e:"tr",f:[{p:[57,7,1991],t:7,e:"td",f:[{t:2,r:"name",p:[57,11,1995]}]}," ",{p:[58,7,2016],t:7,e:"td",f:[".",{t:2,r:"type",p:[58,12,2021]}]}," ",{p:[59,7,2042],t:7,e:"td",f:[{t:2,r:"size",p:[59,11,2046]},"GQ"]}," ",{p:[60,7,2069],t:7,e:"td",f:[{p:[61,8,2082],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["undeletable"],s:'_0?"disabled":null'},p:[61,26,2100]}],action:"PRG_usbdeletefile",params:['{"name": "',{t:2,r:"name",p:[61,108,2182]},'"}']},f:["DELETE"]}," ",{t:4,f:[{p:[63,9,2256],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["undeletable"],s:'_0?"disabled":null'},p:[63,27,2274]}],action:"PRG_copyfromusb",params:['{"name": "',{t:2,r:"name",p:[63,107,2354]},'"}']},f:["IMPORT"]}],n:50,r:"data.usbconnected",p:[62,8,2221]}]}]}],n:52,r:"data.usbfiles",p:[55,5,1949]}]}],n:50,r:"data.usbconnected",p:[46,4,1731]}," ",{p:[70,4,2470],t:7,e:"ui-button",a:{action:"PRG_newtextfile"},f:["NEW DATA FILE"]}],r:"data.filename"}],r:"data.error"}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(285)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,285:285}],275:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{p:[5,2,79],t:7,e:"i",f:["No program loaded. Please select program from list below."]}," ",{p:[6,2,146],t:7,e:"table",f:[{t:4,f:[{p:[8,4,185],t:7,e:"tr",f:[{p:[8,8,189],t:7,e:"td",f:[{p:[8,12,193],t:7,e:"ui-button",a:{action:"PC_runprogram",params:['{"name": "',{t:2,r:"name",p:[8,64,245]},'"}']},f:[{t:2,r:"desc",p:[9,5,263]}]}]},{p:[11,4,293],t:7,e:"td",f:[{p:[11,8,297],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["running"],s:'_0?null:"disabled"'},p:[11,26,315]}],icon:"close",action:"PC_killprogram",params:['{"name": "',{t:2,r:"name",p:[11,114,403]},'"}']}}]}]}],n:52,r:"data.programs",p:[7,3,157]}]}," ",{p:[14,2,454],t:7,e:"br"},{p:[14,6,458],t:7,e:"br"}," ",{t:4,f:[{p:[16,3,491],t:7,e:"ui-button",a:{action:"PC_toggle_light",style:[{t:2,x:{r:["data.light_on"],s:'_0?"selected":null'},p:[16,46,534]}]},f:["Toggle Flashlight"]},{p:[16,114,602],t:7,e:"br"}," ",{p:[17,3,610],t:7,e:"ui-button",a:{action:"PC_light_color"},f:["Change Flashlight Color ",{p:[17,62,669],t:7,e:"span",a:{style:["border:1px solid #161616; background-color: ",{t:2,r:"data.comp_light_color",p:[17,119,726]},";"]},f:["   "]}]}],n:50,r:"data.has_light",p:[15,2,465]}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(285)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,285:285}],276:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{t:4,f:[{p:[6,3,105],t:7,e:"h1",f:["ADMINISTRATIVE MODE"]}],n:50,r:"data.adminmode",p:[5,2,79]}," ",{t:4,f:[{p:[10,3,170],t:7,e:"div",a:{"class":"itemLabel"},f:["Current channel:"]}," ",{p:[13,3,229],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.title",p:[14,4,259]}]}," ",{p:[16,3,287],t:7,e:"div",a:{"class":"itemLabel"},f:["Operator access:"]}," ",{p:[19,3,346],t:7,e:"div",a:{"class":"itemContent"},f:[{t:4,f:[{p:[21,5,406],t:7,e:"b",f:["Enabled"]}],n:50,r:"data.is_operator",p:[20,4,376]},{t:4,n:51,f:[{p:[23,5,439],t:7,e:"b",f:["Disabled"]}],r:"data.is_operator"}]}," ",{p:[26,3,480],t:7,e:"div",a:{"class":"itemLabel"},f:["Controls:"]}," ",{p:[29,3,532],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[30,4,562],t:7,e:"table",f:[{p:[31,5,575],t:7,e:"tr",f:[{p:[31,9,579],t:7,e:"td",f:[{p:[31,13,583],t:7,e:"ui-button",a:{action:"PRG_speak"},f:["Send message"]}]}]},{p:[32,5,643],t:7,e:"tr",f:[{p:[32,9,647],t:7,e:"td",f:[{p:[32,13,651],t:7,e:"ui-button",a:{action:"PRG_changename"},f:["Change nickname"]}]}]},{p:[33,5,719],t:7,e:"tr",f:[{p:[33,9,723],t:7,e:"td",f:[{p:[33,13,727],t:7,e:"ui-button",a:{action:"PRG_toggleadmin"},f:["Toggle administration mode"]}]}]},{p:[34,5,807],t:7,e:"tr",f:[{p:[34,9,811],t:7,e:"td",f:[{p:[34,13,815],t:7,e:"ui-button",a:{action:"PRG_leavechannel"},f:["Leave channel"]}]}]},{p:[35,5,883],t:7,e:"tr",f:[{p:[35,9,887],t:7,e:"td",f:[{p:[35,13,891],t:7,e:"ui-button",a:{action:"PRG_savelog"},f:["Save log to local drive"]}," ",{t:4,f:[{p:[37,6,995],t:7,e:"tr",f:[{p:[37,10,999],t:7,e:"td",f:[{p:[37,14,1003],t:7,e:"ui-button",a:{action:"PRG_renamechannel"},f:["Rename channel"]}]}]},{p:[38,6,1074],t:7,e:"tr",f:[{p:[38,10,1078],t:7,e:"td",f:[{p:[38,14,1082],t:7,e:"ui-button",a:{action:"PRG_setpassword"},f:["Set password"]}]}]},{p:[39,6,1149],t:7,e:"tr",f:[{p:[39,10,1153],t:7,e:"td",f:[{p:[39,14,1157],t:7,e:"ui-button",a:{action:"PRG_deletechannel"},f:["Delete channel"]}]}]}],n:50,r:"data.is_operator",p:[36,5,964]}]}]}]}]}," ",{p:[43,3,1263],t:7,e:"b",f:["Chat Window"]}," ",{p:[44,4,1286],t:7,e:"div",a:{"class":"statusDisplay",style:"overflow: auto;"},f:[{p:[45,4,1342],t:7,e:"div",a:{"class":"item"},f:[{p:[46,5,1366],t:7,e:"div",a:{"class":"itemContent",style:"width: 100%;"},f:[{t:4,f:[{t:2,r:"msg",p:[48,7,1450]},{p:[48,14,1457],t:7,e:"br"}],n:52,r:"data.messages",p:[47,6,1419]}]}]}]}," ",{p:[53,3,1516],t:7,e:"b",f:["Connected Users"]},{p:[53,25,1538],t:7,e:"br"}," ",{t:4,f:[{t:2,r:"name",p:[55,4,1573]},{p:[55,12,1581],t:7,e:"br"}],n:52,r:"data.clients",p:[54,3,1546]}],n:50,r:"data.title",p:[9,2,148]},{t:4,n:51,f:[{p:[58,3,1613],t:7,e:"b",f:["Controls:"]}," ",{p:[59,3,1633],t:7,e:"table",f:[{p:[60,4,1645],t:7,e:"tr",f:[{p:[60,8,1649],t:7,e:"td",f:[{p:[60,12,1653],t:7,e:"ui-button",a:{action:"PRG_changename"},f:["Change nickname"]}]}]},{p:[61,4,1720],t:7,e:"tr",f:[{p:[61,8,1724],t:7,e:"td",f:[{p:[61,12,1728],t:7,e:"ui-button",a:{action:"PRG_newchannel"},f:["New Channel"]}]}]},{p:[62,4,1791],t:7,e:"tr",f:[{p:[62,8,1795],t:7,e:"td",f:[{p:[62,12,1799],t:7,e:"ui-button",a:{action:"PRG_toggleadmin"},f:["Toggle administration mode"]}]}]}]}," ",{p:[64,3,1889],t:7,e:"b",f:["Available channels:"]}," ",{p:[65,3,1919],t:7,e:"table",f:[{t:4,f:[{p:[67,4,1964],t:7,e:"tr",f:[{p:[67,8,1968],t:7,e:"td",f:[{p:[67,12,1972],t:7,e:"ui-button",a:{action:"PRG_joinchannel",params:['{"id": "',{t:2,r:"id",p:[67,64,2024]},'"}']},f:[{t:2,r:"chan",p:[67,74,2034]}]},{p:[67,94,2054],t:7,e:"br"}]}]}],n:52,r:"data.all_channels",p:[66,3,1930]}]}],r:"data.title"}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(285)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,285:285}],277:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{t:4,f:["##SYSTEM ERROR: ",{t:2,r:"data.error",p:[6,19,117]},{p:[6,33,131],t:7,e:"ui-button",a:{action:"PRG_reset"},f:["RESET"]}],n:50,r:"data.error",p:[5,2,79]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.target"],s:"_0"},f:["##DoS traffic generator active. Tx: ",{t:2,r:"data.speed",p:[8,39,243]},"GQ/s",{p:[8,57,261],t:7,e:"br"}," ",{t:4,f:[{t:2,r:"nums",p:[10,4,300]},{p:[10,12,308],t:7,e:"br"}],n:52,r:"data.dos_strings",p:[9,3,269]}," ",{p:[12,3,329],t:7,e:"ui-button",a:{action:"PRG_reset"},f:["ABORT"]}]},{t:4,n:50,x:{r:["data.target"],s:"!(_0)"},f:[" ##DoS traffic generator ready. Select target device.",{p:[14,55,443],t:7,e:"br"}," ",{t:4,f:["Targeted device ID: ",{t:2,r:"data.focus",p:[16,24,494]}],n:50,r:"data.focus",p:[15,3,451]},{t:4,n:51,f:["Targeted device ID: None"],r:"data.focus"}," ",{p:[20,3,564],t:7,e:"ui-button",a:{action:"PRG_execute"},f:["EXECUTE"]},{p:[20,54,615],t:7,e:"div",a:{style:"clear:both"}}," Detected devices on network:",{p:[21,31,677],t:7,e:"br"}," ",{t:4,f:[{p:[23,4,711],t:7,e:"ui-button",a:{action:"PRG_target_relay",params:['{"targid": "',{t:2,r:"id",p:[23,61,768]},'"}']},f:[{t:2,r:"id",p:[23,71,778]}]}],n:52,r:"data.relays",p:[22,3,685]}]}],r:"data.error"}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(285)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,285:285}],278:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{p:[5,2,79],t:7,e:"i",f:["Welcome to software download utility. Please select which software you wish to download."]},{p:[5,97,174],t:7,e:"hr"}," ",{t:4,f:[{p:[7,3,203],t:7,e:"ui-display",a:{title:"Download Error"},f:[{p:[8,4,243],t:7,e:"ui-section",a:{label:"Information"},f:[{t:2,r:"data.error",p:[9,5,281]}]}," ",{p:[11,4,318],t:7,e:"ui-section",a:{label:"Reset Program"},f:[{p:[12,5,358],t:7,e:"ui-button",a:{icon:"times",action:"PRG_reseterror"},f:["RESET"]}]}]}],n:50,r:"data.error",p:[6,2,181]},{t:4,n:51,f:[{t:4,f:[{p:[19,4,516],t:7,e:"ui-display",a:{title:"Download Running"},f:[{p:[20,5,559],t:7,e:"i",f:["Please wait..."]}," ",{p:[21,5,586],t:7,e:"ui-section",a:{label:"File name"},f:[{t:2,r:"data.downloadname",p:[22,6,623]}]}," ",{p:[24,5,669],t:7,e:"ui-section",a:{label:"File description"},f:[{t:2,r:"data.downloaddesc",p:[25,6,713]}]}," ",{p:[27,5,759],t:7,e:"ui-section", -a:{label:"File size"},f:[{t:2,r:"data.downloadsize",p:[28,6,796]},"GQ"]}," ",{p:[30,5,844],t:7,e:"ui-section",a:{label:"Transfer Rate"},f:[{t:2,r:"data.downloadspeed",p:[31,6,885]}," GQ/s"]}," ",{p:[33,5,937],t:7,e:"ui-section",a:{label:"Download progress"},f:[{p:[34,6,982],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"adata.downloadsize",p:[34,27,1003]}],value:[{t:2,r:"adata.downloadcompletion",p:[34,58,1034]}],state:"good"},f:[{t:2,x:{r:["adata.downloadcompletion"],s:"Math.round(_0)"},p:[34,101,1077]},"GQ / ",{t:2,r:"adata.downloadsize",p:[34,146,1122]},"GQ"]}]}]}],n:50,r:"data.downloadname",p:[18,3,486]}],r:"data.error"}," ",{t:4,f:[{t:4,f:[{p:[41,4,1270],t:7,e:"ui-display",a:{title:"File System"},f:[{p:[42,5,1308],t:7,e:"ui-section",a:{label:"Used Capacity"},f:[{p:[43,6,1349],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"adata.disk_size",p:[43,27,1370]}],value:[{t:2,r:"adata.disk_used",p:[43,55,1398]}],state:"good"},f:[{t:2,x:{r:["adata.disk_used"],s:"Math.round(_0)"},p:[43,89,1432]},"GQ / ",{t:2,r:"adata.disk_size",p:[43,125,1468]},"GQ"]}]}]}," ",{p:[47,4,1545],t:7,e:"ui-display",a:{title:"Primary Software Repository"},f:[{t:4,f:[{p:[49,6,1642],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"filedesc",p:[49,28,1664]}]},f:[{p:[50,7,1686],t:7,e:"div",a:{style:"display: table-caption; margin-left: 3px"},f:[{t:2,r:"fileinfo",p:[50,61,1740]}]}," ",{p:[52,7,1774],t:7,e:"ui-section",a:{label:"File name"},f:[{t:2,r:"filename",p:[53,8,1813]}," (",{t:2,r:"size",p:[53,22,1827]}," GQ)"]}," ",{p:[55,7,1868],t:7,e:"ui-section",a:{label:"Compatibility"},f:[{t:2,r:"compatibility",p:[56,8,1911]}]}," ",{p:[58,7,1957],t:7,e:"ui-button",a:{icon:"signal",action:"PRG_downloadfile",params:['{"filename": "',{t:2,r:"filename",p:[58,80,2030]},'"}']},f:["DOWNLOAD"]}]}," ",{p:[62,6,2113],t:7,e:"br"}],n:52,r:"data.downloadable_programs",p:[48,5,1599]}]}," ",{t:4,f:[{p:[67,5,2194],t:7,e:"ui-display",a:{title:"UNKNOWN Software Repository"},f:[{p:[68,6,2249],t:7,e:"i",f:["Please note that Nanotrasen does not recommend download of software from non-official servers."]}," ",{t:4,f:[{p:[70,7,2395],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"filedesc",p:[70,29,2417]}]},f:[{p:[71,8,2440],t:7,e:"div",a:{style:"display: table-caption; margin-left: 3px"},f:[{t:2,r:"fileinfo",p:[71,62,2494]}]}," ",{p:[73,8,2530],t:7,e:"ui-section",a:{label:"File name"},f:[{t:2,r:"filename",p:[74,9,2570]}," (",{t:2,r:"size",p:[74,23,2584]}," GQ)"]}," ",{p:[76,8,2627],t:7,e:"ui-section",a:{label:"Compatibility"},f:[{t:2,r:"compatibility",p:[77,9,2671]}]}," ",{p:[79,8,2719],t:7,e:"ui-button",a:{icon:"signal",action:"PRG_downloadfile",params:['{"filename": "',{t:2,r:"filename",p:[79,81,2792]},'"}']},f:["DOWNLOAD"]}]}," ",{p:[83,7,2879],t:7,e:"br"}],n:52,r:"data.hacked_programs",p:[69,6,2357]}]}],n:50,r:"data.hackedavailable",p:[66,4,2160]}],n:50,x:{r:["data.error"],s:"!_0"},p:[40,3,1246]}],n:50,x:{r:["data.downloadname"],s:"!_0"},p:[39,2,1216]}," ",{p:[89,2,2954],t:7,e:"br"},{p:[89,6,2958],t:7,e:"br"},{p:[89,10,2962],t:7,e:"hr"},{p:[89,14,2966],t:7,e:"i",f:["NTOS v2.0.4b Copyright Nanotrasen 2557 - 2559"]}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(285)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,285:285}],279:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{p:[6,2,81],t:7,e:"ui-display",a:{title:"WIRELESS CONNECTIVITY"},f:[{p:[8,3,129],t:7,e:"ui-section",a:{label:"Active NTNetRelays"},f:[{p:[9,4,173],t:7,e:"b",f:[{t:2,r:"data.ntnetrelays",p:[9,7,176]}]}]}," ",{t:4,f:[{p:[12,4,250],t:7,e:"ui-section",a:{label:"System status"},f:[{p:[13,6,291],t:7,e:"b",f:[{t:2,x:{r:["data.ntnetstatus"],s:'_0?"ENABLED":"DISABLED"'},p:[13,9,294]}]}]}," ",{p:[15,4,366],t:7,e:"ui-section",a:{label:"Control"},f:[{p:[17,4,401],t:7,e:"ui-button",a:{icon:"plus",action:"toggleWireless"},f:["TOGGLE"]}]}," ",{p:[21,4,500],t:7,e:"br"},{p:[21,8,504],t:7,e:"br"}," ",{p:[22,4,513],t:7,e:"i",f:["Caution - Disabling wireless transmitters when using wireless device may prevent you from re-enabling them again!"]}],n:50,r:"data.ntnetrelays",p:[11,3,221]},{t:4,n:51,f:[{p:[24,4,650],t:7,e:"br"},{p:[24,8,654],t:7,e:"p",f:["Wireless coverage unavailable, no relays are connected."]}],r:"data.ntnetrelays"}]}," ",{p:[29,2,750],t:7,e:"ui-display",a:{title:"FIREWALL CONFIGURATION"},f:[{p:[31,2,798],t:7,e:"table",f:[{p:[32,3,809],t:7,e:"tr",f:[{p:[33,4,818],t:7,e:"th",f:["PROTOCOL"]},{p:[34,4,835],t:7,e:"th",f:["STATUS"]},{p:[35,4,850],t:7,e:"th",f:["CONTROL"]}]},{p:[36,3,865],t:7,e:"tr",f:[" ",{p:[37,4,874],t:7,e:"td",f:["Software Downloads"]},{p:[38,4,901],t:7,e:"td",f:[{t:2,x:{r:["data.config_softwaredownload"],s:'_0?"ENABLED":"DISABLED"'},p:[38,8,905]}]},{p:[39,4,967],t:7,e:"td",f:[" ",{p:[39,9,972],t:7,e:"ui-button",a:{action:"toggle_function",params:'{"id": "1"}'},f:["TOGGLE"]}]}]},{p:[40,3,1051],t:7,e:"tr",f:[" ",{p:[41,4,1060],t:7,e:"td",f:["Peer to Peer Traffic"]},{p:[42,4,1089],t:7,e:"td",f:[{t:2,x:{r:["data.config_peertopeer"],s:'_0?"ENABLED":"DISABLED"'},p:[42,8,1093]}]},{p:[43,4,1149],t:7,e:"td",f:[{p:[43,8,1153],t:7,e:"ui-button",a:{action:"toggle_function",params:'{"id": "2"}'},f:["TOGGLE"]}]}]},{p:[44,3,1232],t:7,e:"tr",f:[" ",{p:[45,4,1241],t:7,e:"td",f:["Communication Systems"]},{p:[46,4,1271],t:7,e:"td",f:[{t:2,x:{r:["data.config_communication"],s:'_0?"ENABLED":"DISABLED"'},p:[46,8,1275]}]},{p:[47,4,1334],t:7,e:"td",f:[{p:[47,8,1338],t:7,e:"ui-button",a:{action:"toggle_function",params:'{"id": "3"}'},f:["TOGGLE"]}]}]},{p:[48,3,1417],t:7,e:"tr",f:[" ",{p:[49,4,1426],t:7,e:"td",f:["Remote System Control"]},{p:[50,4,1456],t:7,e:"td",f:[{t:2,x:{r:["data.config_systemcontrol"],s:'_0?"ENABLED":"DISABLED"'},p:[50,8,1460]}]},{p:[51,4,1519],t:7,e:"td",f:[{p:[51,8,1523],t:7,e:"ui-button",a:{action:"toggle_function",params:'{"id": "4"}'},f:["TOGGLE"]}]}]}]}]}," ",{p:[55,2,1630],t:7,e:"ui-display",a:{title:"SECURITY SYSTEMS"},f:[{t:4,f:[{p:[58,4,1699],t:7,e:"ui-notice",f:[{p:[59,5,1716],t:7,e:"h1",f:["NETWORK INCURSION DETECTED"]}]}," ",{p:[61,5,1774],t:7,e:"i",f:["An abnormal activity has been detected in the network. Please verify system logs for more information"]}],n:50,r:"data.idsalarm",p:[57,3,1673]}," ",{p:[64,3,1902],t:7,e:"ui-section",a:{label:"Intrusion Detection System"},f:[{p:[65,4,1954],t:7,e:"b",f:[{t:2,x:{r:["data.idsstatus"],s:'_0?"ENABLED":"DISABLED"'},p:[65,7,1957]}]}]}," ",{p:[68,3,2029],t:7,e:"ui-section",a:{label:"Maximal Log Count"},f:[{p:[69,4,2072],t:7,e:"b",f:[{t:2,r:"data.ntnetmaxlogs",p:[69,7,2075]}]}]}," ",{p:[72,3,2125],t:7,e:"ui-section",a:{label:"Controls"},f:[]}," ",{p:[74,4,2176],t:7,e:"table",f:[{p:[75,4,2188],t:7,e:"tr",f:[{p:[75,8,2192],t:7,e:"td",f:[{p:[75,12,2196],t:7,e:"ui-button",a:{action:"resetIDS"},f:["RESET IDS"]}]}]},{p:[76,4,2251],t:7,e:"tr",f:[{p:[76,8,2255],t:7,e:"td",f:[{p:[76,12,2259],t:7,e:"ui-button",a:{action:"toggleIDS"},f:["TOGGLE IDS"]}]}]},{p:[77,4,2316],t:7,e:"tr",f:[{p:[77,8,2320],t:7,e:"td",f:[{p:[77,12,2324],t:7,e:"ui-button",a:{action:"updatemaxlogs"},f:["SET LOG LIMIT"]}]}]},{p:[78,4,2388],t:7,e:"tr",f:[{p:[78,8,2392],t:7,e:"td",f:[{p:[78,12,2396],t:7,e:"ui-button",a:{action:"purgelogs"},f:["PURGE LOGS"]}]}]}]}," ",{p:[81,3,2467],t:7,e:"ui-subdisplay",a:{title:"System Logs"},f:[{p:[82,3,2506],t:7,e:"div",a:{"class":"statusDisplay",style:"overflow: auto;"},f:[{p:[83,3,2561],t:7,e:"div",a:{"class":"item"},f:[{p:[84,4,2584],t:7,e:"div",a:{"class":"itemContent",style:"width: 100%;"},f:[{t:4,f:[{t:2,r:"entry",p:[86,6,2667]},{p:[86,15,2676],t:7,e:"br"}],n:52,r:"data.ntnetlogs",p:[85,5,2636]}]}]}]}]}]}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(285)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,285:285}],280:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{t:4,f:[{p:[7,2,102],t:7,e:"div",a:{"class":"item"},f:[{p:[8,3,124],t:7,e:"h2",f:["An error has occurred during operation..."]}," ",{p:[9,3,178],t:7,e:"b",f:["Additional information:"]},{t:2,r:"data.error",p:[9,34,209]},{p:[9,48,223],t:7,e:"br"}," ",{p:[10,3,231],t:7,e:"ui-button",a:{action:"PRG_reset"},f:["Clear"]}]}],n:50,r:"data.error",p:[6,2,81]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.downloading"],s:"_0"},f:[{p:[13,3,321],t:7,e:"h2",f:["Download in progress..."]}," ",{p:[14,3,357],t:7,e:"div",a:{"class":"itemLabel"},f:["Downloaded file:"]}," ",{p:[17,3,416],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.download_name",p:[18,4,446]}]}," ",{p:[20,3,483],t:7,e:"div",a:{"class":"itemLabel"},f:["Download progress:"]}," ",{p:[23,3,544],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.download_progress",p:[24,4,574]}," / ",{t:2,r:"data.download_size",p:[24,33,603]}," GQ"]}," ",{p:[26,3,642],t:7,e:"div",a:{"class":"itemLabel"},f:["Transfer speed:"]}," ",{p:[29,3,700],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.download_netspeed",p:[30,4,730]},"GQ/s"]}," ",{p:[32,3,774],t:7,e:"div",a:{"class":"itemLabel"},f:["Controls:"]}," ",{p:[35,3,826],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[36,4,856],t:7,e:"ui-button",a:{action:"PRG_reset"},f:["Abort download"]}]}]},{t:4,n:50,x:{r:["data.downloading","data.uploading"],s:"(!(_0))&&(_1)"},f:[" ",{p:[39,3,954],t:7,e:"h2",f:["Server enabled"]}," ",{p:[40,3,981],t:7,e:"div",a:{"class":"itemLabel"},f:["Connected clients:"]}," ",{p:[43,3,1042],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.upload_clients",p:[44,4,1072]}]}," ",{p:[46,3,1109],t:7,e:"div",a:{"class":"itemLabel"},f:["Provided file:"]}," ",{p:[49,3,1166],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.upload_filename",p:[50,4,1196]}]}," ",{p:[52,3,1234],t:7,e:"div",a:{"class":"itemLabel"},f:["Server password:"]}," ",{p:[55,3,1293],t:7,e:"div",a:{"class":"itemContent"},f:[{t:4,f:["ENABLED"],n:50,r:"data.upload_haspassword",p:[56,4,1323]},{t:4,n:51,f:["DISABLED"],r:"data.upload_haspassword"}]}," ",{p:[62,3,1420],t:7,e:"div",a:{"class":"itemLabel"},f:["Commands:"]}," ",{p:[65,3,1472],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[66,4,1502],t:7,e:"ui-button",a:{action:"PRG_setpassword"},f:["Set password"]}," ",{p:[67,4,1567],t:7,e:"ui-button",a:{action:"PRG_reset"},f:["Exit server"]}]}]},{t:4,n:50,x:{r:["data.downloading","data.uploading","data.upload_filelist"],s:"(!(_0))&&((!(_1))&&(_2))"},f:[" ",{p:[70,3,1668],t:7,e:"h2",f:["File transfer server ready. Select file to upload:"]}," ",{p:[71,3,1732],t:7,e:"table",f:[{p:[72,3,1743],t:7,e:"tr",f:[{p:[72,7,1747],t:7,e:"th",f:["File name"]},{p:[72,20,1760],t:7,e:"th",f:["File size"]},{p:[72,33,1773],t:7,e:"th",f:["Controls ",{t:4,f:[{p:[74,4,1824],t:7,e:"tr",f:[{p:[74,8,1828],t:7,e:"td",f:[{t:2,r:"filename",p:[74,12,1832]}]},{p:[75,4,1849],t:7,e:"td",f:[{t:2,r:"size",p:[75,8,1853]},"GQ"]},{p:[76,4,1868],t:7,e:"td",f:[{p:[76,8,1872],t:7,e:"ui-button",a:{action:"PRG_uploadfile",params:['{"id": "',{t:2,r:"uid",p:[76,59,1923]},'"}']},f:["Select"]}]}]}],n:52,r:"data.upload_filelist",p:[73,3,1789]}]}]}]}," ",{p:[79,3,1981],t:7,e:"hr"}," ",{p:[80,3,1989],t:7,e:"ui-button",a:{action:"PRG_setpassword"},f:["Set password"]}," ",{p:[81,3,2053],t:7,e:"ui-button",a:{action:"PRG_reset"},f:["Return"]}]},{t:4,n:50,x:{r:["data.downloading","data.uploading","data.upload_filelist"],s:"(!(_0))&&((!(_1))&&(!(_2)))"},f:[" ",{p:[83,3,2116],t:7,e:"h2",f:["Available files:"]}," ",{p:[84,3,2145],t:7,e:"table",a:{border:"1",style:"border-collapse: collapse"},f:[{p:[84,55,2197],t:7,e:"tr",f:[{p:[84,59,2201],t:7,e:"th",f:["Server UID"]},{p:[84,73,2215],t:7,e:"th",f:["File Name"]},{p:[84,86,2228],t:7,e:"th",f:["File Size"]},{p:[84,99,2241],t:7,e:"th",f:["Password Protection"]},{p:[84,122,2264],t:7,e:"th",f:["Operations ",{t:4,f:[{p:[86,5,2311],t:7,e:"tr",f:[{p:[86,9,2315],t:7,e:"td",f:[{t:2,r:"uid",p:[86,13,2319]}]},{p:[87,5,2332],t:7,e:"td",f:[{t:2,r:"filename",p:[87,9,2336]}]},{p:[88,5,2354],t:7,e:"td",f:[{t:2,r:"size",p:[88,9,2358]},"GQ ",{t:4,f:[{p:[90,6,2400],t:7,e:"td",f:["Enabled"]}],n:50,r:"haspassword",p:[89,5,2374]}," ",{t:4,f:[{p:[93,6,2457],t:7,e:"td",f:["Disabled"]}],n:50,x:{r:["haspassword"],s:"!_0"},p:[92,5,2430]}]},{p:[96,5,2494],t:7,e:"td",f:[{p:[96,9,2498],t:7,e:"ui-button",a:{action:"PRG_downloadfile",params:['{"id": "',{t:2,r:"uid",p:[96,62,2551]},'"}']},f:["Download"]}]}]}],n:52,r:"data.servers",p:[85,4,2283]}]}]}]}," ",{p:[99,3,2612],t:7,e:"hr"}," ",{p:[100,3,2620],t:7,e:"ui-button",a:{action:"PRG_uploadmenu"},f:["Send file"]}]}],r:"data.error"}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(285)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,285:285}],281:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{chargingState:function(t){switch(t){case 2:return"good";case 1:return"average";default:return"bad"}},chargingMode:function(t){return 2==t?"Full":1==t?"Charging":"Draining"},channelState:function(t){return t>=2?"good":"bad"},channelPower:function(t){return t>=2?"On":"Off"},channelMode:function(t){return 1==t||3==t?"Auto":"Manual"}},computed:{graphData:function(){var t=this.get("data.history");return Object.keys(t).map(function(e){return t[e].map(function(t,e){return{x:e,y:t}})})}}}}(r),r.exports.template={v:3,t:[" "," ",{p:[43,1,1082],t:7,e:"ntosheader"}," ",{p:[45,1,1099],t:7,e:"ui-display",a:{title:"Network"},f:[{t:4,f:[{p:[47,5,1157],t:7,e:"ui-linegraph",a:{points:[{t:2,r:"graphData",p:[47,27,1179]}],height:"500",legend:'["Available", "Load"]',colors:'["rgb(0, 102, 0)", "rgb(153, 0, 0)"]',xunit:"seconds ago",xfactor:[{t:2,r:"data.interval",p:[49,38,1331]}],yunit:"W",yfactor:"1",xinc:[{t:2,x:{r:["data.stored"],s:"_0/10"},p:[50,15,1387]}],yinc:"9"}}],n:50,r:"config.fancy",p:[46,3,1131]},{t:4,n:51,f:[{p:[52,5,1437],t:7,e:"ui-section",a:{label:"Available"},f:[{p:[53,7,1475],t:7,e:"span",f:[{t:2,r:"data.supply",p:[53,13,1481]}]}]}," ",{p:[55,5,1528],t:7,e:"ui-section",a:{label:"Load"},f:[{p:[56,9,1563],t:7,e:"span",f:[{t:2,r:"data.demand",p:[56,15,1569]}]}]}],r:"config.fancy"}]}," ",{p:[60,1,1638],t:7,e:"ui-display",a:{title:"Areas"},f:[{p:[61,3,1668],t:7,e:"ui-section",a:{nowrap:0},f:[{p:[62,5,1693],t:7,e:"div",a:{"class":"content"},f:["Area"]}," ",{p:[63,5,1730],t:7,e:"div",a:{"class":"content"},f:["Charge"]}," ",{p:[64,5,1769],t:7,e:"div",a:{"class":"content"},f:["Load"]}," ",{p:[65,5,1806],t:7,e:"div",a:{"class":"content"},f:["Status"]}," ",{p:[66,5,1845],t:7,e:"div",a:{"class":"content"},f:["Equipment"]}," ",{p:[67,5,1887],t:7,e:"div",a:{"class":"content"},f:["Lighting"]}," ",{p:[68,5,1928],t:7,e:"div",a:{"class":"content"},f:["Environment"]}]}," ",{t:4,f:[{p:[71,5,2013],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[71,24,2032]}],nowrap:0},f:[{p:[72,7,2057],t:7,e:"div",a:{"class":"content"},f:[{t:2,x:{r:["@index","adata.areas"],s:"Math.round(_1[_0].charge)"},p:[72,28,2078]}," %"]}," ",{p:[73,7,2136],t:7,e:"div",a:{"class":"content"},f:[{t:2,rx:{r:"adata.areas",m:[{t:30,n:"@index"},"load"]},p:[73,28,2157]}]}," ",{p:[74,7,2199],t:7,e:"div",a:{"class":"content"},f:[{p:[74,28,2220],t:7,e:"span",a:{"class":[{t:2,x:{r:["chargingState","charging"],s:"_0(_1)"},p:[74,41,2233]}]},f:[{t:2,x:{r:["chargingMode","charging"],s:"_0(_1)"},p:[74,70,2262]}]}]}," ",{p:[75,7,2309],t:7,e:"div",a:{"class":"content"},f:[{p:[75,28,2330],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","eqp"],s:"_0(_1)"},p:[75,41,2343]}]},f:[{t:2,x:{r:["channelPower","eqp"],s:"_0(_1)"},p:[75,64,2366]}," [",{p:[75,87,2389],t:7,e:"span",f:[{t:2,x:{r:["channelMode","eqp"],s:"_0(_1)"},p:[75,93,2395]}]},"]"]}]}," ",{p:[76,7,2444],t:7,e:"div",a:{"class":"content"},f:[{p:[76,28,2465],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","lgt"],s:"_0(_1)"},p:[76,41,2478]}]},f:[{t:2,x:{r:["channelPower","lgt"],s:"_0(_1)"},p:[76,64,2501]}," [",{p:[76,87,2524],t:7,e:"span",f:[{t:2,x:{r:["channelMode","lgt"],s:"_0(_1)"},p:[76,93,2530]}]},"]"]}]}," ",{p:[77,7,2579],t:7,e:"div",a:{"class":"content"},f:[{p:[77,28,2600],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","env"],s:"_0(_1)"},p:[77,41,2613]}]},f:[{t:2,x:{r:["channelPower","env"],s:"_0(_1)"},p:[77,64,2636]}," [",{p:[77,87,2659],t:7,e:"span",f:[{t:2,x:{r:["channelMode","env"],s:"_0(_1)"},p:[77,93,2665]}]},"]"]}]}]}],n:52,r:"data.areas",p:[70,3,1987]}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(285)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,285:285}],282:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{p:[5,2,79],t:7,e:"div",a:{"class":"item"},f:[{p:[6,3,101],t:7,e:"div",a:{"class":"itemLabel"},f:["Payload status:"]}," ",{p:[9,3,158],t:7,e:"div",a:{"class":"itemContent"},f:[{t:4,f:["ARMED"],n:50,r:"data.armed",p:[10,4,188]},{t:4,n:51,f:["DISARMED"],r:"data.armed"}]}," ",{p:[16,3,270],t:7,e:"div",a:{"class":"itemLabel"},f:["Controls:"]}," ",{p:[19,3,321],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[20,4,351],t:7,e:"table",f:[{p:[21,4,363],t:7,e:"tr",f:[{p:[21,8,367],t:7,e:"td",f:[{p:[21,12,371],t:7,e:"ui-button",a:{action:"PRG_obfuscate"},f:["OBFUSCATE PROGRAM NAME"]}]}]},{p:[22,4,444],t:7,e:"tr",f:[{p:[22,8,448],t:7,e:"td",f:[{p:[22,12,452],t:7,e:"ui-button",a:{action:"PRG_arm",state:[{t:2,x:{r:["data.armed"],s:'_0?"danger":null'},p:[22,47,487]}]},f:[{t:2,x:{r:["data.armed"],s:'_0?"DISARM":"ARM"'},p:[22,81,521]}]}," ",{p:[23,4,571],t:7,e:"ui-button",a:{icon:"radiation",state:[{t:2,x:{r:["data.armed"],s:'_0?null:"disabled"'},p:[23,39,606]}],action:"PRG_activate"},f:["ACTIVATE"]}]}]}]}]}]}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(285)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,285:285}],283:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{t:4,f:[{p:[5,3,95],t:7,e:"ui-display",a:{title:[{t:2,r:"class",p:[5,22,114]}," Alarms"]},f:[{p:[6,5,138],t:7,e:"ul",f:[{t:4,f:[{p:[8,9,171],t:7,e:"li",f:[{t:2,r:".",p:[8,13,175]}]}],n:52,r:".",p:[7,7,150]},{t:4,n:51,f:[{p:[10,9,211],t:7,e:"li",f:["System Nominal"]}],r:"."}]}]}],n:52,i:"class",r:"data.alarms",p:[4,1,64]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(285)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,285:285}],284:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{integState:function(t){var e=100;return t==e?"good":t>e/2?"average":"bad"},bigState:function(t,e,n){return charge>n?"bad":t>e?"average":"good"}}}}(r),r.exports.template={v:3,t:[" "," ",{p:[23,1,421],t:7,e:"ntosheader"}," ",{t:4,f:[{p:[27,2,462],t:7,e:"ui-button",a:{action:"PRG_clear"},f:["Back to Menu"]},{p:[27,56,516],t:7,e:"br"}," ",{p:[28,3,524],t:7,e:"ui-display",a:{title:"Supermatter Status:"},f:[{p:[29,3,568],t:7,e:"ui-section",a:{label:"Core Integrity"},f:[{p:[30,5,609],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"adata.SM_integrity",p:[30,38,642]}],state:[{t:2,x:{r:["integState","adata.SM_integrity"],s:"_0(_1)"},p:[30,69,673]}]},f:[{t:2,r:"data.SM_integrity",p:[30,105,709]},"%"]}]}," ",{p:[32,3,761],t:7,e:"ui-section",a:{label:"Relative EER"},f:[{p:[33,5,800],t:7,e:"span",a:{"class":[{t:2,x:{r:["bigState","data.SM_power"],s:"_0(_1,150,300)"},p:[33,18,813]}]},f:[{t:2,r:"data.SM_power",p:[33,55,850]}," MeV/cm3"]}]}," ",{p:[35,3,903],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[36,5,941],t:7,e:"span",a:{"class":[{t:2,x:{r:["bigState","data.SM_ambienttemp"],s:"_0(_1,4000,5000)"},p:[36,18,954]}]},f:[{t:2,r:"data.SM_ambienttemp",p:[36,63,999]}," K"]}]}," ",{p:[38,3,1052],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[39,5,1087],t:7,e:"span",a:{"class":[{t:2,x:{r:["bigState","data.SM_ambientpressure"],s:"_0(_1,5000,10000)"},p:[39,18,1100]}]},f:[{t:2,r:"data.SM_ambientpressure",p:[39,68,1150]}," kPa"]}]}]}," ",{p:[42,3,1227],t:7,e:"hr"},{p:[42,7,1231],t:7,e:"br"}," ",{p:[43,3,1239],t:7,e:"ui-display",a:{title:"Gas Composition:"},f:[{t:4,f:[{p:[45,5,1307],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[45,24,1326]}]},f:[{t:2,r:"amount",p:[46,6,1343]}," %"]}],n:52,r:"data.gases",p:[44,4,1281]}]}],n:50,r:"data.active",p:[26,1,440]},{t:4,n:51,f:[{p:[51,2,1418],t:7,e:"ui-button",a:{action:"PRG_refresh"},f:["Refresh"]},{p:[51,53,1469],t:7,e:"br"}," ",{p:[52,2,1476],t:7,e:"ui-display",a:{title:"Detected Supermatters"},f:[{t:4,f:[{p:[54,3,1552],t:7,e:"ui-section",a:{label:"Area"},f:[{t:2,r:"area_name",p:[55,5,1583]}," - (#",{t:2,r:"uid",p:[55,23,1601]},")"]}," ",{p:[57,3,1630],t:7,e:"ui-section",a:{label:"Integrity"},f:[{t:2,r:"integrity",p:[58,5,1666]}," %"]}," ",{p:[60,3,1702],t:7,e:"ui-section",a:{label:"Options"},f:[{p:[61,5,1736],t:7,e:"ui-button",a:{action:"PRG_set",params:['{"target" : "',{t:2,r:"uid",p:[61,54,1785]},'"}']},f:["View Details"]}]}],n:52,r:"data.supermatters",p:[53,2,1521]}]}],r:"data.active"}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(285)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,285:285}],285:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"item",style:"float: left"},f:[{p:[2,2,41],t:7,e:"table",f:[{p:[2,9,48],t:7,e:"tr",f:[{t:4,f:[{p:[4,3,113],t:7,e:"td",f:[{p:[4,7,117],t:7,e:"img",a:{src:[{t:2,r:"data.PC_batteryicon",p:[4,17,127]}]}}]}],n:50,x:{r:["data.PC_batteryicon","data.PC_showbatteryicon"],s:"_0&&_1"},p:[3,2,55]}," ",{t:4,f:[{p:[7,3,226],t:7,e:"td",f:[{p:[7,7,230],t:7,e:"b",f:[{t:2,r:"data.PC_batterypercent",p:[7,10,233]}]}]}],n:50,x:{r:["data.PC_batterypercent","data.PC_showbatteryicon"],s:"_0&&_1"},p:[6,2,165]}," ",{t:4,f:[{p:[10,3,305],t:7,e:"td",f:[{p:[10,7,309],t:7,e:"img",a:{src:[{t:2,r:"data.PC_ntneticon",p:[10,17,319]}]}}]}],n:50,r:"data.PC_ntneticon",p:[9,2,276]}," ",{t:4,f:[{p:[13,3,386],t:7,e:"td",f:[{p:[13,7,390],t:7,e:"img",a:{src:[{t:2,r:"data.PC_apclinkicon",p:[13,17,400]}]}}]}],n:50,r:"data.PC_apclinkicon",p:[12,2,355]}," ",{t:4,f:[{p:[16,3,469],t:7,e:"td",f:[{p:[16,7,473],t:7,e:"b",f:[{t:2,r:"data.PC_stationtime",p:[16,10,476]}]}]}],n:50,r:"data.PC_stationtime",p:[15,2,438]}," ",{t:4,f:[{p:[19,3,552],t:7,e:"td",f:[{p:[19,7,556],t:7,e:"img",a:{src:[{t:2,r:"icon",p:[19,17,566]}]}}]}],n:52,r:"data.PC_programheaders",p:[18,2,516]}]}]}]}," ",{p:[23,1,609],t:7,e:"div",a:{style:"float: right; margin-top: 5px"},f:[{p:[24,2,655],t:7,e:"ui-button",a:{action:"PC_shutdown"},f:["Shutdown"]}," ",{t:4,f:[{p:[26,3,745],t:7,e:"ui-button",a:{action:"PC_exit"},f:["EXIT PROGRAM"]}," ",{p:[27,3,801],t:7,e:"ui-button",a:{action:"PC_minimize"},f:["Minimize Program"]}],n:50,r:"data.PC_showexitprogram",p:[25,2,710]}]}," ",{p:[30,1,881],t:7,e:"div",a:{style:"clear: both"}}]},e.exports=a.extend(r.exports)},{205:205}],286:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Auth. Disk:"},f:[{t:4,f:[{p:[3,7,69],t:7,e:"ui-button",a:{icon:"eject",style:"selected",action:"eject_disk"},f:["++++++++++"]}],n:50,r:"data.disk_present",p:[2,3,36]},{t:4,n:51,f:[{p:[5,7,172],t:7,e:"ui-button",a:{icon:"plus",action:"insert_disk"},f:["----------"]}],r:"data.disk_present"}]}," ",{p:[8,1,266],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[9,3,297],t:7,e:"span",f:[{t:2,r:"data.status1",p:[9,9,303]},"-",{t:2,r:"data.status2",p:[9,26,320]}]}]}," ",{p:[11,1,360],t:7,e:"ui-display",a:{title:"Timer"},f:[{p:[12,3,390],t:7,e:"ui-section",a:{label:"Time to Detonation"},f:[{p:[13,5,435],t:7,e:"span",f:[{t:2,x:{r:["data.timing","data.time_left","data.timer_set"],s:"_0?_1:_2"},p:[13,11,441]}]}]}," ",{t:4,f:[{p:[16,5,540],t:7,e:"ui-section",a:{label:"Adjust Timer"},f:[{p:[17,7,581],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.disk_present","data.code_approved","data.timer_is_not_default"],s:'_0&&_1&&_2?null:"disabled"'},p:[17,40,614]}],action:"timer",params:'{"change": "reset"}'},f:["Reset"]}," ",{p:[19,7,786],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.disk_present","data.code_approved","data.timer_is_not_min"],s:'_0&&_1&&_2?null:"disabled"'},p:[19,38,817]}],action:"timer",params:'{"change": "decrease"}'},f:["Decrease"]}," ",{p:[21,7,991],t:7,e:"ui-button",a:{icon:"pencil",state:[{t:2,x:{r:["data.disk_present","data.code_approved"],s:'_0&&_1?null:"disabled"'},p:[21,39,1023]}],action:"timer",params:'{"change": "input"}'},f:["Set"]}," ",{p:[22,7,1155],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.disk_present","data.code_approved","data.timer_is_not_max"],s:'_0&&_1&&_2?null:"disabled"'},p:[22,37,1185]}],action:"timer",params:'{"change": "increase"}'},f:["Increase"]}]}],n:51,r:"data.timing",p:[15,3,518]}," ",{p:[26,3,1394],t:7,e:"ui-section",a:{label:"Timer"},f:[{p:[27,5,1426],t:7,e:"ui-button",a:{icon:"clock-o",style:[{t:2,x:{r:["data.timing"],s:'_0?"danger":"caution"'},p:[27,38,1459]}],action:"toggle_timer",state:[{t:2,x:{r:["data.disk_present","data.code_approved","data.safety"],s:'_0&&_1&&!_2?null:"disabled"'},p:[29,14,1542]}]},f:[{t:2,x:{r:["data.timing"],s:'_0?"On":"Off"'},p:[30,7,1631]}]}]}]}," ",{p:[34,1,1713],t:7,e:"ui-display",a:{title:"Anchoring"},f:[{p:[35,3,1747],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.disk_present","data.code_approved"],s:'_0&&_1?null:"disabled"'},p:[36,12,1770]}],icon:[{t:2,x:{r:["data.anchored"],s:'_0?"lock":"unlock"'},p:[37,11,1846]}],style:[{t:2,x:{r:["data.anchored"],s:'_0?null:"caution"'},p:[38,12,1897]}],action:"anchor"},f:[{t:2,x:{r:["data.anchored"],s:'_0?"Engaged":"Off"'},p:[39,21,1956]}]}]}," ",{p:[41,1,2022],t:7,e:"ui-display",a:{title:"Safety"},f:[{p:[42,3,2053],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.disk_present","data.code_approved"],s:'_0&&_1?null:"disabled"'},p:[43,12,2076]}],icon:[{t:2,x:{r:["data.safety"],s:'_0?"lock":"unlock"'},p:[44,11,2152]}],action:"safety",style:[{t:2,x:{r:["data.safety"],s:'_0?"caution":"danger"'},p:[45,12,2217]}]},f:[{p:[46,7,2265],t:7,e:"span",f:[{t:2,x:{r:["data.safety"],s:'_0?"On":"Off"'},p:[46,13,2271]}]}]}]}," ",{p:[49,1,2341],t:7,e:"ui-display",a:{title:"Code"},f:[{p:[50,3,2370],t:7,e:"ui-section",a:{label:"Message"},f:[{t:2,r:"data.message",p:[50,31,2398]}]}," ",{p:[51,3,2431],t:7,e:"ui-section",a:{label:"Keypad"},f:[{p:[52,5,2464],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[52,39,2498]}],params:'{"digit":"1"}'},f:["1"]}," ",{p:[53,5,2583],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[53,39,2617]}],params:'{"digit":"2"}'},f:["2"]}," ",{p:[54,5,2702],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[54,39,2736]}],params:'{"digit":"3"}'},f:["3"]}," ",{p:[55,5,2821],t:7,e:"br"}," ",{p:[56,5,2831],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[56,39,2865]}],params:'{"digit":"4"}'},f:["4"]}," ",{p:[57,5,2950],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[57,39,2984]}],params:'{"digit":"5"}'},f:["5"]}," ",{p:[58,5,3069],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[58,39,3103]}],params:'{"digit":"6"}'},f:["6"]}," ",{p:[59,5,3188],t:7,e:"br"}," ",{p:[60,5,3198],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[60,39,3232]}],params:'{"digit":"7"}'},f:["7"]}," ",{p:[61,5,3317],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[61,39,3351]}],params:'{"digit":"8"}'},f:["8"]}," ",{p:[62,5,3436],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[62,39,3470]}],params:'{"digit":"9"}'},f:["9"]}," ",{p:[63,5,3555],t:7,e:"br"}," ",{p:[64,5,3565],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[64,39,3599]}],params:'{"digit":"R"}'},f:["R"]}," ",{p:[65,5,3684],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[65,39,3718]}],params:'{"digit":"0"}'},f:["0"]}," ",{p:[66,5,3803],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[66,39,3837]}],params:'{"digit":"E"}'},f:["E"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],287:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,2,25],t:7,e:"ui-notice",f:["No table detected!"]}],n:51,r:"data.table",p:[1,1,0]},{p:[6,1,88],t:7,e:"ui-display",f:[{p:[7,2,103],t:7,e:"ui-display",a:{title:"Patient State"},f:[{t:4,f:[{p:[9,4,166],t:7,e:"ui-section",a:{label:"State"},f:[{p:[10,5,198],t:7,e:"span",a:{"class":[{t:2,r:"data.patient.statstate",p:[10,18,211]}]},f:[{t:2,r:"data.patient.stat",p:[10,46,239]}]}]}," ",{p:[12,4,290],t:7,e:"ui-section",a:{label:"Blood Type"},f:[{p:[13,5,327],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.patient.blood_type",p:[13,27,349]}]}]}," ",{p:[15,4,406],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[16,5,439],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.patient.minHealth",p:[16,18,452]}],max:[{t:2,r:"data.patient.maxHealth",p:[16,51,485]}],value:[{t:2,r:"data.patient.health",p:[16,86,520]}],state:[{t:2,x:{r:["data.patient.health"],s:'_0>=0?"good":"average"'},p:[17,12,557]}]},f:[{t:2,x:{r:["adata.patient.health"],s:"Math.round(_0)"},p:[17,63,608]}]}]}," ",{t:4,f:[{p:[20,5,840],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[20,24,859]}]},f:[{p:[21,6,877],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.patient.maxHealth",p:[21,27,898]}],value:[{t:2,rx:{r:"data.patient",m:[{t:30,n:"type"}]},p:[21,62,933]}],state:"bad"},f:[{t:2,x:{r:["type","adata.patient"],s:"Math.round(_1[_0])"},p:[21,98,969]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Burn",type:"fireLoss"},{label:"Toxin",type:"toxLoss"},{label:"Respiratory",type:"oxyLoss"}]'},p:[19,4,676]}],n:50,r:"data.patient",p:[8,3,141]},{t:4,n:51,f:["No patient detected."],r:"data.patient"}]}," ",{p:[28,2,1113],t:7,e:"ui-display",a:{title:"Initiated Procedures"},f:[{t:4,f:[{t:4,f:[{p:[31,5,1217],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"name",p:[31,27,1239]}]},f:[{p:[32,6,1256],t:7,e:"ui-section",a:{label:"Next Step"},f:[{p:[33,7,1294],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"next_step",p:[33,29,1316]}]}]}," ",{t:4,f:[{p:[36,7,1395],t:7,e:"ui-section",a:{label:"Alternative Step"},f:[{p:[37,8,1441],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"alternative_step",p:[37,30,1463]}]}]}],n:50,r:"alternative_step",p:[35,6,1363]}]}],n:52,r:"data.procedures",p:[30,4,1186]}],n:50,r:"data.procedures",p:[29,3,1158]},{t:4,n:51,f:["No active procedures."],r:"data.procedures"}]}]}]},e.exports=a.extend(r.exports)},{205:205}],288:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,2,15],t:7,e:"ui-section",f:["This machine only accepts ore. Gibtonite and Slag are not accepted."]}," ",{p:[5,2,117],t:7,e:"ui-section",f:["Current unclaimed points: ",{t:2,r:"data.unclaimedPoints",p:[6,29,159]}," ",{t:4,f:[{p:[8,4,220],t:7,e:"ui-button",a:{action:"Claim"},f:["Claim Points"]}],n:50,r:"data.unclaimedPoints",p:[7,3,187]}]}," ",{p:[13,2,311],t:7,e:"ui-section",f:[{t:4,f:[{p:[15,4,350],t:7,e:"ui-button",a:{action:"Eject"},f:["Eject ID"]}," You have ",{t:2,r:"data.claimedPoints",p:[18,13,421]}," mining points collected."],n:50,r:"data.hasID",p:[14,3,327]},{t:4,n:51,f:[{p:[20,4,485],t:7,e:"ui-button",a:{action:"Insert"},f:["Insert ID"]}],r:"data.hasID"}]}]}," ",{p:[26,1,588],t:7,e:"ui-display",f:[{t:4,f:[{p:[28,3,627],t:7,e:"ui-section",f:[{p:[29,4,644],t:7,e:"ui-button",a:{action:"diskEject",icon:"eject"},f:["Eject Disk"]}]}," ",{t:4,f:[{p:[34,4,772],t:7,e:"ui-section", -a:{"class":"candystripe"},f:[{p:[35,5,808],t:7,e:"ui-button",a:{action:"diskUpload",state:[{t:2,x:{r:["canupload"],s:'(_0)?null:"disabled"'},p:[35,42,845]}],icon:"upload",align:"right",params:['{ "design" : "',{t:2,r:"index",p:[35,129,932]},'" }']},f:["Upload"]}," File ",{t:2,r:"index",p:[38,10,988]},": ",{t:2,r:"name",p:[38,21,999]}]}],n:52,r:"data.diskDesigns",p:[33,3,741]}],n:50,r:"data.hasDisk",p:[27,2,603]},{t:4,n:51,f:[{p:[42,3,1053],t:7,e:"ui-section",f:[{p:[43,4,1070],t:7,e:"ui-button",a:{action:"diskInsert",icon:"floppy-o"},f:["Insert Disk"]}]}],r:"data.hasDisk"}]}," ",{p:[49,1,1195],t:7,e:"div",a:{"class":"display tabular"},f:[{p:[50,2,1227],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[51,4,1261],t:7,e:"section",a:{"class":"cell"},f:["Mineral"]}," ",{p:[54,4,1316],t:7,e:"section",a:{"class":"cell"},f:["Sheets"]}," ",{p:[57,4,1370],t:7,e:"section",a:{"class":"cell"},f:[]}," ",{p:[59,4,1412],t:7,e:"section",a:{"class":"cell"},f:[{p:[60,5,1440],t:7,e:"ui-button",a:{"class":"center mineral",grid:0,action:"Release",params:'{"id" : "all"}'},f:["Release All"]}]}," ",{p:[64,4,1576],t:7,e:"section",a:{"class":"cell"},f:["Ore Value"]}]}," ",{t:4,f:[{p:[69,3,1673],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[70,4,1707],t:7,e:"section",a:{"class":"cell"},f:[{t:2,r:"name",p:[71,5,1735]}]}," ",{p:[73,4,1763],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{t:2,r:"amount",p:[74,5,1805]}]}," ",{p:[76,4,1835],t:7,e:"section",a:{"class":"cell"},f:[{p:[77,5,1863],t:7,e:"input",a:{value:[{t:2,r:"sheets",p:[77,18,1876]}],placeholder:"###","class":"number"}}]}," ",{p:[79,4,1941],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{p:[80,5,1983],t:7,e:"ui-button",a:{"class":"center",grid:0,action:"Release",state:[{t:2,x:{r:["amount"],s:'(_0>=1)?null:"disabled"'},p:[80,59,2037]}],params:['{ "id" : ',{t:2,r:"id",p:[80,114,2092]},', "sheets" : ',{t:2,r:"sheets",p:[80,133,2111]}," }"]},f:["Release"]}]}," ",{p:[84,4,2178],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{t:2,r:"value",p:[85,5,2220]}]}]}],n:52,r:"data.materials",p:[68,2,1645]}," ",{t:4,f:[{p:[90,3,2298],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[91,4,2332],t:7,e:"section",a:{"class":"cell"},f:[{t:2,r:"name",p:[92,5,2360]}]}," ",{p:[94,4,2388],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{t:2,r:"amount",p:[95,5,2430]}]}," ",{p:[97,4,2460],t:7,e:"section",a:{"class":"cell"},f:[{p:[98,5,2488],t:7,e:"input",a:{value:[{t:2,r:"sheets",p:[98,18,2501]}],placeholder:"###","class":"number"}}]}," ",{p:[100,4,2566],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{p:[101,5,2608],t:7,e:"ui-button",a:{"class":"center",grid:0,action:"Smelt",state:[{t:2,x:{r:["amount"],s:'(_0>=1)?null:"disabled"'},p:[101,57,2660]}],params:['{ "id" : ',{t:2,r:"id",p:[101,113,2716]},', "sheets" : ',{t:2,r:"sheets",p:[101,132,2735]}," }"]},f:["Smelt"]}]}," ",{p:[105,4,2799],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{p:[106,5,2841],t:7,e:"ui-button",a:{"class":"center",grid:0,action:"SmeltAll",state:[{t:2,x:{r:["amount"],s:'(_0>=1)?null:"disabled"'},p:[106,60,2896]}],params:['{ "id" : ',{t:2,r:"id",p:[106,116,2952]}," }"]},f:["Smelt All"]}]}]}],n:52,r:"data.alloys",p:[89,2,2273]}]}]},e.exports=a.extend(r.exports)},{205:205}],289:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:{button:[{p:[4,4,87],t:7,e:"ui-button",a:{icon:"remove",state:[{t:2,x:{r:["data.has_beaker"],s:'_0?null:"disabled"'},p:[4,36,119]}],action:"empty_eject_beaker"},f:["Empty and eject"]}," ",{p:[7,4,231],t:7,e:"ui-button",a:{icon:"trash",state:[{t:2,x:{r:["data.has_beaker"],s:'_0?null:"disabled"'},p:[7,35,262]}],action:"empty_beaker"},f:["Empty"]}," ",{p:[10,4,358],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.has_beaker"],s:'_0?null:"disabled"'},p:[10,35,389]}],action:"eject_beaker"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{t:4,f:[{p:[15,4,528],t:7,e:"ui-section",f:[{t:4,f:[{p:[17,6,578],t:7,e:"span",a:{"class":"bad"},f:["The beaker is empty!"]}],n:50,r:"data.beaker_empty",p:[16,5,546]},{t:4,n:51,f:[{p:[19,6,644],t:7,e:"ui-subdisplay",a:{title:"Blood"},f:[{t:4,f:[{p:[21,8,712],t:7,e:"ui-section",a:{label:"Blood DNA"},f:[{t:2,r:"data.blood.dna",p:[21,38,742]}]}," ",{p:[22,8,782],t:7,e:"ui-section",a:{label:"Blood type"},f:[{t:2,r:"data.blood.type",p:[22,39,813]}]}],n:50,r:"data.has_blood",p:[20,7,681]},{t:4,n:51,f:[{p:[24,8,870],t:7,e:"ui-section",f:[{p:[25,9,892],t:7,e:"span",a:{"class":"average"},f:["No blood sample detected."]}]}],r:"data.has_blood"}]}],r:"data.beaker_empty"}]}],n:50,r:"data.has_beaker",p:[14,3,500]},{t:4,n:51,f:[{p:[32,4,1054],t:7,e:"ui-section",f:[{p:[33,5,1072],t:7,e:"span",a:{"class":"bad"},f:["No beaker loaded."]}]}],r:"data.has_beaker"}]}," ",{t:4,f:[{p:[38,3,1188],t:7,e:"ui-display",a:{title:"Diseases"},f:[{t:4,f:[{p:{button:[{t:4,f:[{p:[43,8,1343],t:7,e:"ui-button",a:{icon:"pencil",action:"rename_disease",state:[{t:2,x:{r:["can_rename"],s:'_0?"":"disabled"'},p:[43,64,1399]}],params:['{"index": ',{t:2,r:"index",p:[43,116,1451]},"}"]},f:["Name advanced disease"]}],n:50,r:"is_adv",p:[42,7,1320]}," ",{p:[47,7,1538],t:7,e:"ui-button",a:{icon:"flask",action:"create_culture_bottle",state:[{t:2,x:{r:["data.is_ready"],s:'_0?"":"disabled"'},p:[47,69,1600]}],params:['{"index": ',{t:2,r:"index",p:[47,124,1655]},"}"]},f:["Create virus culture bottle"]}]},t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[40,24,1269]}],button:0},f:[" ",{p:[51,6,1749],t:7,e:"ui-section",a:{label:"Disease agent"},f:[{t:2,r:"agent",p:[51,40,1783]}]}," ",{p:[52,6,1812],t:7,e:"ui-section",a:{label:"Description"},f:[{t:2,r:"description",p:[52,38,1844]}]}," ",{p:[53,6,1879],t:7,e:"ui-section",a:{label:"Spread"},f:[{t:2,r:"spread",p:[53,33,1906]}]}," ",{p:[54,6,1936],t:7,e:"ui-section",a:{label:"Possible cure"},f:[{t:2,r:"cure",p:[54,40,1970]}]}," ",{t:4,f:[{p:[56,7,2021],t:7,e:"ui-section",a:{label:"Symptoms"},f:[{t:4,f:[{p:[58,9,2087],t:7,e:"ui-button",a:{action:"symptom_details",state:"",params:['{"picked_symptom": ',{t:2,r:"sym_index",p:[58,81,2159]},', "index": ',{t:2,r:"index",p:[58,105,2183]},"}"]},f:[{t:2,r:"name",p:[59,10,2206]}," "]},{p:[60,21,2236],t:7,e:"br"}],n:52,r:"symptoms",p:[57,8,2059]}]}," ",{p:[63,7,2289],t:7,e:"ui-section",a:{label:"Resistance"},f:[{t:2,r:"resistance",p:[63,38,2320]}]}," ",{p:[64,7,2355],t:7,e:"ui-section",a:{label:"Stealth"},f:[{t:2,r:"stealth",p:[64,35,2383]}]}," ",{p:[65,7,2415],t:7,e:"ui-section",a:{label:"Stage speed"},f:[{t:2,r:"stage_speed",p:[65,39,2447]}]}," ",{p:[66,7,2483],t:7,e:"ui-section",a:{label:"Transmittability"},f:[{t:2,r:"transmission",p:[66,44,2520]}]}],n:50,r:"is_adv",p:[55,6,1999]}]}],n:52,r:"data.viruses",p:[39,4,1222]},{t:4,n:51,f:[{p:[70,5,2601],t:7,e:"ui-section",f:[{p:[71,6,2620],t:7,e:"span",a:{"class":"average"},f:["No detectable virus in the blood sample."]}]}],r:"data.viruses"}]}," ",{p:[75,3,2743],t:7,e:"ui-display",a:{title:"Antibodies"},f:[{t:4,f:[{p:[77,5,2811],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[77,24,2830]}]},f:[{p:[78,7,2848],t:7,e:"ui-button",a:{icon:"eyedropper",state:[{t:2,x:{r:["data.is_ready"],s:'_0?"":"disabled"'},p:[78,43,2884]}],action:"create_vaccine_bottle",params:['{"index": ',{t:2,r:"id",p:[78,129,2970]},"}"]},f:["Create vaccine bottle"]}]}],n:52,r:"data.resistances",p:[76,4,2779]},{t:4,n:51,f:[{p:[83,5,3067],t:7,e:"ui-section",f:[{p:[84,6,3086],t:7,e:"span",a:{"class":"average"},f:["No antibodies detected in the blood sample."]}]}],r:"data.resistances"}]}],n:50,r:"data.has_blood",p:[37,2,1162]}],n:50,x:{r:["data.mode"],s:"_0==1"},p:[1,1,0]},{t:4,n:51,f:[{p:[90,2,3231],t:7,e:"ui-button",a:{icon:"undo",state:"",action:"back"},f:["Back"]}," ",{t:4,f:[{p:[94,4,3330],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[94,23,3349]}]},f:[{p:[95,4,3364],t:7,e:"ui-section",f:[{t:2,r:"desc",p:[96,5,3382]}," ",{t:4,f:[{p:[98,5,3417],t:7,e:"br"}," ",{p:[99,5,3428],t:7,e:"b",f:["This symptom has been neutered, and has no effect. It will still affect the virus' statistics."]}],n:50,r:"neutered",p:[97,4,3395]}]}," ",{p:[102,4,3564],t:7,e:"ui-section",f:[{p:[103,5,3582],t:7,e:"ui-section",a:{label:"Level"},f:[{t:2,r:"level",p:[103,31,3608]}]}," ",{p:[104,5,3636],t:7,e:"ui-section",a:{label:"Resistance"},f:[{t:2,r:"resistance",p:[104,36,3667]}]}," ",{p:[105,5,3700],t:7,e:"ui-section",a:{label:"Stealth"},f:[{t:2,r:"stealth",p:[105,33,3728]}]}," ",{p:[106,5,3758],t:7,e:"ui-section",a:{label:"Stage speed"},f:[{t:2,r:"stage_speed",p:[106,37,3790]}]}," ",{p:[107,5,3824],t:7,e:"ui-section",a:{label:"Transmittability"},f:[{t:2,r:"transmission",p:[107,42,3861]}]}]}," ",{p:[109,4,3913],t:7,e:"ui-subdisplay",a:{title:"Effect Thresholds"},f:[{p:[110,5,3960],t:7,e:"ui-section",f:[{t:3,r:"threshold_desc",p:[110,17,3972]}]}]}]}],n:53,r:"data.symptom",p:[93,2,3303]}],x:{r:["data.mode"],s:"_0==1"}}]},e.exports=a.extend(r.exports)},{205:205}],290:[function(t,e,n){var a=t(205),r={exports:{}};!function(e){"use strict";var n=t(338);e.exports={data:{filter:"",tooltiptext:function(t,e,n){var a="";return t&&(a+="REQUIREMENTS: "+t+" "),e&&(a+="CATALYSTS: "+e+" "),n&&(a+="TOOLS: "+n),a}},oninit:function(){var t=this;this.on({hover:function(t){this.set("hovered",t.context.params)},unhover:function(t){this.set("hovered")}}),this.observe("filter",function(e,a,r){var i=null;i=t.get("data.display_compact")?t.findAll(".section"):t.findAll(".display:not(:first-child)"),(0,n.filterMulti)(i,t.get("filter").toLowerCase())},{init:!1})}}}(r),r.exports.template={v:3,t:[" ",{p:[48,1,1342],t:7,e:"ui-display",a:{title:[{t:2,r:"data.category",p:[48,20,1361]},{t:4,f:[" : ",{t:2,r:"data.subcategory",p:[48,64,1405]}],n:50,r:"data.subcategory",p:[48,37,1378]}]},f:[{t:4,f:[{p:[50,3,1459],t:7,e:"ui-section",f:["Crafting... ",{p:[51,16,1488],t:7,e:"i",a:{"class":"fa-spin fa fa-spinner"}}]}],n:50,r:"data.busy",p:[49,2,1438]},{t:4,n:51,f:[{p:[54,3,1557],t:7,e:"ui-section",f:[{p:[55,4,1574],t:7,e:"table",a:{style:"width:100%"},f:[{p:[56,5,1606],t:7,e:"tr",f:[{p:[57,6,1617],t:7,e:"td",a:{style:"width:150px!important"},f:[{p:[58,7,1659],t:7,e:"ui-button",a:{icon:"arrow-left",action:"backwardCat"},f:[{t:2,r:"data.prev_cat",p:[59,8,1718]}]}]}," ",{p:[62,6,1774],t:7,e:"td",a:{style:"width:150px!important"},f:[{p:[63,7,1816],t:7,e:"ui-button",a:{icon:"arrow-right",action:"forwardCat"},f:[{t:2,r:"data.next_cat",p:[64,7,1874]}]}]}," ",{p:[67,6,1930],t:7,e:"td",a:{style:"float:right!important"},f:[{t:4,f:[{p:[69,7,2014],t:7,e:"ui-button",a:{icon:"lock",action:"toggle_recipes"},f:["Showing Craftable Recipes"]}],n:50,r:"data.display_craftable_only",p:[68,6,1971]},{t:4,n:51,f:[{p:[73,7,2138],t:7,e:"ui-button",a:{icon:"unlock",action:"toggle_recipes"},f:["Showing All Recipes"]}],r:"data.display_craftable_only"}]}," ",{p:[78,6,2268],t:7,e:"td",a:{style:"float:right!important"},f:[{p:[79,7,2310],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.display_compact"],s:'_0?"check-square-o":"square-o"'},p:[79,24,2327]}],action:"toggle_compact"},f:["Compact"]}]}]}," ",{p:[84,5,2474],t:7,e:"tr",f:[{t:4,f:[{p:[86,6,2515],t:7,e:"td",a:{style:"width:150px!important"},f:[{p:[87,7,2557],t:7,e:"ui-button",a:{icon:"arrow-left",action:"backwardSubCat"},f:[{t:2,r:"data.prev_subcat",p:[88,8,2619]}]}]}," ",{p:[91,6,2678],t:7,e:"td",a:{style:"width:150px!important"},f:[{p:[92,7,2720],t:7,e:"ui-button",a:{icon:"arrow-right",action:"forwardSubCat"},f:[{t:2,r:"data.next_subcat",p:[93,8,2782]}]}]}],n:50,r:"data.subcategory",p:[85,5,2484]}]}]}," ",{t:4,f:[{t:4,f:[" ",{p:[101,6,2992],t:7,e:"ui-input",a:{value:[{t:2,r:"filter",p:[101,23,3009]}],placeholder:"Filter.."}}],n:51,r:"data.display_compact",p:[100,5,2902]}],n:50,r:"config.fancy",p:[99,4,2876]}]}," ",{t:4,f:[{p:[106,5,3144],t:7,e:"ui-display",f:[{t:4,f:[{p:[108,6,3193],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[108,25,3212]}]},f:[{p:[109,7,3230],t:7,e:"ui-button",a:{tooltip:[{t:2,x:{r:["tooltiptext","req_text","catalyst_text","tool_text"],s:"_0(_1,_2,_3)"},p:[109,27,3250]}],"tooltip-side":"right",action:"make",params:['{"recipe": "',{t:2,r:"ref",p:[109,135,3358]},'"}'],icon:"gears"},v:{hover:"hover",unhover:"unhover"},f:["Craft"]}]}],n:52,r:"data.can_craft",p:[107,5,3162]}," ",{t:4,f:[{t:4,f:[{p:[116,7,3567],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[116,26,3586]}]},f:[{p:[117,8,3605],t:7,e:"ui-button",a:{tooltip:[{t:2,x:{r:["tooltiptext","req_text","catalyst_text","tool_text"],s:"_0(_1,_2,_3)"},p:[117,28,3625]}],"tooltip-side":"right",state:"disabled",icon:"gears"},v:{hover:"hover",unhover:"unhover"},f:["Craft"]}]}],n:52,r:"data.cant_craft",p:[115,6,3534]}],n:51,r:"data.display_craftable_only",p:[114,5,3495]}]}],n:50,r:"data.display_compact",p:[105,4,3110]},{t:4,n:51,f:[{t:4,f:[{p:[126,6,3947],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[126,25,3966]}]},f:[{t:4,f:[{p:[128,8,4009],t:7,e:"ui-section",a:{label:"Requirements"},f:[{t:2,r:"req_text",p:[129,9,4052]}]}],n:50,r:"req_text",p:[127,7,3984]}," ",{t:4,f:[{p:[133,8,4139],t:7,e:"ui-section",a:{label:"Catalysts"},f:[{t:2,r:"catalyst_text",p:[134,9,4179]}]}],n:50,r:"catalyst_text",p:[132,7,4109]}," ",{t:4,f:[{p:[138,8,4267],t:7,e:"ui-section",a:{label:"Tools"},f:[{t:2,r:"tool_text",p:[139,9,4303]}]}],n:50,r:"tool_text",p:[137,7,4241]}," ",{p:[142,7,4361],t:7,e:"ui-section",f:[{p:[143,8,4382],t:7,e:"ui-button",a:{icon:"gears",action:"make",params:['{"recipe": "',{t:2,r:"ref",p:[143,66,4440]},'"}']},f:["Craft"]}]}]}],n:52,r:"data.can_craft",p:[125,5,3916]}," ",{t:4,f:[{t:4,f:[{p:[151,7,4621],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[151,26,4640]}]},f:[{t:4,f:[{p:[153,9,4685],t:7,e:"ui-section",a:{label:"Requirements"},f:[{t:2,r:"req_text",p:[154,10,4729]}]}],n:50,r:"req_text",p:[152,8,4659]}," ",{t:4,f:[{p:[158,9,4820],t:7,e:"ui-section",a:{label:"Catalysts"},f:[{t:2,r:"catalyst_text",p:[159,10,4861]}]}],n:50,r:"catalyst_text",p:[157,8,4789]}," ",{t:4,f:[{p:[163,9,4953],t:7,e:"ui-section",a:{label:"Tools"},f:[{t:2,r:"tool_text",p:[164,10,4990]}]}],n:50,r:"tool_text",p:[162,8,4926]}]}],n:52,r:"data.cant_craft",p:[150,6,4588]}],n:51,r:"data.display_craftable_only",p:[149,5,4549]}],r:"data.display_compact"}],r:"data.busy"}]}]},e.exports=a.extend(r.exports)},{205:205,338:338}],291:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,15],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.holding"],s:'_0?"is":"is not"'},p:[2,23,35]}," connected to a tank."]}]}," ",{p:[4,1,113],t:7,e:"ui-display",a:{title:"Status",button:0},f:[{p:[5,3,151],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[6,5,186],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.round(_0)"},p:[6,11,192]}," kPa"]}]}," ",{p:[8,3,254],t:7,e:"ui-section",a:{label:"Port"},f:[{p:[9,5,285],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected"],s:'_0?"good":"average"'},p:[9,18,298]}]},f:[{t:2,x:{r:["data.connected"],s:'_0?"Connected":"Not Connected"'},p:[9,59,339]}]}]}]}," ",{p:[12,1,430],t:7,e:"ui-display",a:{title:"Pump"},f:[{p:[13,3,459],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[14,5,491],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[14,22,508]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":"null"'},p:[15,14,559]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[16,22,616]}]}]}," ",{p:[18,3,675],t:7,e:"ui-section",a:{label:"Direction"},f:[{p:[19,5,711],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.direction"],s:'_0=="out"?"sign-out":"sign-in"'},p:[19,22,728]}],action:"direction"},f:[{t:2,x:{r:["data.direction"],s:'_0=="out"?"Out":"In"'},p:[20,26,808]}]}]}," ",{p:[22,3,883],t:7,e:"ui-section",a:{label:"Target Pressure"},f:[{p:[23,5,925],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.min_pressure",p:[23,18,938]}],max:[{t:2,r:"data.max_pressure",p:[23,46,966]}],value:[{t:2,r:"data.target_pressure",p:[24,14,1003]}]},f:[{t:2,x:{r:["adata.target_pressure"],s:"Math.round(_0)"},p:[24,40,1029]}," kPa"]}]}," ",{p:[26,3,1100],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[27,5,1145],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.target_pressure","data.default_pressure"],s:'_0!=_1?null:"disabled"'},p:[27,38,1178]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[29,5,1328],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.target_pressure","data.min_pressure"],s:'_0>_1?null:"disabled"'},p:[29,36,1359]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[31,5,1500],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[32,5,1595],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.target_pressure","data.max_pressure"],s:'_0<_1?null:"disabled"'},p:[32,35,1625]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}]}," ",{p:{button:[{t:4,f:[{p:[39,7,1891],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.on"],s:'_0?"danger":null'},p:[39,38,1922]}],action:"eject"},f:["Eject"]}],n:50,r:"data.holding",p:[38,5,1863]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[43,3,2042],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holding.name",p:[44,4,2073]}]}," ",{p:[46,3,2115],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holding.pressure"],s:"Math.round(_0)"},p:[47,4,2149]}," kPa"]}],n:50,r:"data.holding",p:[42,3,2018]},{t:4,n:51,f:[{p:[50,3,2223],t:7,e:"ui-section",f:[{p:[51,4,2240],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.holding"}]}]},e.exports=a.extend(r.exports)},{205:205}],292:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[3,1,69],t:7,e:"ui-notice",f:[{p:[4,3,84],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.holding"],s:'_0?"is":"is not"'},p:[4,23,104]}," connected to a tank."]}]}," ",{p:[6,1,182],t:7,e:"ui-display",a:{title:"Status",button:0},f:[{p:[7,3,220],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[8,5,255],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.round(_0)"},p:[8,11,261]}," kPa"]}]}," ",{p:[10,3,323],t:7,e:"ui-section",a:{label:"Port"},f:[{p:[11,5,354],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected"],s:'_0?"good":"average"'},p:[11,18,367]}]},f:[{t:2,x:{r:["data.connected"],s:'_0?"Connected":"Not Connected"'},p:[11,59,408]}]}]}]}," ",{p:[14,1,499],t:7,e:"ui-display",a:{title:"Filter"},f:[{p:[15,3,530],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[16,5,562],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[16,22,579]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":"null"'},p:[17,14,630]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[18,22,687]}]}]}]}," ",{p:{button:[{t:4,f:[{p:[24,7,856],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.on"],s:'_0?"danger":null'},p:[24,38,887]}],action:"eject"},f:["Eject"]}],n:50,r:"data.holding",p:[23,5,828]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[28,3,1007],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holding.name",p:[29,4,1038]}]}," ",{p:[31,3,1080],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holding.pressure"],s:"Math.round(_0)"},p:[32,4,1114]}," kPa"]}],n:50,r:"data.holding",p:[27,3,983]},{t:4,n:51,f:[{p:[35,3,1188],t:7,e:"ui-section",f:[{p:[36,4,1205],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.holding"}]}," ",{p:[40,1,1293],t:7,e:"ui-display",a:{title:"Filters"},f:[{t:4,f:[{p:[42,5,1345],t:7,e:"filters"}],n:53,r:"data",p:[41,3,1325]}]}]},r.exports.components=r.exports.components||{};var i={filters:t(311)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,311:311}],293:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{chargingState:function(t){switch(t){case 2:return"good";case 1:return"average";default:return"bad"}},chargingMode:function(t){return 2==t?"Full":1==t?"Charging":"Draining"},channelState:function(t){return t>=2?"good":"bad"},channelPower:function(t){return t>=2?"On":"Off"},channelMode:function(t){return 1==t||3==t?"Auto":"Manual"}},computed:{graphData:function(){var t=this.get("data.history");return Object.keys(t).map(function(e){return t[e].map(function(t,e){return{x:e,y:t}})})}}}}(r),r.exports.template={v:3,t:[" ",{p:[42,1,1035],t:7,e:"ui-display",a:{title:"Network"},f:[{t:4,f:[{p:[44,5,1093],t:7,e:"ui-linegraph",a:{points:[{t:2,r:"graphData",p:[44,27,1115]}],height:"500",legend:'["Available", "Load"]',colors:'["rgb(0, 102, 0)", "rgb(153, 0, 0)"]',xunit:"seconds ago",xfactor:[{t:2,r:"data.interval",p:[46,38,1267]}],yunit:"W",yfactor:"1",xinc:[{t:2,x:{r:["data.stored"],s:"_0/10"},p:[47,15,1323]}],yinc:"9"}}],n:50,r:"config.fancy",p:[43,3,1067]},{t:4,n:51,f:[{p:[49,5,1373],t:7,e:"ui-section",a:{label:"Available"},f:[{p:[50,7,1411],t:7,e:"span",f:[{t:2,r:"data.supply",p:[50,13,1417]}]}]}," ",{p:[52,5,1464],t:7,e:"ui-section",a:{label:"Load"},f:[{p:[53,9,1499],t:7,e:"span",f:[{t:2,r:"data.demand",p:[53,15,1505]}]}]}],r:"config.fancy"}]}," ",{p:[57,1,1574],t:7,e:"ui-display",a:{title:"Areas"},f:[{p:[58,3,1604],t:7,e:"ui-section",a:{nowrap:0},f:[{p:[59,5,1629],t:7,e:"div",a:{"class":"content"},f:["Area"]}," ",{p:[60,5,1666],t:7,e:"div",a:{"class":"content"},f:["Charge"]}," ",{p:[61,5,1705],t:7,e:"div",a:{"class":"content"},f:["Load"]}," ",{p:[62,5,1742],t:7,e:"div",a:{"class":"content"},f:["Status"]}," ",{p:[63,5,1781],t:7,e:"div",a:{"class":"content"},f:["Equipment"]}," ",{p:[64,5,1823],t:7,e:"div",a:{"class":"content"},f:["Lighting"]}," ",{p:[65,5,1864],t:7,e:"div",a:{"class":"content"},f:["Environment"]}]}," ",{t:4,f:[{p:[68,5,1949],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[68,24,1968]}],nowrap:0},f:[{p:[69,7,1993],t:7,e:"div",a:{"class":"content"},f:[{t:2,x:{r:["@index","adata.areas"],s:"Math.round(_1[_0].charge)"},p:[69,28,2014]}," %"]}," ",{p:[70,7,2072],t:7,e:"div",a:{"class":"content"},f:[{t:2,rx:{r:"adata.areas",m:[{t:30,n:"@index"},"load"]},p:[70,28,2093]}]}," ",{p:[71,7,2135],t:7,e:"div",a:{"class":"content"},f:[{p:[71,28,2156],t:7,e:"span",a:{"class":[{t:2,x:{r:["chargingState","charging"],s:"_0(_1)"},p:[71,41,2169]}]},f:[{t:2,x:{r:["chargingMode","charging"],s:"_0(_1)"},p:[71,70,2198]}]}]}," ",{p:[72,7,2245],t:7,e:"div",a:{"class":"content"},f:[{p:[72,28,2266],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","eqp"],s:"_0(_1)"},p:[72,41,2279]}]},f:[{t:2,x:{r:["channelPower","eqp"],s:"_0(_1)"},p:[72,64,2302]}," [",{p:[72,87,2325],t:7,e:"span",f:[{t:2,x:{r:["channelMode","eqp"],s:"_0(_1)"},p:[72,93,2331]}]},"]"]}]}," ",{p:[73,7,2380],t:7,e:"div",a:{"class":"content"},f:[{p:[73,28,2401],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","lgt"],s:"_0(_1)"},p:[73,41,2414]}]},f:[{t:2,x:{r:["channelPower","lgt"],s:"_0(_1)"},p:[73,64,2437]}," [",{p:[73,87,2460],t:7,e:"span",f:[{t:2,x:{r:["channelMode","lgt"],s:"_0(_1)"},p:[73,93,2466]}]},"]"]}]}," ",{p:[74,7,2515],t:7,e:"div",a:{"class":"content"},f:[{p:[74,28,2536],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","env"],s:"_0(_1)"},p:[74,41,2549]}]},f:[{t:2,x:{r:["channelPower","env"],s:"_0(_1)"},p:[74,64,2572]}," [",{p:[74,87,2595],t:7,e:"span",f:[{t:2,x:{r:["channelMode","env"],s:"_0(_1)"},p:[74,93,2601]}]},"]"]}]}]}],n:52,r:"data.areas",p:[67,3,1923]}]}]},e.exports=a.extend(r.exports)},{205:205}],294:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={computed:{readableFrequency:function(){return Math.round(this.get("adata.frequency"))/10}}}}(r),r.exports.template={v:3,t:[" ",{p:[11,1,177],t:7,e:"ui-display",a:{title:"Settings"},f:[{t:4,f:[{p:[13,5,236],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[14,7,270],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.listening"],s:'_0?"power-off":"close"'},p:[14,24,287]}],style:[{t:2,x:{r:["data.listening"],s:'_0?"selected":null'},p:[14,75,338]}],action:"listen"},f:[{t:2,x:{r:["data.listening"],s:'_0?"On":"Off"'},p:[16,9,413]}]}]}],n:50,r:"data.headset",p:[12,3,210]},{t:4,n:51,f:[{p:[19,5,494],t:7,e:"ui-section",a:{label:"Microphone"},f:[{p:[20,7,533],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.broadcasting"],s:'_0?"power-off":"close"'},p:[20,24,550]}],style:[{t:2,x:{r:["data.broadcasting"],s:'_0?"selected":null'},p:[20,78,604]}],action:"broadcast"},f:[{t:2,x:{r:["data.broadcasting"],s:'_0?"Engaged":"Disengaged"'},p:[22,9,685]}]}]}," ",{p:[24,5,769],t:7,e:"ui-section",a:{label:"Speaker"},f:[{p:[25,7,805],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.listening"],s:'_0?"power-off":"close"'},p:[25,24,822]}],style:[{t:2,x:{r:["data.listening"],s:'_0?"selected":null'},p:[25,75,873]}],action:"listen"},f:[{t:2,x:{r:["data.listening"],s:'_0?"Engaged":"Disengaged"'},p:[27,9,948]}]}]}],r:"data.headset"}," ",{t:4,f:[{p:[31,5,1064],t:7,e:"ui-section",a:{label:"High Volume"},f:[{p:[32,7,1104],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.useCommand"],s:'_0?"power-off":"close"'},p:[32,24,1121]}],style:[{t:2,x:{r:["data.useCommand"],s:'_0?"selected":null'},p:[32,76,1173]}],action:"command"},f:[{t:2,x:{r:["data.useCommand"],s:'_0?"On":"Off"'},p:[34,9,1250]}]}]}],n:50,r:"data.command",p:[30,3,1038]}]}," ",{p:[38,1,1342],t:7,e:"ui-display",a:{title:"Channel"},f:[{p:[39,3,1374],t:7,e:"ui-section",a:{label:"Frequency"},f:[{t:4,f:[{p:[41,7,1439],t:7,e:"span",f:[{t:2,r:"readableFrequency",p:[41,13,1445]}]}],n:50,r:"data.freqlock",p:[40,5,1410]},{t:4,n:51,f:[{p:[43,7,1495],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.frequency","data.minFrequency"],s:'_0==_1?"disabled":null'},p:[43,46,1534]}],action:"frequency",params:'{"adjust": -1}'}}," ",{p:[44,7,1646],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.frequency","data.minFrequency"],s:'_0==_1?"disabled":null'},p:[44,41,1680]}],action:"frequency",params:'{"adjust": -.2}'}}," ",{p:[45,7,1793],t:7,e:"ui-button",a:{icon:"pencil",action:"frequency",params:'{"tune": "input"}'},f:[{t:2,r:"readableFrequency",p:[45,78,1864]}]}," ",{p:[46,7,1905],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.frequency","data.maxFrequency"],s:'_0==_1?"disabled":null'},p:[46,40,1938]}],action:"frequency",params:'{"adjust": .2}'}}," ",{p:[47,7,2050],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.frequency","data.maxFrequency"],s:'_0==_1?"disabled":null'},p:[47,45,2088]}],action:"frequency",params:'{"adjust": 1}'}}],r:"data.freqlock"}]}," ",{t:4,f:[{p:[51,5,2262],t:7,e:"ui-section",a:{label:"Subspace Transmission"},f:[{p:[52,7,2312],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.subspace"],s:'_0?"power-off":"close"'},p:[52,24,2329]}],style:[{t:2,x:{r:["data.subspace"],s:'_0?"selected":null'},p:[52,74,2379]}],action:"subspace"},f:[{t:2,x:{r:["data.subspace"],s:'_0?"Active":"Inactive"'},p:[53,29,2447]}]}]}],n:50,r:"data.subspaceSwitchable",p:[50,3,2225]}," ",{t:4,f:[{p:[57,5,2578],t:7,e:"ui-section",a:{label:"Channels"},f:[{t:4,f:[{p:[59,9,2656],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["."],s:'_0?"check-square-o":"square-o"'},p:[59,26,2673]}],style:[{t:2,x:{r:["."],s:'_0?"selected":null'},p:[60,18,2730]}],action:"channel",params:['{"channel": "',{t:2,r:"channel",p:[61,49,2806]},'"}']},f:[{t:2,r:"channel",p:[62,11,2833]}]},{p:[62,34,2856],t:7,e:"br"}],n:52,i:"channel",r:"data.channels",p:[58,7,2615]}]}],n:50,x:{r:["data.subspace","data.channels"],s:"_0&&_1"},p:[56,3,2534]}]}]},e.exports=a.extend(r.exports)},{205:205}],295:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" "," "," "," "," "," "," "," "," "," ",{p:[11,1,560],t:7,e:"rdheader"}," ",{t:4,f:[{p:[13,2,595],t:7,e:"ui-display",a:{title:"CONSOLE LOCKED"},f:[{p:[14,3,634],t:7,e:"ui-button",a:{action:"Unlock"},f:["Unlock"]}]}],n:50,r:"data.locked",p:[12,1,573]},{t:4,f:[{p:[18,2,729],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"data.tabs",p:[18,17,744]}]},f:[{p:[19,3,763],t:7,e:"tab",a:{name:"Technology"},f:[{p:[20,4,791],t:7,e:"techweb"}]}," ",{p:[22,3,815],t:7,e:"tab",a:{name:"View Node"},f:[{p:[23,4,842],t:7,e:"nodeview"}]}," ",{p:[25,3,867],t:7,e:"tab",a:{name:"View Design"},f:[{p:[26,4,896],t:7,e:"designview"}]}," ",{p:[28,3,923],t:7,e:"tab",a:{name:"Disk Operations - Design"},f:[{p:[29,4,965],t:7,e:"diskopsdesign"}]}," ",{p:[31,3,995],t:7,e:"tab",a:{name:"Disk Operations - Technology"},f:[{p:[32,4,1041],t:7,e:"diskopstech"}]}," ",{p:[34,3,1069],t:7,e:"tab",a:{name:"Deconstructive Analyzer"},f:[{p:[35,4,1110],t:7,e:"destruct"}]}," ",{p:[37,3,1135],t:7,e:"tab",a:{name:"Protolathe"},f:[{p:[38,4,1163],t:7,e:"protolathe"}]}," ",{p:[40,3,1190],t:7,e:"tab",a:{name:"Circuit Imprinter"},f:[{p:[41,4,1225],t:7,e:"circuit"}]}," ",{p:[43,3,1249],t:7,e:"tab",a:{name:"Settings"},f:[{p:[44,4,1275],t:7,e:"settings"}]}]}],n:50,x:{r:["data.locked"],s:"!_0"},p:[17,1,706]}]},r.exports.components=r.exports.components||{};var i={settings:t(304),circuit:t(296),protolathe:t(302),destruct:t(298),diskopsdesign:t(299),diskopstech:t(300),designview:t(297),nodeview:t(301),techweb:t(305),rdheader:t(303)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,296:296,297:297,298:298,299:299,300:300,301:301,302:302,303:303,304:304,305:305}],296:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{t:4,f:[{p:[3,3,58],t:7,e:"ui-display",a:{title:"Circuit Imprinter Busy!"}}],n:50,r:"data.circuitbusy",p:[2,2,30]},{t:4,n:51,f:[{p:[5,3,130],t:7,e:"ui-display",f:[{p:[6,4,147],t:7,e:"ui-section",f:["Search Available Designs: ",{p:[7,4,189],t:7,e:"input",a:{value:[{t:2,r:"textsearch",p:[7,17,202]}],placeholder:"Type Here","class":"text"}}," ",{p:[8,5,261],t:7,e:"ui-button",a:{action:"textSearch",params:['{"latheType" : "circuit", "inputText" : ',{t:2,r:"textsearch",p:[8,84,340]},"}"]},f:["Search"]}]}," ",{p:[10,4,398],t:7,e:"ui-section",f:["Materials: ",{t:2,r:"data.circuitmats",p:[10,27,421]}," / ",{t:2,r:"data.circuitmaxmats",p:[10,50,444]}]}," ",{p:[11,4,485],t:7,e:"ui-section",f:["Reagents: ",{t:2,r:"data.circuitchems",p:[11,26,507]}," / ",{t:2,r:"data.circuitmaxchems",p:[11,50,531]}]}," ",{p:[12,3,572],t:7,e:"ui-display",f:[{p:[14,3,590],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"data.lathe_tabs",p:[14,18,605]}]},f:[{p:[15,4,631],t:7,e:"tab",a:{name:"Category List"},f:[{t:4,f:[{p:[17,6,696],t:7,e:"ui-button",a:{action:"switchcat",state:[{t:2,x:{r:["data.circuitcat"],s:'_0=="{{name}}"?"selected":null'},p:[17,43,733]}],params:['{"type" : "circuit", "cat" : "',{t:2,r:"name",p:[17,135,825]},'"}']},f:[{t:2,r:"name",p:[17,147,837]}]}],n:52,r:"data.circuitcats",p:[16,5,663]}]}," ",{p:[20,4,888],t:7,e:"tab",a:{name:"Selected Category"},f:[{t:4,f:[{p:[22,6,956],t:7,e:"ui-section",f:[{t:2,r:"name",p:[22,18,968]},{t:2,r:"matstring",p:[22,26,976]}," ",{p:[23,7,997],t:7,e:"ui-button",a:{action:"print",state:[{t:2,x:{r:["canprint"],s:'_0>1?null:"disabled"'},p:[23,40,1030]}],params:['{"latheType" : "circuit", "id" : "',{t:2,r:"id",p:[23,119,1109]},'"}']},f:["Print"]}]}],n:52,r:"data.circuitdes",p:[21,5,924]}]}," ",{p:[27,4,1187],t:7,e:"tab",a:{name:"Search Results"},f:[{t:4,f:[{p:[29,6,1254],t:7,e:"ui-section",f:[{t:2,r:"name",p:[29,18,1266]},{t:2,r:"matstring",p:[29,26,1274]}," ",{p:[30,7,1295],t:7,e:"ui-button",a:{action:"print",state:[{t:2,x:{r:["canprint"],s:'_0>1?null:"disabled"'},p:[30,40,1328]}],params:['{"latheType" : "circuit", "id" : "',{t:2,r:"id",p:[30,119,1407]},'"}']},f:["Print"]}]}],n:52,r:"data.circuitmatch",p:[28,5,1220]}]}," ",{p:[34,4,1485],t:7,e:"tab",a:{name:"Materials"},f:[{t:4,f:[{p:[36,6,1550],t:7,e:"ui-section",f:[{t:2,r:"name",p:[36,18,1562]}," : ",{t:2,r:"amount",p:[36,29,1573]}," cm3 - ",{t:4,f:[{p:[38,7,1623],t:7,e:"input",a:{value:[{t:2,r:"number",p:[38,20,1636]}],placeholder:["1-",{t:2,r:"sheets",p:[38,46,1662]}],"class":"number"}}," ",{p:[39,7,1698],t:7,e:"ui-button",a:{action:"releasemats",params:['{"latheType" : "circuit", "mat_id" : ',{t:2,r:"mat_id",p:[39,84,1775]},', "sheets" : ',{t:2,r:"number",p:[39,107,1798]},"}"]},f:["Release"]}],n:50,x:{r:["sheets"],s:"_0>0"},p:[37,6,1597]}]}],n:52,r:"data.circuitmat_list",p:[35,5,1513]}]}," ",{p:[44,4,1895],t:7,e:"tab",a:{name:"Chemicals"},f:[{t:4,f:[{p:[46,6,1961],t:7,e:"ui-section",f:[{t:2,r:"name",p:[46,18,1973]}," : ",{t:2,r:"amount",p:[46,29,1984]}," - ",{p:[47,7,2005],t:7,e:"ui-button", -a:{action:"purgechem",params:['{"latheType" : "circuit", "name" : ',{t:2,r:"name",p:[47,80,2078]},', "id" : ',{t:2,r:"reagentid",p:[47,97,2095]},"}"]},f:["Purge"]}]}],n:52,r:"data.circuitchem_list",p:[45,5,1923]}]}]}]}]}],r:"data.circuitbusy"}],n:50,r:"data.circuit_linked",p:[1,1,0]},{t:4,n:51,f:[{p:[55,2,2216],t:7,e:"ui-display",a:{title:"No Linked Circuit Imprinter"}}],r:"data.circuit_linked"}]},e.exports=a.extend(r.exports)},{205:205}],297:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,2,31],t:7,e:"ui-display",a:{title:[{t:2,r:"data.sdesign_name",p:[2,21,50]}]},f:[{p:[3,3,77],t:7,e:"ui-section",a:{title:"Description"},f:[{t:2,r:"data.sdesign_desc",p:[3,35,109]}]}]}," ",{p:[5,2,162],t:7,e:"ui-display",a:{title:"Lathe Types"},f:[{t:4,f:[{p:[7,4,239],t:7,e:"ui-section",a:{title:"Circuit Imprinter"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&1"},p:[6,3,198]}," ",{t:4,f:[{p:[10,4,346],t:7,e:"ui-section",a:{title:"Protolathe"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&2"},p:[9,3,305]}," ",{t:4,f:[{p:[13,4,446],t:7,e:"ui-section",a:{title:"Autolathe"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&4"},p:[12,3,405]}," ",{t:4,f:[{p:[16,4,545],t:7,e:"ui-section",a:{title:"Crafting Fabricator"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&8"},p:[15,3,504]}," ",{t:4,f:[{p:[19,4,655],t:7,e:"ui-section",a:{title:"Exosuit Fabricator"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&16"},p:[18,3,613]}," ",{t:4,f:[{p:[22,4,764],t:7,e:"ui-section",a:{title:"Biogenerator"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&32"},p:[21,3,722]}," ",{t:4,f:[{p:[25,4,867],t:7,e:"ui-section",a:{title:"Limb Grower"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&64"},p:[24,3,825]}," ",{t:4,f:[{p:[28,4,970],t:7,e:"ui-section",a:{title:"Ore Smelter"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&128"},p:[27,3,927]}]}," ",{p:[31,2,1045],t:7,e:"ui-display",a:{title:"Materials"},f:[{t:4,f:[{p:[33,4,1116],t:7,e:"ui-section",a:{title:[{t:2,r:"matname",p:[33,23,1135]}]},f:[{t:2,r:"matamt",p:[33,36,1148]}," cm^3"]}],n:52,r:"data.sdesign_materials",p:[32,3,1079]}]}],n:50,r:"data.design_selected",p:[1,1,0]},{t:4,f:[{p:[38,2,1248],t:7,e:"ui-display",a:{title:"No Design Selected."}}],n:50,x:{r:["data.design_selected"],s:"!_0"},p:[37,1,1216]}]},e.exports=a.extend(r.exports)},{205:205}],298:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{t:4,f:[{p:[4,3,60],t:7,e:"ui-display",a:{title:"Destructive Analyzer Busy!"}}],n:50,r:"data.destroybusy",p:[3,2,32]},{t:4,n:51,f:[{t:4,f:[{p:[7,4,168],t:7,e:"ui-display",a:{title:"Destructive Analyzer Unloaded"}}],n:50,x:{r:["data.destroy_loaded"],s:"!_0"},p:[6,3,135]},{t:4,n:51,f:[{p:[9,4,248],t:7,e:"ui-display",a:{title:"Loaded Item"},f:[{p:[10,4,285],t:7,e:"ui-section",a:{title:"Name"},f:[{t:2,r:"data.destroy_name",p:[10,29,310]}]}]}," ",{p:[12,4,367],t:7,e:"ui-display",a:{title:"Boost Nodes"},f:[{t:4,f:[{p:[14,6,438],t:7,e:"ui-section",a:{title:[{t:2,r:"name",p:[14,25,457]}," | ",{t:2,r:"value",p:[14,36,468]}]},f:[{p:[15,7,487],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["allow"],s:'_0?null:"disabled"'},p:[15,25,505]}],action:"deconstruct",params:['{"id":',{t:2,r:"id",p:[15,90,570]},"}"]},f:["Deconstruct and Boost"]}]}],n:52,r:"data.boost_paths",p:[13,5,405]}]}," ",{p:[19,4,670],t:7,e:"ui-button",a:{action:"eject_da"},f:["Eject Item"]}],x:{r:["data.destroy_loaded"],s:"!_0"}}],r:"data.destroybusy"}],n:50,r:"data.destroy_linked",p:[2,1,2]},{t:4,n:51,f:[{p:[23,2,755],t:7,e:"ui-display",a:{title:"No Linked Destructive Analyzer"}}],r:"data.destroy_linked"}]},e.exports=a.extend(r.exports)},{205:205}],299:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[3,2,24],t:7,e:"ui-display",a:{title:"No Design Disk Loaded"}}],n:50,x:{r:["data.ddisk"],s:"!_0"},p:[2,1,2]},{t:4,n:51,f:[{t:4,f:[{p:[6,3,121],t:7,e:"ui-display",a:{title:"Design Disk Updating"}}],n:50,r:"data.ddisk_update",p:[5,2,92]},{t:4,n:51,f:[{t:4,f:[{p:[9,4,221],t:7,e:"ui-display",a:{title:"Design Disk"},f:[{p:[10,5,259],t:7,e:"ui-section",a:{title:"Disk Space"},f:["Disk Capacity: ",{t:2,r:"data.ddisk_size",p:[10,51,305]}," blueprints."]}," ",{p:[11,5,355],t:7,e:"ui-section",a:{title:"Disk IO"},f:[{p:[11,33,383],t:7,e:"ui-button",a:{action:"ddisk_upall"},f:["Upload all designs"]}]}," ",{p:[12,5,464],t:7,e:"ui-section",a:{title:"Clear Disk"},f:[{p:[12,36,495],t:7,e:"ui-button",a:{action:"clear_designdisk",style:"danger"},f:["WIPE ALL DATA"]}]}," ",{p:[13,5,591],t:7,e:"ui-section",a:{title:"Eject Disk"},f:[{p:[13,36,622],t:7,e:"ui-button",a:{action:"eject_designdisk"},f:["Eject Disk"]}]}]}," ",{p:[15,4,717],t:7,e:"ui-display",a:{title:"Disk Contents"},f:[{t:4,f:[{p:[17,6,792],t:7,e:"ui-section",a:{title:"Number"},f:["#",{t:2,r:"pos",p:[17,34,820]},": ",{t:4,f:[{p:[19,8,866],t:7,e:"ui-button",a:{action:"upload_empty_ddisk_slot",params:['{"slot": "',{t:2,r:"pos",p:[19,70,928]},'"}']},f:["Upload to Empty Slot"]}],n:50,x:{r:["id"],s:'_0=="null"'},p:[18,7,837]},{t:4,n:51,f:[{p:[21,8,996],t:7,e:"ui-button",a:{action:"select_design",params:['{"id": "',{t:2,r:"id",p:[21,58,1046]},'"}'],state:[{t:2,x:{r:["data.sdesign_id","id"],s:'_0==_1?"selected":null'},p:[21,75,1063]}]},f:[{t:2,r:"name",p:[21,122,1110]}]}," ",{p:[22,8,1139],t:7,e:"ui-button",a:{action:"ddisk_erasepos",style:"danger",params:['{"id": "',{t:2,r:"id",p:[22,74,1205]},'"}'],state:[{t:2,x:{r:["id"],s:'_0=="null"?"disabled":null'},p:[22,91,1222]}]},f:["Delete Slot"]}],x:{r:["id"],s:'_0=="null"'}}]}],n:52,r:"data.ddisk_designs",p:[16,5,757]}]}],n:50,x:{r:["data.ddisk_upload"],s:"!_0"},p:[8,3,190]},{t:4,n:51,f:[{p:[28,4,1367],t:7,e:"ui-display",a:{title:"Upload Design to Disk"},f:[{p:[28,46,1409],t:7,e:"ui-section",f:["Available Designs:"]}]}," ",{t:4,f:[{p:[30,5,1513],t:7,e:"ui-section",f:[{p:[30,17,1525],t:7,e:"ui-button",a:{action:"ddisk_uploaddesign",params:['{"id": "',{t:2,r:"id",p:[30,72,1580]},'"}']},f:[{t:2,r:"name",p:[30,82,1590]}]}]}],n:52,r:"data.ddisk_possible_designs",p:[29,4,1470]}],x:{r:["data.ddisk_upload"],s:"!_0"}}],r:"data.ddisk_update"}],x:{r:["data.ddisk"],s:"!_0"}}]},e.exports=a.extend(r.exports)},{205:205}],300:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[3,2,24],t:7,e:"ui-display",a:{title:"No Technology Disk Loaded"}}],n:50,x:{r:["data.tdisk"],s:"!_0"},p:[2,1,2]},{t:4,n:51,f:[{t:4,f:[{p:[6,3,125],t:7,e:"ui-display",a:{title:"Technology Disk Updating"}}],n:50,r:"data.tdisk_update",p:[5,2,96]},{t:4,n:51,f:[{p:[8,3,198],t:7,e:"ui-display",a:{title:"Technology Disk"},f:[{p:[9,4,239],t:7,e:"ui-section",a:{title:"Disk IO"},f:[{p:[9,32,267],t:7,e:"ui-button",a:{action:"tdisk_down"},f:["Download Research to Disk"]},{p:[9,100,335],t:7,e:"ui-button",a:{action:"tdisk_up"},f:["Upload Research from Disk"]}," ",{p:[10,4,406],t:7,e:"ui-section",a:{title:"Clear Disk"},f:[{p:[10,35,437],t:7,e:"ui-button",a:{action:"clear_techdisk",style:"danger"},f:["WIPE ALL DATA"]}]}," ",{p:[11,4,530],t:7,e:"ui-section",a:{title:"Eject Disk"},f:[{p:[11,35,561],t:7,e:"ui-button",a:{action:"eject_techdisk"},f:["Eject Disk"]}]}]}]}," ",{p:[13,3,652],t:7,e:"ui-display",a:{title:"Disk Contents"},f:[{t:4,f:[{p:[15,5,723],t:7,e:"ui-button",a:{action:"select_node",params:['{"id": "',{t:2,r:"id",p:[15,53,771]},'"}'],state:[{t:2,x:{r:["data.snode_id","id"],s:'_0==_1?"selected":null'},p:[15,70,788]}]},f:[{t:2,r:"display_name",p:[15,115,833]}]}],n:52,r:"data.tdisk_nodes",p:[14,4,691]}]}],r:"data.tdisk_update"}],x:{r:["data.tdisk"],s:"!_0"}}]},e.exports=a.extend(r.exports)},{205:205}],301:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,2,29],t:7,e:"ui-display",a:{title:[{t:2,r:"data.snode_name",p:[2,21,48]}]},f:[{p:[3,3,73],t:7,e:"ui-section",a:{title:"Description"},f:["Description: ",{t:2,r:"data.snode_desc",p:[3,48,118]}]}," ",{p:[4,3,154],t:7,e:"ui-section",a:{title:"Point Cost"},f:["Point Cost: ",{t:2,r:"data.snode_cost",p:[4,46,197]}]}," ",{p:[5,3,233],t:7,e:"ui-section",a:{title:"Export Price"},f:["Export Price: ",{t:2,r:"data.snode_export",p:[5,50,280]}]}," ",{p:[6,3,318],t:7,e:"ui-button",a:{action:"research_node",params:['{"id"="',{t:2,r:"id",p:[6,52,367]},'"}'],state:[{t:2,x:{r:["data.snode_researched"],s:'_0?"disabled":null'},p:[6,69,384]}]},f:[{t:2,x:{r:["data.snode_researched"],s:'_0?"Researched":"Research Node"'},p:[6,115,430]}]}]}," ",{p:[8,2,518],t:7,e:"ui-display",a:{title:"Prerequisites"},f:[{t:4,f:[{p:[10,4,588],t:7,e:"ui-button",a:{action:"select_node",params:['{"id": "',{t:2,r:"id",p:[10,52,636]},'"}'],state:[{t:2,x:{r:["data.snode_id","id"],s:'_0==_1?"selected":null'},p:[10,69,653]}]},f:[{t:2,r:"display_name",p:[10,114,698]}]}],n:52,r:"data.node_prereqs",p:[9,3,556]}]}," ",{p:[13,2,759],t:7,e:"ui-display",a:{title:"Unlocks"},f:[{t:4,f:[{p:[15,4,823],t:7,e:"ui-button",a:{action:"select_node",params:['{"id": "',{t:2,r:"id",p:[15,52,871]},'"}'],state:[{t:2,x:{r:["data.snode_id","id"],s:'_0==_1?"selected":null'},p:[15,69,888]}]},f:[{t:2,r:"display_name",p:[15,114,933]}]}],n:52,r:"data.node_unlocks",p:[14,3,791]}]}," ",{p:[18,2,994],t:7,e:"ui-display",a:{title:"Designs"},f:[{t:4,f:[{p:[20,4,1058],t:7,e:"ui-button",a:{action:"select_design",params:['{"id": "',{t:2,r:"id",p:[20,54,1108]},'"}'],state:[{t:2,x:{r:["data.sdesign_id","id"],s:'_0==_1?"selected":null'},p:[20,71,1125]}]},f:[{t:2,r:"name",p:[20,118,1172]}]}],n:52,r:"data.node_designs",p:[19,3,1026]}]}],n:50,r:"data.node_selected",p:[1,1,0]},{t:4,f:[{p:[25,2,1263],t:7,e:"ui-display",a:{title:"No Node Selected."}}],n:50,x:{r:["data.node_selected"],s:"!_0"},p:[24,1,1233]}]},e.exports=a.extend(r.exports)},{205:205}],302:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{t:4,f:[{p:[3,3,59],t:7,e:"ui-display",a:{title:"Protolathe Busy!"}}],n:50,r:"data.protobusy",p:[2,2,33]},{t:4,n:51,f:[{p:[5,3,124],t:7,e:"ui-display",f:[{p:[6,4,141],t:7,e:"ui-section",f:["Search Available Designs: ",{p:[7,4,183],t:7,e:"input",a:{value:[{t:2,r:"textsearch",p:[7,17,196]}],placeholder:"Type Here","class":"text"}}," ",{p:[8,5,255],t:7,e:"ui-button",a:{action:"textSearch",params:['{"latheType" : "proto", "inputText" : ',{t:2,r:"textsearch",p:[8,82,332]},"}"]},f:["Search"]}]}," ",{p:[10,4,390],t:7,e:"ui-section",f:["Materials: ",{t:2,r:"data.protomats",p:[10,27,413]}," / ",{t:2,r:"data.protomaxmats",p:[10,48,434]}]}," ",{p:[11,4,473],t:7,e:"ui-section",f:["Reagents: ",{t:2,r:"data.protochems",p:[11,26,495]}," / ",{t:2,r:"data.protomaxchems",p:[11,48,517]}]}," ",{p:[12,3,556],t:7,e:"ui-display",f:[{p:[14,3,574],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"data.lathe_tabs",p:[14,18,589]}]},f:[{p:[15,4,615],t:7,e:"tab",a:{name:"Category List"},f:[{t:4,f:[{p:[17,6,678],t:7,e:"ui-button",a:{action:"switchcat",state:[{t:2,x:{r:["data.protocat","name"],s:'_0==_1?"selected":null'},p:[17,43,715]}],params:['{"type" : "proto", "cat" : "',{t:2,r:"name",p:[17,125,797]},'"}']},f:[{t:2,r:"name",p:[17,137,809]}]}],n:52,r:"data.protocats",p:[16,5,647]}]}," ",{p:[20,4,860],t:7,e:"tab",a:{name:"Selected Category"},f:[{t:4,f:[{p:[22,6,926],t:7,e:"ui-section",f:[{t:2,r:"name",p:[22,18,938]},{t:2,r:"matstring",p:[22,26,946]}," ",{t:4,f:[{p:[24,8,996],t:7,e:"input",a:{value:[{t:2,r:"number",p:[24,21,1009]}],placeholder:["1-",{t:2,x:{r:["canprint"],s:"_0>10?10:_0"},p:[24,47,1035]}],"class":"number"}}],n:50,x:{r:["canprint"],s:"_0>1"},p:[23,7,967]}," ",{p:[26,7,1108],t:7,e:"ui-button",a:{action:"print",state:[{t:2,x:{r:["canprint"],s:'_0>1?null:"disabled"'},p:[26,40,1141]}],params:['{"latheType" : "proto", "id" : "',{t:2,r:"id",p:[26,117,1218]},'", "amount" : "',{t:2,r:"number",p:[26,138,1239]},'"}']},f:["Print"]}]}],n:52,r:"data.protodes",p:[21,5,896]}]}," ",{p:[30,4,1321],t:7,e:"tab",a:{name:"Search Results"},f:[{t:4,f:[{p:[32,6,1386],t:7,e:"ui-section",f:[{t:2,r:"name",p:[32,18,1398]},{t:2,r:"matstring",p:[32,26,1406]}," ",{t:4,f:[{p:[34,8,1456],t:7,e:"input",a:{value:[{t:2,r:"number",p:[34,21,1469]}],placeholder:["1-",{t:2,x:{r:["canprint"],s:"_0>10?10:_0"},p:[34,47,1495]}],"class":"number"}}],n:50,x:{r:["canprint"],s:"_0>1"},p:[33,7,1427]}," ",{p:[36,7,1568],t:7,e:"ui-button",a:{action:"print",state:[{t:2,x:{r:["canprint"],s:'_0>1?null:"disabled"'},p:[36,40,1601]}],params:['{"latheType" : "proto", "id" : "',{t:2,r:"id",p:[36,117,1678]},'", "amount" : "',{t:2,r:"number",p:[36,138,1699]},'"}']},f:["Print"]}]}],n:52,r:"data.protomatch",p:[31,5,1354]}]}," ",{p:[40,4,1781],t:7,e:"tab",a:{name:"Materials"},f:[{t:4,f:[{p:[42,6,1844],t:7,e:"ui-section",f:[{t:2,r:"name",p:[42,18,1856]}," : ",{t:2,r:"amount",p:[42,29,1867]}," cm3 - ",{t:4,f:[{p:[44,7,1917],t:7,e:"input",a:{value:[{t:2,r:"number",p:[44,20,1930]}],placeholder:["1-",{t:2,r:"sheets",p:[44,46,1956]}],"class":"number"}}," ",{p:[45,7,1992],t:7,e:"ui-button",a:{action:"releasemats",params:['{"latheType" : "proto", "mat_id" : ',{t:2,r:"mat_id",p:[45,82,2067]},', "sheets" : ',{t:2,r:"number",p:[45,105,2090]},"}"]},f:["Release"]}],n:50,x:{r:["sheets"],s:"_0>0"},p:[43,6,1891]}]}],n:52,r:"data.protomat_list",p:[41,5,1809]}]}," ",{p:[50,4,2187],t:7,e:"tab",a:{name:"Chemicals"},f:[{t:4,f:[{p:[52,6,2251],t:7,e:"ui-section",f:[{t:2,r:"name",p:[52,18,2263]}," : ",{t:2,r:"amount",p:[52,29,2274]}," - ",{p:[53,7,2295],t:7,e:"ui-button",a:{action:"purgechem",params:['{"latheType" : "proto", "name" : ',{t:2,r:"name",p:[53,78,2366]},', "id" : ',{t:2,r:"reagentid",p:[53,95,2383]},"}"]},f:["Purge"]}]}],n:52,r:"data.protochem_list",p:[51,5,2215]}]}]}]}]}],r:"data.protobusy"}],n:50,r:"data.protolathe_linked",p:[1,1,0]},{t:4,n:51,f:[{p:[61,2,2504],t:7,e:"ui-display",a:{title:"No Linked Protolathe"}}],r:"data.protolathe_linked"}]},e.exports=a.extend(r.exports)},{205:205}],303:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,1,14],t:7,e:"span",a:{"class":"memoedit"},f:["NanoTrasen R&D Console"]},{p:[2,53,66],t:7,e:"br"}," Available Points: ",{p:[3,19,91],t:7,e:"ui-section",a:{title:"Research Points"},f:[{t:2,r:"data.research_points_stored",p:[3,55,127]}]}," ",{p:[4,1,173],t:7,e:"ui-section",a:{title:["Page Selection - ",{t:2,r:"page",p:[4,37,209]}]},f:[{p:[4,47,219],t:7,e:"input",a:{value:[{t:2,r:"pageselect",p:[4,60,232]}],placeholder:"1","class":"number"}}," Select Page: ",{p:[5,14,294],t:7,e:"ui-button",a:{action:"page",params:['{"num" : "',{t:2,r:"pageselect",p:[5,57,337]},'"}']},f:["[Go]"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],304:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"span",a:{"class":"bad"},f:["Settings"]},{p:[1,34,33],t:7,e:"br"},{p:[1,39,38],t:7,e:"br"}," ",{p:[2,1,45],t:7,e:"ui-button",a:{action:"Resync"},f:["RESYNC MACHINERY"]},{p:[2,56,100],t:7,e:"br"}," ",{p:[3,1,107],t:7,e:"ui-button",a:{action:"Lock"},f:["LOCK"]}," ",{p:[4,1,150],t:7,e:"ui-button",a:{action:"disconnect",params:'{"type" : "destroy"}',state:[{t:2,x:{r:["data.destroy_linked"],s:'_0?null:"disabled"'},p:[4,71,220]}]},f:["Disconnect Destructive Analyzer"]}," ",{p:[5,1,309],t:7,e:"ui-button",a:{action:"disconnect",params:'{"type" : "lathe"}',state:[{t:2,x:{r:["data.protolathe_linked"],s:'_0?null:"disabled"'},p:[5,69,377]}]},f:["Disconnect Protolathe"]}," ",{p:[6,1,459],t:7,e:"ui-button",a:{action:"disconnect",params:'{"type" : "imprinter"}',state:[{t:2,x:{r:["data.circuit_linked"],s:'_0?null:"disabled"'},p:[6,73,531]}]},f:["Disconnect Circuit Imprinter"]}]},e.exports=a.extend(r.exports)},{205:205}],305:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Available for Research"},f:[{t:4,f:[{p:[3,3,78],t:7,e:"ui-button",a:{action:"select_node",params:['{"id": "',{t:2,r:"id",p:[3,51,126]},'"}'],state:[{t:2,x:{r:["data.snode_id","id"],s:'_0==_1?"selected":null'},p:[3,68,143]}]},f:[{t:2,r:"display_name",p:[3,113,188]}]}],n:52,r:"data.techweb_avail",p:[2,2,46]}]}," ",{p:[6,1,245],t:7,e:"ui-display",a:{title:"Locked Nodes"},f:[{t:4,f:[{p:[8,3,314],t:7,e:"ui-button",a:{action:"select_node",params:['{"id": "',{t:2,r:"id",p:[8,51,362]},'"}'],state:[{t:2,x:{r:["data.snode_id","id"],s:'_0==_1?"selected":null'},p:[8,68,379]}]},f:[{t:2,r:"display_name",p:[8,113,424]}]}],n:52,r:"data.techweb_locked",p:[7,2,281]}]}," ",{p:[11,1,482],t:7,e:"ui-display",a:{title:"Researched Nodes"},f:[{t:4,f:[{p:[13,3,559],t:7,e:"ui-button",a:{action:"select_node",params:['{"id": "',{t:2,r:"id",p:[13,51,607]},'"}'],state:[{t:2,x:{r:["data.snode_id","id"],s:'_0==_1?"selected":null'},p:[13,68,624]}]},f:[{t:2,r:"display_name",p:[13,113,669]}]}],n:52,r:"data.techweb_researched",p:[12,2,522]}]}]},e.exports=a.extend(r.exports)},{205:205}],306:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,1,25],t:7,e:"ui-notice",f:[{p:[3,3,40],t:7,e:"span",f:["The grinder is currently processing and cannot be used."]}]}],n:50,r:"data.processing",p:[1,1,0]},{p:{button:[{p:[8,5,208],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.operating","data.contents"],s:'(_0==0)&&_1?null:"disabled"'},p:[8,36,239]}],action:"eject"},f:["Eject Contents"]}]},t:7,e:"ui-display",a:{title:"Processing Chamber",button:0},f:[" ",{p:[10,3,364],t:7,e:"ui-section",a:{label:"Grinding"},f:[{p:[11,5,399],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.operating"],s:'_0?"average":"good"'},p:[11,18,412]}]},f:[{t:2,x:{r:["data.operating"],s:'_0?"Busy":"Ready"'},p:[11,59,453]}]}," ",{p:[12,2,500],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.operating","data.contents"],s:'(_0==0)&&_1?null:"disabled"'},p:[12,35,533]}],action:"grind"},f:["Activate"]}]}," ",{p:[14,3,653],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{t:4,f:[{p:[17,9,755],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:["The ",{t:2,r:"name",p:[17,56,802]}]},{p:[17,71,817],t:7,e:"br"}],n:52,r:"adata.contentslist",p:[16,7,717]},{t:4,n:51,f:[{p:[19,9,848],t:7,e:"span",f:["No Contents"]}],r:"adata.contentslist"}],n:50,r:"data.contents",p:[15,5,688]},{t:4,n:51,f:[{p:[22,7,911],t:7,e:"span",f:["No Contents"]}],r:"data.contents"}]}]}," ",{p:{button:[{p:[28,5,1047],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.operating","data.isBeakerLoaded"],s:'(_0==0)&&_1?null:"disabled"'},p:[28,36,1078]}],action:"detach"},f:["Detach"]}]},t:7,e:"ui-display",a:{title:"Container",button:0},f:[" ",{p:[30,3,1202],t:7,e:"ui-section",a:{label:"Reagents"},f:[{t:4,f:[{p:[32,7,1272],t:7,e:"span",f:[{t:2,x:{r:["adata.beakerCurrentVolume"],s:"Math.round(_0)"},p:[32,13,1278]},"/",{t:2,r:"data.beakerMaxVolume",p:[32,55,1320]}," Units"]}," ",{p:[33,7,1365],t:7,e:"br"}," ",{t:4,f:[{p:[35,9,1418],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[35,52,1461]}," units of ",{t:2,r:"name",p:[35,87,1496]}]},{p:[35,102,1511],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[34,7,1378]},{t:4,n:51,f:[{p:[37,9,1542],t:7,e:"span",a:{"class":"bad"},f:["Container Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[31,5,1237]},{t:4,n:51,f:[{p:[40,7,1621],t:7,e:"span",a:{"class":"average"},f:["No Container"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=a.extend(r.exports)},{205:205}],307:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" "," ",{t:4,f:[{p:[5,2,123],t:7,e:"dirsel"}],n:50,x:{r:["data.mode"],s:"_0>=0"},p:[4,1,98]},{t:4,f:[{p:[8,2,187],t:7,e:"colorsel"}],n:50,x:{r:["data.mode"],s:"_0==-2||_0==0"},p:[7,1,143]},{p:[10,1,209],t:7,e:"ui-display",a:{title:"Utilities"},f:[{p:[11,2,242],t:7,e:"ui-section",f:[{p:[12,3,258],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0>=0?"check-square-o":"square-o"'},p:[12,20,275]}],state:[{t:2,x:{r:["data.mode"],s:'_0>=0?"selected":null'},p:[12,79,334]}],action:"mode",params:['{"mode": ',{t:2,r:"data.screen",p:[13,35,409]},"}"]},f:["Lay Pipes"]}]}," ",{p:[15,2,467],t:7,e:"ui-section",f:[{p:[16,3,483],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0==-1?"check-square-o":"square-o"'},p:[16,20,500]}],state:[{t:2,x:{r:["data.mode"],s:'_0==-1?"selected":null'},p:[16,80,560]}],action:"mode",params:'{"mode": -1}'},f:["Eat Pipes"]}]}," ",{p:[19,2,681],t:7,e:"ui-section",f:[{p:[20,3,697],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0==-2?"check-square-o":"square-o"'},p:[20,20,714]}],state:[{t:2,x:{r:["data.mode"],s:'_0==-2?"selected":null'},p:[20,80,774]}],action:"mode",params:'{"mode": -2}'},f:["Paint Pipes"]}]}]}," ",{p:[24,1,911],t:7,e:"ui-display",a:{title:"Category"},f:[{p:[25,2,943],t:7,e:"ui-section",f:[{p:[26,3,959],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.screen"],s:'_0==0?"check-square-o":"square-o"'},p:[26,20,976]}],state:[{t:2,x:{r:["data.screen"],s:'_0==0?"selected":null'},p:[26,81,1037]}],action:"screen",params:'{"screen": 0}'},f:["Atmospherics"]}," ",{p:[28,3,1150],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.screen"],s:'_0==2?"check-square-o":"square-o"'},p:[28,20,1167]}],state:[{t:2,x:{r:["data.screen"],s:'_0==2?"selected":null'},p:[28,81,1228]}],action:"screen",params:'{"screen": 2}'},f:["Disposals"]}]}," ",{t:4,f:[{p:[32,3,1381],t:7,e:"ui-section",a:{label:"Piping Layer"},f:[{p:[33,4,1419],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.piping_layer"],s:'_0==1?"selected":null'},p:[33,22,1437]}],action:"piping_layer",params:'{"piping_layer": 1}'},f:["1"]}," ",{p:[35,4,1559],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.piping_layer"],s:'_0==2?"selected":null'},p:[35,22,1577]}],action:"piping_layer",params:'{"piping_layer": 2}'},f:["2"]}," ",{p:[37,4,1699],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.piping_layer"],s:'_0==3?"selected":null'},p:[37,22,1717]}],action:"piping_layer",params:'{"piping_layer": 3}'},f:["3"]}]}],n:50,x:{r:["data.screen"],s:"_0==0"},p:[31,2,1353]}]}," ",{t:4,f:[{p:[43,2,1906],t:7,e:"ui-display",a:{title:[{t:2,r:"cat_name",p:[43,21,1925]}]},f:[{t:4,f:[{p:[45,4,1965],t:7,e:"ui-section",f:[{p:[46,5,1983],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["selected"],s:'_0?"selected":null'},p:[46,23,2001]}],action:"pipe_type",params:['{"pipe_type": ',{t:2,r:"pipe_index",p:[47,28,2082]},', "category": ',{t:2,r:"cat_name",p:[47,56,2110]},"}"]},f:[{t:2,r:"pipe_name",p:[47,71,2125]}]}]}],n:52,r:"recipes",p:[44,3,1943]}]}],n:52,r:"data.categories",p:[42,1,1878]}]},r.exports.components=r.exports.components||{};var i={colorsel:t(308),dirsel:t(309)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,308:308,309:309}],308:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Color"},f:[{t:4,f:[{p:[3,3,60],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["selected"],s:'_0?"selected":null'},p:[3,21,78]}],action:"color",params:['{"paint_color": ',{t:2,r:"color_name",p:[4,28,155]},"}"]},f:[{t:2,r:"color_name",p:[4,45,172]}]}],n:52,r:"data.paint_colors",p:[2,2,29]}]}]},e.exports=a.extend(r.exports)},{205:205}],309:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Direction"},f:[{t:4,f:[{p:[3,3,64],t:7,e:"ui-section",f:[{t:4,f:[{p:[5,5,105],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["selected"],s:'_0?"selected":null'},p:[5,23,123]}],action:"setdir",params:['{"dir": ',{t:2,r:"dir",p:[6,22,195]},', "flipped": ',{t:2,r:"flipped",p:[6,42,215]},"}"]},f:[{p:[6,56,229],t:7,e:"img",a:{src:["pipe.",{t:2,r:"dir",p:[6,71,244]},".",{t:2,r:"icon_state",p:[6,79,252]},".png"],title:[{t:2,r:"dir_name",p:[6,106,279]}]}}]}],n:52,r:"previews",p:[4,4,81]}]}],n:52,r:"data.preview_rows",p:[2,2,33]}]}]},e.exports=a.extend(r.exports)},{205:205}],310:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,23],t:7,e:"ui-notice",f:[{t:2,r:"data.notice",p:[3,5,40]}]}],n:50,r:"data.notice",p:[1,1,0]},{p:[6,1,82],t:7,e:"ui-display",a:{title:"Satellite Network Control",button:0},f:[{t:4,f:[{p:[8,4,168],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:[{p:[9,9,209],t:7,e:"div",a:{"class":"content"},f:["#",{t:2,r:"id",p:[9,31,231]}]}," ",{p:[10,9,253],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"mode",p:[10,30,274]}]}," ",{p:[11,9,298],t:7,e:"div",a:{"class":"content"},f:[{p:[12,11,331],t:7,e:"ui-button",a:{action:"toggle",params:['{"id": "',{t:2,r:"id",p:[12,54,374]},'"}']},f:[{t:2,x:{r:["active"],s:'_0?"Deactivate":"Activate"'},p:[12,64,384]}]}]}]}],n:52,r:"data.satellites",p:[7,2,138]}]}," ",{t:4,f:[{p:[18,1,528],t:7,e:"ui-display",a:{title:"Station Shield Coverage"},f:[{p:[19,3,576],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.meteor_shield_coverage_max",p:[19,24,597]}],value:[{t:2,r:"data.meteor_shield_coverage",p:[19,68,641]}]},f:[{t:2,x:{r:["data.meteor_shield_coverage","data.meteor_shield_coverage_max"],s:"100*_0/_1"},p:[19,101,674]}," %"]}," ",{p:[20,1,758],t:7,e:"ui-display",f:[]}]}],n:50,r:"data.meteor_shield",p:[17,1,500]}]},e.exports=a.extend(r.exports)},{205:205}],311:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,26],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["enabled"],s:'_0?"check-square-o":"square-o"'},p:[2,20,43]}],style:[{t:2,x:{r:["enabled"],s:'_0?"selected":null'},p:[2,72,95]}],action:"toggle_filter",params:['{"id_tag": "',{t:2,r:"id_tag",p:[3,48,176]},'", "val": ',{t:2,r:"gas_id",p:[3,68,196]},"}"]},f:[{t:2,r:"gas_name",p:[3,81,209]}]}],n:52,r:"filter_types",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{205:205}],312:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" "," "," ",{p:[5,1,200],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"data.tabs",p:[5,16,215]}]},f:[{p:[6,2,233],t:7,e:"tab",a:{name:"Status"},f:[{p:[7,3,256],t:7,e:"status"}]}," ",{p:[9,2,277],t:7,e:"tab",a:{name:"Templates"},f:[{p:[10,3,303],t:7,e:"templates"}]}," ",{p:[12,2,327],t:7,e:"tab",a:{name:"Modification"},f:[{t:4,f:[{p:[14,3,381],t:7,e:"modification"}],n:50,r:"data.selected",p:[13,3,356]}," ",{t:4,f:[{p:[17,3,437],t:7,e:"span",a:{"class":"bad"},f:["No shuttle selected."]}],n:50,x:{r:["data.selected"],s:"!_0"},p:[16,3,411]}]}]}]},r.exports.components=r.exports.components||{};var i={modification:t(313),templates:t(315),status:t(314)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,313:313,314:314,315:315}],313:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:["Selected: ",{t:2,r:"data.selected.name",p:[1,30,29]}]},f:[{t:4,f:[{p:[3,5,96],t:7,e:"ui-section",a:{label:"Description"},f:[{t:2,r:"data.selected.description",p:[3,37,128]}]}],n:50,r:"data.selected.description",p:[2,3,57]}," ",{t:4,f:[{p:[6,5,224],t:7,e:"ui-section",a:{label:"Admin Notes"},f:[{t:2,r:"data.selected.admin_notes",p:[6,37,256]}]}],n:50,r:"data.selected.admin_notes",p:[5,3,185]}]}," ",{t:4,f:[{p:[11,3,361],t:7,e:"ui-display",a:{title:["Existing Shuttle: ",{t:2,r:"data.existing_shuttle.name",p:[11,40,398]}]},f:["Status: ",{t:2,r:"data.existing_shuttle.status",p:[12,13,444]}," ",{t:4,f:["(",{t:2,r:"data.existing_shuttle.timeleft",p:[14,8,526]},")"],n:50,r:"data.existing_shuttle.timer",p:[13,5,482]}," ",{p:[16,5,580],t:7,e:"ui-button",a:{action:"jump_to",params:['{"type": "mobile", "id": "',{t:2,r:"data.existing_shuttle.id",p:[17,41,649]},'"}']},f:["Jump To"]}]}],n:50,r:"data.existing_shuttle",p:[10,1,328]},{t:4,f:[{p:[24,3,778],t:7,e:"ui-display",a:{title:"Existing Shuttle: None"}}],n:50,x:{r:["data.existing_shuttle"],s:"!_0"},p:[23,1,744]},{p:[27,1,847],t:7,e:"ui-button",a:{action:"preview",params:['{"shuttle_id": "',{t:2,r:"data.selected.shuttle_id",p:[28,27,902]},'"}']},f:["Preview"]}," ",{p:[31,1,961],t:7,e:"ui-button",a:{action:"load",params:['{"shuttle_id": "',{t:2,r:"data.selected.shuttle_id",p:[32,27,1013]},'"}'],style:"danger"},f:["Load"]}," ",{p:[37,1,1089],t:7,e:"ui-display",a:{title:"Status"},f:[]}]},e.exports=a.extend(r.exports)},{205:205}],314:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,27],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[2,22,46]}," (",{t:2,r:"id",p:[2,32,56]},")"]},f:[{t:2,r:"status",p:[3,5,71]}," ",{t:4,f:["(",{t:2,r:"timeleft",p:[5,8,109]},")"],n:50,r:"timer",p:[4,5,87]}," ",{p:[7,5,141],t:7,e:"ui-button",a:{action:"jump_to",params:['{"type": "mobile", "id": "',{t:2,r:"id",p:[7,67,203]},'"}']},f:["Jump To"]}," ",{p:[10,5,252],t:7,e:"ui-button",a:{action:"fast_travel",params:['{"id": "',{t:2,r:"id",p:[10,53,300]},'"}'],state:[{t:2,x:{r:["can_fast_travel"],s:'_0?null:"disabled"'},p:[10,70,317]}]},f:["Fast Travel"]}]}],n:52,r:"data.shuttles",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{205:205}],315:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"data.templates_tabs",p:[1,16,15]}]},f:[{t:4,f:[{p:[3,5,74],t:7,e:"tab",a:{name:[{t:2,r:"port_id",p:[3,16,85]}]},f:[{t:4,f:[{p:[5,9,135],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[5,28,154]}]},f:[{t:4,f:[{p:[7,13,209],t:7,e:"ui-section",a:{label:"Description"},f:[{t:2,r:"description",p:[7,45,241]}]}],n:50,r:"description",p:[6,11,176]}," ",{t:4,f:[{p:[10,13,333],t:7,e:"ui-section",a:{label:"Admin Notes"},f:[{t:2,r:"admin_notes",p:[10,45,365]}]}],n:50,r:"admin_notes",p:[9,11,300]}," ",{p:[13,11,426],t:7,e:"ui-button",a:{action:"select_template",params:['{"shuttle_id": "',{t:2,r:"shuttle_id",p:[14,37,499]},'"}'],state:[{t:2,x:{r:["data.selected.shuttle_id","shuttle_id"],s:'_0==_1?"selected":null'},p:[15,20,537]}]},f:[{t:2,x:{r:["data.selected.shuttle_id","shuttle_id"],s:'_0==_1?"Selected":"Select"'},p:[17,13,630]}]}]}],n:52,r:"templates",p:[4,7,106]}]}],n:52,r:"data.templates",p:[2,3,44]}]}]},e.exports=a.extend(r.exports)},{205:205}],316:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[2,3,33],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[3,3,66],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[3,9,72]}]}]}," ",{t:4,f:[{p:[6,5,186],t:7,e:"ui-section",a:{label:"State"},f:[{p:[7,7,220],t:7,e:"span",a:{"class":[{t:2,r:"data.occupant.statstate",p:[7,20,233]}]},f:[{t:2,r:"data.occupant.stat",p:[7,49,262]}]}]}," ",{p:[9,5,315],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[10,7,350],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.occupant.minHealth",p:[10,20,363]}],max:[{t:2,r:"data.occupant.maxHealth",p:[10,54,397]}],value:[{t:2,r:"data.occupant.health",p:[10,90,433]}],state:[{t:2,x:{r:["data.occupant.health"],s:'_0>=0?"good":"average"'},p:[11,16,475]}]},f:[{t:2,x:{r:["adata.occupant.health"],s:"Math.round(_0)"},p:[11,68,527]}]}]}," ",{t:4,f:[{p:[14,7,764],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[14,26,783]}]},f:[{p:[15,9,804],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.maxHealth",p:[15,30,825]}],value:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[15,66,861]}],state:"bad"},f:[{t:2,x:{r:["type","adata.occupant"],s:"Math.round(_1[_0])"},p:[15,103,898]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}]'},p:[13,5,598]}," ",{p:[18,5,985],t:7,e:"ui-section",a:{label:"Cells"},f:[{p:[19,9,1021],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.occupant.cloneLoss"],s:'_0?"bad":"good"'},p:[19,22,1034]}]},f:[{t:2,x:{r:["data.occupant.cloneLoss"],s:'_0?"Damaged":"Healthy"'},p:[19,68,1080]}]}]}," ",{p:[21,5,1163],t:7,e:"ui-section",a:{label:"Brain"},f:[{p:[22,9,1199],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.occupant.brainLoss"],s:'_0?"bad":"good"'},p:[22,22,1212]}]},f:[{t:2,x:{r:["data.occupant.brainLoss"],s:'_0?"Abnormal":"Healthy"'},p:[22,68,1258]}]}]}," ",{p:[24,5,1342],t:7,e:"ui-section",a:{label:"Bloodstream"},f:[{t:4,f:[{p:[26,11,1429],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,1)"},p:[26,54,1472]}," units of ",{t:2,r:"name",p:[26,89,1507]}]},{p:[26,104,1522],t:7,e:"br"}],n:52,r:"adata.occupant.reagents",p:[25,9,1384]},{t:4,n:51,f:[{p:[28,11,1557],t:7,e:"span",a:{"class":"good"},f:["Pure"]}],r:"adata.occupant.reagents"}]}],n:50,r:"data.occupied",p:[5,3,159]}]}," ",{p:[33,1,1653],t:7,e:"ui-display",a:{title:"Controls"},f:[{p:[34,2,1685],t:7,e:"ui-section",a:{label:"Door" -},f:[{p:[35,5,1716],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.open"],s:'_0?"unlock":"lock"'},p:[35,22,1733]}],action:"door"},f:[{t:2,x:{r:["data.open"],s:'_0?"Open":"Closed"'},p:[35,71,1782]}]}]}," ",{p:[37,3,1847],t:7,e:"ui-section",a:{label:"Inject"},f:[{t:4,f:[{p:[39,7,1908],t:7,e:"ui-button",a:{icon:"flask",state:[{t:2,x:{r:["data.occupied","allowed"],s:'_0&&_1?null:"disabled"'},p:[39,38,1939]}],action:"inject",params:['{"chem": "',{t:2,r:"id",p:[39,122,2023]},'"}']},f:[{t:2,r:"name",p:[39,132,2033]}]},{p:[39,152,2053],t:7,e:"br"}],n:52,r:"data.chems",p:[38,5,1880]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],317:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,25],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[2,22,44]}],labelcolor:[{t:2,r:"htmlcolor",p:[2,44,66]}],candystripe:0,right:0},f:[{p:[3,5,105],t:7,e:"ui-section",a:{label:"Status"},f:[{p:[3,32,132],t:7,e:"span",a:{"class":[{t:2,x:{r:["status"],s:'_0=="Dead"?"bad bold":_0=="Unconscious"?"average bold":"good"'},p:[3,45,145]}]},f:[{t:2,r:"status",p:[3,132,232]}]}]}," ",{p:[4,5,268],t:7,e:"ui-section",a:{label:"Jelly"},f:[{t:2,r:"exoticblood",p:[4,31,294]}]}," ",{p:[5,5,328],t:7,e:"ui-section",a:{label:"Location"},f:[{t:2,r:"area",p:[5,34,357]}]}," ",{p:[7,5,386],t:7,e:"ui-button",a:{state:[{t:2,r:"swap_button_state",p:[8,14,411]}],action:"swap",params:['{"ref": "',{t:2,r:"ref",p:[9,38,472]},'"}']},f:[{t:2,x:{r:["is_current"],s:'_0?"You Are Here":"Swap"'},p:[10,7,491]}]}]}],n:52,r:"data.bodies",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{205:205}],318:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:{button:[{t:4,f:[{p:[4,23,82],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.drying"],s:'_0?"stop":"tint"'},p:[4,40,99]}],action:"Dry"},f:[{t:2,x:{r:["data.drying"],s:'_0?"Stop drying":"Dry"'},p:[4,88,147]}]}],n:50,r:"data.isdryer",p:[4,3,62]}]},t:7,e:"ui-display",a:{title:"Storage",button:0},f:[" ",{t:4,f:[{p:[7,3,258],t:7,e:"ui-notice",f:[{p:[8,5,275],t:7,e:"span",f:["Unfortunately, this ",{t:2,r:"data.name",p:[8,31,301]}," is empty."]}]}],n:50,x:{r:["data.contents.length"],s:"_0==0"},p:[6,1,221]},{t:4,n:51,f:[{p:[11,1,359],t:7,e:"div",a:{"class":"display tabular"},f:[{p:[12,2,391],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[13,4,425],t:7,e:"section",a:{"class":"cell bold"},f:["Item"]}," ",{p:[16,4,482],t:7,e:"section",a:{"class":"cell bold"},f:["Quantity"]}," ",{p:[19,4,543],t:7,e:"section",a:{"class":"cell bold",align:"center"},f:[{t:4,f:[{t:2,r:"data.verb",p:[20,22,608]}],n:50,r:"data.verb",p:[20,5,591]},{t:4,n:51,f:["Dispense"],r:"data.verb"}]}]}," ",{t:4,f:[{p:[24,3,703],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[25,4,737],t:7,e:"section",a:{"class":"cell"},f:[{t:2,r:"name",p:[26,5,765]}]}," ",{p:[28,4,793],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{t:2,r:"amount",p:[29,5,835]}]}," ",{p:[31,4,865],t:7,e:"section",a:{"class":"table",alight:"right"},f:[{p:[32,5,909],t:7,e:"section",a:{"class":"cell"}}," ",{p:[33,5,947],t:7,e:"section",a:{"class":"cell"},f:[{p:[34,6,976],t:7,e:"ui-button",a:{grid:0,action:"Release",state:[{t:2,x:{r:["amount"],s:'(_0>=1)?null:"disabled"'},p:[34,45,1015]}],params:['{ "name" : ',{t:2,r:"name",p:[34,102,1072]},', "amount" : 1 }']},f:["One"]}]}," ",{p:[38,5,1151],t:7,e:"section",a:{"class":"cell"},f:[{p:[39,6,1180],t:7,e:"ui-button",a:{grid:0,action:"Release",state:[{t:2,x:{r:["amount"],s:'(_0>1)?null:"disabled"'},p:[39,45,1219]}],params:['{ "name" : ',{t:2,r:"name",p:[39,101,1275]}," }"]},f:["Many"]}]}]}]}],n:52,r:"data.contents",p:[23,2,676]}]}],x:{r:["data.contents.length"],s:"_0==0"}}]}]},e.exports=a.extend(r.exports)},{205:205}],319:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={computed:{capacityPercentState:function(){var t=this.get("data.capacityPercent");return t>50?"good":t>15?"average":"bad"},inputState:function(){return this.get("data.capacityPercent")>=100?"good":this.get("data.inputting")?"average":"bad"},outputState:function(){return this.get("data.outputting")?"good":this.get("data.charge")>0?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{p:[24,1,663],t:7,e:"ui-display",a:{title:"Storage"},f:[{p:[25,3,695],t:7,e:"ui-section",a:{label:"Stored Energy"},f:[{p:[26,5,735],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.capacityPercent",p:[26,38,768]}],state:[{t:2,r:"capacityPercentState",p:[26,71,801]}]},f:[{t:2,x:{r:["adata.capacityPercent"],s:"Math.fixed(_0)"},p:[26,97,827]},"%"]}]}]}," ",{p:[29,1,908],t:7,e:"ui-display",a:{title:"Input"},f:[{p:[30,3,938],t:7,e:"ui-section",a:{label:"Charge Mode"},f:[{p:[31,5,976],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"refresh":"close"'},p:[31,22,993]}],style:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"selected":null'},p:[31,74,1045]}],action:"tryinput"},f:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"Auto":"Off"'},p:[32,25,1113]}]},"   [",{p:[34,6,1182],t:7,e:"span",a:{"class":[{t:2,r:"inputState",p:[34,19,1195]}]},f:[{t:2,x:{r:["data.capacityPercent","data.inputting"],s:'_0>=100?"Fully Charged":_1?"Charging":"Not Charging"'},p:[34,35,1211]}]},"]"]}," ",{p:[36,3,1335],t:7,e:"ui-section",a:{label:"Target Input"},f:[{p:[37,5,1374],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.inputLevelMax",p:[37,26,1395]}],value:[{t:2,r:"data.inputLevel",p:[37,57,1426]}]},f:[{t:2,r:"adata.inputLevel_text",p:[37,78,1447]}]}]}," ",{p:[39,3,1501],t:7,e:"ui-section",a:{label:"Adjust Input"},f:[{p:[40,5,1540],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[40,44,1579]}],action:"input",params:'{"target": "min"}'}}," ",{p:[41,5,1674],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[41,39,1708]}],action:"input",params:'{"adjust": -10000}'}}," ",{p:[42,5,1804],t:7,e:"ui-button",a:{icon:"pencil",action:"input",params:'{"target": "input"}'},f:["Set"]}," ",{p:[43,5,1894],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[43,38,1927]}],action:"input",params:'{"adjust": 10000}'}}," ",{p:[44,5,2039],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[44,43,2077]}],action:"input",params:'{"target": "max"}'}}]}," ",{p:[46,3,2204],t:7,e:"ui-section",a:{label:"Available"},f:[{p:[47,3,2238],t:7,e:"span",f:[{t:2,r:"adata.inputAvailable",p:[47,9,2244]}]}]}]}," ",{p:[50,1,2308],t:7,e:"ui-display",a:{title:"Output"},f:[{p:[51,3,2339],t:7,e:"ui-section",a:{label:"Output Mode"},f:[{p:[52,5,2377],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"power-off":"close"'},p:[52,22,2394]}],style:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"selected":null'},p:[52,77,2449]}],action:"tryoutput"},f:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"On":"Off"'},p:[53,26,2519]}]},"   [",{p:[55,6,2587],t:7,e:"span",a:{"class":[{t:2,r:"outputState",p:[55,19,2600]}]},f:[{t:2,x:{r:["data.outputting","data.charge"],s:'_0?"Sending":_1>0?"Not Sending":"No Charge"'},p:[55,36,2617]}]},"]"]}," ",{p:[57,3,2724],t:7,e:"ui-section",a:{label:"Target Output"},f:[{p:[58,5,2764],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.outputLevelMax",p:[58,26,2785]}],value:[{t:2,r:"data.outputLevel",p:[58,58,2817]}]},f:[{t:2,r:"adata.outputLevel_text",p:[58,80,2839]}]}]}," ",{p:[60,3,2894],t:7,e:"ui-section",a:{label:"Adjust Output"},f:[{p:[61,5,2934],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[61,44,2973]}],action:"output",params:'{"target": "min"}'}}," ",{p:[62,5,3070],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[62,39,3104]}],action:"output",params:'{"adjust": -10000}'}}," ",{p:[63,5,3202],t:7,e:"ui-button",a:{icon:"pencil",action:"output",params:'{"target": "input"}'},f:["Set"]}," ",{p:[64,5,3293],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[64,38,3326]}],action:"output",params:'{"adjust": 10000}'}}," ",{p:[65,5,3441],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[65,43,3479]}],action:"output",params:'{"target": "max"}'}}]}," ",{p:[67,3,3609],t:7,e:"ui-section",a:{label:"Outputting"},f:[{p:[68,3,3644],t:7,e:"span",f:[{t:2,r:"adata.outputUsed",p:[68,9,3650]}]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],320:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:["\ufeff",{t:4,f:[" ",{p:[2,2,33],t:7,e:"ui-display",a:{title:"Dispersal Tank"},f:[{p:[3,3,73],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[4,4,104],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.active"],s:'_0?"power-off":"close"'},p:[4,21,121]}],style:[{t:2,x:{r:["data.active"],s:'_0?"selected":null'},p:[5,12,174]}],state:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?null:"disabled"'},p:[6,12,223]}],action:"power"},f:[{t:2,x:{r:["data.active"],s:'_0?"On":"Off"'},p:[7,20,286]}]}]}," ",{p:[10,3,354],t:7,e:"ui-section",a:{label:"Smoke Radius Setting"},f:[{p:[11,5,401],t:7,e:"div",a:{"class":"content",style:"float:left"},f:[{p:[12,6,448],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.maxSetting"],s:'_0>=1?null:"disabled"'},p:[12,36,478]}],style:[{t:2,x:{r:["data.setting"],s:'_0==1?"selected":null'},p:[12,89,531]}],action:"setting",params:'{"amount": 1}'},f:["3"]}," ",{p:[13,6,634],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.maxSetting"],s:'_0>=2?null:"disabled"'},p:[13,36,664]}],style:[{t:2,x:{r:["data.setting"],s:'_0==2?"selected":null'},p:[13,89,717]}],action:"setting",params:'{"amount": 2}'},f:["6"]}," ",{p:[14,6,820],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.maxSetting"],s:'_0>=3?null:"disabled"'},p:[14,36,850]}],style:[{t:2,x:{r:["data.setting"],s:'_0==3?"selected":null'},p:[14,89,903]}],action:"setting",params:'{"amount": 3}'},f:["9"]}," ",{p:[15,6,1006],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.maxSetting"],s:'_0>=4?null:"disabled"'},p:[15,36,1036]}],style:[{t:2,x:{r:["data.setting"],s:'_0==4?"selected":null'},p:[15,89,1089]}],action:"setting",params:'{"amount": 4}'},f:["12"]}," ",{p:[16,6,1193],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.maxSetting"],s:'_0>=5?null:"disabled"'},p:[16,36,1223]}],style:[{t:2,x:{r:["data.setting"],s:'_0==5?"selected":null'},p:[16,89,1276]}],action:"setting",params:'{"amount": 5}'},f:["15"]}]}]}," ",{p:[19,3,1410],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[21,6,1476],t:7,e:"span",f:[{t:2,x:{r:["adata.TankCurrentVolume"],s:"Math.round(_0)"},p:[21,12,1482]},"/",{t:2,r:"data.TankMaxVolume",p:[21,52,1522]}," Units"]}," ",{p:[22,6,1564],t:7,e:"br"}," ",{p:[23,5,1575],t:7,e:"br"}," ",{t:4,f:[{p:[25,7,1623],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[25,50,1666]}," units of ",{t:2,r:"name",p:[25,85,1701]}]},{p:[25,100,1716],t:7,e:"br"}],n:52,r:"adata.TankContents",p:[24,6,1587]}],n:50,r:"data.isTankLoaded",p:[20,4,1444]},{t:4,n:51,f:[{p:[28,6,1757],t:7,e:"span",a:{"class":"bad"},f:["Tank Empty"]}],r:"data.isTankLoaded"}," ",{p:[30,4,1809],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?"Eject":"Close"'},p:[30,21,1826]}],style:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?"selected":null'},p:[31,12,1881]}],state:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?null:"disabled"'},p:[32,12,1936]}],action:"purge"},f:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?"Purge Contents":"No chemicals detected"'},p:[33,20,1999]}]}]}]}],n:50,x:{r:["data.screen"],s:'_0=="home"'},p:[1,2,1]}]},e.exports=a.extend(r.exports)},{205:205}],321:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,3,31],t:7,e:"ui-section",a:{label:"Generated Power"},f:[{t:2,x:{r:["adata.generated"],s:"Math.round(_0)"},p:[3,5,73]},"W"]}," ",{p:[5,3,126],t:7,e:"ui-section",a:{label:"Orientation"},f:[{p:[6,5,164],t:7,e:"span",f:[{t:2,x:{r:["adata.angle"],s:"Math.round(_0)"},p:[6,11,170]},"° (",{t:2,r:"data.direction",p:[6,45,204]},")"]}]}," ",{p:[8,3,251],t:7,e:"ui-section",a:{label:"Adjust Angle"},f:[{p:[9,5,290],t:7,e:"ui-button",a:{icon:"step-backward",action:"angle",params:'{"adjust": -15}'},f:["15°"]}," ",{p:[10,5,387],t:7,e:"ui-button",a:{icon:"backward",action:"angle",params:'{"adjust": -5}'},f:["5°"]}," ",{p:[11,5,477],t:7,e:"ui-button",a:{icon:"forward",action:"angle",params:'{"adjust": 5}'},f:["5°"]}," ",{p:[12,5,565],t:7,e:"ui-button",a:{icon:"step-forward",action:"angle",params:'{"adjust": 15}'},f:["15°"]}]}]}," ",{p:[15,1,687],t:7,e:"ui-display",a:{title:"Tracking"},f:[{p:[16,3,720],t:7,e:"ui-section",a:{label:"Tracker Mode"},f:[{p:[17,5,759],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==0?"selected":null'},p:[17,36,790]}],action:"tracking",params:'{"mode": 0}'},f:["Off"]}," ",{p:[19,5,907],t:7,e:"ui-button",a:{icon:"clock-o",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==1?"selected":null'},p:[19,38,940]}],action:"tracking",params:'{"mode": 1}'},f:["Timed"]}," ",{p:[21,5,1059],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.connected_tracker","data.tracking_state"],s:'_0?_1==2?"selected":null:"disabled"'},p:[21,38,1092]}],action:"tracking",params:'{"mode": 2}'},f:["Auto"]}]}," ",{p:[24,3,1262],t:7,e:"ui-section",a:{label:"Tracking Rate"},f:[{p:[25,3,1300],t:7,e:"span",f:[{t:2,x:{r:["adata.tracking_rate"],s:"Math.round(_0)"},p:[25,9,1306]},"°/h (",{t:2,r:"data.rotating_way",p:[25,53,1350]},")"]}]}," ",{p:[27,3,1399],t:7,e:"ui-section",a:{label:"Adjust Rate"},f:[{p:[28,5,1437],t:7,e:"ui-button",a:{icon:"fast-backward",action:"rate",params:'{"adjust": -180}'},f:["180°"]}," ",{p:[29,5,1535],t:7,e:"ui-button",a:{icon:"step-backward",action:"rate",params:'{"adjust": -30}'},f:["30°"]}," ",{p:[30,5,1631],t:7,e:"ui-button",a:{icon:"backward",action:"rate",params:'{"adjust": -5}'},f:["5°"]}," ",{p:[31,5,1720],t:7,e:"ui-button",a:{icon:"forward",action:"rate",params:'{"adjust": 5}'},f:["5°"]}," ",{p:[32,5,1807],t:7,e:"ui-button",a:{icon:"step-forward",action:"rate",params:'{"adjust": 30}'},f:["30°"]}," ",{p:[33,5,1901],t:7,e:"ui-button",a:{icon:"fast-forward",action:"rate",params:'{"adjust": 180}'},f:["180°"]}]}]}," ",{p:{button:[{p:[38,5,2088],t:7,e:"ui-button",a:{icon:"refresh",action:"refresh"},f:["Refresh"]}]},t:7,e:"ui-display",a:{title:"Devices",button:0},f:[" ",{p:[40,2,2169],t:7,e:"ui-section",a:{label:"Solar Tracker"},f:[{p:[41,5,2209],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_tracker"],s:'_0?"good":"bad"'},p:[41,18,2222]}]},f:[{t:2,x:{r:["data.connected_tracker"],s:'_0?"":"Not "'},p:[41,63,2267]},"Found"]}]}," ",{p:[43,2,2338],t:7,e:"ui-section",a:{label:"Solar Panels"},f:[{p:[44,3,2375],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_panels"],s:'_0?"good":"bad"'},p:[44,16,2388]}]},f:[{t:2,x:{r:["adata.connected_panels"],s:"Math.round(_0)"},p:[44,60,2432]}," Panels Connected"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],322:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:{button:[{t:4,f:[{p:[4,7,87],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.hasPowercell"],s:'_0?null:"disabled"'},p:[4,38,118]}],action:"eject"},f:["Eject"]}],n:50,r:"data.open",p:[3,5,62]}]},t:7,e:"ui-display",a:{title:"Power",button:0},f:[" ",{p:[7,3,226],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[8,5,258],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[8,22,275]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[9,14,326]}],state:[{t:2,x:{r:["data.hasPowercell"],s:'_0?null:"disabled"'},p:[9,54,366]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[10,22,431]}]}]}," ",{p:[12,3,490],t:7,e:"ui-section",a:{label:"Cell"},f:[{t:4,f:[{p:[14,7,554],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.powerLevel",p:[14,40,587]}]},f:[{t:2,x:{r:["adata.powerLevel"],s:"Math.fixed(_0)"},p:[14,61,608]},"%"]}],n:50,r:"data.hasPowercell",p:[13,5,521]},{t:4,n:51,f:[{p:[16,4,667],t:7,e:"span",a:{"class":"bad"},f:["No Cell"]}],r:"data.hasPowercell"}]}]}," ",{p:[20,1,744],t:7,e:"ui-display",a:{title:"Thermostat"},f:[{p:[21,3,779],t:7,e:"ui-section",a:{label:"Current Temperature"},f:[{p:[22,3,823],t:7,e:"span",f:[{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[22,9,829]},"°C"]}]}," ",{p:[24,2,894],t:7,e:"ui-section",a:{label:"Target Temperature"},f:[{p:[25,3,937],t:7,e:"span",f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[25,9,943]},"°C"]}]}," ",{t:4,f:[{p:[28,5,1031],t:7,e:"ui-section",a:{label:"Adjust Target"},f:[{p:[29,7,1073],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[29,46,1112]}],action:"target",params:'{"adjust": -20}'}}," ",{p:[30,7,1218],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[30,41,1252]}],action:"target",params:'{"adjust": -5}'}}," ",{p:[31,7,1357],t:7,e:"ui-button",a:{icon:"pencil",action:"target",params:'{"target": "input"}'},f:["Set"]}," ",{p:[32,7,1450],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[32,40,1483]}],action:"target",params:'{"adjust": 5}'}}," ",{p:[33,7,1587],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[33,45,1625]}],action:"target",params:'{"adjust": 20}'}}]}],n:50,r:"data.open",p:[27,3,1008]}," ",{p:[36,3,1754],t:7,e:"ui-section",a:{label:"Mode"},f:[{t:4,f:[{p:[38,7,1808],t:7,e:"ui-button",a:{icon:"long-arrow-up",state:[{t:2,x:{r:["data.mode"],s:'_0=="heat"?"selected":null'},p:[38,46,1847]}],action:"mode",params:'{"mode": "heat"}'},f:["Heat"]}," ",{p:[39,7,1956],t:7,e:"ui-button",a:{icon:"long-arrow-down",state:[{t:2,x:{r:["data.mode"],s:'_0=="cool"?"selected":null'},p:[39,48,1997]}],action:"mode",params:'{"mode": "cool"}'},f:["Cool"]}," ",{p:[40,7,2106],t:7,e:"ui-button",a:{icon:"arrows-v",state:[{t:2,x:{r:["data.mode"],s:'_0=="auto"?"selected":null'},p:[40,41,2140]}],action:"mode",params:'{"mode": "auto"}'},f:["Auto"]}],n:50,r:"data.open",p:[37,3,1783]},{t:4,n:51,f:[{p:[42,4,2258],t:7,e:"span",f:[{t:2,x:{r:["text","data.mode"],s:"_0.titleCase(_1)"},p:[42,10,2264]}]}],r:"data.open"}]}]}]},e.exports=a.extend(r.exports)},{205:205}],323:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:{button:[{p:[4,8,97],t:7,e:"ui-button",a:{action:"jump",params:['{"name" : ',{t:2,r:"name",p:[4,51,140]},"}"]},f:["Jump"]}," ",{p:[7,9,195],t:7,e:"ui-button",a:{action:"spawn",params:['{"name" : ',{t:2,r:"name",p:[7,53,239]},"}"]},f:["Spawn"]}]},t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[2,22,46]}],button:0},f:[" ",{p:[11,3,308],t:7,e:"ui-section",a:{label:"Description"},f:[{p:[12,5,346],t:7,e:"span",f:[{t:3,r:"desc",p:[12,11,352]}]}]}," ",{p:[14,3,390],t:7,e:"ui-section",a:{label:"Spawners left"},f:[{p:[15,5,430],t:7,e:"span",f:[{t:2,r:"amount_left",p:[15,11,436]}]}]}]}],n:52,r:"data.spawners",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{205:205}],324:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,31],t:7,e:"ui-display",a:{title:[{t:2,r:"class",p:[2,22,50]}," Alarms"]},f:[{p:[3,5,74],t:7,e:"ul",f:[{t:4,f:[{p:[5,9,107],t:7,e:"li",f:[{t:2,r:".",p:[5,13,111]}]}],n:52,r:".",p:[4,7,86]},{t:4,n:51,f:[{p:[7,9,147],t:7,e:"li",f:["System Nominal"]}],r:"."}]}]}],n:52,i:"class",r:"data.alarms",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{205:205}],325:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,42],t:7,e:"ui-notice",f:[{p:[3,5,59],t:7,e:"span",f:["Biological entity detected in contents. Please remove."]}]}],n:50,x:{r:["data.occupied","data.safeties"],s:"_0&&_1"},p:[1,1,0]},{t:4,f:[{p:[7,3,179],t:7,e:"ui-notice",f:[{p:[8,5,196],t:7,e:"span",f:["Contents are being disinfected. Please wait."]}]}],n:50,r:"data.uv_active",p:[6,1,153]},{t:4,n:51,f:[{p:{button:[{t:4,f:[{p:[13,25,369],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[13,42,386]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Unlock":"Lock"'},p:[13,93,437]}]}],n:50,x:{r:["data.open"],s:"!_0"},p:[13,7,351]}," ",{t:4,f:[{p:[14,27,519],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.open"],s:'_0?"sign-out":"sign-in"'},p:[14,44,536]}],action:"door"},f:[{t:2,x:{r:["data.open"],s:'_0?"Close":"Open"'},p:[14,98,590]}]}],n:50,x:{r:["data.locked"],s:"!_0"},p:[14,7,499]}]},t:7,e:"ui-display",a:{title:"Storage",button:0},f:[" ",{t:4,f:[{p:[17,7,692],t:7,e:"ui-notice",f:[{p:[18,9,713],t:7,e:"span",f:["Unit Locked"]}]}],n:50,r:"data.locked",p:[16,5,665]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.open"],s:"_0"},f:[{p:[21,9,793],t:7,e:"ui-section",a:{label:"Helmet"},f:[{p:[22,11,832],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.helmet"],s:'_0?"square":"square-o"'},p:[22,28,849]}],state:[{t:2,x:{r:["data.helmet"],s:'_0?null:"disabled"'},p:[22,75,896]}],action:"dispense",params:'{"item": "helmet"}'},f:[{t:2,x:{r:["data.helmet"],s:'_0||"Empty"'},p:[23,59,992]}]}]}," ",{p:[25,9,1063],t:7,e:"ui-section",a:{label:"Suit"},f:[{p:[26,11,1100],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.suit"],s:'_0?"square":"square-o"'},p:[26,28,1117]}],state:[{t:2,x:{r:["data.suit"],s:'_0?null:"disabled"'},p:[26,74,1163]}],action:"dispense",params:'{"item": "suit"}'},f:[{t:2,x:{r:["data.suit"],s:'_0||"Empty"'},p:[27,57,1255]}]}]}," ",{p:[29,9,1324],t:7,e:"ui-section",a:{label:"Mask"},f:[{p:[30,11,1361],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mask"],s:'_0?"square":"square-o"'},p:[30,28,1378]}],state:[{t:2,x:{r:["data.mask"],s:'_0?null:"disabled"'},p:[30,74,1424]}],action:"dispense",params:'{"item": "mask"}'},f:[{t:2,x:{r:["data.mask"],s:'_0||"Empty"'},p:[31,57,1516]}]}]}," ",{p:[33,9,1585],t:7,e:"ui-section",a:{label:"Storage"},f:[{p:[34,11,1625],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.storage"],s:'_0?"square":"square-o"'},p:[34,28,1642]}],state:[{t:2,x:{r:["data.storage"],s:'_0?null:"disabled"'},p:[34,77,1691]}],action:"dispense",params:'{"item": "storage"}'},f:[{t:2,x:{r:["data.storage"],s:'_0||"Empty"'},p:[35,60,1789]}]}]}]},{t:4,n:50,x:{r:["data.open"],s:"!(_0)"},f:[" ",{p:[38,7,1873],t:7,e:"ui-button",a:{icon:"recycle",state:[{t:2,x:{r:["data.occupied","data.safeties"],s:'_0&&_1?"disabled":null'},p:[38,40,1906]}],action:"uv"},f:["Disinfect"]}]}],r:"data.locked"}]}],r:"data.uv_active"}]},e.exports=a.extend(r.exports)},{205:205}],326:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,5,18],t:7,e:"ui-section",a:{label:"Dispense"},f:[{p:[3,9,57],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.plasma"],s:'_0?"square":"square-o"'},p:[3,26,74]}],state:[{t:2,x:{r:["data.plasma"],s:'_0?null:"disabled"'},p:[3,74,122]}],action:"plasma"},f:["Plasma (",{t:2,x:{r:["adata.plasma"],s:"Math.round(_0)"},p:[4,37,196]},")"]}," ",{p:[5,9,247],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.oxygen"],s:'_0?"square":"square-o"'},p:[5,26,264]}],state:[{t:2,x:{r:["data.oxygen"],s:'_0?null:"disabled"'},p:[5,74,312]}],action:"oxygen"},f:["Oxygen (",{t:2,x:{r:["adata.oxygen"],s:"Math.round(_0)"},p:[6,37,386]},")"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],327:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={computed:{tankPressureState:function(){var t=this.get("data.tankPressure");return t>=200?"good":t>=100?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{p:[14,1,295],t:7,e:"ui-notice",f:[{p:[15,3,310],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.connected"],s:'_0?"is":"is not"'},p:[15,23,330]}," connected to a mask."]}]}," ",{p:[17,1,409],t:7,e:"ui-display",f:[{p:[18,3,425],t:7,e:"ui-section",a:{label:"Tank Pressure"},f:[{p:[19,7,467],t:7,e:"ui-bar",a:{min:"0",max:"1013",value:[{t:2,r:"data.tankPressure",p:[19,41,501]}],state:[{t:2,r:"tankPressureState",p:[20,16,540]}]},f:[{t:2,x:{r:["adata.tankPressure"],s:"Math.round(_0)"},p:[20,39,563]}," kPa"]}]}," ",{p:[22,3,631],t:7,e:"ui-section",a:{label:"Release Pressure"},f:[{p:[23,5,674],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[23,18,687]}],max:[{t:2,r:"data.maxReleasePressure",p:[23,52,721]}],value:[{t:2,r:"data.releasePressure",p:[24,14,764]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[24,40,790]}," kPa"]}]}," ",{p:[26,3,861],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[27,5,906],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[27,38,939]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[29,5,1095],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[29,36,1126]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[31,5,1273],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[32,5,1368],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[32,35,1398]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],328:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,5,33],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[3,9,75],t:7,e:"span",f:[{t:2,x:{r:["adata.temperature"],s:"Math.fixed(_0,2)"},p:[3,15,81]}," K"]}]}," ",{p:[5,5,151],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[6,9,190],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.fixed(_0,2)"},p:[6,15,196]}," kPa"]}]}]}," ",{p:[9,1,276],t:7,e:"ui-display",a:{title:"Controls"},f:[{p:[10,5,311],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[11,9,347],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[11,26,364]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[11,70,408]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[12,28,469]}]}]}," ",{p:[14,5,531],t:7,e:"ui-section",a:{label:"Target Temperature"},f:[{p:[15,9,580],t:7,e:"ui-button",a:{icon:"fast-backward",style:[{t:2,x:{r:["data.target","data.min"],s:'_0==_1?"disabled":null'},p:[15,48,619]}],action:"target",params:'{"adjust": -20}'}}," ",{p:[17,9,733],t:7,e:"ui-button",a:{icon:"backward",style:[{t:2,x:{r:["data.target","data.min"],s:'_0==_1?"disabled":null'},p:[17,43,767]}],action:"target",params:'{"adjust": -5}'}}," ",{p:[19,9,880],t:7,e:"ui-button",a:{icon:"pencil",action:"target",params:'{"target": "input"}'},f:[{t:2,x:{r:["adata.target"],s:"Math.fixed(_0,2)"},p:[19,79,950]}]}," ",{p:[20,9,1003],t:7,e:"ui-button",a:{icon:"forward",style:[{t:2,x:{r:["data.target","data.max"],s:'_0==_1?"disabled":null'},p:[20,42,1036]}],action:"target",params:'{"adjust": 5}'}}," ",{p:[22,9,1148],t:7,e:"ui-button",a:{icon:"fast-forward",style:[{t:2,x:{r:["data.target","data.max"],s:'_0==_1?"disabled":null'},p:[22,47,1186]}],action:"target",params:'{"adjust": 20}'}}]}]}]},e.exports=a.extend(r.exports)},{205:205}],329:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{powerState:function(t){switch(t){case 1:return"good";default:return"bad"}}}}}(r),r.exports.template={v:3,t:[" ",{p:[13,1,173],t:7,e:"ui-notice",f:[{p:[14,2,187],t:7,e:"ui-section",a:{label:"Reconnect"},f:[{p:[15,3,221],t:7,e:"div",a:{style:"float:right"},f:[{p:[16,4,251],t:7,e:"ui-button",a:{icon:"refresh",action:"reconnect"},f:["Reconnect"]}]}]}]}," ",{p:[20,1,359],t:7,e:"ui-display",a:{title:"Turbine Controller"},f:[{p:[21,2,401],t:7,e:"ui-section",a:{label:"Status"},f:[{t:4,f:[{p:[23,4,456],t:7,e:"span",a:{"class":"bad"},f:["Broken"]}],n:50,r:"data.broken",p:[22,3,432]},{t:4,n:51,f:[{p:[25,4,504],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.online"],s:"_0(_1)"},p:[25,17,517]}]},f:[{t:2,x:{r:["data.online","data.compressor_broke","data.turbine_broke"],s:'_0&&!(_1||_2)?"Online":"Offline"'},p:[25,46,546]}]}],r:"data.broken"}," ",{p:[27,3,656],t:7,e:"div",a:{style:"float:right"},f:[{p:[28,4,686],t:7,e:"ui-button",a:{icon:"power-off",action:"power-on",state:[{t:2,r:"data.broken",p:[28,57,739]}],style:[{t:2,x:{r:["data.online"],s:'_0?"selected":""'},p:[28,81,763]}]},f:["On"]}," ",{p:[29,4,817],t:7,e:"ui-button",a:{icon:"close",action:"power-off",state:[{t:2,r:"data.broken",p:[29,54,867]}],style:[{t:2,x:{r:["data.online"],s:'_0?"":"selected"'},p:[29,78,891]}]},f:["Off"]}]}," ",{t:4,f:[{p:[32,4,989],t:7,e:"br"}," [ ",{p:[33,6,1e3],t:7,e:"span",a:{"class":"bad"},f:["Compressor is inoperable"]}," ]"],n:50,r:"data.compressor_broke",p:[31,3,955]}," ",{t:4,f:[{p:[36,4,1097],t:7,e:"br"}," [ ",{p:[37,6,1108],t:7,e:"span",a:{"class":"bad"},f:["Turbine is inoperable"]}," ]"],n:50,r:"data.turbine_broke",p:[35,3,1066]}]}]}," ",{p:[41,1,1200],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[42,2,1230],t:7,e:"ui-section",a:{label:"Turbine Speed"},f:[{p:[43,3,1268],t:7,e:"span",f:[{t:2,x:{r:["data.broken","data.rpm"],s:'_0?"--":_1'},p:[43,9,1274]}," RPM"]}]}," ",{p:[45,2,1337],t:7,e:"ui-section",a:{label:"Internal Temp"},f:[{p:[46,3,1375],t:7,e:"span",f:[{t:2,x:{r:["data.broken","data.temp"],s:'_0?"--":_1'},p:[46,9,1381]}," K"]}]}," ",{p:[48,2,1443],t:7,e:"ui-section",a:{label:"Generated Power"},f:[{p:[49,3,1483],t:7,e:"span",f:[{t:2,x:{r:["data.broken","data.power"],s:'_0?"--":_1'},p:[49,9,1489]}]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],330:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{},oninit:function(){this.on({hover:function(t){var e=this.get("data.telecrystals");e>=t.context.params.cost&&this.set("hovered",t.context.params)},unhover:function(t){this.set("hovered")}})}}}(r),r.exports.template={v:3,t:[" ",{p:{button:[{t:4,f:[{p:[23,7,482],t:7,e:"ui-button",a:{icon:"lock",action:"lock"},f:["Lock"]}],n:50,r:"data.lockable",p:[22,5,453]}]},t:7,e:"ui-display",a:{title:"Uplink",button:0},f:[" ",{p:[26,3,568],t:7,e:"ui-section",a:{label:"Telecrystals",right:0},f:[{p:[27,5,613],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.telecrystals"],s:'_0>0?"good":"bad"'},p:[27,18,626]}]},f:[{t:2,r:"data.telecrystals",p:[27,62,670]}," TC"]}]}]}," ",{t:4,f:[{p:[31,3,764],t:7,e:"ui-display",f:[{p:[32,2,779],t:7,e:"ui-button",a:{action:"select",params:['{"category": "',{t:2,r:"name",p:[32,51,828]},'"}']},f:[{t:2,r:"name",p:[32,63,840]}]}," ",{t:4,f:[{p:[34,4,883],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[34,23,902]}],candystripe:0,right:0},f:[{p:[35,3,934],t:7,e:"ui-button",a:{tooltip:[{t:2,r:"name",p:[35,23,954]},": ",{t:2,r:"desc",p:[35,33,964]}],"tooltip-side":"left",state:[{t:2,x:{r:["data.telecrystals","hovered.cost","cost","hovered.item","name"],s:'_0<_2||(_0-_1<_2&&_3!=_4)?"disabled":null'},p:[36,12,1006]}],action:"buy",params:['{"category": "',{t:2,r:"category",p:[37,40,1165]},'", "item": ',{t:2,r:"name",p:[37,63,1188]},', "cost": ',{t:2,r:"cost",p:[37,81,1206]},"}"]},v:{hover:"hover",unhover:"unhover"},f:[{t:2,r:"cost",p:[38,43,1260]}," TC"]}]}],n:52,r:"items",p:[33,2,863]}]}],n:52,r:"data.categories",p:[30,1,735]}]},e.exports=a.extend(r.exports)},{205:205}],331:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{healthState:function(t){var e=this.get("data.vr_avatar.maxhealth");return t>e/1.5?"good":t>e/3?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{p:[14,1,292],t:7,e:"ui-display",f:[{t:4,f:[{p:[16,3,333],t:7,e:"ui-display",a:{title:"Virtual Avatar"},f:[{p:[17,4,373],t:7,e:"ui-section",a:{label:"Name"},f:[{t:2,r:"data.vr_avatar.name",p:[18,5,404]}]}," ",{p:[20,4,450],t:7,e:"ui-section",a:{label:"Status"},f:[{t:2,r:"data.vr_avatar.status",p:[21,5,483]}]}," ",{p:[23,4,531],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[24,5,564],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"adata.vr_avatar.maxhealth",p:[24,26,585]}],value:[{t:2,r:"adata.vr_avatar.health", -p:[24,64,623]}],state:[{t:2,x:{r:["healthState","adata.vr_avatar.health"],s:"_0(_1)"},p:[24,99,658]}]},f:[{t:2,x:{r:["adata.vr_avatar.health"],s:"Math.round(_0)"},p:[24,140,699]},"/",{t:2,r:"adata.vr_avatar.maxhealth",p:[24,179,738]}]}]}]}],n:50,r:"data.vr_avatar",p:[15,2,307]},{t:4,n:51,f:[{p:[28,3,826],t:7,e:"ui-display",a:{title:"Virtual Avatar"},f:["No Virtual Avatar detected"]}],r:"data.vr_avatar"}," ",{p:[32,2,922],t:7,e:"ui-display",a:{title:"VR Commands"},f:[{p:[33,3,958],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.toggle_open"],s:'_0?"times":"plus"'},p:[33,20,975]}],action:"toggle_open"},f:[{t:2,x:{r:["data.toggle_open"],s:'_0?"Close":"Open"'},p:[34,4,1042]}," the VR Sleeper"]}," ",{t:4,f:[{p:[37,4,1144],t:7,e:"ui-button",a:{icon:"signal",action:"vr_connect"},f:["Connect to VR"]}],n:50,r:"data.isoccupant",p:[36,3,1116]}," ",{t:4,f:[{p:[42,4,1267],t:7,e:"ui-button",a:{icon:"ban",action:"delete_avatar"},f:["Delete Virtual Avatar"]}],n:50,r:"data.vr_avatar",p:[41,3,1240]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],332:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{t:4,f:[{p:[3,5,42],t:7,e:"ui-section",a:{label:[{t:2,r:"color",p:[3,24,61]},{t:2,x:{r:["wire"],s:'_0?" ("+_0+")":""'},p:[3,33,70]}],labelcolor:[{t:2,r:"color",p:[3,80,117]}],candystripe:0,right:0},f:[{p:[4,7,154],t:7,e:"ui-button",a:{action:"cut",params:['{"wire":"',{t:2,r:"color",p:[4,48,195]},'"}']},f:[{t:2,x:{r:["cut"],s:'_0?"Mend":"Cut"'},p:[4,61,208]}]}," ",{p:[5,7,252],t:7,e:"ui-button",a:{action:"pulse",params:['{"wire":"',{t:2,r:"color",p:[5,50,295]},'"}']},f:["Pulse"]}," ",{p:[6,7,333],t:7,e:"ui-button",a:{action:"attach",params:['{"wire":"',{t:2,r:"color",p:[6,51,377]},'"}']},f:[{t:2,x:{r:["attached"],s:'_0?"Detach":"Attach"'},p:[6,64,390]}]}]}],n:52,r:"data.wires",p:[2,3,16]}]}," ",{t:4,f:[{p:[11,3,508],t:7,e:"ui-display",f:[{t:4,f:[{p:[13,7,555],t:7,e:"ui-section",f:[{t:2,r:".",p:[13,19,567]}]}],n:52,r:"data.status",p:[12,5,526]}]}],n:50,r:"data.status",p:[10,1,485]}]},e.exports=a.extend(r.exports)},{205:205}],333:[function(t,e,n){(function(e){"use strict";var n=t(205),a=e.interopRequireDefault(n);t(194),t(1),t(190),t(193);var r=t(334),i=e.interopRequireDefault(r),o=t(335),s=t(191),p=t(192),u=e.interopRequireDefault(p);a["default"].DEBUG=/minified/.test(function(){}),Object.assign(Math,t(339)),window.initialize=function(e){window.tgui=window.tgui||new i["default"]({el:"#container",data:function(){var n=JSON.parse(e);return{constants:t(336),text:t(340),config:n.config,data:n.data,adata:n.data}}})};var c=document.getElementById("data"),l=c.textContent,d=c.getAttribute("data-ref");"{}"!==l&&(window.initialize(l),c.remove()),(0,o.act)(d,"tgui:initialize"),(0,s.loadCSS)("font-awesome.min.css");var f=new u["default"]("FontAwesome");f.check("").then(function(){return document.body.classList.add("icons")})["catch"](function(){return document.body.classList.add("no-icons")})}).call(this,t("babel/external-helpers"))},{1:1,190:190,191:191,192:192,193:193,194:194,205:205,334:334,335:335,336:336,339:339,340:340,"babel/external-helpers":"babel/external-helpers"}],334:[function(t,e,n){var a=t(205),r={exports:{}};!function(e){"use strict";var n=t(335),a=t(337);e.exports={components:{"ui-bar":t(206),"ui-button":t(207),"ui-display":t(208),"ui-input":t(209),"ui-linegraph":t(210),"ui-notice":t(211),"ui-section":t(213),"ui-subdisplay":t(214),"ui-tabs":t(215)},events:{enter:t(203).enter,space:t(203).space},transitions:{fade:t(204)},onconfig:function(){var e=this.get("config.interface"),n={ai_airlock:t(219),airalarm:t(220),"airalarm/back":t(221),"airalarm/modes":t(222),"airalarm/scrubbers":t(223),"airalarm/status":t(224),"airalarm/thresholds":t(225),"airalarm/vents":t(226),airlock_electronics:t(227),apc:t(228),atmos_alert:t(229),atmos_control:t(230),atmos_filter:t(231),atmos_mixer:t(232),atmos_pump:t(233),brig_timer:t(234),bsa:t(235),canister:t(236),cargo:t(237),cargo_express:t(238),cellular_emporium:t(239),chem_dispenser:t(240),chem_heater:t(241),chem_master:t(242),clockwork_slab:t(243),codex_gigas:t(244),computer_fabricator:t(245),crayon:t(246),cryo:t(247),disposal_unit:t(248),dna_vault:t(249),dogborg_sleeper:t(250),eightball:t(251),emergency_shuttle_console:t(252),engraved_message:t(253),error:t(254),"exofab - Copia":t(255),exonet_node:t(256),firealarm:t(257),gps:t(258),gulag_console:t(259),gulag_item_reclaimer:t(260),holodeck:t(261),implantchair:t(262),intellicard:t(263),keycard_auth:t(264),labor_claim_console:t(265),language_menu:t(266),launchpad_remote:t(267),mech_bay_power_console:t(268),mulebot:t(269),ntnet_relay:t(270),ntos_ai_restorer:t(271),ntos_card:t(272),ntos_configuration:t(273),ntos_file_manager:t(274),ntos_main:t(275),ntos_net_chat:t(276),ntos_net_dos:t(277),ntos_net_downloader:t(278),ntos_net_monitor:t(279),ntos_net_transfer:t(280),ntos_power_monitor:t(281),ntos_revelation:t(282),ntos_station_alert:t(283),ntos_supermatter_monitor:t(284),ntosheader:t(285),nuclear_bomb:t(286),operating_computer:t(287),ore_redemption_machine:t(288),pandemic:t(289),personal_crafting:t(290),portable_pump:t(291),portable_scrubber:t(292),power_monitor:t(293),radio:t(294),rdconsole:t(295),"rdconsole/circuit":t(296),"rdconsole/designview":t(297),"rdconsole/destruct":t(298),"rdconsole/diskopsdesign":t(299),"rdconsole/diskopstech":t(300),"rdconsole/nodeview":t(301),"rdconsole/protolathe":t(302),"rdconsole/rdheader":t(303),"rdconsole/settings":t(304),"rdconsole/techweb":t(305),reagentgrinder:t(306),rpd:t(307),"rpd/colorsel":t(308),"rpd/dirsel":t(309),sat_control:t(310),scrubbing_types:t(311),shuttle_manipulator:t(312),"shuttle_manipulator/modification":t(313),"shuttle_manipulator/status":t(314),"shuttle_manipulator/templates":t(315),sleeper:t(316),slime_swap_body:t(317),smartvend:t(318),smes:t(319),smoke_machine:t(320),solar_control:t(321),space_heater:t(322),spawners_menu:t(323),station_alert:t(324),suit_storage_unit:t(325),tank_dispenser:t(326),tanks:t(327),thermomachine:t(328),turbine_computer:t(329),uplink:t(330),vr_sleeper:t(331),wires:t(332)};e in n?this.components["interface"]=n[e]:this.components["interface"]=n.error},oninit:function(){this.observe("config.style",function(t,e,n){t&&document.body.classList.add(t),e&&document.body.classList.remove(e)})},oncomplete:function(){if(this.get("config.locked")){var t=(0,a.lock)(window.screenLeft,window.screenTop),e=t.x,r=t.y;(0,n.winset)(this.get("config.window"),"pos",e+","+r)}(0,n.winset)("mapwindow.map","focus",!0)}}}(r),r.exports.template={v:3,t:[" "," "," "," ",{p:[56,1,1874],t:7,e:"titlebar",f:[{t:3,r:"config.title",p:[56,11,1884]}]}," ",{p:[57,1,1915],t:7,e:"main",f:[{p:[58,3,1925],t:7,e:"warnings"}," ",{p:[59,3,1940],t:7,e:"interface"}]}," ",{t:4,f:[{p:[62,3,1990],t:7,e:"resize"}],n:50,r:"config.titlebar",p:[61,1,1963]}]},r.exports.components=r.exports.components||{};var i={warnings:t(218),titlebar:t(217),resize:t(212)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{203:203,204:204,205:205,206:206,207:207,208:208,209:209,210:210,211:211,212:212,213:213,214:214,215:215,217:217,218:218,219:219,220:220,221:221,222:222,223:223,224:224,225:225,226:226,227:227,228:228,229:229,230:230,231:231,232:232,233:233,234:234,235:235,236:236,237:237,238:238,239:239,240:240,241:241,242:242,243:243,244:244,245:245,246:246,247:247,248:248,249:249,250:250,251:251,252:252,253:253,254:254,255:255,256:256,257:257,258:258,259:259,260:260,261:261,262:262,263:263,264:264,265:265,266:266,267:267,268:268,269:269,270:270,271:271,272:272,273:273,274:274,275:275,276:276,277:277,278:278,279:279,280:280,281:281,282:282,283:283,284:284,285:285,286:286,287:287,288:288,289:289,290:290,291:291,292:292,293:293,294:294,295:295,296:296,297:297,298:298,299:299,300:300,301:301,302:302,303:303,304:304,305:305,306:306,307:307,308:308,309:309,310:310,311:311,312:312,313:313,314:314,315:315,316:316,317:317,318:318,319:319,320:320,321:321,322:322,323:323,324:324,325:325,326:326,327:327,328:328,329:329,330:330,331:331,332:332,335:335,337:337}],335:[function(t,e,n){"use strict";function a(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return"byond://"+e+"?"+Object.keys(t).map(function(e){return o(e)+"="+o(t[e])}).join("&")}function r(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};window.location.href=a(Object.assign({src:t,action:e},n))}function i(t,e,n){var r;window.location.href=a((r={},r[t+"."+e]=n,r),"winset")}n.__esModule=!0,n.href=a,n.act=r,n.winset=i;var o=encodeURIComponent},{}],336:[function(t,e,n){"use strict";n.__esModule=!0;n.UI_INTERACTIVE=2,n.UI_UPDATE=1,n.UI_DISABLED=0,n.UI_CLOSE=-1},{}],337:[function(t,e,n){"use strict";function a(t,e){return 0>t?t=0:t+window.innerWidth>window.screen.availWidth&&(t=window.screen.availWidth-window.innerWidth),0>e?e=0:e+window.innerHeight>window.screen.availHeight&&(e=window.screen.availHeight-window.innerHeight),{x:t,y:e}}function r(t){if(t.preventDefault(),this.get("drag")){if(this.get("x")){var e=t.screenX-this.get("x")+window.screenLeft,n=t.screenY-this.get("y")+window.screenTop;if(this.get("config.locked")){var r=a(e,n);e=r.x,n=r.y}(0,s.winset)(this.get("config.window"),"pos",e+","+n)}this.set({x:t.screenX,y:t.screenY})}}function i(t,e){return t=Math.clamp(100,window.screen.width,t),e=Math.clamp(100,window.screen.height,e),{x:t,y:e}}function o(t){if(t.preventDefault(),this.get("resize")){if(this.get("x")){var e=t.screenX-this.get("x")+window.innerWidth,n=t.screenY-this.get("y")+window.innerHeight,a=i(e,n);e=a.x,n=a.y,(0,s.winset)(this.get("config.window"),"size",e+","+n)}this.set({x:t.screenX,y:t.screenY})}}n.__esModule=!0,n.lock=a,n.drag=r,n.sane=i,n.resize=o;var s=t(335)},{335:335}],338:[function(t,e,n){"use strict";function a(t,e){for(var n=t,a=Array.isArray(n),i=0,n=a?n:n[Symbol.iterator]();;){var o;if(a){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var s=o;s.textContent.toLowerCase().includes(e)?(s.style.display="",r(s,e)):s.style.display="none"}}function r(t,e){for(var n=t.queryAll("section"),a=t.query("header").textContent.toLowerCase().includes(e),r=n,i=Array.isArray(r),o=0,r=i?r:r[Symbol.iterator]();;){var s;if(i){if(o>=r.length)break;s=r[o++]}else{if(o=r.next(),o.done)break;s=o.value}var p=s;a||p.textContent.toLowerCase().includes(e)?p.style.display="":p.style.display="none"}}n.__esModule=!0,n.filterMulti=a,n.filter=r},{}],339:[function(t,e,n){"use strict";function a(t,e,n){return Math.max(t,Math.min(n,e))}function r(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return+(Math.round(t+"e"+e)+"e-"+e)}n.__esModule=!0,n.clamp=a,n.fixed=r},{}],340:[function(t,e,n){"use strict";function a(t){return t[0].toUpperCase()+t.slice(1).toLowerCase()}function r(t){return t.replace(/\w\S*/g,a)}function i(t,e){for(t=""+t;t.length1){for(var p=Array(o),u=0;o>u;u++)p[u]=arguments[u+3];n.children=p}return{$$typeof:t,type:e,key:void 0===a?null:""+a,ref:null,props:n,_owner:null}}}(),e.asyncIterator=function(t){if("function"==typeof Symbol){if(Symbol.asyncIterator){var e=t[Symbol.asyncIterator];if(null!=e)return e.call(t)}if(Symbol.iterator)return t[Symbol.iterator]()}throw new TypeError("Object is not async iterable")},e.asyncGenerator=function(){function t(t){this.value=t}function e(e){function n(t,e){return new Promise(function(n,r){var s={key:t,arg:e,resolve:n,reject:r,next:null};o?o=o.next=s:(i=o=s,a(t,e))})}function a(n,i){try{var o=e[n](i),s=o.value;s instanceof t?Promise.resolve(s.value).then(function(t){a("next",t)},function(t){a("throw",t)}):r(o.done?"return":"normal",o.value)}catch(p){r("throw",p)}}function r(t,e){switch(t){case"return":i.resolve({value:e,done:!0});break;case"throw":i.reject(e);break;default:i.resolve({value:e,done:!1})}i=i.next,i?a(i.key,i.arg):o=null}var i,o;this._invoke=n,"function"!=typeof e["return"]&&(this["return"]=void 0)}return"function"==typeof Symbol&&Symbol.asyncIterator&&(e.prototype[Symbol.asyncIterator]=function(){return this}),e.prototype.next=function(t){return this._invoke("next",t)},e.prototype["throw"]=function(t){return this._invoke("throw",t)},e.prototype["return"]=function(t){return this._invoke("return",t)},{wrap:function(t){return function(){return new e(t.apply(this,arguments))}},await:function(e){return new t(e)}}}(),e.asyncGeneratorDelegate=function(t,e){function n(n,a){return r=!0,a=new Promise(function(e){e(t[n](a))}),{done:!1,value:e(a)}}var a={},r=!1;return"function"==typeof Symbol&&Symbol.iterator&&(a[Symbol.iterator]=function(){return this}),a.next=function(t){return r?(r=!1,t):n("next",t)},"function"==typeof t["throw"]&&(a["throw"]=function(t){if(r)throw r=!1,t;return n("throw",t)}),"function"==typeof t["return"]&&(a["return"]=function(t){return n("return",t)}),a},e.asyncToGenerator=function(t){return function(){var e=t.apply(this,arguments);return new Promise(function(t,n){function a(r,i){try{var o=e[r](i),s=o.value}catch(p){return void n(p)}return o.done?void t(s):Promise.resolve(s).then(function(t){a("next",t)},function(t){a("throw",t)})}return a("next")})}},e.classCallCheck=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},e.createClass=function(){function t(t,e){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(t,a)&&(n[a]=t[a]);return n},e.possibleConstructorReturn=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e},e.selfGlobal=void 0===t?self:t,e.set=function a(t,e,n,r){var i=Object.getOwnPropertyDescriptor(t,e);if(void 0===i){var o=Object.getPrototypeOf(t);null!==o&&a(o,e,n,r)}else if("value"in i&&i.writable)i.value=n;else{var s=i.set;void 0!==s&&s.call(r,n)}return n},e.slicedToArray=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(p){r=!0,i=p}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),e.slicedToArrayLoose=function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t)){for(var n,a=[],r=t[Symbol.iterator]();!(n=r.next()).done&&(a.push(n.value),!e||a.length!==e););return a}throw new TypeError("Invalid attempt to destructure non-iterable instance")},e.taggedTemplateLiteral=function(t,e){return Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(e)}}))},e.taggedTemplateLiteralLoose=function(t,e){return t.raw=e,t},e.temporalRef=function(t,e,n){if(t===n)throw new ReferenceError(e+" is not defined - temporal dead zone");return t},e.temporalUndefined={},e.toArray=function(t){return Array.isArray(t)?t:Array.from(t)},e.toConsumableArray=function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e_1?null:"disabled"'},p:[30,36,1364]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[32,5,1511],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[33,5,1606],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[33,35,1636]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}," ",{p:[36,3,1798],t:7,e:"ui-section",a:{label:"Valve"},f:[{p:[37,5,1830],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.valveOpen"],s:'_0?"unlock":"lock"'},p:[37,22,1847]}],style:[{t:2,x:{r:["data.valveOpen","data.hasHoldingTank"],s:'_0?_1?"caution":"danger":null'},p:[38,14,1901]}],action:"valve"},f:[{t:2,x:{r:["data.valveOpen"],s:'_0?"Open":"Closed"'},p:[39,22,1995]}]}]}]}," ",{t:4,f:[{p:[42,1,2090],t:7,e:"ui-display",a:{title:"Valve Toggle Timer"},f:[{t:4,f:[{p:[44,5,2155],t:7,e:"ui-section",a:{label:"Adjust Timer"},f:[{p:[45,7,2196],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.timer_is_not_default"],s:'_0?null:"disabled"'},p:[45,40,2229]}],action:"timer",params:'{"change": "reset"}'},f:["Reset"]}," ",{p:[47,7,2358],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.timer_is_not_min"],s:'_0?null:"disabled"'},p:[47,38,2389]}],action:"timer",params:'{"change": "decrease"}'},f:["Decrease"]}," ",{p:[49,7,2520],t:7,e:"ui-button",a:{icon:"pencil",state:[{t:2,x:{r:[],s:'"disabled"'},p:[49,39,2552]}],action:"timer",params:'{"change": "input"}'},f:["Set"]}," ",{p:[51,7,2637],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.timer_is_not_max"],s:'_0?null:"disabled"'},p:[51,37,2667]}],action:"timer",params:'{"change": "increase"}'},f:["Increase"]}]}],n:51,r:"data.timing",p:[43,3,2133]}," ",{p:[55,3,2833],t:7,e:"ui-section",a:{label:"Timer"},f:[{p:[56,6,2866],t:7,e:"ui-button",a:{icon:"clock-o",style:[{t:2,x:{r:["data.timing"],s:'_0?"danger":"caution"'},p:[56,39,2899]}],action:"toggle_timer"},f:[{t:2,x:{r:["data.timing"],s:'_0?"On":"Off"'},p:[57,30,2969]}]}," ",{p:[59,2,3017],t:7,e:"ui-section",a:{label:"Time until Valve Toggle"},f:[{p:[60,2,3064],t:7,e:"span",f:[{t:2,x:{r:["data.timing","data.time_left","data.timer_set"],s:"_0?_1:_2"},p:[60,8,3070]}]}]}]}]}],n:50,r:"data.isPrototype",p:[41,1,2062]},{p:{button:[{t:4,f:[{p:[69,7,3277],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.valveOpen"],s:'_0?"danger":null'},p:[69,38,3308]}],action:"eject"},f:["Eject"]}],n:50,r:"data.hasHoldingTank",p:[68,5,3242]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[73,3,3442],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holdingTank.name",p:[74,4,3473]}]}," ",{p:[76,3,3519],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holdingTank.tankPressure"],s:"Math.round(_0)"},p:[77,4,3553]}," kPa"]}],n:50,r:"data.hasHoldingTank",p:[72,3,3411]},{t:4,n:51,f:[{p:[80,3,3635],t:7,e:"ui-section",f:[{p:[81,4,3652],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.hasHoldingTank"}]}]},e.exports=a.extend(r.exports)},{205:205}],237:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={computed:{tabs:function(){return Object.keys(this.get("data.supplies"))}}}}(r),r.exports.template={v:3,t:[" ",{p:[11,1,158],t:7,e:"ui-display",a:{title:"Cargo"},f:[{p:[12,3,188],t:7,e:"ui-section",a:{label:"Shuttle"},f:[{t:4,f:[{p:[14,7,270],t:7,e:"ui-button",a:{action:"send"},f:[{t:2,r:"data.location",p:[14,32,295]}]}],n:50,x:{r:["data.docked","data.requestonly"],s:"_0&&!_1"},p:[13,5,222]},{t:4,n:51,f:[{p:[16,7,346],t:7,e:"span",f:[{t:2,r:"data.location",p:[16,13,352]}]}],x:{r:["data.docked","data.requestonly"],s:"_0&&!_1"}}]}," ",{p:[19,3,410],t:7,e:"ui-section",a:{label:"Credits"},f:[{p:[20,5,444],t:7,e:"span",f:[{t:2,x:{r:["adata.points"],s:"Math.floor(_0)"},p:[20,11,450]}]}]}," ",{p:[22,3,506],t:7,e:"ui-section",a:{label:"CentCom Message"},f:[{p:[23,7,550],t:7,e:"span",f:[{t:2,r:"data.message",p:[23,13,556]}]}]}," ",{t:4,f:[{p:[26,5,644],t:7,e:"ui-section",a:{label:"Loan"},f:[{t:4,f:[{p:[28,9,716],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.away","data.docked"],s:'_0&&_1?null:"disabled"'},p:[29,17,744]}],action:"loan"},f:["Loan Shuttle"]}],n:50,x:{r:["data.loan_dispatched"],s:"!_0"},p:[27,7,677]},{t:4,n:51,f:[{p:[32,9,868],t:7,e:"span",a:{"class":"bad"},f:["Loaned to CentCom"]}],x:{r:["data.loan_dispatched"],s:"!_0"}}]}],n:50,x:{r:["data.loan","data.requestonly"],s:"_0&&!_1"},p:[25,3,600]}]}," ",{t:4,f:[{p:{button:[{p:[40,7,1066],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["data.cart.length"],s:'_0?null:"disabled"'},p:[40,38,1097]}],action:"clear"},f:["Clear"]}]},t:7,e:"ui-display",a:{title:"Cart",button:0},f:[" ",{t:4,f:[{p:[43,7,1222],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:[{p:[44,9,1263],t:7,e:"div",a:{"class":"content"},f:["#",{t:2,r:"id",p:[44,31,1285]}]}," ",{p:[45,9,1307],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"object",p:[45,30,1328]}]}," ",{p:[46,9,1354],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"cost",p:[46,30,1375]}," Credits"]}," ",{p:[47,9,1407],t:7,e:"div",a:{"class":"content"},f:[{p:[48,11,1440],t:7,e:"ui-button",a:{icon:"minus",action:"remove",params:['{"id": "',{t:2,r:"id",p:[48,67,1496]},'"}']}}]}]}],n:52,r:"data.cart",p:[42,5,1195]},{t:4,n:51,f:[{p:[52,7,1566],t:7,e:"span",f:["Nothing in Cart"]}],r:"data.cart"}]}],n:50,x:{r:["data.requestonly"],s:"!_0"},p:[37,1,972]},{p:{button:[{t:4,f:[{p:[59,7,1735],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["data.requests.length"],s:'_0?null:"disabled"'},p:[59,38,1766]}],action:"denyall"},f:["Clear"]}],n:50,x:{r:["data.requestonly"],s:"!_0"},p:[58,5,1702]}]},t:7,e:"ui-display",a:{title:"Requests",button:0},f:[" ",{t:4,f:[{p:[63,5,1908],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:[{p:[64,7,1947],t:7,e:"div",a:{"class":"content"},f:["#",{t:2,r:"id",p:[64,29,1969]}]}," ",{p:[65,7,1989],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"object",p:[65,28,2010]}]}," ",{p:[66,7,2034],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"cost",p:[66,28,2055]}," Credits"]}," ",{p:[67,7,2085],t:7,e:"div",a:{"class":"content"},f:["By ",{t:2,r:"orderer",p:[67,31,2109]}]}," ",{p:[68,7,2134],t:7,e:"div",a:{"class":"content"},f:["Comment: ",{t:2,r:"reason",p:[68,37,2164]}]}," ",{t:4,f:[{p:[70,9,2223],t:7,e:"div",a:{"class":"content"},f:[{p:[71,11,2256],t:7,e:"ui-button",a:{icon:"check",action:"approve",params:['{"id": "',{t:2,r:"id",p:[71,68,2313]},'"}']}}," ",{p:[72,11,2336],t:7,e:"ui-button",a:{icon:"close",action:"deny",params:['{"id": "',{t:2,r:"id",p:[72,65,2390]},'"}']}}]}],n:50,x:{r:["data.requestonly"],s:"!_0"},p:[69,7,2188]}]}],n:52,r:"data.requests",p:[62,3,1879]},{t:4,n:51,f:[{p:[77,7,2473],t:7,e:"span",f:["No Requests"]}],r:"data.requests"}]}," ",{p:[80,1,2529],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"tabs",p:[80,16,2544]}]},f:[{t:4,f:[{p:[82,5,2587],t:7,e:"tab",a:{name:[{t:2,r:"name",p:[82,16,2598]}]},f:[{t:4,f:[{p:[84,9,2641],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[84,28,2660]}],candystripe:0,right:0},f:[{p:[85,11,2700],t:7,e:"ui-button",a:{action:"add",params:['{"id": "',{t:2,r:"id",p:[85,51,2740]},'"}']},f:[{t:2,r:"cost",p:[85,61,2750]}," Credits"]}]}],n:52,r:"packs",p:[83,7,2616]}]}],n:52,r:"data.supplies",p:[81,3,2558]}]}]},e.exports=a.extend(r.exports)},{205:205}],238:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={computed:{tabs:function(){return Object.keys(this.get("data.supplies"))}}}}(r),r.exports.template={v:3,t:[" ",{p:[12,1,174],t:7,e:"ui-notice",f:[{t:4,f:[{p:[14,5,220],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[15,7,263],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[15,24,280]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[15,75,331]}]}]}],n:50,r:"data.siliconUser",p:[13,3,189]},{t:4,n:51,f:[{p:[18,5,422],t:7,e:"span",f:["Swipe a QM-Level ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[18,39,456]}," this interface."]}],r:"data.siliconUser"}]}," ",{t:4,f:[{p:[23,3,568],t:7,e:"ui-display",a:{title:"Express Cargo Console"},f:[{p:[24,5,616],t:7,e:"ui-section",a:{label:"Credits"},f:[{p:[25,7,652],t:7,e:"span",f:[{t:2,x:{r:["adata.points"],s:"Math.floor(_0)"},p:[25,13,658]}]}]}," ",{p:[28,5,720],t:7,e:"ui-section",a:{label:"Notice"},f:[{p:[29,7,755],t:7,e:"span",f:[{t:2,r:"data.message",p:[29,13,761]}]}]}]}," ",{p:[32,3,824],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"tabs",p:[32,18,839]}]},f:[{t:4,f:[{p:[34,7,886],t:7,e:"tab",a:{name:[{t:2,r:"name",p:[34,18,897]}]},f:[{t:4,f:[{p:[36,11,944],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[36,30,963]}],candystripe:0,right:0},f:[{p:[37,13,1005],t:7,e:"ui-button",a:{action:"add",params:['{"id": "',{t:2,r:"id",p:[37,53,1045]},'"}']},f:[{t:2,r:"cost",p:[37,63,1055]}," Credits (Premium Pricing)"]}]}],n:52,r:"packs",p:[35,9,917]}]}],n:52,r:"data.supplies",p:[33,5,855]}]}],n:50,x:{r:["data.locked"],s:"!_0"},p:[22,1,543]}]},e.exports=a.extend(r.exports)},{205:205}],239:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Cellular Emporium",button:0},f:[{p:[2,3,49],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.can_readapt"],s:'_0?null:"disabled"'},p:[2,36,82]}],action:"readapt"},f:["Readapt"]}," ",{p:[4,3,169],t:7,e:"ui-section",a:{label:"Genetic Points Remaining",right:0},f:[{t:2,r:"data.genetic_points_remaining",p:[5,5,226]}]}]}," ",{p:[8,1,293],t:7,e:"ui-display",f:[{t:4,f:[{p:[10,3,335],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[10,22,354]}],candystripe:0,right:0},f:[{p:[11,5,388],t:7,e:"span",f:[{t:2,r:"desc",p:[11,11,394]}]}," ",{p:[12,5,415],t:7,e:"span",f:[{t:2,r:"helptext",p:[12,11,421]}]}," ",{p:[13,5,446],t:7,e:"span",f:["Cost: ",{t:2,r:"dna_cost",p:[13,17,458]}]}," ",{p:[14,5,483],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["owned","can_purchase"],s:'_0?"selected":_1?null:"disabled"'},p:[15,14,508]}],action:"evolve",params:['{"name": "',{t:2,r:"name",p:[17,25,615]},'"}']},f:[{t:2,x:{r:["owned"],s:'_0?"Evolved":"Evolve"'},p:[18,7,635]}]}]}],n:52,r:"data.abilities",p:[9,1,307]},{t:4,f:[{p:[23,3,738],t:7,e:"span",a:{"class":"warning"},f:["No abilities availible."]}],n:51,r:"data.abilities",p:[22,1,715]}]}]},e.exports=a.extend(r.exports)},{205:205}],240:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,3,31],t:7,e:"ui-section",a:{label:"Energy"},f:[{p:[3,5,64],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.maxEnergy",p:[3,26,85]}],value:[{t:2,r:"data.energy",p:[3,53,112]}]},f:[{t:2,x:{r:["adata.energy"],s:"Math.fixed(_0)"},p:[3,70,129]}," Units"]}]}]}," ",{p:[6,1,206],t:7,e:"ui-display",a:{title:"Saved Recipes",button:0},f:[{p:[7,3,251],t:7,e:"ui-section",f:[{p:[8,5,269],t:7,e:"ui-button",a:{icon:"plus",action:"add_recipe"},f:["Add Recipe"]}," ",{p:[9,2,337],t:7,e:"ui-button",a:{icon:"minus",action:"clear_recipes"},f:["Clear Recipes"]}," ",{t:4,f:[{p:[11,7,445],t:7,e:"ui-button",a:{grid:0,icon:"tint",action:"dispense_recipe",params:['{"recipe": "',{t:2,r:"contents",p:[11,80,518]},'"}']},f:[{t:2,r:"recipe_name",p:[11,96,534]}]}],n:52,r:"data.recipes",p:[10,5,415]}]}]}," ",{p:{button:[{t:4,f:[{p:[18,7,719],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.amount","."],s:'_0==_1?"selected":null'},p:[18,37,749]}],action:"amount",params:['{"target": ',{t:2,r:".",p:[18,114,826]},"}"]},f:[{t:2,r:".",p:[18,122,834]}]}],n:52,r:"data.beakerTransferAmounts",p:[17,5,675]}]},t:7,e:"ui-display",a:{title:"Dispense",button:0},f:[" ",{p:[21,3,886],t:7,e:"ui-section",f:[{t:4,f:[{p:[23,7,936],t:7,e:"ui-button",a:{grid:0,icon:"tint",action:"dispense",params:['{"reagent": "',{t:2,r:"id",p:[23,74,1003]},'"}']},f:[{t:2,r:"title",p:[23,84,1013]}]}],n:52,r:"data.chemicals",p:[22,5,904]}]}]}," ",{p:{button:[{t:4,f:[{p:[30,7,1190],t:7,e:"ui-button",a:{icon:"minus",action:"remove",params:['{"amount": ',{t:2,r:".",p:[30,66,1249]},"}"]},f:[{t:2,r:".",p:[30,74,1257]}]}],n:52,r:"data.beakerTransferAmounts",p:[29,5,1146]}," ",{p:[32,5,1295],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[32,36,1326]}],action:"eject"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[34,3,1423],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[36,7,1493],t:7,e:"span",f:[{t:2,x:{r:["adata.beakerCurrentVolume"],s:"Math.round(_0)"},p:[36,13,1499]},"/",{t:2,r:"data.beakerMaxVolume",p:[36,55,1541]}," Units"]}," ",{p:[37,7,1586],t:7,e:"br"}," ",{t:4,f:[{p:[39,9,1639],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[39,52,1682]}," units of ",{t:2,r:"name",p:[39,87,1717]}]},{p:[39,102,1732],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[38,7,1599]},{t:4,n:51,f:[{p:[41,9,1763],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[35,5,1458]},{t:4,n:51,f:[{p:[44,7,1839],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=a.extend(r.exports)},{205:205}],241:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Thermostat"},f:[{p:[2,3,35],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,67],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isActive"],s:'_0?"power-off":"close"'},p:[3,22,84]}],style:[{t:2,x:{r:["data.isActive"],s:'_0?"selected":null'},p:[4,10,137]}],state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[5,10,186]}],action:"power"},f:[{t:2,x:{r:["data.isActive"],s:'_0?"On":"Off"'},p:[6,18,249]}]}]}," ",{p:[8,3,314],t:7,e:"ui-section",a:{label:"Target"},f:[{p:[9,4,346],t:7,e:"ui-button",a:{icon:"pencil",action:"temperature",params:'{"target": "input"}'},f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[9,79,421]}," K"]}]}]}," ",{p:{button:[{p:[14,5,564],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[14,36,595]}],action:"eject"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[16,3,692],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[18,7,762],t:7,e:"span",f:["Temperature: ",{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[18,26,781]}," K"]}," ",{p:[19,7,831],t:7,e:"br"}," ",{t:4,f:[{p:[21,9,885],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[21,52,928]}," units of ",{t:2,r:"name",p:[21,87,963]}]},{p:[21,102,978],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[20,7,845]},{t:4,n:51,f:[{p:[23,9,1009],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[17,5,727]},{t:4,n:51,f:[{p:[26,7,1085],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=a.extend(r.exports)},{205:205}],242:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,2,32],t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[{p:[3,3,70],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?"Eject":"close"'},p:[3,20,87]}],style:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?"selected":null'},p:[4,11,143]}],state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[5,11,199]}],action:"eject"},f:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?"Eject":"No beaker"'},p:[7,5,268]}]}," ",{p:[10,3,340],t:7,e:"ui-section",f:[{t:4,f:[{t:4,f:[{p:[13,6,426],t:7,e:"ui-section",a:{label:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[13,25,445]}," units of ",{t:2,r:"name",p:[13,60,480]}],nowrap:0},f:[{p:[14,7,505],t:7,e:"div",a:{"class":"content",style:"float:right"},f:[{p:[15,8,555],t:7,e:"ui-button",a:{action:"transferToBuffer",params:['{"id": "',{t:2,r:"id",p:[15,61,608]},'", "amount": 1}']},f:["1"]}," ",{p:[16,8,653],t:7,e:"ui-button",a:{action:"transferToBuffer",params:['{"id": "',{t:2,r:"id",p:[16,61,706]},'", "amount": 5}']},f:["5"]}," ",{p:[17,8,751],t:7,e:"ui-button",a:{action:"transferToBuffer",params:['{"id": "',{t:2,r:"id",p:[17,61,804]},'", "amount": 10}']},f:["10"]}," ",{p:[18,8,851],t:7,e:"ui-button",a:{action:"transferToBuffer",params:['{"id": "',{t:2,r:"id",p:[18,61,904]},'", "amount": 1000}']},f:["All"]}," ",{p:[19,8,954],t:7,e:"ui-button",a:{action:"transferToBuffer",params:['{"id": "',{t:2,r:"id",p:[19,61,1007]},'", "amount": -1}']},f:["Custom"]}," ",{p:[20,8,1058],t:7,e:"ui-button",a:{action:"analyze",params:['{"id": "',{t:2,r:"id",p:[20,52,1102]},'"}']},f:["Analyze"]}]}]}],n:52,r:"data.beakerContents",p:[12,5,390]},{t:4,n:51,f:[{p:[24,5,1184],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"data.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[11,4,357]},{t:4,n:51,f:[{p:[27,5,1255],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}," ",{p:[32,2,1343],t:7,e:"ui-display",a:{title:"Buffer"},f:[{p:[33,3,1374],t:7,e:"ui-button",a:{action:"toggleMode",state:[{t:2,x:{r:["data.mode"],s:'_0?null:"selected"'},p:[33,41,1412]}]},f:["Destroy"]}," ",{p:[34,3,1470],t:7,e:"ui-button",a:{action:"toggleMode",state:[{t:2,x:{r:["data.mode"],s:'_0?"selected":null'},p:[34,41,1508]}]},f:["Transfer to Beaker"]}," ",{p:[35,3,1577],t:7,e:"ui-section",f:[{t:4,f:[{p:[37,5,1629],t:7,e:"ui-section",a:{label:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[37,24,1648]}," units of ",{t:2,r:"name",p:[37,59,1683]}],nowrap:0},f:[{p:[38,6,1707],t:7,e:"div",a:{"class":"content",style:"float:right"},f:[{p:[39,7,1756],t:7,e:"ui-button",a:{action:"transferFromBuffer",params:['{"id": "',{t:2,r:"id",p:[39,62,1811]},'", "amount": 1}']},f:["1"]}," ",{p:[40,7,1855],t:7,e:"ui-button",a:{action:"transferFromBuffer",params:['{"id": "',{t:2,r:"id",p:[40,62,1910]},'", "amount": 5}']},f:["5"]}," ",{p:[41,7,1954],t:7,e:"ui-button",a:{action:"transferFromBuffer",params:['{"id": "',{t:2,r:"id",p:[41,62,2009]},'", "amount": 10}']},f:["10"]}," ",{p:[42,7,2055],t:7,e:"ui-button",a:{action:"transferFromBuffer",params:['{"id": "',{t:2,r:"id",p:[42,62,2110]},'", "amount": 1000}']},f:["All"]}," ",{p:[43,7,2159],t:7,e:"ui-button",a:{action:"transferFromBuffer",params:['{"id": "',{t:2,r:"id",p:[43,62,2214]},'", "amount": -1}']},f:["Custom"]}," ",{p:[44,7,2264],t:7,e:"ui-button",a:{action:"analyze",params:['{"id": "',{t:2,r:"id",p:[44,51,2308]},'"}']},f:["Analyze"]}]}]}],n:52,r:"data.bufferContents",p:[36,4,1594]}]}]}," ",{t:4,f:[{p:[52,3,2444],t:7,e:"ui-display",a:{title:"Pills, Bottles and Patches"},f:[{t:4,f:[{p:[54,5,2534],t:7,e:"ui-button",a:{action:"ejectp",state:[{t:2,x:{r:["data.isPillBottleLoaded"],s:'_0?null:"disabled"'},p:[54,39,2568]}]},f:[{t:2,x:{r:["data.isPillBottleLoaded"],s:'_0?"Eject":"No Pill bottle loaded"'},p:[54,88,2617]}]}," ",{p:[55,5,2698],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.pillBotContent",p:[55,27,2720]},"/",{t:2,r:"data.pillBotMaxContent",p:[55,51,2744]}]}],n:50,r:"data.isPillBottleLoaded",p:[53,4,2497]},{t:4,n:51,f:[{p:[57,5,2796],t:7,e:"span",a:{"class":"average"},f:["No Pillbottle"]}],r:"data.isPillBottleLoaded"}," ",{p:[60,4,2860],t:7,e:"br"}," ",{p:[61,4,2870],t:7,e:"br"}," ",{p:[62,4,2880],t:7,e:"ui-button",a:{action:"createPill",params:'{"many": 0}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[62,63,2939]}]},f:["Create Pill (max 50µ)"]}," ",{p:[63,4,3023],t:7,e:"br"}," ",{p:[64,4,3033],t:7,e:"ui-button",a:{action:"createPill",params:'{"many": 1}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[64,63,3092]}]},f:["Create Multiple Pills"]}," ",{p:[65,4,3176],t:7,e:"br"}," ",{p:[66,4,3186],t:7,e:"br"}," ",{p:[67,4,3196],t:7,e:"ui-button",a:{action:"createPatch",params:'{"many": 0}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[67,64,3256]}]},f:["Create Patch (max 40µ)"]}," ",{p:[68,4,3341],t:7,e:"br"}," ",{p:[69,4,3351],t:7,e:"ui-button",a:{action:"createPatch",params:'{"many": 1}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[69,64,3411]}]},f:["Create Multiple Patches"]}," ",{p:[70,4,3497],t:7,e:"br"}," ",{p:[71,4,3507],t:7,e:"br"}," ",{p:[72,4,3517],t:7,e:"ui-button",a:{action:"createBottle",params:'{"many": 0}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[72,65,3578]}]},f:["Create Bottle (max 30µ)"] +}," ",{p:[73,4,3664],t:7,e:"br"}," ",{p:[74,4,3674],t:7,e:"ui-button",a:{action:"createBottle",params:'{"many": 1}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[74,65,3735]}]},f:["Dispense Buffer to Bottles"]}]}],n:50,x:{r:["data.condi"],s:"!_0"},p:[51,2,2421]},{t:4,n:51,f:[{p:[79,3,3857],t:7,e:"ui-display",a:{title:"Condiments bottles and packs"},f:[{p:[80,4,3912],t:7,e:"ui-button",a:{action:"createPill",params:'{"many": 0}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[80,63,3971]}]},f:["Create Pack (max 10µ)"]}," ",{p:[81,4,4055],t:7,e:"br"}," ",{p:[82,4,4065],t:7,e:"br"}," ",{p:[83,4,4075],t:7,e:"ui-button",a:{action:"createBottle",params:'{"many": 0}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[83,65,4136]}]},f:["Create Bottle (max 50µ)"]}]}],x:{r:["data.condi"],s:"!_0"}}],n:50,x:{r:["data.screen"],s:'_0=="home"'},p:[1,1,0]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.screen"],s:'_0=="analyze"'},f:[{p:[87,2,4284],t:7,e:"ui-display",a:{title:[{t:2,r:"data.analyzeVars.name",p:[87,20,4302]}]},f:[{p:[88,3,4333],t:7,e:"span",a:{"class":"highlight"},f:["Description:"]}," ",{p:[89,3,4381],t:7,e:"span",a:{"class":"content",style:"float:center"},f:[{t:2,r:"data.analyzeVars.description",p:[89,46,4424]}]}," ",{p:[90,3,4467],t:7,e:"br"}," ",{p:[91,3,4476],t:7,e:"span",a:{"class":"highlight"},f:["Color:"]}," ",{p:[92,3,4518],t:7,e:"span",a:{style:["color: ",{t:2,r:"data.analyzeVars.color",p:[92,23,4538]},"; background-color: ",{t:2,r:"data.analyzeVars.color",p:[92,69,4584]}]},f:[{t:2,r:"data.analyzeVars.color",p:[92,97,4612]}]}," ",{p:[93,3,4649],t:7,e:"br"}," ",{p:[94,3,4658],t:7,e:"span",a:{"class":"highlight"},f:["State:"]}," ",{p:[95,3,4700],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.analyzeVars.state",p:[95,25,4722]}]}," ",{p:[96,3,4759],t:7,e:"br"}," ",{p:[97,3,4768],t:7,e:"span",a:{"class":"highlight"},f:["Metabolization Rate:"]}," ",{p:[98,3,4824],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.analyzeVars.metaRate",p:[98,25,4846]},"µ/minute"]}," ",{p:[99,3,4894],t:7,e:"br"}," ",{p:[100,3,4903],t:7,e:"span",a:{"class":"highlight"},f:["Overdose Threshold:"]}," ",{p:[101,3,4958],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.analyzeVars.overD",p:[101,25,4980]}]}," ",{p:[102,3,5017],t:7,e:"br"}," ",{p:[103,3,5026],t:7,e:"span",a:{"class":"highlight"},f:["Addiction Threshold:"]}," ",{p:[104,3,5082],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.analyzeVars.addicD",p:[104,25,5104]}]}," ",{p:[105,3,5142],t:7,e:"br"}," ",{p:[106,3,5151],t:7,e:"br"}," ",{p:[107,3,5160],t:7,e:"ui-button",a:{action:"goScreen",params:'{"screen": "home"}'},f:["Back"]}]}]}],x:{r:["data.screen"],s:'_0=="home"'}}]},e.exports=a.extend(r.exports)},{205:205}],243:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-button",a:{action:"toggle"},f:[{t:2,x:{r:["data.recollection"],s:'_0?"Recital":"Recollection"'},p:[2,30,43]}]}]}," ",{t:4,f:[{p:[5,3,149],t:7,e:"ui-display",f:[{t:3,r:"data.rec_text",p:[6,3,165]}," ",{t:4,f:[{p:[8,4,231],t:7,e:"br"},{p:[8,8,235],t:7,e:"ui-button",a:{action:"rec_category",params:['{"category": "',{t:2,r:"name",p:[8,63,290]},'"}']},f:[{t:3,r:"name",p:[8,75,302]}," - ",{t:3,r:"desc",p:[8,88,315]}]}],n:52,r:"data.recollection_categories",p:[7,3,188]}," ",{t:3,r:"data.rec_section",p:[10,3,354]}," ",{t:3,r:"data.rec_binds",p:[11,3,380]}]}],n:50,r:"data.recollection",p:[4,1,120]},{t:4,n:51,f:[{p:[14,2,431],t:7,e:"ui-display",a:{title:"Power",button:0},f:[{p:[15,4,469],t:7,e:"ui-section",f:[{t:3,r:"data.power",p:[16,6,488]}]}]}," ",{p:[19,2,541],t:7,e:"ui-display",f:[{p:[20,3,557],t:7,e:"ui-section",f:[{p:[21,4,574],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.selected"],s:'_0=="Driver"?"selected":null'},p:[21,22,592]}],action:"select",params:'{"category": "Driver"}'},f:["Driver"]}," ",{p:[22,4,715],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.selected"],s:'_0=="Script"?"selected":null'},p:[22,22,733]}],action:"select",params:'{"category": "Script"}'},f:["Scripts"]}," ",{p:[23,4,857],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.selected"],s:'_0=="Application"?"selected":null'},p:[23,22,875]}],action:"select",params:'{"category": "Application"}'},f:["Applications"]}," ",{p:[24,4,1014],t:7,e:"br"},{t:3,r:"data.tier_info",p:[24,8,1018]}]}," ",{p:[26,3,1059],t:7,e:"ui-section",f:[{t:3,r:"data.scripturecolors",p:[27,4,1076]}]},{p:[28,16,1119],t:7,e:"hr"}," ",{p:[29,3,1127],t:7,e:"ui-section",f:[{t:4,f:[{p:[31,4,1172],t:7,e:"div",f:[{p:[31,9,1177],t:7,e:"ui-button",a:{tooltip:[{t:3,r:"tip",p:[31,29,1197]}],"tooltip-side":"right",action:"recite",params:['{"category": "',{t:2,r:"type",p:[31,99,1267]},'"}']},f:["Recite ",{t:3,r:"required",p:[31,118,1286]}]}," ",{t:4,f:[{t:4,f:[{p:[34,6,1362],t:7,e:"ui-button",a:{action:"bind",params:['{"category": "',{t:2,r:"type",p:[34,53,1409]},'"}']},f:["Unbind ",{t:3,r:"bound",p:[34,72,1428]}]}],n:50,r:"bound",p:[33,5,1342]},{t:4,n:51,f:[{p:[36,6,1472],t:7,e:"ui-button",a:{action:"bind",params:['{"category": "',{t:2,r:"type",p:[36,53,1519]},'"}']},f:["Quickbind"]}],r:"bound"}],n:50,r:"quickbind",p:[32,6,1319]}," ",{t:3,r:"name",p:[39,6,1586]}," ",{t:3,r:"descname",p:[39,17,1597]}," ",{t:3,r:"invokers",p:[39,32,1612]}]}],n:52,r:"data.scripture",p:[30,3,1143]}]}]}],r:"data.recollection"}]},e.exports=a.extend(r.exports)},{205:205}],244:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Codex Gigas"},f:[{p:[2,2,35],t:7,e:"ui-section",f:[{t:2,r:"data.name",p:[3,3,51]}]}," ",{p:[5,5,86],t:7,e:"ui-section",a:{label:"Prefix"},f:[{p:[6,3,117],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[6,22,136]}],action:"Dark "},f:["Dark"]}," ",{p:[7,3,221],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[7,22,240]}],action:"Hellish "},f:["Hellish"]}," ",{p:[8,3,331],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[8,22,350]}],action:"Fallen "},f:["Fallen"]}," ",{p:[9,3,439],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[9,22,458]}],action:"Fiery "},f:["Fiery"]}," ",{p:[10,3,545],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[10,22,564]}],action:"Sinful "},f:["Sinful"]}," ",{p:[11,3,653],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[11,22,672]}],action:"Blood "},f:["Blood"]}," ",{p:[12,3,759],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[12,22,778]}],action:"Fluffy "},f:["Fluffy"]}]}," ",{p:[14,5,888],t:7,e:"ui-section",a:{label:"Title"},f:[{p:[15,3,918],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[15,22,937]}],action:"Lord "},f:["Lord"]}," ",{p:[16,3,1022],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[16,22,1041]}],action:"Prelate "},f:["Prelate"]}," ",{p:[17,3,1132],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[17,22,1151]}],action:"Count "},f:["Count"]}," ",{p:[18,3,1238],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[18,22,1257]}],action:"Viscount "},f:["Viscount"]}," ",{p:[19,3,1350],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[19,22,1369]}],action:"Vizier "},f:["Vizier"]}," ",{p:[20,3,1458],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[20,22,1477]}],action:"Elder "},f:["Elder"]}," ",{p:[21,3,1564],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[21,22,1583]}],action:"Adept "},f:["Adept"]}]}," ",{p:[23,5,1691],t:7,e:"ui-section",a:{label:"Name"},f:[{p:[24,3,1720],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[24,22,1739]}],action:"hal"},f:["hal"]}," ",{p:[25,3,1821],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[25,22,1840]}],action:"ve"},f:["ve"]}," ",{p:[26,3,1920],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[26,22,1939]}],action:"odr"},f:["odr"]}," ",{p:[27,3,2021],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[27,22,2040]}],action:"neit"},f:["neit"]}," ",{p:[28,3,2124],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[28,22,2143]}],action:"ci"},f:["ci"]}," ",{p:[29,3,2223],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[29,22,2242]}],action:"quon"},f:["quon"]}," ",{p:[30,3,2326],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[30,22,2345]}],action:"mya"},f:["mya"]}," ",{p:[31,3,2427],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[31,22,2446]}],action:"folth"},f:["folth"]}," ",{p:[32,3,2532],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[32,22,2551]}],action:"wren"},f:["wren"]}," ",{p:[33,3,2635],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[33,22,2654]}],action:"geyr"},f:["geyr"]}," ",{p:[34,3,2738],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[34,22,2757]}],action:"hil"},f:["hil"]}," ",{p:[35,3,2839],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[35,22,2858]}],action:"niet"},f:["niet"]}," ",{p:[36,3,2942],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[36,22,2961]}],action:"twou"},f:["twou"]}," ",{p:[37,3,3045],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[37,22,3064]}],action:"phi"},f:["phi"]}," ",{p:[38,3,3146],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[38,22,3165]}],action:"coa"},f:["coa"]}]}," ",{p:[40,5,3268],t:7,e:"ui-section",a:{label:"suffix"},f:[{p:[41,3,3299],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==4?null:"disabled"'},p:[41,22,3318]}],action:" the Red"},f:["the Red"]}," ",{p:[42,3,3409],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==4?null:"disabled"'},p:[42,22,3428]}],action:" the Soulless"},f:["the Soulless"]}," ",{p:[43,3,3529],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==4?null:"disabled"'},p:[43,22,3548]}],action:" the Master"},f:["the Master"]}," ",{p:[44,3,3645],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==4?null:"disabled"'},p:[44,22,3664]}],action:", the Lord of all things"},f:["the Lord of all things"]}," ",{p:[45,3,3786],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==4?null:"disabled"'},p:[45,22,3805]}],action:", Jr."},f:["jr"]}]}," ",{p:[47,5,3909],t:7,e:"ui-section",a:{label:"submit"},f:[{p:[48,3,3941],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0>=4?null:"disabled"'},p:[48,21,3959]}],action:"search"},f:["search"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],245:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[2,1,2],t:7,e:"ui-button",a:{icon:"circle",action:"clean_order"},f:["Clear Order"]},{p:[2,70,71],t:7,e:"br"},{p:[2,74,75],t:7,e:"br"}," ",{p:[3,1,81],t:7,e:"i",f:["Your new computer device you always dreamed of is just four steps away..."]},{p:[3,81,161],t:7,e:"hr"}," ",{t:4,f:[" ",{p:[5,1,223],t:7,e:"div",a:{"class":"item"},f:[{p:[6,2,244],t:7,e:"h2",f:["Step 1: Select your device type"]}," ",{p:[7,2,287],t:7,e:"ui-button",a:{icon:"calc",action:"pick_device",params:'{"pick" : "1"}'},f:["Laptop"]}," ",{p:[8,2,377],t:7,e:"ui-button",a:{icon:"calc",action:"pick_device",params:'{"pick" : "2"}'},f:["LTablet"]}]}],n:50,x:{r:["data.state"],s:"_0==0"},p:[4,1,167]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.state"],s:"_0==1"},f:[{p:[11,1,502],t:7,e:"div",a:{"class":"item"},f:[{p:[12,2,523],t:7,e:"h2",f:["Step 2: Personalise your device"]}," ",{p:[13,2,566],t:7,e:"table",f:[{p:[14,3,577],t:7,e:"tr",f:[{p:[15,4,586],t:7,e:"td",f:[{p:[15,8,590],t:7,e:"b",f:["Current Price:"]}]},{p:[16,4,616],t:7,e:"td",f:[{t:2,r:"data.totalprice",p:[16,8,620]},"C"]}]}," ",{p:[18,3,653],t:7,e:"tr",f:[{p:[19,4,663],t:7,e:"td",f:[{p:[19,8,667],t:7,e:"b",f:["Battery:"]}]},{p:[20,4,687],t:7,e:"td",f:[{p:[20,8,691],t:7,e:"ui-button",a:{action:"hw_battery",params:'{"battery" : "1"}',state:[{t:2,x:{r:["data.hw_battery"],s:'_0==1?"selected":null'},p:[20,73,756]}]},f:["Standard"]}]},{p:[21,4,827],t:7,e:"td",f:[{p:[21,8,831],t:7,e:"ui-button",a:{action:"hw_battery",params:'{"battery" : "2"}',state:[{t:2,x:{r:["data.hw_battery"],s:'_0==2?"selected":null'},p:[21,73,896]}]},f:["Upgraded"]}]},{p:[22,4,967],t:7,e:"td",f:[{p:[22,8,971],t:7,e:"ui-button",a:{action:"hw_battery",params:'{"battery" : "3"}',state:[{t:2,x:{r:["data.hw_battery"],s:'_0==3?"selected":null'},p:[22,73,1036]}]},f:["Advanced"]}]}]}," ",{p:[24,3,1115],t:7,e:"tr",f:[{p:[25,4,1124],t:7,e:"td",f:[{p:[25,8,1128],t:7,e:"b",f:["Hard Drive:"]}]},{p:[26,4,1151],t:7,e:"td",f:[{p:[26,8,1155],t:7,e:"ui-button",a:{action:"hw_disk",params:'{"disk" : "1"}',state:[{t:2,x:{r:["data.hw_disk"],s:'_0==1?"selected":null'},p:[26,67,1214]}]},f:["Standard"]}]},{p:[27,4,1282],t:7,e:"td",f:[{p:[27,8,1286],t:7,e:"ui-button",a:{action:"hw_disk",params:'{"disk" : "2"}',state:[{t:2,x:{r:["data.hw_disk"],s:'_0==2?"selected":null'},p:[27,67,1345]}]},f:["Upgraded"]}]},{p:[28,4,1413],t:7,e:"td",f:[{p:[28,8,1417],t:7,e:"ui-button",a:{action:"hw_disk",params:'{"disk" : "3"}',state:[{t:2,x:{r:["data.hw_disk"],s:'_0==3?"selected":null'},p:[28,67,1476]}]},f:["Advanced"]}]}]}," ",{p:[30,3,1552],t:7,e:"tr",f:[{p:[31,4,1561],t:7,e:"td",f:[{p:[31,8,1565],t:7,e:"b",f:["Network Card:"]}]},{p:[32,4,1590],t:7,e:"td",f:[{p:[32,8,1594],t:7,e:"ui-button",a:{action:"hw_netcard",params:'{"netcard" : "0"}',state:[{t:2,x:{r:["data.hw_netcard"],s:'_0==0?"selected":null'},p:[32,73,1659]}]},f:["None"]}]},{p:[33,4,1726],t:7,e:"td",f:[{p:[33,8,1730],t:7,e:"ui-button",a:{action:"hw_netcard",params:'{"netcard" : "1"}',state:[{t:2,x:{r:["data.hw_netcard"],s:'_0==1?"selected":null'},p:[33,73,1795]}]},f:["Standard"]}]},{p:[34,4,1866],t:7,e:"td",f:[{p:[34,8,1870],t:7,e:"ui-button",a:{action:"hw_netcard",params:'{"netcard" : "2"}',state:[{t:2,x:{r:["data.hw_netcard"],s:'_0==2?"selected":null'},p:[34,73,1935]}]},f:["Advanced"]}]}]}," ",{p:[36,3,2014],t:7,e:"tr",f:[{p:[37,4,2023],t:7,e:"td",f:[{p:[37,8,2027],t:7,e:"b",f:["Nano Printer:"]}]},{p:[38,4,2052],t:7,e:"td",f:[{p:[38,8,2056],t:7,e:"ui-button",a:{action:"hw_nanoprint",params:'{"print" : "0"}',state:[{t:2,x:{r:["data.hw_nanoprint"],s:'_0==0?"selected":null'},p:[38,73,2121]}]},f:["None"]}]},{p:[39,4,2190],t:7,e:"td",f:[{p:[39,8,2194],t:7,e:"ui-button",a:{action:"hw_nanoprint",params:'{"print" : "1"}',state:[{t:2,x:{r:["data.hw_nanoprint"],s:'_0==1?"selected":null'},p:[39,73,2259]}]},f:["Standard"]}]}]}," ",{p:[41,3,2340],t:7,e:"tr",f:[{p:[42,4,2349],t:7,e:"td",f:[{p:[42,8,2353],t:7,e:"b",f:["Card Reader:"]}]},{p:[43,4,2377],t:7,e:"td",f:[{p:[43,8,2381],t:7,e:"ui-button",a:{action:"hw_card",params:'{"card" : "0"}',state:[{t:2,x:{r:["data.hw_card"],s:'_0==0?"selected":null'},p:[43,67,2440]}]},f:["None"]}]},{p:[44,4,2504],t:7,e:"td",f:[{p:[44,8,2508],t:7,e:"ui-button",a:{action:"hw_card",params:'{"card" : "1"}',state:[{t:2,x:{r:["data.hw_card"],s:'_0==1?"selected":null'},p:[44,67,2567]}]},f:["Standard"]}]}]}]}," ",{t:4,f:[" ",{p:[49,4,2706],t:7,e:"table",f:[{p:[50,5,2719],t:7,e:"tr",f:[{p:[51,6,2730],t:7,e:"td",f:[{p:[51,10,2734],t:7,e:"b",f:["Processor Unit:"]}]},{p:[52,6,2763],t:7,e:"td",f:[{p:[52,10,2767],t:7,e:"ui-button",a:{action:"hw_cpu",params:'{"cpu" : "1"}',state:[{t:2,x:{r:["data.hw_cpu"],s:'_0==1?"selected":null'},p:[52,67,2824]}]},f:["Standard"]}]},{p:[53,6,2893],t:7,e:"td",f:[{p:[53,10,2897],t:7,e:"ui-button",a:{action:"hw_cpu",params:'{"cpu" : "2"}',state:[{t:2,x:{r:["data.hw_cpu"],s:'_0==2?"selected":null'},p:[53,67,2954]}]},f:["Advanced"]}]}]}," ",{p:[55,5,3033],t:7,e:"tr",f:[{p:[56,6,3044],t:7,e:"td",f:[{p:[56,10,3048],t:7,e:"b",f:["Tesla Relay:"]}]},{p:[57,6,3074],t:7,e:"td",f:[{p:[57,10,3078],t:7,e:"ui-button",a:{action:"hw_tesla",params:'{"tesla" : "0"}',state:[{t:2,x:{r:["data.hw_tesla"],s:'_0==0?"selected":null'},p:[57,71,3139]}]},f:["None"]}]},{p:[58,6,3206],t:7,e:"td",f:[{p:[58,10,3210],t:7,e:"ui-button",a:{action:"hw_tesla",params:'{"tesla" : "1"}',state:[{t:2,x:{r:["data.hw_tesla"],s:'_0==1?"selected":null'},p:[58,71,3271]}]},f:["Standard"]}]}]}]}],n:50,x:{r:["data.devtype"],s:"_0!=2"},p:[48,3,2659]}," ",{p:[62,3,3374],t:7,e:"table",f:[{p:[63,4,3386],t:7,e:"tr",f:[{p:[64,5,3396],t:7,e:"td",f:[{p:[64,9,3400],t:7,e:"b",f:["Confirm Order:"]}]},{p:[65,5,3427],t:7,e:"td",f:[{p:[65,9,3431],t:7,e:"ui-button",a:{action:"confirm_order"},f:["CONFIRM"]}]}]}]}," ",{p:[69,2,3512],t:7,e:"hr"}," ",{p:[70,2,3519],t:7,e:"b",f:["Battery"]}," allows your device to operate without external utility power source. Advanced batteries increase battery life.",{p:[70,127,3644],t:7,e:"br"}," ",{p:[71,2,3651],t:7,e:"b",f:["Hard Drive"]}," stores file on your device. Advanced drives can store more files, but use more power, shortening battery life.",{p:[71,130,3779],t:7,e:"br"}," ",{p:[72,2,3786],t:7,e:"b",f:["Network Card"]}," allows your device to wirelessly connect to stationwide NTNet network. Basic cards are limited to on-station use, while advanced cards can operate anywhere near the station, which includes the asteroid outposts.",{p:[72,233,4017],t:7,e:"br"}," ",{p:[73,2,4024],t:7,e:"b",f:["Processor Unit"]}," is critical for your device's functionality. It allows you to run programs from your hard drive. Advanced CPUs use more power, but allow you to run more programs on background at once.",{p:[73,208,4230],t:7,e:"br"}," ",{p:[74,2,4237],t:7,e:"b",f:["Tesla Relay"]}," is an advanced wireless power relay that allows your device to connect to nearby area power controller to provide alternative power source. This component is currently unavailable on tablet computers due to size restrictions.",{p:[74,246,4481],t:7,e:"br"}," ",{p:[75,2,4488],t:7,e:"b",f:["Nano Printer"]}," is device that allows for various paperwork manipulations, such as, scanning of documents or printing new ones. This device was certified EcoFriendlyPlus and is capable of recycling existing paper for printing purposes.",{p:[75,241,4727],t:7,e:"br"}," ",{p:[76,2,4734],t:7,e:"b",f:["Card Reader"]}," adds a slot that allows you to manipulate RFID cards. Please note that this is not necessary to allow the device to read your identification, it is just necessary to manipulate other cards."]}]},{t:4,n:50,x:{r:["data.state"],s:"(!(_0==1))&&(_0==2)"},f:[" ",{p:[79,2,4981],t:7,e:"h2",f:["Step 3: Payment"]}," ",{p:[80,2,5008],t:7,e:"b",f:["Your device is now ready for fabrication.."]},{p:[80,51,5057],t:7,e:"br"}," ",{p:[81,2,5064],t:7,e:"i",f:["Please ensure the required amount of credits are in the machine, then press purchase."]},{p:[81,94,5156],t:7,e:"br"}," ",{p:[82,2,5163],t:7,e:"i",f:["Current credits: ",{p:[82,22,5183],t:7,e:"b",f:[{t:2,r:"data.credits",p:[82,25,5186]},"C"]}]},{p:[82,50,5211],t:7,e:"br"}," ",{p:[83,2,5218],t:7,e:"i",f:["Total price: ",{p:[83,18,5234],t:7,e:"b",f:[{t:2,r:"data.totalprice",p:[83,21,5237]},"C"]}]},{p:[83,49,5265],t:7,e:"br"},{p:[83,53,5269],t:7,e:"br"}," ",{p:[84,2,5276],t:7,e:"ui-button",a:{action:"purchase",state:[{t:2,x:{r:["data.credits","data.totalprice"],s:'_0>=_1?null:"disabled"'},p:[84,38,5312]}]},f:["PURCHASE"]}]},{t:4,n:50,x:{r:["data.state"],s:"(!(_0==1))&&((!(_0==2))&&(_0==3))"},f:[" ",{p:[87,2,5423],t:7,e:"h2",f:["Step 4: Thank you for your purchase"]},{p:[87,46,5467],t:7,e:"br"}," ",{p:[88,2,5474],t:7,e:"b",f:["Should you experience any issues with your new device, contact your local network admin for assistance."]}]}],x:{r:["data.state"],s:"_0==0"}}]},e.exports=a.extend(r.exports)},{205:205}],246:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,1,22],t:7,e:"ui-display",f:[{p:[3,2,37],t:7,e:"ui-section",a:{label:"Cap"},f:[{p:[4,3,65],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.is_capped"],s:'_0?"power-off":"close"'},p:[4,20,82]}],style:[{t:2,x:{r:["data.is_capped"],s:'_0?null:"selected"'},p:[4,71,133]}],action:"toggle_cap"},f:[{t:2,x:{r:["data.is_capped"],s:'_0?"On":"Off"'},p:[6,4,202]}]}]}]}],n:50,r:"data.has_cap",p:[1,1,0]},{p:[10,1,288],t:7,e:"ui-display",f:[{t:4,f:[{p:[14,2,419],t:7,e:"ui-section",f:[{p:[15,3,435],t:7,e:"ui-button",a:{action:"select_colour"},f:["Select New Colour"]}]}],n:50,r:"data.can_change_colour",p:[13,1,386]}]}," ",{p:[19,1,540],t:7,e:"ui-display",a:{title:"Stencil"},f:[{t:4,f:[{p:[21,2,599],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[21,21,618]}]},f:[{t:4,f:[{p:[23,7,655],t:7,e:"ui-button",a:{action:"select_stencil",params:['{"item":"',{t:2,r:"item",p:[23,59,707]},'"}'],style:[{t:2,x:{r:["item","data.selected_stencil"],s:'_0==_1?"selected":null'},p:[24,12,731]}]},f:[{t:2,r:"item",p:[25,4,791]}]}],n:52,r:"items",p:[22,3,632]}]}],n:52,r:"data.drawables",p:[20,3,572]}]}," ",{p:[31,1,874],t:7,e:"ui-display",a:{title:"Text Mode"},f:[{p:[32,2,907],t:7,e:"ui-section",a:{label:"Current Buffer"},f:[{t:2,r:"text_buffer",p:[32,37,942]}]}," ",{p:[34,2,976],t:7,e:"ui-section",f:[{p:[34,14,988],t:7,e:"ui-button",a:{action:"enter_text"},f:["New Text"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],247:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[2,3,33],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[3,3,66],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[3,9,72]}]}]}," ",{t:4,f:[{p:[6,5,189],t:7,e:"ui-section",a:{label:"State"},f:[{p:[7,7,223],t:7,e:"span",a:{"class":[{t:2,r:"data.occupant.statstate",p:[7,20,236]}]},f:[{t:2,r:"data.occupant.stat",p:[7,49,265]}]}]}," ",{p:[9,4,317],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[10,6,356],t:7,e:"span",a:{"class":[{t:2,r:"data.occupant.temperaturestatus",p:[10,19,369]}]},f:[{t:2,r:"data.occupant.bodyTemperature",p:[10,56,406]}," K"]}]}," ",{p:[12,5,472],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[13,7,507],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.occupant.minHealth",p:[13,20,520]}],max:[{t:2,r:"data.occupant.maxHealth",p:[13,54,554]}],value:[{t:2,r:"data.occupant.health",p:[13,90,590]}],state:[{t:2,x:{r:["data.occupant.health"],s:'_0>=0?"good":"average"'},p:[14,16,632]}]},f:[{t:2,r:"data.occupant.health",p:[14,68,684]}]}]}," ",{t:4,f:[{p:[17,7,908],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[17,26,927]}]},f:[{p:[18,9,948],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.maxHealth",p:[18,30,969]}],value:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[18,66,1005]}],state:"bad"},f:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[18,103,1042]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}]'},p:[16,5,742]}],n:50,r:"data.hasOccupant",p:[5,3,159]}]}," ",{p:[23,1,1138],t:7,e:"ui-display",a:{title:"Cell"},f:[{p:[24,3,1167],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[25,5,1199],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOperating"],s:'_0?"power-off":"close"'},p:[25,22,1216]}],style:[{t:2,x:{r:["data.isOperating"],s:'_0?"selected":null'},p:[26,14,1276]}],state:[{t:2,x:{r:["data.isOpen"],s:'_0?"disabled":null'},p:[27,14,1332]}],action:"power"},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[28,22,1391]}]}]}," ",{p:[30,3,1459],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[31,3,1495],t:7,e:"span",a:{"class":[{t:2,r:"data.temperaturestatus",p:[31,16,1508]}]},f:[{t:2,r:"data.cellTemperature",p:[31,44,1536]}," K"]}]}," ",{p:[33,2,1588],t:7,e:"ui-section",a:{label:"Door"},f:[{p:[34,5,1619],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOpen"],s:'_0?"unlock":"lock"'},p:[34,22,1636]}],action:"door"},f:[{t:2,x:{r:["data.isOpen"],s:'_0?"Open":"Closed"'},p:[34,73,1687]}]}," ",{p:[35,5,1740],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.autoEject"],s:'_0?"sign-out":"sign-in"'},p:[35,22,1757]}],action:"autoeject"},f:[{t:2,x:{r:["data.autoEject"],s:'_0?"Auto":"Manual"'},p:[35,86,1821]}]}]}]}," ",{p:{button:[{p:[40,5,1967],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[40,36,1998]}],action:"ejectbeaker"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[42,3,2101],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{t:4,f:[{p:[45,9,2211],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,r:"volume",p:[45,52,2254]}," units of ",{t:2,r:"name",p:[45,72,2274]}]},{p:[45,87,2289],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[44,7,2171]},{t:4,n:51,f:[{p:[47,9,2320],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[43,5,2136]},{t:4,n:51,f:[{p:[50,7,2396],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=a.extend(r.exports)},{205:205}],248:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,2,15],t:7,e:"ui-section",a:{label:"State"},f:[{t:4,f:[{p:[4,4,76],t:7,e:"span",a:{"class":"good"},f:["Ready"]}],n:50,r:"data.full_pressure",p:[3,3,45]},{t:4,n:51,f:[{t:4,f:[{p:[7,5,153],t:7,e:"span",a:{"class":"bad"},f:["Power Disabled"]}],n:50,r:"data.panel_open",p:[6,4,124]},{t:4,n:51,f:[{t:4,f:[{p:[10,6,248],t:7,e:"span",a:{"class":"average"},f:["Pressurizing"]}],n:50,r:"data.pressure_charging",p:[9,5,211]},{t:4,n:51,f:[{p:[12,6,310],t:7,e:"span",a:{"class":"bad"},f:["Off"]}],r:"data.pressure_charging"}],r:"data.panel_open"}],r:"data.full_pressure"}]}," ",{p:[17,2,393],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[18,3,426],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.per",p:[18,36,459]}],state:"good"},f:[{t:2,r:"data.per",p:[18,63,486]},"%"]}]}," ",{p:[20,5,530],t:7,e:"ui-section",a:{label:"Handle"},f:[{p:[21,9,567],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.flush"],s:'_0?"toggle-on":"toggle-off"'},p:[22,10,589]}],state:[{t:2,x:{r:["data.isai","data.panel_open"],s:'_0||_1?"disabled":null'},p:[23,11,647]}],action:[{t:2,x:{r:["data.flush"],s:'_0?"handle-0":"handle-1"'},p:[24,12,714]}]},f:[{t:2,x:{r:["data.flush"],s:'_0?"Disengage":"Engage"'},p:[25,5,763]}]}]}," ",{p:[27,2,837],t:7,e:"ui-section",a:{label:"Eject"},f:[{p:[28,3,867],t:7,e:"ui-button",a:{icon:"sign-out",state:[{t:2,x:{r:["data.isai"],s:'_0?"disabled":null'},p:[28,37,901]}],action:"eject"},f:["Eject Contents"]},{p:[28,114,978],t:7,e:"br"}]}," ",{p:[30,2,1002],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[31,3,1032],t:7,e:"ui-button",a:{icon:"power-off",state:[{t:2,x:{r:["data.panel_open"],s:'_0?"disabled":null'},p:[31,38,1067]}],action:[{t:2,x:{r:["data.pressure_charging"],s:'_0?"pump-0":"pump-1"'},p:[31,87,1116]}],style:[{t:2,x:{r:["data.pressure_charging"],s:'_0?"selected":null'},p:[31,145,1174]}]}},{p:[31,206,1235],t:7,e:"br"}]}]}]},e.exports=a.extend(r.exports)},{205:205}],249:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"DNA Vault Database"},f:[{p:[2,3,43],t:7,e:"ui-section",a:{label:"Human DNA"},f:[{p:[3,7,81],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.dna_max",p:[3,28,102]}],value:[{t:2,r:"data.dna",p:[3,53,127]}]},f:[{t:2,r:"data.dna",p:[3,67,141]},"/",{t:2,r:"data.dna_max",p:[3,80,154]}," Samples"]}]}," ",{p:[5,3,208],t:7,e:"ui-section",a:{label:"Plant Data"},f:[{p:[6,5,245],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.plants_max",p:[6,26,266]}],value:[{t:2,r:"data.plants",p:[6,54,294]}]},f:[{t:2,r:"data.plants",p:[6,71,311]},"/",{t:2,r:"data.plants_max",p:[6,87,327]}," Samples"]}]}," ",{p:[8,3,384],t:7,e:"ui-section",a:{label:"Animal Data"},f:[{p:[9,5,422],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.animals_max",p:[9,26,443]}],value:[{t:2,r:"data.animals",p:[9,55,472]}]},f:[{t:2,r:"data.animals",p:[9,73,490]},"/",{t:2,r:"data.animals_max",p:[9,90,507]}," Samples"]}]}]}," ",{t:4,f:[{p:[13,1,616],t:7,e:"ui-display",a:{title:"Personal Gene Therapy"},f:[{p:[14,3,663],t:7,e:"ui-section",f:[{p:[15,2,678],t:7,e:"span",f:["Applicable gene therapy treatments:"]}]}," ",{p:[17,3,747],t:7,e:"ui-section",f:[{p:[18,2,762],t:7,e:"ui-button",a:{action:"gene",params:['{"choice": "',{t:2,r:"data.choiceA",p:[18,47,807]},'"}']},f:[{t:2,r:"data.choiceA",p:[18,67,827]}]}," ",{p:[19,2,858],t:7,e:"ui-button",a:{action:"gene",params:['{"choice": "',{t:2,r:"data.choiceB",p:[19,47,903]},'"}']},f:[{t:2,r:"data.choiceB",p:[19,67,923]}]}]}]}],n:50,x:{r:["data.completed","data.used"],s:"_0&&!_1"},p:[12,1,578]}]},e.exports=a.extend(r.exports)},{205:205}],250:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[2,3,33],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[3,3,66],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[3,9,72]}]}]}," ",{t:4,f:[{p:[6,5,183],t:7,e:"ui-section",a:{label:"Items in storage"},f:[{p:[7,4,225],t:7,e:"span",f:[{t:2,r:"data.items",p:[7,10,231]}]}]}],n:50,r:"data.items",p:[5,3,159]}," ",{t:4,f:[{p:[11,5,310],t:7,e:"ui-section",a:{label:"State"},f:[{p:[12,7,344],t:7,e:"span",a:{"class":[{t:2,r:"data.occupant.statstate",p:[12,20,357]}]},f:[{t:2,r:"data.occupant.stat",p:[12,49,386]}]}]}," ",{p:[14,5,439],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[15,7,474],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.occupant.minHealth",p:[15,20,487]}],max:[{t:2,r:"data.occupant.maxHealth",p:[15,54,521]}],value:[{t:2,r:"data.occupant.health",p:[15,90,557]}],state:[{t:2,x:{r:["data.occupant.health"],s:'_0>=0?"good":"average"'},p:[16,16,599]}]},f:[{t:2,x:{r:["adata.occupant.health"],s:"Math.round(_0)"},p:[16,68,651]}]}]}," ",{t:4,f:[{p:[19,7,888],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[19,26,907]}]},f:[{p:[20,9,928],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.maxHealth",p:[20,30,949]}],value:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[20,66,985]}],state:"bad"},f:[{t:2,x:{r:["type","adata.occupant"],s:"Math.round(_1[_0])"},p:[20,103,1022]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}]'},p:[18,5,722]}," ",{p:[23,5,1109],t:7,e:"ui-section",a:{label:"Cells"},f:[{p:[24,9,1145],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.occupant.cloneLoss"],s:'_0?"bad":"good"'},p:[24,22,1158]}]},f:[{t:2,x:{r:["data.occupant.cloneLoss"],s:'_0?"Damaged":"Healthy"'},p:[24,68,1204]}]}]}," ",{p:[26,5,1287],t:7,e:"ui-section",a:{label:"Brain"},f:[{p:[27,9,1323],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.occupant.brainLoss"],s:'_0?"bad":"good"'},p:[27,22,1336]}]},f:[{t:2,x:{r:["data.occupant.brainLoss"],s:'_0?"Abnormal":"Healthy"'},p:[27,68,1382]}]}]}," ",{p:[29,5,1466],t:7,e:"ui-section",a:{label:"Bloodstream"},f:[{t:4,f:[{p:[31,11,1553],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,1)"},p:[31,54,1596]}," units of ",{t:2,r:"name",p:[31,89,1631]}]},{p:[31,104,1646],t:7,e:"br"}],n:52,r:"adata.occupant.reagents",p:[30,9,1508]},{t:4,n:51,f:[{p:[33,11,1681],t:7,e:"span",a:{"class":"good"},f:["Pure"]}],r:"adata.occupant.reagents"}]}],n:50,r:"data.occupied",p:[10,3,283]}]}," ",{p:[38,1,1777],t:7,e:"ui-display",a:{title:"Operations"},f:[{p:[39,3,1812],t:7,e:"ui-section",a:{label:"Inject"},f:[{t:4,f:[{p:[41,7,1872],t:7,e:"ui-button",a:{icon:"flask",state:[{t:2,x:{r:["data.occupied"],s:'_0?null:"disabled"'},p:[41,38,1903]}],action:"inject",params:['{"chem": "',{t:2,r:"id",p:[41,111,1976]},'"}']},f:[{t:2,r:"name",p:[41,121,1986]}]},{p:[41,141,2006],t:7,e:"br"}],n:52,r:"data.chem",p:[40,5,1845] +}]}," ",{p:[44,2,2046],t:7,e:"ui-section",a:{label:"Eject"},f:[{p:[45,6,2079],t:7,e:"ui-button",a:{icon:"sign-out",action:"eject"},f:["Eject Contents"]}]}," ",{p:[47,2,2166],t:7,e:"ui-section",a:{label:"Self Cleaning"},f:[{p:[48,3,2204],t:7,e:"ui-button",a:{icon:"recycle",action:"cleaning"},f:["Self-Clean Cycle"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],251:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,24],t:7,e:"ui-display",a:{title:[{t:2,r:"data.question",p:[2,21,42]}]},f:[{p:[3,5,66],t:7,e:"ui-section",f:[{t:4,f:[{p:[5,9,118],t:7,e:"ui-button",a:{action:"vote",params:['{"answer": "',{t:2,r:"answer",p:[6,45,174]},'"}'],style:[{t:2,x:{r:["selected"],s:'_0?"selected":null'},p:[7,18,206]}]},f:[{t:2,r:"answer",p:[7,53,241]}," (",{t:2,r:"amount",p:[7,65,253]},")"]}],n:52,r:"data.answers",p:[4,7,86]}]}]}],n:50,r:"data.shaking",p:[1,1,0]},{t:4,n:51,f:[{p:[13,3,353],t:7,e:"ui-notice",f:["The eightball is not currently being shaken."]}],r:"data.shaking"}]},e.exports=a.extend(r.exports)},{205:205}],252:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,5,17],t:7,e:"span",f:["Time Until Launch: ",{t:2,r:"data.timer_str",p:[2,30,42]}]}]}," ",{p:[4,1,83],t:7,e:"ui-notice",f:[{p:[5,3,98],t:7,e:"span",f:["Engines: ",{t:2,x:{r:["data.engines_started"],s:'_0?"Online":"Idle"'},p:[5,18,113]}]}]}," ",{p:[7,1,180],t:7,e:"ui-display",a:{title:"Early Launch"},f:[{p:[8,2,216],t:7,e:"span",f:["Authorizations Remaining: ",{t:2,x:{r:["data.emagged","data.authorizations_remaining"],s:'_0?"ERROR":_1'},p:[9,2,250]}]}," ",{p:[10,2,318],t:7,e:"ui-button",a:{icon:"exclamation-triangle",action:"authorize",style:"danger",state:[{t:2,x:{r:["data.enabled"],s:'_0?null:"disabled"'},p:[12,10,404]}]},f:["AUTHORIZE"]}," ",{p:[15,2,473],t:7,e:"ui-button",a:{icon:"minus",action:"repeal",state:[{t:2,x:{r:["data.enabled"],s:'_0?null:"disabled"'},p:[16,10,523]}]},f:["Repeal"]}," ",{p:[19,2,589],t:7,e:"ui-button",a:{icon:"close",action:"abort",state:[{t:2,x:{r:["data.enabled"],s:'_0?null:"disabled"'},p:[20,10,638]}]},f:["Repeal All"]}]}," ",{p:[24,1,722],t:7,e:"ui-display",a:{title:"Authorizations"},f:[{t:4,f:[{p:[26,3,793],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:[{t:2,r:"name",p:[26,34,824]}," (",{t:2,r:"job",p:[26,44,834]},")"]}],n:52,r:"data.authorizations",p:[25,2,760]},{t:4,n:51,f:[{p:[28,3,870],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:["No authorizations."]}],r:"data.authorizations"}]}]},e.exports=a.extend(r.exports)},{205:205}],253:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Message"},f:[{t:2,r:"data.hidden_message",p:[3,5,50]}]}," ",{p:[5,3,94],t:7,e:"ui-section",a:{label:"Created On"},f:[{t:2,r:"data.realdate",p:[6,5,131]}]}," ",{p:[8,3,169],t:7,e:"ui-section",a:{label:"Approval"},f:[{p:[9,5,204],t:7,e:"ui-button",a:{icon:"arrow-up",state:[{t:2,x:{r:["data.is_creator","data.has_liked"],s:'_0?"disabled":_1?"selected":null'},p:[11,14,252]}],action:"like"},f:[{t:2,r:"data.num_likes",p:[12,21,344]}]}," ",{p:[13,5,380],t:7,e:"ui-button",a:{icon:"circle",state:[{t:2,x:{r:["data.is_creator","data.has_liked","data.has_disliked"],s:'_0?"disabled":!_1&&!_2?"selected":null'},p:[15,14,426]}],action:"neutral"}}," ",{p:[17,5,562],t:7,e:"ui-button",a:{icon:"arrow-down",state:[{t:2,x:{r:["data.is_creator","data.has_disliked"],s:'_0?"disabled":_1?"selected":null'},p:[19,14,612]}],action:"dislike"},f:[{t:2,r:"data.num_dislikes",p:[20,24,710]}]}]}]}," ",{t:4,f:[{p:[24,3,805],t:7,e:"ui-display",a:{title:"Admin Panel"},f:[{p:[25,5,843],t:7,e:"ui-section",a:{label:"Creator Ckey"},f:[{t:2,r:"data.creator_key",p:[25,38,876]}]}," ",{p:[26,5,915],t:7,e:"ui-section",a:{label:"Creator Character Name"},f:[{t:2,r:"data.creator_name",p:[26,48,958]}]}," ",{p:[27,5,998],t:7,e:"ui-button",a:{icon:"remove",action:"delete",style:"danger"},f:["Delete"]}]}],n:50,r:"data.admin_mode",p:[23,1,778]}]},e.exports=a.extend(r.exports)},{205:205}],254:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,15],t:7,e:"span",f:["The requested interface (",{t:2,r:"config.interface",p:[2,34,46]},") was not found. Does it exist?"]}]}]},e.exports=a.extend(r.exports)},{205:205}],255:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,2,20],t:7,e:"ui-notice",f:["Currently syncing with the database"]}],n:50,r:"data.sync",p:[1,1,0]},{t:4,n:51,f:[{p:{button:[{p:[8,4,163],t:7,e:"ui-button",a:{icon:"eject",action:"eject_all"},f:["Eject all"]}," ",{p:[9,4,232],t:7,e:"ui-button",a:{icon:["toggle-",{t:2,x:{r:["data.show_materials"],s:'_0?"off":"on"'},p:[9,28,256]}],action:"toggle_materials_visibility"},f:[{t:2,x:{r:["data.show_materials"],s:'_0?"Hide":"Show"'},p:[10,5,339]}]}]},t:7,e:"ui-display",a:{title:"Materials",button:0},f:[" ",{t:4,f:[{p:[14,4,449],t:7,e:"div",a:{"class":"display tabular"},f:[{p:[15,5,484],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[16,6,520],t:7,e:"section",a:{"class":"cell"}}," ",{p:[17,6,559],t:7,e:"section",a:{"class":"cell"},f:["Mineral"]}," ",{p:[20,6,620],t:7,e:"section",a:{"class":"cell"},f:["Amount"]}," ",{p:[23,6,680],t:7,e:"section",a:{"class":"cell"}}," ",{p:[24,6,719],t:7,e:"section",a:{"class":"cell"}}]}," ",{t:4,f:[{p:[27,6,808],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[28,7,845],t:7,e:"section",a:{"class":"cell"},f:[{t:2,r:"name",p:[29,8,876]}]}," ",{p:[31,7,910],t:7,e:"section",a:{"class":"cell"},f:[{t:2,r:"amount",p:[32,8,941]}]}," ",{p:[34,7,977],t:7,e:"section",a:{"class":"cell"},f:[{p:[35,8,1008],t:7,e:"ui-button",a:{icon:"eject"},f:["Release amount"]}]}," ",{p:[37,7,1084],t:7,e:"section",a:{"class":"cell",style:"width: 40px;"},f:[{p:[38,8,1136],t:7,e:"ui-button",a:{icon:"eject"},f:["Release all"]}]}]}],n:52,r:"data.all_materials",p:[26,5,773]}]}],n:50,r:"data.show_materials",p:[13,3,417]}]}," ",{p:[45,2,1274],t:7,e:"ui-display",a:{title:"Categories"},f:[{t:4,f:[{p:[47,4,1334],t:7,e:"ui-button",f:[{t:2,r:".",p:[47,15,1345]}]}],r:"data.categories",p:[46,3,1309]}]}],r:"data.sync"}]},e.exports=a.extend(r.exports)},{205:205}],256:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Status"},f:[{p:[3,5,49],t:7,e:"ui-button",a:{action:"toggle_power",style:[{t:2,x:{r:["data.toggle"],s:'_0?"selected":null'},p:[5,18,111]}]},f:["Turn ",{t:2,x:{r:["data.toggle"],s:'_0?"off":"on"'},p:[6,16,166]}]}]}," ",{p:[9,3,235],t:7,e:"ui-display",a:{title:"Logging"},f:[{t:4,f:[{p:[11,3,292],t:7,e:"ui-section",a:{label:">"},f:[{t:2,r:".",p:[11,25,314]},{p:[11,30,319],t:7,e:"ui-section",f:[]}]}],n:52,r:"data.logs",p:[10,5,269]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],257:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={computed:{seclevelState:function(){switch(this.get("data.seclevel")){case"blue":return"average";case"red":return"bad";case"delta":return"bad bold";default:return"good"}}}}}(r),r.exports.template={v:3,t:[" ",{p:[16,1,323],t:7,e:"ui-display",f:[{p:[17,5,341],t:7,e:"ui-section",a:{label:"Alert Level"},f:[{p:[18,9,383],t:7,e:"span",a:{"class":[{t:2,r:"seclevelState",p:[18,22,396]}]},f:[{t:2,x:{r:["text","data.seclevel"],s:"_0.titleCase(_1)"},p:[18,41,415]}]}]}," ",{p:[20,5,480],t:7,e:"ui-section",a:{label:"Controls"},f:[{p:[21,9,519],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.alarm"],s:'_0?"close":"bell-o"'},p:[21,26,536]}],action:[{t:2,x:{r:["data.alarm"],s:'_0?"reset":"alarm"'},p:[21,71,581]}]},f:[{t:2,x:{r:["data.alarm"],s:'_0?"Reset":"Activate"'},p:[22,13,631]}]}]}," ",{t:4,f:[{p:[25,7,733],t:7,e:"ui-section",a:{label:"Warning"},f:[{p:[26,9,771],t:7,e:"span",a:{"class":"bad bold"},f:["Safety measures offline. Device may exhibit abnormal behavior."]}]}],n:50,r:"data.emagged",p:[24,5,705]}]}]},e.exports=a.extend(r.exports)},{205:205}],258:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Controls"},f:[{p:[2,1,31],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,2,60],t:7,e:"ui-button",a:{icon:"power-off",style:[{t:2,x:{r:["data.power"],s:'_0?"selected":"danger"'},p:[3,37,95]}],action:"power"},f:[{t:2,x:{r:["data.power"],s:'_0?"Enabled":"Disabled"'},p:[3,92,150]}]}]}," ",{p:[5,1,218],t:7,e:"ui-section",a:{label:"Tag"},f:[{p:[6,2,245],t:7,e:"ui-button",a:{icon:"pencil",action:"rename"},f:[{t:2,r:"data.tag",p:[6,43,286]}]}]}," ",{p:[8,1,327],t:7,e:"ui-section",a:{label:"Scanning mode"},f:[{p:[9,2,364],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.updating"],s:'_0?"unlock":"lock"'},p:[9,18,380]}],style:[{t:2,x:{r:["data.updating"],s:'_0?null:"danger"'},p:[9,63,425]}],action:"updating",tooltip:"Toggle between automatic scanning or scan only when a button is pressed.","tooltip-side":"right"},f:[{t:2,x:{r:["data.updating"],s:'_0?"AUTO":"MANUAL"'},p:[9,221,583]}]}]}," ",{p:[11,1,649],t:7,e:"ui-section",a:{label:"Detection range"},f:[{p:[12,2,688],t:7,e:"ui-button",a:{icon:"refresh",style:[{t:2,x:{r:["data.globalmode"],s:'_0?null:"selected"'},p:[12,35,721]}],action:"globalmode",tooltip:"Local sector or whole region scanning.","tooltip-side":"right"},f:[{t:2,x:{r:["data.globalmode"],s:'_0?"MAXIMUM":"LOCAL"'},p:[12,165,851]}]}]}]}," ",{t:4,f:[{p:[16,2,957],t:7,e:"ui-display",a:{title:"Current Location"},f:[{p:[17,3,998],t:7,e:"span",f:[{t:2,r:"data.current",p:[17,9,1004]}]}]}," ",{p:[20,2,1048],t:7,e:"ui-display",a:{title:"Detected Signals"},f:[{t:4,f:[{p:[22,3,1114],t:7,e:"ui-section",a:{label:[{t:2,r:"entrytag",p:[22,21,1132]}]},f:[{p:[23,3,1149],t:7,e:"span",f:[{t:2,r:"area",p:[23,9,1155]}," (",{t:2,r:"coord",p:[23,19,1165]},")"]}," ",{t:4,f:[{p:[25,4,1209],t:7,e:"span",f:["Dist: ",{t:2,r:"dist",p:[25,16,1221]},"m Dir: ",{t:2,r:"degrees",p:[25,31,1236]},"° (",{t:2,r:"direction",p:[25,45,1250]},")"]}],n:50,r:"direction",p:[24,3,1187]}]}],n:52,r:"data.signals",p:[21,2,1088]}]}],n:50,r:"data.power",p:[15,1,936]}]},e.exports=a.extend(r.exports)},{205:205}],259:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Labor Camp Teleporter"},f:[{p:[2,2,45],t:7,e:"ui-section",a:{label:"Teleporter Status"},f:[{p:[3,3,87],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.teleporter"],s:'_0?"good":"bad"'},p:[3,16,100]}]},f:[{t:2,x:{r:["data.teleporter"],s:'_0?"Connected":"Not connected"'},p:[3,54,138]}]}]}," ",{t:4,f:[{p:[6,4,244],t:7,e:"ui-section",a:{label:"Location"},f:[{p:[7,5,279],t:7,e:"span",f:[{t:2,r:"data.teleporter_location",p:[7,11,285]}]}]}," ",{p:[9,4,343],t:7,e:"ui-section",a:{label:"Locked status"},f:[{p:[10,5,383],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.teleporter_lock"],s:'_0?"lock":"unlock"'},p:[10,22,400]}],action:"teleporter_lock"},f:[{t:2,x:{r:["data.teleporter_lock"],s:'_0?"Locked":"Unlocked"'},p:[10,93,471]}]}," ",{p:[11,5,537],t:7,e:"ui-button",a:{action:"toggle_open"},f:[{t:2,x:{r:["data.teleporter_state_open"],s:'_0?"Open":"Closed"'},p:[11,37,569]}]}]}],n:50,r:"data.teleporter",p:[5,3,216]},{t:4,n:51,f:[{p:[14,4,666],t:7,e:"span",f:[{p:[14,10,672],t:7,e:"ui-button",a:{action:"scan_teleporter"},f:["Scan Teleporter"]}]}],r:"data.teleporter"}]}," ",{p:[17,1,770],t:7,e:"ui-display",a:{title:"Labor Camp Beacon"},f:[{p:[18,2,811],t:7,e:"ui-section",a:{label:"Beacon Status"},f:[{p:[19,3,849],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.beacon"],s:'_0?"good":"bad"'},p:[19,16,862]}]},f:[{t:2,x:{r:["data.beacon"],s:'_0?"Connected":"Not connected"'},p:[19,50,896]}]}]}," ",{t:4,f:[{p:[22,3,992],t:7,e:"ui-section",a:{label:"Location"},f:[{p:[23,4,1026],t:7,e:"span",f:[{t:2,r:"data.beacon_location",p:[23,10,1032]}]}]}],n:50,r:"data.beacon",p:[21,2,969]},{t:4,n:51,f:[{p:[26,4,1097],t:7,e:"span",f:[{p:[26,10,1103],t:7,e:"ui-button",a:{action:"scan_beacon"},f:["Scan Beacon"]}]}],r:"data.beacon"}]}," ",{p:[29,1,1193],t:7,e:"ui-display",a:{title:"Prisoner details"},f:[{p:[30,2,1233],t:7,e:"ui-section",a:{label:"Prisoner ID"},f:[{p:[31,3,1269],t:7,e:"ui-button",a:{action:"handle_id"},f:[{t:2,x:{r:["data.id","data.id_name"],s:'_0?_1:"-------------"'},p:[31,33,1299]}]}]}," ",{t:4,f:[{p:[34,2,1392],t:7,e:"ui-section",a:{label:"Set ID goal"},f:[{p:[35,4,1429],t:7,e:"ui-button",a:{action:"set_goal"},f:[{t:2,r:"data.goal",p:[35,33,1458]}]}]}],n:50,r:"data.id",p:[33,2,1374]}," ",{p:[38,2,1512],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[39,3,1545],t:7,e:"span",f:[{t:2,x:{r:["data.prisoner.name"],s:'_0?_0:"No Occupant"'},p:[39,9,1551]}]}]}," ",{t:4,f:[{p:[42,3,1661],t:7,e:"ui-section",a:{label:"Criminal Status"},f:[{p:[43,4,1702],t:7,e:"span",f:[{t:2,r:"data.prisoner.crimstat",p:[43,10,1708]}]}]}],n:50,r:"data.prisoner",p:[41,2,1636]}]}," ",{p:[47,1,1785],t:7,e:"ui-display",f:[{p:[48,2,1800],t:7,e:"center",f:[{p:[48,10,1808],t:7,e:"ui-button",a:{action:"teleport",state:[{t:2,x:{r:["data.can_teleport"],s:'_0?null:"disabled"'},p:[48,45,1843]}]},f:["Process Prisoner"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],260:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,2,15],t:7,e:"center",f:[{p:[2,10,23],t:7,e:"ui-button",a:{action:"handle_id"},f:[{t:2,x:{r:["data.id","data.id_name"],s:'_0?_1:"-------------"'},p:[2,40,53]}]}]}]}," ",{p:[4,1,135],t:7,e:"ui-display",a:{title:"Stored Items"},f:[{t:4,f:[{p:[6,3,194],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[6,22,213]}]},f:[{p:[7,4,228],t:7,e:"ui-button",a:{action:"release_items",params:['{"mobref":',{t:2,r:"mob",p:[7,56,280]},"}"],state:[{t:2,x:{r:["data.can_reclaim"],s:'_0?null:"disabled"'},p:[7,72,296]}]},f:["Drop Items"]}]}],n:52,r:"data.mobs",p:[5,2,171]}]}]},e.exports=a.extend(r.exports)},{205:205}],261:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:{button:[{p:[3,3,70],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.emagged"],s:'_0?"un":null'},p:[3,20,87]},"lock"],state:[{t:2,x:{r:["data.can_toggle_safety"],s:'_0?null:"disabled"'},p:[3,63,130]}],action:"safety"},f:["Safeties: ",{p:[4,14,209],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.emagged"],s:'_0?"bad":"good"'},p:[4,27,222]}]},f:[{t:2,x:{r:["data.emagged"],s:'_0?"OFF":"ON"'},p:[4,62,257]}]}]}]},t:7,e:"ui-display",a:{title:"Default Programs",button:0},f:[" ",{t:4,f:[{p:[8,2,363],t:7,e:"ui-button",a:{action:"load_program",params:['{"type": ',{t:2,r:"type",p:[8,52,413]},"}"],style:[{t:2,x:{r:["data.program","type"],s:'_0==_1?"selected":null'},p:[8,70,431]}]},f:[{t:2,r:"name",p:[9,5,483]}," "]},{p:[10,14,506],t:7,e:"br"}],n:52,r:"data.default_programs",p:[7,2,329]}]}," ",{t:4,f:[{p:[14,2,562],t:7,e:"ui-display",a:{title:"Dangerous Programs"},f:[{t:4,f:[{p:[16,4,638],t:7,e:"ui-button",a:{icon:"warning",action:"load_program",params:['{"type": ',{t:2,r:"type",p:[16,69,703]},"}"],style:[{t:2,x:{r:["data.program","type"],s:'_0==_1?"selected":null'},p:[16,87,721]}]},f:[{t:2,r:"name",p:[17,5,773]}," "]},{p:[18,16,798],t:7,e:"br"}],n:52,r:"data.emag_programs",p:[15,3,605]}]}],n:50,r:"data.emagged",p:[13,1,539]}]},e.exports=a.extend(r.exports)},{205:205}],262:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={computed:{occupantStatState:function(){switch(this.get("data.occupant.stat")){case 0:return"good";case 1:return"average";default:return"bad"}}}}}(r),r.exports.template={v:3,t:[" ",{p:[15,1,280],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[16,3,313],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[17,3,346],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[17,9,352]}]}]}," ",{t:4,f:[{p:[20,5,466],t:7,e:"ui-section",a:{label:"State"},f:[{p:[21,7,500],t:7,e:"span",a:{"class":[{t:2,r:"occupantStatState",p:[21,20,513]}]},f:[{t:2,x:{r:["data.occupant.stat"],s:'_0==0?"Conscious":_0==1?"Unconcious":"Dead"'},p:[21,43,536]}]}]}],n:50,r:"data.occupied",p:[19,3,439]}]}," ",{p:[25,1,680],t:7,e:"ui-display",a:{title:"Controls"},f:[{p:[26,2,712],t:7,e:"ui-section",a:{label:"Door"},f:[{p:[27,5,743],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.open"],s:'_0?"unlock":"lock"'},p:[27,22,760]}],action:"door"},f:[{t:2,x:{r:["data.open"],s:'_0?"Open":"Closed"'},p:[27,71,809]}]}]}," ",{p:[29,3,874],t:7,e:"ui-section",a:{label:"Uses"},f:[{t:2,r:"data.ready_implants",p:[30,5,905]}," ",{t:4,f:[{p:[32,7,969],t:7,e:"span",a:{"class":"fa fa-cog fa-spin"}}],n:50,r:"data.replenishing",p:[31,5,936]}]}," ",{p:[35,3,1036],t:7,e:"ui-section",a:{label:"Activate"},f:[{p:[36,7,1073],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.occupied","data.ready_implants","data.ready"],s:'_0&&_1>0&&_2?null:"disabled"'},p:[36,25,1091]}],action:"implant"},f:[{t:2,x:{r:["data.ready","data.special_name"],s:'_0?(_1?_1:"Implant"):"Recharging"'},p:[37,9,1198]}," "]},{p:[38,19,1302],t:7,e:"br"}]}]}]},e.exports=a.extend(r.exports)},{205:205}],263:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={computed:{healthState:function(){var t=this.get("data.health");return t>70?"good":t>50?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{t:4,f:[{p:[15,3,296],t:7,e:"ui-notice",f:[{p:[16,5,313],t:7,e:"span",f:["Wipe in progress!"]}]}],n:50,r:"data.wiping",p:[14,1,273]},{p:{button:[{t:4,f:[{p:[22,7,479],t:7,e:"ui-button",a:{icon:"trash",state:[{t:2,x:{r:["data.isDead"],s:'_0?"disabled":null'},p:[22,38,510]}],action:"wipe"},f:[{t:2,x:{r:["data.wiping"],s:'_0?"Stop Wiping":"Wipe"'},p:[22,89,561]}," AI"]}],n:50,r:"data.name",p:[21,5,454]}]},t:7,e:"ui-display",a:{title:[{t:2,x:{r:["data.name"],s:'_0||"Empty Card"'},p:[19,19,388]}],button:0},f:[" ",{t:4,f:[{p:[26,5,672],t:7,e:"ui-section",a:{label:"Status"},f:[{p:[27,9,709],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.isDead","data.isBraindead"],s:'_0||_1?"bad":"good"'},p:[27,22,722]}]},f:[{t:2,x:{r:["data.isDead","data.isBraindead"],s:'_0||_1?"Offline":"Operational"'},p:[27,76,776]}]}]}," ",{p:[29,5,871],t:7,e:"ui-section",a:{label:"Software Integrity"},f:[{p:[30,7,918],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.health",p:[30,40,951]}],state:[{t:2,r:"healthState",p:[30,64,975]}]},f:[{t:2,x:{r:["adata.health"],s:"Math.round(_0)"},p:[30,81,992]},"%"]}]}," ",{p:[32,5,1055],t:7,e:"ui-section",a:{label:"Laws"},f:[{t:4,f:[{p:[34,9,1117],t:7,e:"span",a:{"class":"highlight"},f:[{t:2,r:".",p:[34,33,1141]}]},{p:[34,45,1153],t:7,e:"br"}],n:52,r:"data.laws",p:[33,7,1088]}]}," ",{p:[37,5,1200],t:7,e:"ui-section",a:{label:"Settings"},f:[{p:[38,7,1237],t:7,e:"ui-button",a:{icon:"signal",style:[{t:2,x:{r:["data.wireless"],s:'_0?"selected":null'},p:[38,39,1269]}],action:"wireless"},f:["Wireless Activity"]}," ",{p:[39,7,1363],t:7,e:"ui-button",a:{icon:"microphone",style:[{t:2,x:{r:["data.radio"],s:'_0?"selected":null'},p:[39,43,1399]}],action:"radio"},f:["Subspace Radio"]}]}],n:50,r:"data.name",p:[25,3,649]}]}]},e.exports=a.extend(r.exports)},{205:205}],264:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,2,23],t:7,e:"ui-notice",f:[{p:[3,3,38],t:7,e:"span",f:["Waiting for another device to confirm your request..."]}]}],n:50,r:"data.waiting",p:[1,1,0]},{t:4,n:51,f:[{p:[6,2,132],t:7,e:"ui-display",f:[{p:[7,3,148],t:7,e:"ui-section",f:[{t:4,f:[{p:[9,5,197],t:7,e:"ui-button",a:{icon:"check",action:"auth_swipe"},f:["Authorize ",{t:2,r:"data.auth_required",p:[9,59,251]}]}],n:50,r:"data.auth_required",p:[8,4,165]},{t:4,n:51,f:[{p:[11,5,304],t:7,e:"ui-button",a:{icon:"warning",state:[{t:2,x:{r:["data.red_alert"],s:'_0?"disabled":null'},p:[11,38,337]}],action:"red_alert"},f:["Red Alert"]}," ",{p:[12,5,423],t:7,e:"ui-button",a:{icon:"wrench",state:[{t:2,x:{r:["data.emergency_maint"],s:'_0?"disabled":null'},p:[12,37,455]}],action:"emergency_maint"},f:["Emergency Maintenance Access"]}," ",{p:[13,5,572],t:7,e:"ui-button",a:{icon:"warning",state:"null",action:"bsa_unlock"},f:["Bluespace Artillery Unlock"]}],r:"data.auth_required"}]}]}],r:"data.waiting"}]},e.exports=a.extend(r.exports)},{205:205}],265:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Ore values"},f:[{t:4,f:[{p:[3,3,57],t:7,e:"ui-section",a:{label:[{t:2,r:"ore",p:[3,22,76]}]},f:[{p:[4,4,90],t:7,e:"span",f:[{t:2,r:"value",p:[4,10,96]}]}]}],n:52,r:"data.ores",p:[2,2,34]}]}," ",{p:[8,1,158],t:7,e:"ui-display",a:{title:"Points"},f:[{p:[9,2,188],t:7,e:"ui-section",a:{label:"ID"},f:[{p:[10,3,215],t:7,e:"ui-button",a:{action:"handle_id"},f:[{t:2,x:{r:["data.id","data.id_name"],s:'_0?_1:"-------------"'},p:[10,33,245]}]}]}," ",{t:4,f:[{p:[13,3,339],t:7,e:"ui-section",a:{label:"Points collected"},f:[{p:[14,4,381],t:7,e:"span",f:[{t:2,r:"data.points",p:[14,10,387]}]}]}," ",{p:[16,3,430],t:7,e:"ui-section",a:{label:"Goal"},f:[{p:[17,4,460],t:7,e:"span",f:[{t:2,r:"data.goal",p:[17,10,466]}]}]}," ",{p:[19,3,507],t:7,e:"ui-section",a:{label:"Unclaimed points"},f:[{p:[20,4,549],t:7,e:"span",f:[{t:2,r:"data.unclaimed_points",p:[20,10,555]}]}," ",{p:[21,4,592],t:7,e:"ui-button",a:{action:"claim_points",state:[{t:2,x:{r:["data.unclaimed_points"],s:'_0?null:"disabled"'},p:[21,43,631]}]},f:["Claim points"]}]}],n:50,r:"data.id",p:[12,2,320]}]}," ",{p:[25,1,745],t:7,e:"ui-display",f:[{p:[26,2,760],t:7,e:"center",f:[{p:[27,3,772],t:7,e:"ui-button",a:{action:"move_shuttle",state:[{t:2,x:{r:["data.can_go_home"],s:'_0?null:"disabled"'},p:[27,42,811]}]},f:["Move shuttle"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],266:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Known Languages"},f:[{t:4,f:[{p:[3,5,70],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[3,23,88]}]},f:[{p:[4,7,105],t:7,e:"span",f:[{t:2,r:"desc",p:[4,13,111]}]}," ",{p:[5,7,134],t:7,e:"span",f:["Key: ,",{t:2,r:"key",p:[5,19,146]}]}," ",{t:4,f:[{p:[7,9,192],t:7,e:"span",f:["(gained from mob)"]}],n:50,r:"shadow",p:[6,7,168]}," ",{p:[9,7,245],t:7,e:"span",f:[{t:2,x:{r:["can_speak"],s:'_0?"Can Speak":"Cannot Speak"'},p:[9,13,251]}]}," ",{t:4,f:[{p:[11,9,342],t:7,e:"ui-button",a:{action:"select_default",params:['{"language_name":"',{t:2,r:"name",p:[13,37,425]},'"}'],style:[{t:2,x:{r:["is_default","can_speak"],s:'_0?"selected":_1?null:"disabled"'},p:[14,18,455]}]},f:[{t:2,x:{r:["is_default"],s:'_0?"Default Language":"Select as Default"'},p:[15,10,526]}]}],n:50,r:"data.is_living",p:[10,7,310]}," ",{t:4,f:[{t:4,f:[{p:[20,11,685],t:7,e:"ui-button",a:{action:"grant_language",params:['{"language_name":"',{t:2,r:"name",p:[20,72,746]},'"}']},f:["Grant"]}],n:50,r:"shadow",p:[19,9,659]},{t:4,n:51,f:[{p:[22,11,805],t:7,e:"ui-button",a:{action:"remove_language",params:['{"language_name":"',{t:2,r:"name",p:[22,73,867]},'"}']},f:["Remove"]}],r:"shadow"}],n:50,r:"data.admin_mode",p:[18,7,626]}]}],n:52,r:"data.languages",p:[2,3,40]}]}," ",{t:4,f:[{t:4,f:[{p:[30,5,1033],t:7,e:"ui-button",a:{action:"toggle_omnitongue",style:[{t:2,x:{r:["data.omnitongue"],s:'_0?"selected":null'},p:[32,14,1092]}]},f:["Omnitongue ",{t:2,x:{r:["data.omnitongue"],s:'_0?"Enabled":"Disabled"'},p:[33,19,1152]}]}],n:50,r:"data.is_living",p:[29,3,1005]}," ",{p:[36,3,1231],t:7,e:"ui-display",a:{title:"Unknown Languages"},f:[{t:4,f:[{p:[38,7,1315],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[38,25,1333]}]},f:[{p:[39,9,1352],t:7,e:"span",f:[{t:2,r:"desc",p:[39,15,1358]}]}," ",{p:[40,9,1383],t:7,e:"span",f:["Key: ,",{t:2,r:"key",p:[40,21,1395]}]}," ",{p:[41,9,1419],t:7,e:"ui-button",a:{action:"grant_language",params:['{"language_name":"',{t:2,r:"name",p:[43,37,1502]},'"}']},f:["Grant"]}]}],n:52,r:"data.unknown_languages",p:[37,5,1275]}]}],n:50,r:"data.admin_mode",p:[28,1,978]}]},e.exports=a.extend(r.exports)},{205:205}],267:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Controls"},f:[{t:4,f:[{t:4,f:[{p:[4,4,84],t:7,e:"ui-section",a:{label:"Warning"},f:[{p:[5,5,118],t:7,e:"span",f:["Launchpad closed."]}]}],n:50,r:"data.pad_closed",p:[3,3,56]},{t:4,n:51,f:[{p:[8,4,183],t:7,e:"ui-section",a:{label:"Launchpad"},f:[{p:[9,4,218],t:7,e:"span",f:[{p:[9,10,224],t:7,e:"b",f:[{t:2,r:"data.pad_name",p:[9,13,227]}]}]},{p:[9,41,255],t:7,e:"br"}," ",{p:[10,4,264],t:7,e:"ui-button",a:{icon:"pencil",action:"rename"},f:["Rename"]}," ",{p:[11,4,328],t:7,e:"ui-button",a:{icon:"remove",style:"danger",action:"remove"},f:["Remove"]}]}," ",{p:[14,4,427],t:7,e:"ui-section",a:{label:"Set Target"},f:[{p:[15,4,463],t:7,e:"table",f:[{p:[16,4,475],t:7,e:"tr",f:[{p:[17,5,485],t:7,e:"td",a:{style:"width:25px!important"},f:[{p:[17,38,518],t:7,e:"ui-button",a:{action:"up-left"},f:["↖"]}]}," ",{p:[18,5,570],t:7,e:"td",a:{style:"width:25px!important; text-align:center"},f:[{p:[18,57,622],t:7,e:"ui-button",a:{action:"up"},f:["↑"]}]}," ",{p:[19,5,669],t:7,e:"td",a:{style:"width:25px!important; text-align:right"},f:[{p:[19,56,720],t:7,e:"ui-button",a:{action:"up-right"},f:["↗"]}]}]}," ",{p:[21,4,782],t:7,e:"tr",f:[{p:[22,5,792],t:7,e:"td",a:{style:"width:25px!important"},f:[{p:[22,38,825],t:7,e:"ui-button",a:{action:"left",style:"width:35px!important"},f:["←"]}]}," ",{p:[23,5,903],t:7,e:"td",a:{style:"width:25px!important; text-align:center"},f:[{p:[23,57,955],t:7,e:"ui-button",a:{action:"reset"},f:["R"]}]}," ",{p:[24,5,1005],t:7,e:"td",a:{style:"width:25px!important; text-align:right"},f:[{p:[24,56,1056],t:7,e:"ui-button",a:{action:"right"},f:["→"]}]}]}," ",{p:[26,4,1115],t:7,e:"tr",f:[{p:[27,5,1125],t:7,e:"td",a:{style:"width:25px!important"},f:[{p:[27,38,1158],t:7,e:"ui-button",a:{action:"down-left"},f:["↙"]}]}," ",{p:[28,5,1212],t:7,e:"td",a:{style:"width:25px!important; text-align:center"},f:[{p:[28,57,1264],t:7,e:"ui-button",a:{action:"down"},f:["↓"]}]}," ",{p:[29,5,1313],t:7,e:"td",a:{style:"width:25px!important; text-align:right"},f:[{p:[29,56,1364],t:7,e:"ui-button",a:{action:"down-right"},f:["↘"]}]}]}]}]}," ",{p:[33,4,1459],t:7,e:"ui-section",a:{label:"Current Target"},f:[{p:[34,5,1500],t:7,e:"span",f:[{t:2,r:"data.abs_y",p:[34,11,1506]}," ",{t:2,r:"data.north_south",p:[34,26,1521]}]},{p:[34,53,1548],t:7,e:"br"}," ",{p:[35,5,1558],t:7,e:"span",f:[{t:2,r:"data.abs_x",p:[35,11,1564]}," ",{t:2,r:"data.east_west",p:[35,26,1579]}]}]}," ",{p:[37,4,1627],t:7,e:"ui-section",a:{label:"Activate"},f:[{p:[38,5,1662],t:7,e:"ui-button",a:{action:"launch",tooltip:"Teleport everything on the pad to the target.","tooltip-side":"down"},f:["Launch"]}," ",{p:[39,5,1789],t:7,e:"ui-button",a:{action:"pull",tooltip:"Teleport everything from the target to the pad.","tooltip-side":"down"},f:["Pull"]}]}],r:"data.pad_closed"}],n:50,r:"data.has_pad",p:[2,2,32]},{t:4,n:51,f:[{p:[45,3,1956],t:7,e:"ui-section",a:{label:"Warning"},f:[{p:[46,4,1989],t:7,e:"span",f:["No launchpad found. Link the remote to a launchpad."]}]}],r:"data.has_pad"}]}]},e.exports=a.extend(r.exports)},{205:205}],268:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{mechChargeState:function(t){var e=this.get("data.recharge_port.mech.cell.maxcharge");return t>=e/1.5?"good":t>=e/3?"average":"bad"},mechHealthState:function(t){var e=this.get("data.recharge_port.mech.maxhealth");return t>e/1.5?"good":t>e/3?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{p:[20,1,545],t:7,e:"ui-display",a:{title:"Mech Status"},f:[{t:4,f:[{t:4,f:[{p:[23,4,646],t:7,e:"ui-section",a:{label:"Integrity"},f:[{p:[24,6,683],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"adata.recharge_port.mech.maxhealth",p:[24,27,704]}],value:[{t:2,r:"adata.recharge_port.mech.health",p:[24,74,751]}],state:[{t:2,x:{r:["mechHealthState","adata.recharge_port.mech.health"],s:"_0(_1)"},p:[24,117,794]}]},f:[{t:2,x:{r:["adata.recharge_port.mech.health"],s:"Math.round(_0)"},p:[24,171,848]},"/",{t:2,r:"adata.recharge_port.mech.maxhealth",p:[24,219,896]}]}]}," ",{t:4,f:[{t:4,f:[{p:[28,5,1061],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[28,31,1087],t:7,e:"span",a:{"class":"bad"},f:["Cell Critical Failure"]}]}],n:50,r:"data.recharge_port.mech.cell.critfail",p:[27,3,1010]},{t:4,n:51,f:[{p:[30,11,1170],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[31,13,1210],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"adata.recharge_port.mech.cell.maxcharge",p:[31,34,1231]}],value:[{t:2,r:"adata.recharge_port.mech.cell.charge",p:[31,86,1283]}],state:[{t:2,x:{r:["mechChargeState","adata.recharge_port.mech.cell.charge"],s:"_0(_1)"},p:[31,134,1331]}]},f:[{t:2,x:{r:["adata.recharge_port.mech.cell.charge"],s:"Math.round(_0)"},p:[31,193,1390]},"/",{t:2,x:{r:["adata.recharge_port.mech.cell.maxcharge"],s:"Math.round(_0)"},p:[31,246,1443]}]}]}],r:"data.recharge_port.mech.cell.critfail"}],n:50,r:"data.recharge_port.mech.cell",p:[26,4,970]},{t:4,n:51,f:[{p:[35,3,1558],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[35,29,1584],t:7,e:"span",a:{"class":"bad"},f:["Cell Missing"]}]}],r:"data.recharge_port.mech.cell"}],n:50,r:"data.recharge_port.mech",p:[22,2,610]},{t:4,n:51,f:[{p:[38,4,1662],t:7,e:"ui-section",f:["Mech Not Found"]}],r:"data.recharge_port.mech"}],n:50,r:"data.recharge_port",p:[21,3,581]},{t:4,n:51,f:[{p:[41,5,1729],t:7,e:"ui-section",f:["Recharging Port Not Found"]}," ",{p:[42,2,1782],t:7,e:"ui-button",a:{icon:"refresh",action:"reconnect"},f:["Reconnect"]}],r:"data.recharge_port"}]}]},e.exports=a.extend(r.exports)},{205:205}],269:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{t:4,f:[{p:[3,5,45],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[4,7,88],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[4,24,105]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[4,75,156]}]}]}],n:50,r:"data.siliconUser",p:[2,3,15]},{t:4,n:51,f:[{p:[7,5,247],t:7,e:"span",f:["Swipe an ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[7,31,273]}," this interface."]}],r:"data.siliconUser"}]}," ",{p:[10,1,358],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[11,3,389],t:7,e:"ui-section",a:{label:"Power"},f:[{t:4,f:[{p:[13,7,470],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[13,24,487]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[13,68,531]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[13,116,579]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[12,5,421]},{t:4,n:51,f:[{p:[15,7,639],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.on"],s:'_0?"good":"bad"'},p:[15,20,652]}],state:[{t:2,x:{r:["data.cell"],s:'_0?null:"disabled"'},p:[15,57,689]}]},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[15,92,724]}]}],x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"}}]}," ",{p:[18,3,791],t:7,e:"ui-section",a:{label:"Cell"},f:[{p:[19,5,822],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.cell"],s:'_0?null:"bad"'},p:[19,18,835]}]},f:[{t:2,x:{r:["data.cell","data.cellPercent"],s:'_0?_1+"%":"No Cell"'},p:[19,48,865]}]}]}," ",{p:[21,3,943],t:7,e:"ui-section",a:{label:"Mode"},f:[{p:[22,5,974],t:7,e:"span",a:{"class":[{t:2,r:"data.modeStatus",p:[22,18,987]}]},f:[{t:2,r:"data.mode",p:[22,39,1008]}]}]}," ",{p:[24,3,1049],t:7,e:"ui-section",a:{label:"Load"},f:[{p:[25,5,1080],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.load"],s:'_0?"good":"average"'},p:[25,18,1093]}]},f:[{t:2,x:{r:["data.load"],s:'_0?_0:"None"'},p:[25,54,1129]}]}]}," ",{p:[27,3,1191],t:7,e:"ui-section",a:{label:"Destination"},f:[{p:[28,5,1229],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.destination"],s:'_0?"good":"average"'},p:[28,18,1242]}]},f:[{t:2,x:{r:["data.destination"],s:'_0?_0:"None"'},p:[28,60,1284]}]}]}]}," ",{t:4,f:[{p:{button:[{t:4,f:[{p:[35,9,1513],t:7,e:"ui-button",a:{icon:"eject",action:"unload"},f:["Unload"]}],n:50,r:"data.load",p:[34,7,1486]}," ",{t:4,f:[{p:[38,9,1623],t:7,e:"ui-button",a:{icon:"eject",action:"ejectpai"},f:["Eject PAI"]}],n:50,r:"data.haspai",p:[37,7,1594]}," ",{p:[40,7,1709],t:7,e:"ui-button",a:{icon:"pencil",action:"setid"},f:["Set ID"]}]},t:7,e:"ui-display",a:{title:"Controls",button:0},f:[" ",{p:[42,5,1791],t:7,e:"ui-section",a:{label:"Destination"},f:[{p:[43,7,1831],t:7,e:"ui-button",a:{icon:"pencil",action:"destination"},f:["Set Destination"]}," ",{p:[44,7,1912],t:7,e:"ui-button",a:{icon:"stop", +action:"stop"},f:["Stop"]}," ",{p:[45,7,1973],t:7,e:"ui-button",a:{icon:"play",action:"go"},f:["Go"]}]}," ",{p:[47,5,2047],t:7,e:"ui-section",a:{label:"Home"},f:[{p:[48,7,2080],t:7,e:"ui-button",a:{icon:"home",action:"home"},f:["Go Home"]}," ",{p:[49,7,2144],t:7,e:"ui-button",a:{icon:"pencil",action:"sethome"},f:["Set Home"]}]}," ",{p:[51,5,2231],t:7,e:"ui-section",a:{label:"Settings"},f:[{p:[52,7,2268],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.autoReturn"],s:'_0?"check-square-o":"square-o"'},p:[52,24,2285]}],style:[{t:2,x:{r:["data.autoReturn"],s:'_0?"selected":null'},p:[52,84,2345]}],action:"autoret"},f:["Auto-Return Home"]}," ",{p:[54,7,2449],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.autoPickup"],s:'_0?"check-square-o":"square-o"'},p:[54,24,2466]}],style:[{t:2,x:{r:["data.autoPickup"],s:'_0?"selected":null'},p:[54,84,2526]}],action:"autopick"},f:["Auto-Pickup Crate"]}," ",{p:[56,7,2632],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.reportDelivery"],s:'_0?"check-square-o":"square-o"'},p:[56,24,2649]}],style:[{t:2,x:{r:["data.reportDelivery"],s:'_0?"selected":null'},p:[56,88,2713]}],action:"report"},f:["Report Deliveries"]}]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[31,1,1373]}]},e.exports=a.extend(r.exports)},{205:205}],270:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Relay"},f:[{t:4,f:[{p:[3,3,57],t:7,e:"h2",f:["NETWORK BUFFERS OVERLOADED"]}," ",{p:[4,3,96],t:7,e:"h3",f:["Overload Recovery Mode"]}," ",{p:[5,3,131],t:7,e:"i",f:["This system is suffering temporary outage due to overflow of traffic buffers. Until buffered traffic is processed, all further requests will be dropped. Frequent occurences of this error may indicate insufficient hardware capacity of your network. Please contact your network planning department for instructions on how to resolve this issue."]}," ",{p:[6,3,484],t:7,e:"h3",f:["ADMINISTRATIVE OVERRIDE"]}," ",{p:[7,3,520],t:7,e:"b",f:["CAUTION - Data loss may occur"]}," ",{p:[8,3,562],t:7,e:"ui-button",a:{icon:"signal",action:"restart"},f:["Purge buffered traffic"]}],n:50,r:"data.dos_crashed",p:[2,2,29]},{t:4,n:51,f:[{p:[12,3,663],t:7,e:"ui-section",a:{label:"Relay status"},f:[{p:[13,4,701],t:7,e:"ui-button",a:{icon:"power-off",action:"toggle"},f:[{t:2,x:{r:["data.enabled"],s:'_0?"ENABLED":"DISABLED"'},p:[14,6,752]}]}]}," ",{p:[18,3,836],t:7,e:"ui-section",a:{label:"Network buffer status"},f:[{t:2,r:"data.dos_overload",p:[19,4,883]}," / ",{t:2,r:"data.dos_capacity",p:[19,28,907]}," GQ"]}],r:"data.dos_crashed"}]}]},e.exports=a.extend(r.exports)},{205:205}],271:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={computed:{healthState:function(){var t=this.get("data.health");return t>70?"good":t>50?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" "," ",{p:[15,1,320],t:7,e:"ntosheader"}," ",{t:4,f:[{p:[18,3,363],t:7,e:"ui-notice",f:[{p:[19,5,380],t:7,e:"span",f:["Reconstruction in progress!"]}]}],n:50,r:"data.restoring",p:[17,1,337]},{p:[24,1,451],t:7,e:"ui-display",f:[{p:[26,1,467],t:7,e:"div",a:{"class":"item"},f:[{p:[27,3,489],t:7,e:"div",a:{"class":"itemLabel"},f:["Inserted AI:"]}," ",{p:[30,3,541],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[31,2,569],t:7,e:"ui-button",a:{icon:"eject",action:"PRG_eject",state:[{t:2,x:{r:["data.nocard"],s:'_0?"disabled":null'},p:[31,52,619]}]},f:[{t:2,x:{r:["data.name"],s:'_0?_0:"---"'},p:[31,89,656]}]}]}]}," ",{t:4,f:[{p:[36,2,744],t:7,e:"b",f:["ERROR: ",{t:2,r:"data.error",p:[36,12,754]}]}],n:50,r:"data.error",p:[35,1,723]},{t:4,n:51,f:[{p:[38,2,785],t:7,e:"h2",f:["System Status"]}," ",{p:[39,2,810],t:7,e:"div",a:{"class":"item"},f:[{p:[40,3,832],t:7,e:"div",a:{"class":"itemLabel"},f:["Current AI:"]}," ",{p:[43,3,885],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.name",p:[44,4,915]}]}," ",{p:[46,3,942],t:7,e:"div",a:{"class":"itemLabel"},f:["Status:"]}," ",{p:[49,3,991],t:7,e:"div",a:{"class":"itemContent"},f:[{t:4,f:["Nonfunctional"],n:50,r:"data.isDead",p:[50,4,1021]},{t:4,n:51,f:["Functional"],r:"data.isDead"}]}," ",{p:[56,3,1114],t:7,e:"div",a:{"class":"itemLabel"},f:["System Integrity:"]}," ",{p:[59,3,1173],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[60,4,1203],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.health",p:[60,37,1236]}],state:[{t:2,r:"healthState",p:[61,11,1264]}]},f:[{t:2,x:{r:["adata.health"],s:"Math.round(_0)"},p:[61,28,1281]},"%"]}]}," ",{p:[63,3,1336],t:7,e:"div",a:{"class":"itemLabel"},f:["Active Laws:"]}," ",{p:[66,3,1390],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[67,4,1420],t:7,e:"table",f:[{t:4,f:[{p:[69,6,1462],t:7,e:"tr",f:[{p:[69,10,1466],t:7,e:"td",f:[{p:[69,14,1470],t:7,e:"span",a:{"class":"highlight"},f:[{t:2,r:".",p:[69,38,1494]}]}]}]}],n:52,r:"data.ai_laws",p:[68,5,1433]}]}]}," ",{p:[73,2,1547],t:7,e:"ui-section",a:{label:"Operations"},f:[{p:[74,3,1582],t:7,e:"ui-button",a:{icon:"plus",style:[{t:2,x:{r:["data.restoring"],s:'_0?"disabled":null'},p:[74,33,1612]}],action:"PRG_beginReconstruction"},f:["Begin Reconstruction"]}]}]}],r:"data.error"}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(285)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,285:285}],272:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{t:4,f:[{p:[5,1,91],t:7,e:"ui-button",a:{action:"PRG_switchm",icon:"home",params:'{"target" : "mod"}',state:[{t:2,x:{r:["data.mmode"],s:'_0==1?"disabled":null'},p:[5,80,170]}]},f:["Access Modification"]}],n:50,r:"data.have_id_slot",p:[4,1,64]},{p:[7,1,253],t:7,e:"ui-button",a:{action:"PRG_switchm",icon:"folder-open",params:'{"target" : "manage"}',state:[{t:2,x:{r:["data.mmode"],s:'_0==2?"disabled":null'},p:[7,90,342]}]},f:["Job Management"]}," ",{p:[8,1,411],t:7,e:"ui-button",a:{action:"PRG_switchm",icon:"folder-open",params:'{"target" : "manifest"}',state:[{t:2,x:{r:["data.mmode"],s:'!_0?"disabled":null'},p:[8,92,502]}]},f:["Crew Manifest"]}," ",{t:4,f:[{p:[10,1,593],t:7,e:"ui-button",a:{action:"PRG_print",icon:"print",state:[{t:2,x:{r:["data.has_id","data.mmode"],s:'!_1||_0&&_1==1?null:"disabled"'},p:[10,51,643]}]},f:["Print"]}],n:50,r:"data.have_printer",p:[9,1,566]},{t:4,f:[{p:[14,1,766],t:7,e:"div",a:{"class":"item"},f:[{p:[15,3,788],t:7,e:"h2",f:["Crew Manifest"]}," ",{p:[16,3,814],t:7,e:"br"},"Please use security record computer to modify entries.",{p:[16,61,872],t:7,e:"br"},{p:[16,65,876],t:7,e:"br"}]}," ",{t:4,f:[{p:[19,2,916],t:7,e:"div",a:{"class":"item"},f:[{t:2,r:"name",p:[20,2,937]}," - ",{t:2,r:"rank",p:[20,13,948]}]}],n:52,r:"data.manifest",p:[18,1,890]}],n:50,x:{r:["data.mmode"],s:"!_0"},p:[13,1,745]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.mmode"],s:"_0==2"},f:[{p:[25,1,1008],t:7,e:"div",a:{"class":"item"},f:[{p:[26,3,1030],t:7,e:"h2",f:["Job Management"]}]}," ",{p:[28,1,1063],t:7,e:"table",f:[{p:[29,1,1072],t:7,e:"tr",f:[{p:[29,5,1076],t:7,e:"td",a:{style:"width:25%"},f:[{p:[29,27,1098],t:7,e:"b",f:["Job"]}]},{p:[29,42,1113],t:7,e:"td",a:{style:"width:25%"},f:[{p:[29,64,1135],t:7,e:"b",f:["Slots"]}]},{p:[29,81,1152],t:7,e:"td",a:{style:"width:25%"},f:[{p:[29,103,1174],t:7,e:"b",f:["Open job"]}]},{p:[29,123,1194],t:7,e:"td",a:{style:"width:25%"},f:[{p:[29,145,1216],t:7,e:"b",f:["Close job"]}]}]}," ",{t:4,f:[{p:[32,2,1269],t:7,e:"tr",f:[{p:[32,6,1273],t:7,e:"td",f:[{t:2,r:"title",p:[32,10,1277]}]},{p:[32,24,1291],t:7,e:"td",f:[{t:2,r:"current",p:[32,28,1295]},"/",{t:2,r:"total",p:[32,40,1307]}]},{p:[32,54,1321],t:7,e:"td",f:[{p:[32,58,1325],t:7,e:"ui-button",a:{action:"PRG_open_job",params:['{"target" : "',{t:2,r:"title",p:[32,112,1379]},'"}'],state:[{t:2,x:{r:["status_open"],s:'_0?null:"disabled"'},p:[32,132,1399]}]},f:[{t:2,r:"desc_open",p:[32,169,1436]}]},{p:[32,194,1461],t:7,e:"br"}]},{p:[32,203,1470],t:7,e:"td",f:[{p:[32,207,1474],t:7,e:"ui-button",a:{action:"PRG_close_job",params:['{"target" : "',{t:2,r:"title",p:[32,262,1529]},'"}'],state:[{t:2,x:{r:["status_close"],s:'_0?null:"disabled"'},p:[32,282,1549]}]},f:[{t:2,r:"desc_close",p:[32,320,1587]}]}]}]}],n:52,r:"data.slots",p:[30,1,1244]}]}]},{t:4,n:50,x:{r:["data.mmode"],s:"!(_0==2)"},f:[" ",{p:[40,1,1665],t:7,e:"div",a:{"class":"item"},f:[{p:[41,3,1687],t:7,e:"h2",f:["Access Modification"]}]}," ",{t:4,f:[{p:[45,3,1751],t:7,e:"span",a:{"class":"alert"},f:[{p:[45,23,1771],t:7,e:"i",f:["Please insert the ID into the terminal to proceed."]}]},{p:[45,87,1835],t:7,e:"br"}],n:50,x:{r:["data.has_id"],s:"!_0"},p:[44,1,1727]},{p:[48,1,1852],t:7,e:"div",a:{"class":"item"},f:[{p:[49,3,1874],t:7,e:"div",a:{"class":"itemLabel"},f:["Target Identity:"]}," ",{p:[52,3,1930],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[53,2,1958],t:7,e:"ui-button",a:{icon:"eject",action:"PRG_eject",params:'{"target" : "id"}'},f:[{t:2,r:"data.id_name",p:[53,72,2028]}]}]}]}," ",{p:[56,1,2076],t:7,e:"div",a:{"class":"item"},f:[{p:[57,3,2098],t:7,e:"div",a:{"class":"itemLabel"},f:["Auth Identity:"]}," ",{p:[60,3,2152],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[61,2,2180],t:7,e:"ui-button",a:{icon:"eject",action:"PRG_eject",params:'{"target" : "auth"}'},f:[{t:2,r:"data.auth_name",p:[61,74,2252]}]}]}]}," ",{p:[64,1,2302],t:7,e:"hr"}," ",{t:4,f:[{t:4,f:[{p:[68,2,2362],t:7,e:"div",a:{"class":"item"},f:[{p:[69,4,2385],t:7,e:"h2",f:["Details"]}]}," ",{t:4,f:[{p:[73,2,2436],t:7,e:"div",a:{"class":"item"},f:[{p:[74,4,2459],t:7,e:"div",a:{"class":"itemLabel"},f:["Registered Name:"]}," ",{p:[77,4,2518],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.id_owner",p:[78,3,2547]}]}]}," ",{p:[81,2,2587],t:7,e:"div",a:{"class":"item"},f:[{p:[82,4,2610],t:7,e:"div",a:{"class":"itemLabel"},f:["Rank:"]}," ",{p:[85,4,2658],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.id_rank",p:[86,3,2687]}]}]}," ",{p:[89,2,2726],t:7,e:"div",a:{"class":"item"},f:[{p:[90,4,2749],t:7,e:"div",a:{"class":"itemLabel"},f:["Demote:"]}," ",{p:[93,4,2799],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[94,3,2828],t:7,e:"ui-button",a:{action:"PRG_terminate",icon:"gear",state:[{t:2,x:{r:["data.id_rank"],s:'_0=="Unassigned"?"disabled":null'},p:[94,56,2881]}]},f:["Demote ",{t:2,r:"data.id_owner",p:[94,117,2942]}]}]}]}],n:50,r:"data.minor",p:[72,2,2415]},{t:4,n:51,f:[{p:[99,2,3007],t:7,e:"div",a:{"class":"item"},f:[{p:[100,4,3030],t:7,e:"div",a:{"class":"itemLabel"},f:["Registered Name:"]}," ",{p:[103,4,3089],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[104,3,3118],t:7,e:"ui-button",a:{action:"PRG_edit",icon:"pencil",params:'{"name" : "1"}'},f:[{t:2,r:"data.id_owner",p:[104,70,3185]}]}]}]}," ",{p:[108,2,3239],t:7,e:"div",a:{"class":"item"},f:[{p:[109,4,3262],t:7,e:"h2",f:["Assignment"]}]}," ",{p:[111,3,3294],t:7,e:"ui-button",a:{action:"PRG_togglea",icon:"gear"},f:[{t:2,x:{r:["data.assignments"],s:'_0?"Hide assignments":"Show assignments"'},p:[111,47,3338]}]}," ",{p:[112,2,3415],t:7,e:"div",a:{"class":"item"},f:[{p:[113,4,3438],t:7,e:"span",a:{id:"allvalue.jobsslot"},f:[]}]}," ",{p:[117,2,3495],t:7,e:"div",a:{"class":"item"},f:[{t:4,f:[{p:[119,4,3547],t:7,e:"div",a:{id:"all-value.jobs"},f:[{p:[120,3,3576],t:7,e:"table",f:[{p:[121,5,3589],t:7,e:"tr",f:[{p:[122,4,3598],t:7,e:"th",f:["Command"]}," ",{p:[123,4,3619],t:7,e:"td",f:[{p:[124,6,3630],t:7,e:"ui-button",a:{action:"PRG_assign",params:'{"assign_target" : "Captain"}',state:[{t:2,x:{r:["data.id_rank"],s:'_0=="Captain"?"selected":null'},p:[124,83,3707]}]},f:["Captain"]}]}]}," ",{p:[127,5,3804],t:7,e:"tr",f:[{p:[128,4,3813],t:7,e:"th",f:["Special"]}," ",{p:[129,4,3834],t:7,e:"td",f:[{p:[130,6,3845],t:7,e:"ui-button",a:{action:"PRG_assign",params:'{"assign_target" : "Custom"}'},f:["Custom"]}]}]}," ",{p:[133,5,3959],t:7,e:"tr",f:[{p:[134,4,3968],t:7,e:"th",a:{style:"color: '#FFA500';"},f:["Engineering"]}," ",{p:[135,4,4019],t:7,e:"td",f:[{t:4,f:[{p:[137,5,4067],t:7,e:"ui-button",a:{action:"PRG_assign",params:['{"assign_target" : "',{t:2,r:"job",p:[137,64,4126]},'"}'],state:[{t:2,x:{r:["data.id_rank","job"],s:'_0==_1?"selected":null'},p:[137,82,4144]}]},f:[{t:2,r:"display_name",p:[137,127,4189]}]}],n:52,r:"data.engineering_jobs",p:[136,6,4030]}]}]}," ",{p:[141,5,4260],t:7,e:"tr",f:[{p:[142,4,4269],t:7,e:"th",a:{style:"color: '#008000';"},f:["Medical"]}," ",{p:[143,4,4316],t:7,e:"td",f:[{t:4,f:[{p:[145,5,4360],t:7,e:"ui-button",a:{action:"PRG_assign",params:['{"assign_target" : "',{t:2,r:"job",p:[145,64,4419]},'"}'],state:[{t:2,x:{r:["data.id_rank","job"],s:'_0==_1?"selected":null'},p:[145,82,4437]}]},f:[{t:2,r:"display_name",p:[145,127,4482]}]}],n:52,r:"data.medical_jobs",p:[144,6,4327]}]}]}," ",{p:[149,5,4553],t:7,e:"tr",f:[{p:[150,4,4562],t:7,e:"th",a:{style:"color: '#800080';"},f:["Science"]}," ",{p:[151,4,4609],t:7,e:"td",f:[{t:4,f:[{p:[153,5,4653],t:7,e:"ui-button",a:{action:"PRG_assign",params:['{"assign_target" : "',{t:2,r:"job",p:[153,64,4712]},'"}'],state:[{t:2,x:{r:["data.id_rank","job"],s:'_0==_1?"selected":null'},p:[153,82,4730]}]},f:[{t:2,r:"display_name",p:[153,127,4775]}]}],n:52,r:"data.science_jobs",p:[152,6,4620]}]}]}," ",{p:[157,5,4846],t:7,e:"tr",f:[{p:[158,4,4855],t:7,e:"th",a:{style:"color: '#DD0000';"},f:["Security"]}," ",{p:[159,4,4903],t:7,e:"td",f:[{t:4,f:[{p:[161,5,4948],t:7,e:"ui-button",a:{action:"PRG_assign",params:['{"assign_target" : "',{t:2,r:"job",p:[161,64,5007]},'"}'],state:[{t:2,x:{r:["data.id_rank","job"],s:'_0==_1?"selected":null'},p:[161,82,5025]}]},f:[{t:2,r:"display_name",p:[161,127,5070]}]}],n:52,r:"data.security_jobs",p:[160,6,4914]}]}]}," ",{p:[165,5,5141],t:7,e:"tr",f:[{p:[166,4,5150],t:7,e:"th",a:{style:"color: '#cc6600';"},f:["Cargo"]}," ",{p:[167,4,5195],t:7,e:"td",f:[{t:4,f:[{p:[169,5,5237],t:7,e:"ui-button",a:{action:"PRG_assign",params:['{"assign_target" : "',{t:2,r:"job",p:[169,64,5296]},'"}'],state:[{t:2,x:{r:["data.id_rank","job"],s:'_0==_1?"selected":null'},p:[169,82,5314]}]},f:[{t:2,r:"display_name",p:[169,127,5359]}]}],n:52,r:"data.cargo_jobs",p:[168,6,5206]}]}]}," ",{p:[173,5,5430],t:7,e:"tr",f:[{p:[174,4,5439],t:7,e:"th",a:{style:"color: '#808080';"},f:["Civilian"]}," ",{p:[175,4,5487],t:7,e:"td",f:[{t:4,f:[{p:[177,5,5532],t:7,e:"ui-button",a:{action:"PRG_assign",params:['{"assign_target" : "',{t:2,r:"job",p:[177,64,5591]},'"}'],state:[{t:2,x:{r:["data.id_rank","job"],s:'_0==_1?"selected":null'},p:[177,82,5609]}]},f:[{t:2,r:"display_name",p:[177,127,5654]}]}],n:52,r:"data.civilian_jobs",p:[176,6,5498]}]}]}," ",{t:4,f:[{p:[182,4,5757],t:7,e:"tr",f:[{p:[183,6,5768],t:7,e:"th",a:{style:"color: '#A52A2A';"},f:["CentCom"]}," ",{p:[184,6,5817],t:7,e:"td",f:[{t:4,f:[{p:[186,7,5862],t:7,e:"ui-button",a:{action:"PRG_assign",params:['{"assign_target" : "',{t:2,r:"job",p:[186,66,5921]},'"}'],state:[{t:2,x:{r:["data.id_rank","job"],s:'_0==_1?"selected":null'},p:[186,84,5939]}]},f:[{t:2,r:"display_name",p:[186,129,5984]}]}],n:52,r:"data.centcom_jobs",p:[185,5,5827]}]}]}],n:50,r:"data.centcom_access",p:[181,5,5725]}]}]}],n:50,r:"data.assignments",p:[118,4,3518]}]}],r:"data.minor"}," ",{t:4,f:[{p:[198,4,6153],t:7,e:"div",a:{"class":"item"},f:[{p:[199,3,6175],t:7,e:"h2",f:["Central Command"]}]}," ",{p:[201,4,6215],t:7,e:"div",a:{"class":"item",style:"width: 100%"},f:[{t:4,f:[{p:[203,5,6296],t:7,e:"div",a:{"class":"itemContentWide"},f:[{p:[204,5,6331],t:7,e:"ui-button",a:{action:"PRG_access",params:['{"access_target" : "',{t:2,r:"ref",p:[204,64,6390]},'", "allowed" : "',{t:2,r:"allowed",p:[204,87,6413]},'"}'],state:[{t:2,x:{r:["allowed"],s:'_0?"toggle":null'},p:[204,109,6435]}]},f:[{t:2,r:"desc",p:[204,140,6466]}]}]}],n:52,r:"data.all_centcom_access",p:[202,3,6257]}]}],n:50,r:"data.centcom_access",p:[197,2,6121]},{t:4,n:51,f:[{p:[209,4,6538],t:7,e:"div",a:{"class":"item"},f:[{p:[210,3,6560],t:7,e:"h2",f:[{t:2,r:"data.station_name",p:[210,7,6564]}]}]}," ",{p:[212,4,6606],t:7,e:"div",a:{"class":"item",style:"width: 100%"},f:[{t:4,f:[{p:[214,5,6676],t:7,e:"div",a:{style:"float: left; width: 175px; min-height: 250px"},f:[{p:[215,4,6739],t:7,e:"div",a:{"class":"average"},f:[{p:[215,25,6760],t:7,e:"ui-button",a:{action:"PRG_regsel",state:[{t:2,x:{r:["selected"],s:'_0?"toggle":null'},p:[215,63,6798]}],params:['{"region" : "',{t:2,r:"regid",p:[215,116,6851]},'"}']},f:[{p:[215,129,6864],t:7,e:"b",f:[{t:2,r:"name",p:[215,132,6867]}]}]}]}," ",{p:[216,4,6902],t:7,e:"br"}," ",{t:4,f:[{p:[218,6,6938],t:7,e:"div",a:{"class":"itemContentWide"},f:[{p:[219,5,6973],t:7,e:"ui-button",a:{action:"PRG_access",params:['{"access_target" : "',{t:2,r:"ref",p:[219,64,7032]},'", "allowed" : "',{t:2,r:"allowed",p:[219,87,7055]},'"}'],state:[{t:2,x:{r:["allowed"],s:'_0?"toggle":null'},p:[219,109,7077]}]},f:[{t:2,r:"desc",p:[219,140,7108]}]}]}],n:52,r:"accesses",p:[217,6,6913]}]}],n:52,r:"data.regions",p:[213,3,6648]}]}],r:"data.centcom_access"}],n:50,r:"data.has_id",p:[67,3,2340]}],n:50,r:"data.authenticated",p:[66,1,2310]}]}],x:{r:["data.mmode"],s:"!_0"}}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(285)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,285:285}],273:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{chargeState:function(t){var e=this.get("data.battery.max");return t>e/2?"good":t>e/4?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" "," ",{p:[15,1,311],t:7,e:"ntosheader"}," ",{p:[17,1,328],t:7,e:"ui-display",f:[{p:[18,2,343],t:7,e:"i",f:["Welcome to computer configuration utility. Please consult your system administrator if you have any questions about your device."]},{p:[18,137,478],t:7,e:"hr"}," ",{p:[19,2,485],t:7,e:"ui-display",a:{title:"Power Supply"},f:[{p:[20,3,522],t:7,e:"ui-section",a:{label:"Power Usage"},f:[{t:2,r:"data.power_usage",p:[21,4,559]},"W"]}," ",{t:4,f:[{p:[25,4,630],t:7,e:"ui-section",a:{label:"Battery Status"},f:["Active"]}," ",{p:[28,4,701],t:7,e:"ui-section",a:{label:"Battery Rating"},f:[{t:2,r:"data.battery.max",p:[29,5,742]}]}," ",{p:[31,4,785],t:7,e:"ui-section",a:{label:"Battery Charge"},f:[{p:[32,5,826],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"adata.battery.max",p:[32,26,847]}],value:[{t:2,r:"adata.battery.charge",p:[32,56,877]}],state:[{t:2,x:{r:["chargeState","adata.battery.charge"],s:"_0(_1)"},p:[32,89,910]}]},f:[{t:2,x:{r:["adata.battery.charge"],s:"Math.round(_0)"},p:[32,128,949]},"/",{t:2,r:"adata.battery.max",p:[32,165,986]}]}]}],n:50,r:"data.battery",p:[24,3,605]},{t:4,n:51,f:[{p:[35,4,1051],t:7,e:"ui-section",a:{label:"Battery Status"},f:["Not Available"]}],r:"data.battery"}]}," ",{p:[41,2,1156],t:7,e:"ui-display",a:{title:"File System"},f:[{p:[42,3,1192],t:7,e:"ui-section",a:{label:"Used Capacity"},f:[{p:[43,4,1231],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"adata.disk_size",p:[43,25,1252]}],value:[{t:2,r:"adata.disk_used",p:[43,53,1280]}],state:"good"},f:[{t:2,x:{r:["adata.disk_used"],s:"Math.round(_0)"},p:[43,87,1314]},"GQ / ",{t:2,r:"adata.disk_size",p:[43,123,1350]},"GQ"]}]}]}," ",{p:[47,2,1419],t:7,e:"ui-display",a:{title:"Computer Components"},f:[{t:4,f:[{p:[49,4,1491],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"name",p:[49,26,1513]}]},f:[{p:[50,5,1529],t:7,e:"div",a:{style:"display: table-caption; margin-left: 3px"},f:[{t:2,r:"desc",p:[50,59,1583]}]}," ",{p:[52,5,1605],t:7,e:"ui-section",a:{label:"State"},f:[{p:[53,6,1638],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["critical"],s:'_0?"disabled":null'},p:[53,24,1656]}],action:"PC_toggle_component",params:['{"name": "',{t:2,r:"name",p:[53,105,1737]},'"}']},f:[{t:2,x:{r:["enabled"],s:'_0?"Enabled":"Disabled"'},p:[54,7,1757]}]}]}," ",{t:4,f:[{p:[59,6,1868],t:7,e:"ui-section",a:{label:"Power Usage"},f:[{t:2,r:"powerusage",p:[60,7,1908]},"W"]}],n:50,r:"powerusage",p:[58,5,1843]}]}," ",{p:[64,4,1985],t:7,e:"br"}],n:52,r:"data.hardware",p:[48,3,1463]}]}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(285)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,285:285}],274:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{t:4,f:[{p:[7,3,103],t:7,e:"h2",f:["An error has occurred and this program can not continue."]}," Additional information: ",{t:2,r:"data.error",p:[8,27,196]},{p:[8,41,210],t:7,e:"br"}," ",{p:[9,3,218],t:7,e:"i",f:["Please try again. If the problem persists contact your system administrator for assistance."]}," ",{p:[10,3,320],t:7,e:"ui-button",a:{action:"PRG_closefile"},f:["Restart program"]}],n:50,r:"data.error",p:[6,2,81]},{t:4,n:51,f:[{t:4,f:[{p:[13,4,422],t:7,e:"h2",f:["Viewing file ",{t:2,r:"data.filename",p:[13,21,439]}]}," ",{p:[14,4,466],t:7,e:"div",a:{"class":"item"},f:[{p:[15,4,489],t:7,e:"ui-button",a:{action:"PRG_closefile"},f:["CLOSE"]}," ",{p:[16,4,545],t:7,e:"ui-button",a:{action:"PRG_edit"},f:["EDIT"]}," ",{p:[17,4,595],t:7,e:"ui-button",a:{action:"PRG_printfile"},f:["PRINT"]}," "]},{p:[18,10,657],t:7,e:"hr"}," ",{t:3,r:"data.filedata",p:[19,4,666]}],n:50,r:"data.filename",p:[12,3,396]},{t:4,n:51,f:[{p:[21,4,702],t:7,e:"h2",f:["Available files (local):"]}," ",{p:[22,4,740],t:7,e:"table",f:[{p:[23,5,753],t:7,e:"tr",f:[{p:[24,6,764],t:7,e:"th",f:["File name"]}," ",{p:[25,6,789],t:7,e:"th",f:["File type"]}," ",{p:[26,6,814],t:7,e:"th",f:["File size (GQ)"]}," ",{p:[27,6,844],t:7,e:"th",f:["Operations"]}]}," ",{t:4,f:[{p:[30,6,907],t:7,e:"tr",f:[{p:[31,7,919],t:7,e:"td",f:[{t:2,r:"name",p:[31,11,923]}]}," ",{p:[32,7,944],t:7,e:"td",f:[".",{t:2,r:"type",p:[32,12,949]}]}," ",{p:[33,7,970],t:7,e:"td",f:[{t:2,r:"size",p:[33,11,974]},"GQ"]}," ",{p:[34,7,997],t:7,e:"td",f:[{p:[35,8,1010],t:7,e:"ui-button",a:{action:"PRG_openfile",params:['{"name": "',{t:2,r:"name",p:[35,59,1061]},'"}']},f:["VIEW"]}," ",{p:[36,8,1098],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["undeletable"],s:'_0?"disabled":null'},p:[36,26,1116]}],action:"PRG_deletefile",params:['{"name": "',{t:2,r:"name",p:[36,105,1195]},'"}']},f:["DELETE"]}," ",{p:[37,8,1234],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["undeletable"],s:'_0?"disabled":null'},p:[37,26,1252]}],action:"PRG_rename",params:['{"name": "',{t:2,r:"name",p:[37,101,1327]},'"}']},f:["RENAME"]}," ",{p:[38,8,1366],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["undeletable"],s:'_0?"disabled":null'},p:[38,26,1384]}],action:"PRG_clone",params:['{"name": "',{t:2,r:"name",p:[38,100,1458]},'"}']},f:["CLONE"]}," ",{t:4,f:[{p:[40,9,1531],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["undeletable"],s:'_0?"disabled":null'},p:[40,27,1549]}],action:"PRG_copytousb",params:['{"name": "',{t:2,r:"name",p:[40,105,1627]},'"}']},f:["EXPORT"]}],n:50,r:"data.usbconnected",p:[39,8,1496]}]}]}],n:52,r:"data.files",p:[29,5,880]}]}," ",{t:4,f:[{p:[47,4,1761],t:7,e:"h2",f:["Available files (portable device):"]}," ",{p:[48,4,1809],t:7,e:"table",f:[{p:[49,5,1822],t:7,e:"tr",f:[{p:[50,6,1833],t:7,e:"th",f:["File name"]}," ",{p:[51,6,1858],t:7,e:"th",f:["File type"]}," ",{p:[52,6,1883],t:7,e:"th",f:["File size (GQ)"]}," ",{p:[53,6,1913],t:7,e:"th",f:["Operations"]}]}," ",{t:4,f:[{p:[56,6,1979],t:7,e:"tr",f:[{p:[57,7,1991],t:7,e:"td",f:[{t:2,r:"name",p:[57,11,1995]}]}," ",{p:[58,7,2016],t:7,e:"td",f:[".",{t:2,r:"type",p:[58,12,2021]}]}," ",{p:[59,7,2042],t:7,e:"td",f:[{t:2,r:"size",p:[59,11,2046]},"GQ"]}," ",{p:[60,7,2069],t:7,e:"td",f:[{p:[61,8,2082],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["undeletable"],s:'_0?"disabled":null'},p:[61,26,2100]}],action:"PRG_usbdeletefile",params:['{"name": "',{t:2,r:"name",p:[61,108,2182]},'"}']},f:["DELETE"]}," ",{t:4,f:[{p:[63,9,2256],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["undeletable"],s:'_0?"disabled":null'},p:[63,27,2274]}],action:"PRG_copyfromusb",params:['{"name": "',{t:2,r:"name",p:[63,107,2354]},'"}']},f:["IMPORT"]}],n:50,r:"data.usbconnected",p:[62,8,2221]}]}]}],n:52,r:"data.usbfiles",p:[55,5,1949]}]}],n:50,r:"data.usbconnected",p:[46,4,1731]}," ",{p:[70,4,2470],t:7,e:"ui-button",a:{action:"PRG_newtextfile"},f:["NEW DATA FILE"]}],r:"data.filename"}],r:"data.error"}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(285)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,285:285}],275:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{p:[5,2,79],t:7,e:"i",f:["No program loaded. Please select program from list below."]}," ",{p:[6,2,146],t:7,e:"table",f:[{t:4,f:[{p:[8,4,185],t:7,e:"tr",f:[{p:[8,8,189],t:7,e:"td",f:[{p:[8,12,193],t:7,e:"ui-button",a:{action:"PC_runprogram",params:['{"name": "',{t:2,r:"name",p:[8,64,245]},'"}']},f:[{t:2,r:"desc",p:[9,5,263]}]}]},{p:[11,4,293],t:7,e:"td",f:[{p:[11,8,297],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["running"],s:'_0?null:"disabled"'},p:[11,26,315]}],icon:"close",action:"PC_killprogram",params:['{"name": "',{t:2,r:"name",p:[11,114,403]},'"}']}}]}]}],n:52,r:"data.programs",p:[7,3,157]}]}," ",{p:[14,2,454],t:7,e:"br"},{p:[14,6,458],t:7,e:"br"}," ",{t:4,f:[{p:[16,3,491],t:7,e:"ui-button",a:{action:"PC_toggle_light",style:[{t:2,x:{r:["data.light_on"],s:'_0?"selected":null'},p:[16,46,534]}]},f:["Toggle Flashlight"]},{p:[16,114,602],t:7,e:"br"}," ",{p:[17,3,610],t:7,e:"ui-button",a:{action:"PC_light_color"},f:["Change Flashlight Color ",{p:[17,62,669],t:7,e:"span",a:{style:["border:1px solid #161616; background-color: ",{t:2,r:"data.comp_light_color",p:[17,119,726]},";"]},f:["   "]}]}],n:50,r:"data.has_light",p:[15,2,465]}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(285)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,285:285}],276:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{t:4,f:[{p:[6,3,105],t:7,e:"h1",f:["ADMINISTRATIVE MODE"]}],n:50,r:"data.adminmode",p:[5,2,79]}," ",{t:4,f:[{p:[10,3,170],t:7,e:"div",a:{"class":"itemLabel"},f:["Current channel:"]}," ",{p:[13,3,229],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.title",p:[14,4,259]}]}," ",{p:[16,3,287],t:7,e:"div",a:{"class":"itemLabel"},f:["Operator access:"]}," ",{p:[19,3,346],t:7,e:"div",a:{"class":"itemContent"},f:[{t:4,f:[{p:[21,5,406],t:7,e:"b",f:["Enabled"]}],n:50,r:"data.is_operator",p:[20,4,376]},{t:4,n:51,f:[{p:[23,5,439],t:7,e:"b",f:["Disabled"]}],r:"data.is_operator"}]}," ",{p:[26,3,480],t:7,e:"div",a:{"class":"itemLabel"},f:["Controls:"]}," ",{p:[29,3,532],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[30,4,562],t:7,e:"table",f:[{p:[31,5,575],t:7,e:"tr",f:[{p:[31,9,579],t:7,e:"td",f:[{p:[31,13,583],t:7,e:"ui-button",a:{action:"PRG_speak"},f:["Send message"]}]}]},{p:[32,5,643],t:7,e:"tr",f:[{p:[32,9,647],t:7,e:"td",f:[{p:[32,13,651],t:7,e:"ui-button",a:{action:"PRG_changename"},f:["Change nickname"]}]}]},{p:[33,5,719],t:7,e:"tr",f:[{p:[33,9,723],t:7,e:"td",f:[{p:[33,13,727],t:7,e:"ui-button",a:{action:"PRG_toggleadmin"},f:["Toggle administration mode"]}]}]},{p:[34,5,807],t:7,e:"tr",f:[{p:[34,9,811],t:7,e:"td",f:[{p:[34,13,815],t:7,e:"ui-button",a:{action:"PRG_leavechannel"},f:["Leave channel"]}]}]},{p:[35,5,883],t:7,e:"tr",f:[{p:[35,9,887],t:7,e:"td",f:[{p:[35,13,891],t:7,e:"ui-button",a:{action:"PRG_savelog"},f:["Save log to local drive"]}," ",{t:4,f:[{p:[37,6,995],t:7,e:"tr",f:[{p:[37,10,999],t:7,e:"td",f:[{p:[37,14,1003],t:7,e:"ui-button",a:{action:"PRG_renamechannel"},f:["Rename channel"]}]}]},{p:[38,6,1074],t:7,e:"tr",f:[{p:[38,10,1078],t:7,e:"td",f:[{p:[38,14,1082],t:7,e:"ui-button",a:{action:"PRG_setpassword"},f:["Set password"]}]}]},{p:[39,6,1149],t:7,e:"tr",f:[{p:[39,10,1153],t:7,e:"td",f:[{p:[39,14,1157],t:7,e:"ui-button",a:{action:"PRG_deletechannel"},f:["Delete channel"]}]}]}],n:50,r:"data.is_operator",p:[36,5,964]}]}]}]}]}," ",{p:[43,3,1263],t:7,e:"b",f:["Chat Window"]}," ",{p:[44,4,1286],t:7,e:"div",a:{"class":"statusDisplay",style:"overflow: auto;"},f:[{p:[45,4,1342],t:7,e:"div",a:{"class":"item"},f:[{p:[46,5,1366],t:7,e:"div",a:{"class":"itemContent",style:"width: 100%;"},f:[{t:4,f:[{t:2,r:"msg",p:[48,7,1450]},{p:[48,14,1457],t:7,e:"br"}],n:52,r:"data.messages",p:[47,6,1419]}]}]}]}," ",{p:[53,3,1516],t:7,e:"b",f:["Connected Users"]},{p:[53,25,1538],t:7,e:"br"}," ",{t:4,f:[{t:2,r:"name",p:[55,4,1573]},{p:[55,12,1581],t:7,e:"br"}],n:52,r:"data.clients",p:[54,3,1546]}],n:50,r:"data.title",p:[9,2,148]},{t:4,n:51,f:[{p:[58,3,1613],t:7,e:"b",f:["Controls:"]}," ",{p:[59,3,1633],t:7,e:"table",f:[{p:[60,4,1645],t:7,e:"tr",f:[{p:[60,8,1649],t:7,e:"td",f:[{p:[60,12,1653],t:7,e:"ui-button",a:{action:"PRG_changename"},f:["Change nickname"]}]}]},{p:[61,4,1720],t:7,e:"tr",f:[{p:[61,8,1724],t:7,e:"td",f:[{p:[61,12,1728],t:7,e:"ui-button",a:{action:"PRG_newchannel"},f:["New Channel"]}]}]},{p:[62,4,1791],t:7,e:"tr",f:[{p:[62,8,1795],t:7,e:"td",f:[{p:[62,12,1799],t:7,e:"ui-button",a:{action:"PRG_toggleadmin"},f:["Toggle administration mode"]}]}]}]}," ",{p:[64,3,1889],t:7,e:"b",f:["Available channels:"]}," ",{p:[65,3,1919],t:7,e:"table",f:[{t:4,f:[{p:[67,4,1964],t:7,e:"tr",f:[{p:[67,8,1968],t:7,e:"td",f:[{p:[67,12,1972],t:7,e:"ui-button",a:{action:"PRG_joinchannel",params:['{"id": "',{t:2,r:"id",p:[67,64,2024]},'"}']},f:[{t:2,r:"chan",p:[67,74,2034]}]},{p:[67,94,2054],t:7,e:"br"}]}]}],n:52,r:"data.all_channels",p:[66,3,1930]}]}],r:"data.title"}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(285)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,285:285}],277:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{t:4,f:["##SYSTEM ERROR: ",{t:2,r:"data.error",p:[6,19,117]},{p:[6,33,131],t:7,e:"ui-button",a:{action:"PRG_reset"},f:["RESET"]}],n:50,r:"data.error",p:[5,2,79]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.target"],s:"_0"},f:["##DoS traffic generator active. Tx: ",{t:2,r:"data.speed",p:[8,39,243]},"GQ/s",{p:[8,57,261],t:7,e:"br"}," ",{t:4,f:[{t:2,r:"nums",p:[10,4,300]},{p:[10,12,308],t:7,e:"br"}],n:52,r:"data.dos_strings",p:[9,3,269]}," ",{p:[12,3,329],t:7,e:"ui-button",a:{action:"PRG_reset"},f:["ABORT"]}]},{t:4,n:50,x:{r:["data.target"],s:"!(_0)"},f:[" ##DoS traffic generator ready. Select target device.",{p:[14,55,443],t:7,e:"br"}," ",{t:4,f:["Targeted device ID: ",{t:2,r:"data.focus",p:[16,24,494]}],n:50,r:"data.focus",p:[15,3,451]},{t:4,n:51,f:["Targeted device ID: None"],r:"data.focus"}," ",{p:[20,3,564],t:7,e:"ui-button",a:{action:"PRG_execute"},f:["EXECUTE"]},{p:[20,54,615],t:7,e:"div",a:{style:"clear:both"}}," Detected devices on network:",{p:[21,31,677],t:7,e:"br"}," ",{t:4,f:[{p:[23,4,711],t:7,e:"ui-button",a:{action:"PRG_target_relay",params:['{"targid": "',{t:2,r:"id",p:[23,61,768]},'"}']},f:[{t:2,r:"id",p:[23,71,778]}]}],n:52,r:"data.relays",p:[22,3,685]}]}],r:"data.error"}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(285)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,285:285}],278:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{p:[5,2,79],t:7,e:"i",f:["Welcome to software download utility. Please select which software you wish to download."]},{p:[5,97,174],t:7,e:"hr"}," ",{t:4,f:[{p:[7,3,203],t:7,e:"ui-display",a:{title:"Download Error"},f:[{p:[8,4,243],t:7,e:"ui-section",a:{label:"Information"},f:[{t:2,r:"data.error",p:[9,5,281]}]}," ",{p:[11,4,318],t:7,e:"ui-section",a:{label:"Reset Program"},f:[{p:[12,5,358],t:7,e:"ui-button",a:{icon:"times",action:"PRG_reseterror"},f:["RESET"]}]}]}],n:50,r:"data.error",p:[6,2,181]},{t:4,n:51,f:[{t:4,f:[{p:[19,4,516],t:7,e:"ui-display",a:{title:"Download Running"},f:[{p:[20,5,559],t:7,e:"i",f:["Please wait..."]}," ",{p:[21,5,586],t:7,e:"ui-section",a:{label:"File name"},f:[{t:2,r:"data.downloadname",p:[22,6,623]}]}," ",{p:[24,5,669],t:7,e:"ui-section",a:{label:"File description"},f:[{t:2,r:"data.downloaddesc",p:[25,6,713]}]}," ",{p:[27,5,759],t:7,e:"ui-section",a:{label:"File size"},f:[{t:2, +r:"data.downloadsize",p:[28,6,796]},"GQ"]}," ",{p:[30,5,844],t:7,e:"ui-section",a:{label:"Transfer Rate"},f:[{t:2,r:"data.downloadspeed",p:[31,6,885]}," GQ/s"]}," ",{p:[33,5,937],t:7,e:"ui-section",a:{label:"Download progress"},f:[{p:[34,6,982],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"adata.downloadsize",p:[34,27,1003]}],value:[{t:2,r:"adata.downloadcompletion",p:[34,58,1034]}],state:"good"},f:[{t:2,x:{r:["adata.downloadcompletion"],s:"Math.round(_0)"},p:[34,101,1077]},"GQ / ",{t:2,r:"adata.downloadsize",p:[34,146,1122]},"GQ"]}]}]}],n:50,r:"data.downloadname",p:[18,3,486]}],r:"data.error"}," ",{t:4,f:[{t:4,f:[{p:[41,4,1270],t:7,e:"ui-display",a:{title:"File System"},f:[{p:[42,5,1308],t:7,e:"ui-section",a:{label:"Used Capacity"},f:[{p:[43,6,1349],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"adata.disk_size",p:[43,27,1370]}],value:[{t:2,r:"adata.disk_used",p:[43,55,1398]}],state:"good"},f:[{t:2,x:{r:["adata.disk_used"],s:"Math.round(_0)"},p:[43,89,1432]},"GQ / ",{t:2,r:"adata.disk_size",p:[43,125,1468]},"GQ"]}]}]}," ",{p:[47,4,1545],t:7,e:"ui-display",a:{title:"Primary Software Repository"},f:[{t:4,f:[{p:[49,6,1642],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"filedesc",p:[49,28,1664]}]},f:[{p:[50,7,1686],t:7,e:"div",a:{style:"display: table-caption; margin-left: 3px"},f:[{t:2,r:"fileinfo",p:[50,61,1740]}]}," ",{p:[52,7,1774],t:7,e:"ui-section",a:{label:"File name"},f:[{t:2,r:"filename",p:[53,8,1813]}," (",{t:2,r:"size",p:[53,22,1827]}," GQ)"]}," ",{p:[55,7,1868],t:7,e:"ui-section",a:{label:"Compatibility"},f:[{t:2,r:"compatibility",p:[56,8,1911]}]}," ",{p:[58,7,1957],t:7,e:"ui-button",a:{icon:"signal",action:"PRG_downloadfile",params:['{"filename": "',{t:2,r:"filename",p:[58,80,2030]},'"}']},f:["DOWNLOAD"]}]}," ",{p:[62,6,2113],t:7,e:"br"}],n:52,r:"data.downloadable_programs",p:[48,5,1599]}]}," ",{t:4,f:[{p:[67,5,2194],t:7,e:"ui-display",a:{title:"UNKNOWN Software Repository"},f:[{p:[68,6,2249],t:7,e:"i",f:["Please note that Nanotrasen does not recommend download of software from non-official servers."]}," ",{t:4,f:[{p:[70,7,2395],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"filedesc",p:[70,29,2417]}]},f:[{p:[71,8,2440],t:7,e:"div",a:{style:"display: table-caption; margin-left: 3px"},f:[{t:2,r:"fileinfo",p:[71,62,2494]}]}," ",{p:[73,8,2530],t:7,e:"ui-section",a:{label:"File name"},f:[{t:2,r:"filename",p:[74,9,2570]}," (",{t:2,r:"size",p:[74,23,2584]}," GQ)"]}," ",{p:[76,8,2627],t:7,e:"ui-section",a:{label:"Compatibility"},f:[{t:2,r:"compatibility",p:[77,9,2671]}]}," ",{p:[79,8,2719],t:7,e:"ui-button",a:{icon:"signal",action:"PRG_downloadfile",params:['{"filename": "',{t:2,r:"filename",p:[79,81,2792]},'"}']},f:["DOWNLOAD"]}]}," ",{p:[83,7,2879],t:7,e:"br"}],n:52,r:"data.hacked_programs",p:[69,6,2357]}]}],n:50,r:"data.hackedavailable",p:[66,4,2160]}],n:50,x:{r:["data.error"],s:"!_0"},p:[40,3,1246]}],n:50,x:{r:["data.downloadname"],s:"!_0"},p:[39,2,1216]}," ",{p:[89,2,2954],t:7,e:"br"},{p:[89,6,2958],t:7,e:"br"},{p:[89,10,2962],t:7,e:"hr"},{p:[89,14,2966],t:7,e:"i",f:["NTOS v2.0.4b Copyright Nanotrasen 2557 - 2559"]}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(285)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,285:285}],279:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{p:[6,2,81],t:7,e:"ui-display",a:{title:"WIRELESS CONNECTIVITY"},f:[{p:[8,3,129],t:7,e:"ui-section",a:{label:"Active NTNetRelays"},f:[{p:[9,4,173],t:7,e:"b",f:[{t:2,r:"data.ntnetrelays",p:[9,7,176]}]}]}," ",{t:4,f:[{p:[12,4,250],t:7,e:"ui-section",a:{label:"System status"},f:[{p:[13,6,291],t:7,e:"b",f:[{t:2,x:{r:["data.ntnetstatus"],s:'_0?"ENABLED":"DISABLED"'},p:[13,9,294]}]}]}," ",{p:[15,4,366],t:7,e:"ui-section",a:{label:"Control"},f:[{p:[17,4,401],t:7,e:"ui-button",a:{icon:"plus",action:"toggleWireless"},f:["TOGGLE"]}]}," ",{p:[21,4,500],t:7,e:"br"},{p:[21,8,504],t:7,e:"br"}," ",{p:[22,4,513],t:7,e:"i",f:["Caution - Disabling wireless transmitters when using wireless device may prevent you from re-enabling them again!"]}],n:50,r:"data.ntnetrelays",p:[11,3,221]},{t:4,n:51,f:[{p:[24,4,650],t:7,e:"br"},{p:[24,8,654],t:7,e:"p",f:["Wireless coverage unavailable, no relays are connected."]}],r:"data.ntnetrelays"}]}," ",{p:[29,2,750],t:7,e:"ui-display",a:{title:"FIREWALL CONFIGURATION"},f:[{p:[31,2,798],t:7,e:"table",f:[{p:[32,3,809],t:7,e:"tr",f:[{p:[33,4,818],t:7,e:"th",f:["PROTOCOL"]},{p:[34,4,835],t:7,e:"th",f:["STATUS"]},{p:[35,4,850],t:7,e:"th",f:["CONTROL"]}]},{p:[36,3,865],t:7,e:"tr",f:[" ",{p:[37,4,874],t:7,e:"td",f:["Software Downloads"]},{p:[38,4,901],t:7,e:"td",f:[{t:2,x:{r:["data.config_softwaredownload"],s:'_0?"ENABLED":"DISABLED"'},p:[38,8,905]}]},{p:[39,4,967],t:7,e:"td",f:[" ",{p:[39,9,972],t:7,e:"ui-button",a:{action:"toggle_function",params:'{"id": "1"}'},f:["TOGGLE"]}]}]},{p:[40,3,1051],t:7,e:"tr",f:[" ",{p:[41,4,1060],t:7,e:"td",f:["Peer to Peer Traffic"]},{p:[42,4,1089],t:7,e:"td",f:[{t:2,x:{r:["data.config_peertopeer"],s:'_0?"ENABLED":"DISABLED"'},p:[42,8,1093]}]},{p:[43,4,1149],t:7,e:"td",f:[{p:[43,8,1153],t:7,e:"ui-button",a:{action:"toggle_function",params:'{"id": "2"}'},f:["TOGGLE"]}]}]},{p:[44,3,1232],t:7,e:"tr",f:[" ",{p:[45,4,1241],t:7,e:"td",f:["Communication Systems"]},{p:[46,4,1271],t:7,e:"td",f:[{t:2,x:{r:["data.config_communication"],s:'_0?"ENABLED":"DISABLED"'},p:[46,8,1275]}]},{p:[47,4,1334],t:7,e:"td",f:[{p:[47,8,1338],t:7,e:"ui-button",a:{action:"toggle_function",params:'{"id": "3"}'},f:["TOGGLE"]}]}]},{p:[48,3,1417],t:7,e:"tr",f:[" ",{p:[49,4,1426],t:7,e:"td",f:["Remote System Control"]},{p:[50,4,1456],t:7,e:"td",f:[{t:2,x:{r:["data.config_systemcontrol"],s:'_0?"ENABLED":"DISABLED"'},p:[50,8,1460]}]},{p:[51,4,1519],t:7,e:"td",f:[{p:[51,8,1523],t:7,e:"ui-button",a:{action:"toggle_function",params:'{"id": "4"}'},f:["TOGGLE"]}]}]}]}]}," ",{p:[55,2,1630],t:7,e:"ui-display",a:{title:"SECURITY SYSTEMS"},f:[{t:4,f:[{p:[58,4,1699],t:7,e:"ui-notice",f:[{p:[59,5,1716],t:7,e:"h1",f:["NETWORK INCURSION DETECTED"]}]}," ",{p:[61,5,1774],t:7,e:"i",f:["An abnormal activity has been detected in the network. Please verify system logs for more information"]}],n:50,r:"data.idsalarm",p:[57,3,1673]}," ",{p:[64,3,1902],t:7,e:"ui-section",a:{label:"Intrusion Detection System"},f:[{p:[65,4,1954],t:7,e:"b",f:[{t:2,x:{r:["data.idsstatus"],s:'_0?"ENABLED":"DISABLED"'},p:[65,7,1957]}]}]}," ",{p:[68,3,2029],t:7,e:"ui-section",a:{label:"Maximal Log Count"},f:[{p:[69,4,2072],t:7,e:"b",f:[{t:2,r:"data.ntnetmaxlogs",p:[69,7,2075]}]}]}," ",{p:[72,3,2125],t:7,e:"ui-section",a:{label:"Controls"},f:[]}," ",{p:[74,4,2176],t:7,e:"table",f:[{p:[75,4,2188],t:7,e:"tr",f:[{p:[75,8,2192],t:7,e:"td",f:[{p:[75,12,2196],t:7,e:"ui-button",a:{action:"resetIDS"},f:["RESET IDS"]}]}]},{p:[76,4,2251],t:7,e:"tr",f:[{p:[76,8,2255],t:7,e:"td",f:[{p:[76,12,2259],t:7,e:"ui-button",a:{action:"toggleIDS"},f:["TOGGLE IDS"]}]}]},{p:[77,4,2316],t:7,e:"tr",f:[{p:[77,8,2320],t:7,e:"td",f:[{p:[77,12,2324],t:7,e:"ui-button",a:{action:"updatemaxlogs"},f:["SET LOG LIMIT"]}]}]},{p:[78,4,2388],t:7,e:"tr",f:[{p:[78,8,2392],t:7,e:"td",f:[{p:[78,12,2396],t:7,e:"ui-button",a:{action:"purgelogs"},f:["PURGE LOGS"]}]}]}]}," ",{p:[81,3,2467],t:7,e:"ui-subdisplay",a:{title:"System Logs"},f:[{p:[82,3,2506],t:7,e:"div",a:{"class":"statusDisplay",style:"overflow: auto;"},f:[{p:[83,3,2561],t:7,e:"div",a:{"class":"item"},f:[{p:[84,4,2584],t:7,e:"div",a:{"class":"itemContent",style:"width: 100%;"},f:[{t:4,f:[{t:2,r:"entry",p:[86,6,2667]},{p:[86,15,2676],t:7,e:"br"}],n:52,r:"data.ntnetlogs",p:[85,5,2636]}]}]}]}]}]}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(285)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,285:285}],280:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{t:4,f:[{p:[7,2,102],t:7,e:"div",a:{"class":"item"},f:[{p:[8,3,124],t:7,e:"h2",f:["An error has occurred during operation..."]}," ",{p:[9,3,178],t:7,e:"b",f:["Additional information:"]},{t:2,r:"data.error",p:[9,34,209]},{p:[9,48,223],t:7,e:"br"}," ",{p:[10,3,231],t:7,e:"ui-button",a:{action:"PRG_reset"},f:["Clear"]}]}],n:50,r:"data.error",p:[6,2,81]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.downloading"],s:"_0"},f:[{p:[13,3,321],t:7,e:"h2",f:["Download in progress..."]}," ",{p:[14,3,357],t:7,e:"div",a:{"class":"itemLabel"},f:["Downloaded file:"]}," ",{p:[17,3,416],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.download_name",p:[18,4,446]}]}," ",{p:[20,3,483],t:7,e:"div",a:{"class":"itemLabel"},f:["Download progress:"]}," ",{p:[23,3,544],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.download_progress",p:[24,4,574]}," / ",{t:2,r:"data.download_size",p:[24,33,603]}," GQ"]}," ",{p:[26,3,642],t:7,e:"div",a:{"class":"itemLabel"},f:["Transfer speed:"]}," ",{p:[29,3,700],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.download_netspeed",p:[30,4,730]},"GQ/s"]}," ",{p:[32,3,774],t:7,e:"div",a:{"class":"itemLabel"},f:["Controls:"]}," ",{p:[35,3,826],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[36,4,856],t:7,e:"ui-button",a:{action:"PRG_reset"},f:["Abort download"]}]}]},{t:4,n:50,x:{r:["data.downloading","data.uploading"],s:"(!(_0))&&(_1)"},f:[" ",{p:[39,3,954],t:7,e:"h2",f:["Server enabled"]}," ",{p:[40,3,981],t:7,e:"div",a:{"class":"itemLabel"},f:["Connected clients:"]}," ",{p:[43,3,1042],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.upload_clients",p:[44,4,1072]}]}," ",{p:[46,3,1109],t:7,e:"div",a:{"class":"itemLabel"},f:["Provided file:"]}," ",{p:[49,3,1166],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.upload_filename",p:[50,4,1196]}]}," ",{p:[52,3,1234],t:7,e:"div",a:{"class":"itemLabel"},f:["Server password:"]}," ",{p:[55,3,1293],t:7,e:"div",a:{"class":"itemContent"},f:[{t:4,f:["ENABLED"],n:50,r:"data.upload_haspassword",p:[56,4,1323]},{t:4,n:51,f:["DISABLED"],r:"data.upload_haspassword"}]}," ",{p:[62,3,1420],t:7,e:"div",a:{"class":"itemLabel"},f:["Commands:"]}," ",{p:[65,3,1472],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[66,4,1502],t:7,e:"ui-button",a:{action:"PRG_setpassword"},f:["Set password"]}," ",{p:[67,4,1567],t:7,e:"ui-button",a:{action:"PRG_reset"},f:["Exit server"]}]}]},{t:4,n:50,x:{r:["data.downloading","data.uploading","data.upload_filelist"],s:"(!(_0))&&((!(_1))&&(_2))"},f:[" ",{p:[70,3,1668],t:7,e:"h2",f:["File transfer server ready. Select file to upload:"]}," ",{p:[71,3,1732],t:7,e:"table",f:[{p:[72,3,1743],t:7,e:"tr",f:[{p:[72,7,1747],t:7,e:"th",f:["File name"]},{p:[72,20,1760],t:7,e:"th",f:["File size"]},{p:[72,33,1773],t:7,e:"th",f:["Controls ",{t:4,f:[{p:[74,4,1824],t:7,e:"tr",f:[{p:[74,8,1828],t:7,e:"td",f:[{t:2,r:"filename",p:[74,12,1832]}]},{p:[75,4,1849],t:7,e:"td",f:[{t:2,r:"size",p:[75,8,1853]},"GQ"]},{p:[76,4,1868],t:7,e:"td",f:[{p:[76,8,1872],t:7,e:"ui-button",a:{action:"PRG_uploadfile",params:['{"id": "',{t:2,r:"uid",p:[76,59,1923]},'"}']},f:["Select"]}]}]}],n:52,r:"data.upload_filelist",p:[73,3,1789]}]}]}]}," ",{p:[79,3,1981],t:7,e:"hr"}," ",{p:[80,3,1989],t:7,e:"ui-button",a:{action:"PRG_setpassword"},f:["Set password"]}," ",{p:[81,3,2053],t:7,e:"ui-button",a:{action:"PRG_reset"},f:["Return"]}]},{t:4,n:50,x:{r:["data.downloading","data.uploading","data.upload_filelist"],s:"(!(_0))&&((!(_1))&&(!(_2)))"},f:[" ",{p:[83,3,2116],t:7,e:"h2",f:["Available files:"]}," ",{p:[84,3,2145],t:7,e:"table",a:{border:"1",style:"border-collapse: collapse"},f:[{p:[84,55,2197],t:7,e:"tr",f:[{p:[84,59,2201],t:7,e:"th",f:["Server UID"]},{p:[84,73,2215],t:7,e:"th",f:["File Name"]},{p:[84,86,2228],t:7,e:"th",f:["File Size"]},{p:[84,99,2241],t:7,e:"th",f:["Password Protection"]},{p:[84,122,2264],t:7,e:"th",f:["Operations ",{t:4,f:[{p:[86,5,2311],t:7,e:"tr",f:[{p:[86,9,2315],t:7,e:"td",f:[{t:2,r:"uid",p:[86,13,2319]}]},{p:[87,5,2332],t:7,e:"td",f:[{t:2,r:"filename",p:[87,9,2336]}]},{p:[88,5,2354],t:7,e:"td",f:[{t:2,r:"size",p:[88,9,2358]},"GQ ",{t:4,f:[{p:[90,6,2400],t:7,e:"td",f:["Enabled"]}],n:50,r:"haspassword",p:[89,5,2374]}," ",{t:4,f:[{p:[93,6,2457],t:7,e:"td",f:["Disabled"]}],n:50,x:{r:["haspassword"],s:"!_0"},p:[92,5,2430]}]},{p:[96,5,2494],t:7,e:"td",f:[{p:[96,9,2498],t:7,e:"ui-button",a:{action:"PRG_downloadfile",params:['{"id": "',{t:2,r:"uid",p:[96,62,2551]},'"}']},f:["Download"]}]}]}],n:52,r:"data.servers",p:[85,4,2283]}]}]}]}," ",{p:[99,3,2612],t:7,e:"hr"}," ",{p:[100,3,2620],t:7,e:"ui-button",a:{action:"PRG_uploadmenu"},f:["Send file"]}]}],r:"data.error"}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(285)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,285:285}],281:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{chargingState:function(t){switch(t){case 2:return"good";case 1:return"average";default:return"bad"}},chargingMode:function(t){return 2==t?"Full":1==t?"Charging":"Draining"},channelState:function(t){return t>=2?"good":"bad"},channelPower:function(t){return t>=2?"On":"Off"},channelMode:function(t){return 1==t||3==t?"Auto":"Manual"}},computed:{graphData:function(){var t=this.get("data.history");return Object.keys(t).map(function(e){return t[e].map(function(t,e){return{x:e,y:t}})})}}}}(r),r.exports.template={v:3,t:[" "," ",{p:[43,1,1082],t:7,e:"ntosheader"}," ",{p:[45,1,1099],t:7,e:"ui-display",a:{title:"Network"},f:[{t:4,f:[{p:[47,5,1157],t:7,e:"ui-linegraph",a:{points:[{t:2,r:"graphData",p:[47,27,1179]}],height:"500",legend:'["Available", "Load"]',colors:'["rgb(0, 102, 0)", "rgb(153, 0, 0)"]',xunit:"seconds ago",xfactor:[{t:2,r:"data.interval",p:[49,38,1331]}],yunit:"W",yfactor:"1",xinc:[{t:2,x:{r:["data.stored"],s:"_0/10"},p:[50,15,1387]}],yinc:"9"}}],n:50,r:"config.fancy",p:[46,3,1131]},{t:4,n:51,f:[{p:[52,5,1437],t:7,e:"ui-section",a:{label:"Available"},f:[{p:[53,7,1475],t:7,e:"span",f:[{t:2,r:"data.supply",p:[53,13,1481]}]}]}," ",{p:[55,5,1528],t:7,e:"ui-section",a:{label:"Load"},f:[{p:[56,9,1563],t:7,e:"span",f:[{t:2,r:"data.demand",p:[56,15,1569]}]}]}],r:"config.fancy"}]}," ",{p:[60,1,1638],t:7,e:"ui-display",a:{title:"Areas"},f:[{p:[61,3,1668],t:7,e:"ui-section",a:{nowrap:0},f:[{p:[62,5,1693],t:7,e:"div",a:{"class":"content"},f:["Area"]}," ",{p:[63,5,1730],t:7,e:"div",a:{"class":"content"},f:["Charge"]}," ",{p:[64,5,1769],t:7,e:"div",a:{"class":"content"},f:["Load"]}," ",{p:[65,5,1806],t:7,e:"div",a:{"class":"content"},f:["Status"]}," ",{p:[66,5,1845],t:7,e:"div",a:{"class":"content"},f:["Equipment"]}," ",{p:[67,5,1887],t:7,e:"div",a:{"class":"content"},f:["Lighting"]}," ",{p:[68,5,1928],t:7,e:"div",a:{"class":"content"},f:["Environment"]}]}," ",{t:4,f:[{p:[71,5,2013],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[71,24,2032]}],nowrap:0},f:[{p:[72,7,2057],t:7,e:"div",a:{"class":"content"},f:[{t:2,x:{r:["@index","adata.areas"],s:"Math.round(_1[_0].charge)"},p:[72,28,2078]}," %"]}," ",{p:[73,7,2136],t:7,e:"div",a:{"class":"content"},f:[{t:2,rx:{r:"adata.areas",m:[{t:30,n:"@index"},"load"]},p:[73,28,2157]}]}," ",{p:[74,7,2199],t:7,e:"div",a:{"class":"content"},f:[{p:[74,28,2220],t:7,e:"span",a:{"class":[{t:2,x:{r:["chargingState","charging"],s:"_0(_1)"},p:[74,41,2233]}]},f:[{t:2,x:{r:["chargingMode","charging"],s:"_0(_1)"},p:[74,70,2262]}]}]}," ",{p:[75,7,2309],t:7,e:"div",a:{"class":"content"},f:[{p:[75,28,2330],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","eqp"],s:"_0(_1)"},p:[75,41,2343]}]},f:[{t:2,x:{r:["channelPower","eqp"],s:"_0(_1)"},p:[75,64,2366]}," [",{p:[75,87,2389],t:7,e:"span",f:[{t:2,x:{r:["channelMode","eqp"],s:"_0(_1)"},p:[75,93,2395]}]},"]"]}]}," ",{p:[76,7,2444],t:7,e:"div",a:{"class":"content"},f:[{p:[76,28,2465],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","lgt"],s:"_0(_1)"},p:[76,41,2478]}]},f:[{t:2,x:{r:["channelPower","lgt"],s:"_0(_1)"},p:[76,64,2501]}," [",{p:[76,87,2524],t:7,e:"span",f:[{t:2,x:{r:["channelMode","lgt"],s:"_0(_1)"},p:[76,93,2530]}]},"]"]}]}," ",{p:[77,7,2579],t:7,e:"div",a:{"class":"content"},f:[{p:[77,28,2600],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","env"],s:"_0(_1)"},p:[77,41,2613]}]},f:[{t:2,x:{r:["channelPower","env"],s:"_0(_1)"},p:[77,64,2636]}," [",{p:[77,87,2659],t:7,e:"span",f:[{t:2,x:{r:["channelMode","env"],s:"_0(_1)"},p:[77,93,2665]}]},"]"]}]}]}],n:52,r:"data.areas",p:[70,3,1987]}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(285)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,285:285}],282:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{p:[4,1,64],t:7,e:"ui-display",f:[{p:[5,2,79],t:7,e:"div",a:{"class":"item"},f:[{p:[6,3,101],t:7,e:"div",a:{"class":"itemLabel"},f:["Payload status:"]}," ",{p:[9,3,158],t:7,e:"div",a:{"class":"itemContent"},f:[{t:4,f:["ARMED"],n:50,r:"data.armed",p:[10,4,188]},{t:4,n:51,f:["DISARMED"],r:"data.armed"}]}," ",{p:[16,3,270],t:7,e:"div",a:{"class":"itemLabel"},f:["Controls:"]}," ",{p:[19,3,321],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[20,4,351],t:7,e:"table",f:[{p:[21,4,363],t:7,e:"tr",f:[{p:[21,8,367],t:7,e:"td",f:[{p:[21,12,371],t:7,e:"ui-button",a:{action:"PRG_obfuscate"},f:["OBFUSCATE PROGRAM NAME"]}]}]},{p:[22,4,444],t:7,e:"tr",f:[{p:[22,8,448],t:7,e:"td",f:[{p:[22,12,452],t:7,e:"ui-button",a:{action:"PRG_arm",state:[{t:2,x:{r:["data.armed"],s:'_0?"danger":null'},p:[22,47,487]}]},f:[{t:2,x:{r:["data.armed"],s:'_0?"DISARM":"ARM"'},p:[22,81,521]}]}," ",{p:[23,4,571],t:7,e:"ui-button",a:{icon:"radiation",state:[{t:2,x:{r:["data.armed"],s:'_0?null:"disabled"'},p:[23,39,606]}],action:"PRG_activate"},f:["ACTIVATE"]}]}]}]}]}]}]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(285)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,285:285}],283:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[2,1,47],t:7,e:"ntosheader"}," ",{t:4,f:[{p:[5,3,95],t:7,e:"ui-display",a:{title:[{t:2,r:"class",p:[5,22,114]}," Alarms"]},f:[{p:[6,5,138],t:7,e:"ul",f:[{t:4,f:[{p:[8,9,171],t:7,e:"li",f:[{t:2,r:".",p:[8,13,175]}]}],n:52,r:".",p:[7,7,150]},{t:4,n:51,f:[{p:[10,9,211],t:7,e:"li",f:["System Nominal"]}],r:"."}]}]}],n:52,i:"class",r:"data.alarms",p:[4,1,64]}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(285)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,285:285}],284:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{integState:function(t){var e=100;return t==e?"good":t>e/2?"average":"bad"},bigState:function(t,e,n){return charge>n?"bad":t>e?"average":"good"}}}}(r),r.exports.template={v:3,t:[" "," ",{p:[23,1,421],t:7,e:"ntosheader"}," ",{t:4,f:[{p:[27,2,462],t:7,e:"ui-button",a:{action:"PRG_clear"},f:["Back to Menu"]},{p:[27,56,516],t:7,e:"br"}," ",{p:[28,3,524],t:7,e:"ui-display",a:{title:"Supermatter Status:"},f:[{p:[29,3,568],t:7,e:"ui-section",a:{label:"Core Integrity"},f:[{p:[30,5,609],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"adata.SM_integrity",p:[30,38,642]}],state:[{t:2,x:{r:["integState","adata.SM_integrity"],s:"_0(_1)"},p:[30,69,673]}]},f:[{t:2,r:"data.SM_integrity",p:[30,105,709]},"%"]}]}," ",{p:[32,3,761],t:7,e:"ui-section",a:{label:"Relative EER"},f:[{p:[33,5,800],t:7,e:"span",a:{"class":[{t:2,x:{r:["bigState","data.SM_power"],s:"_0(_1,150,300)"},p:[33,18,813]}]},f:[{t:2,r:"data.SM_power",p:[33,55,850]}," MeV/cm3"]}]}," ",{p:[35,3,903],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[36,5,941],t:7,e:"span",a:{"class":[{t:2,x:{r:["bigState","data.SM_ambienttemp"],s:"_0(_1,4000,5000)"},p:[36,18,954]}]},f:[{t:2,r:"data.SM_ambienttemp",p:[36,63,999]}," K"]}]}," ",{p:[38,3,1052],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[39,5,1087],t:7,e:"span",a:{"class":[{t:2,x:{r:["bigState","data.SM_ambientpressure"],s:"_0(_1,5000,10000)"},p:[39,18,1100]}]},f:[{t:2,r:"data.SM_ambientpressure",p:[39,68,1150]}," kPa"]}]}]}," ",{p:[42,3,1227],t:7,e:"hr"},{p:[42,7,1231],t:7,e:"br"}," ",{p:[43,3,1239],t:7,e:"ui-display",a:{title:"Gas Composition:"},f:[{t:4,f:[{p:[45,5,1307],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[45,24,1326]}]},f:[{t:2,r:"amount",p:[46,6,1343]}," %"]}],n:52,r:"data.gases",p:[44,4,1281]}]}],n:50,r:"data.active",p:[26,1,440]},{t:4,n:51,f:[{p:[51,2,1418],t:7,e:"ui-button",a:{action:"PRG_refresh"},f:["Refresh"]},{p:[51,53,1469],t:7,e:"br"}," ",{p:[52,2,1476],t:7,e:"ui-display",a:{title:"Detected Supermatters"},f:[{t:4,f:[{p:[54,3,1552],t:7,e:"ui-section",a:{label:"Area"},f:[{t:2,r:"area_name",p:[55,5,1583]}," - (#",{t:2,r:"uid",p:[55,23,1601]},")"]}," ",{p:[57,3,1630],t:7,e:"ui-section",a:{label:"Integrity"},f:[{t:2,r:"integrity",p:[58,5,1666]}," %"]}," ",{p:[60,3,1702],t:7,e:"ui-section",a:{label:"Options"},f:[{p:[61,5,1736],t:7,e:"ui-button",a:{action:"PRG_set",params:['{"target" : "',{t:2,r:"uid",p:[61,54,1785]},'"}']},f:["View Details"]}]}],n:52,r:"data.supermatters",p:[53,2,1521]}]}],r:"data.active"}]},r.exports.components=r.exports.components||{};var i={ntosheader:t(285)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,285:285}],285:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"item",style:"float: left"},f:[{p:[2,2,41],t:7,e:"table",f:[{p:[2,9,48],t:7,e:"tr",f:[{t:4,f:[{p:[4,3,113],t:7,e:"td",f:[{p:[4,7,117],t:7,e:"img",a:{src:[{t:2,r:"data.PC_batteryicon",p:[4,17,127]}]}}]}],n:50,x:{r:["data.PC_batteryicon","data.PC_showbatteryicon"],s:"_0&&_1"},p:[3,2,55]}," ",{t:4,f:[{p:[7,3,226],t:7,e:"td",f:[{p:[7,7,230],t:7,e:"b",f:[{t:2,r:"data.PC_batterypercent",p:[7,10,233]}]}]}],n:50,x:{r:["data.PC_batterypercent","data.PC_showbatteryicon"],s:"_0&&_1"},p:[6,2,165]}," ",{t:4,f:[{p:[10,3,305],t:7,e:"td",f:[{p:[10,7,309],t:7,e:"img",a:{src:[{t:2,r:"data.PC_ntneticon",p:[10,17,319]}]}}]}],n:50,r:"data.PC_ntneticon",p:[9,2,276]}," ",{t:4,f:[{p:[13,3,386],t:7,e:"td",f:[{p:[13,7,390],t:7,e:"img",a:{src:[{t:2,r:"data.PC_apclinkicon",p:[13,17,400]}]}}]}],n:50,r:"data.PC_apclinkicon",p:[12,2,355]}," ",{t:4,f:[{p:[16,3,469],t:7,e:"td",f:[{p:[16,7,473],t:7,e:"b",f:[{t:2,r:"data.PC_stationtime",p:[16,10,476]}]}]}],n:50,r:"data.PC_stationtime",p:[15,2,438]}," ",{t:4,f:[{p:[19,3,552],t:7,e:"td",f:[{p:[19,7,556],t:7,e:"img",a:{src:[{t:2,r:"icon",p:[19,17,566]}]}}]}],n:52,r:"data.PC_programheaders",p:[18,2,516]}]}]}]}," ",{p:[23,1,609],t:7,e:"div",a:{style:"float: right; margin-top: 5px"},f:[{p:[24,2,655],t:7,e:"ui-button",a:{action:"PC_shutdown"},f:["Shutdown"]}," ",{t:4,f:[{p:[26,3,745],t:7,e:"ui-button",a:{action:"PC_exit"},f:["EXIT PROGRAM"]}," ",{p:[27,3,801],t:7,e:"ui-button",a:{action:"PC_minimize"},f:["Minimize Program"]}],n:50,r:"data.PC_showexitprogram",p:[25,2,710]}]}," ",{p:[30,1,881],t:7,e:"div",a:{style:"clear: both"}}]},e.exports=a.extend(r.exports)},{205:205}],286:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Auth. Disk:"},f:[{t:4,f:[{p:[3,7,69],t:7,e:"ui-button",a:{icon:"eject",style:"selected",action:"eject_disk"},f:["++++++++++"]}],n:50,r:"data.disk_present",p:[2,3,36]},{t:4,n:51,f:[{p:[5,7,172],t:7,e:"ui-button",a:{icon:"plus",action:"insert_disk"},f:["----------"]}],r:"data.disk_present"}]}," ",{p:[8,1,266],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[9,3,297],t:7,e:"span",f:[{t:2,r:"data.status1",p:[9,9,303]},"-",{t:2,r:"data.status2",p:[9,26,320]}]}]}," ",{p:[11,1,360],t:7,e:"ui-display",a:{title:"Timer"},f:[{p:[12,3,390],t:7,e:"ui-section",a:{label:"Time to Detonation"},f:[{p:[13,5,435],t:7,e:"span",f:[{t:2,x:{r:["data.timing","data.time_left","data.timer_set"],s:"_0?_1:_2"},p:[13,11,441]}]}]}," ",{t:4,f:[{p:[16,5,540],t:7,e:"ui-section",a:{label:"Adjust Timer"},f:[{p:[17,7,581],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.disk_present","data.code_approved","data.timer_is_not_default"],s:'_0&&_1&&_2?null:"disabled"'},p:[17,40,614]}],action:"timer",params:'{"change": "reset"}'},f:["Reset"]}," ",{p:[19,7,786],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.disk_present","data.code_approved","data.timer_is_not_min"],s:'_0&&_1&&_2?null:"disabled"'},p:[19,38,817]}],action:"timer",params:'{"change": "decrease"}'},f:["Decrease"]}," ",{p:[21,7,991],t:7,e:"ui-button",a:{icon:"pencil",state:[{t:2,x:{r:["data.disk_present","data.code_approved"],s:'_0&&_1?null:"disabled"'},p:[21,39,1023]}],action:"timer",params:'{"change": "input"}'},f:["Set"]}," ",{p:[22,7,1155],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.disk_present","data.code_approved","data.timer_is_not_max"],s:'_0&&_1&&_2?null:"disabled"'},p:[22,37,1185]}],action:"timer",params:'{"change": "increase"}'},f:["Increase"]}]}],n:51,r:"data.timing",p:[15,3,518]}," ",{p:[26,3,1394],t:7,e:"ui-section",a:{label:"Timer"},f:[{p:[27,5,1426],t:7,e:"ui-button",a:{icon:"clock-o",style:[{t:2,x:{r:["data.timing"],s:'_0?"danger":"caution"'},p:[27,38,1459]}],action:"toggle_timer",state:[{t:2,x:{r:["data.disk_present","data.code_approved","data.safety"],s:'_0&&_1&&!_2?null:"disabled"'},p:[29,14,1542]}]},f:[{t:2,x:{r:["data.timing"],s:'_0?"On":"Off"'},p:[30,7,1631]}]}]}]}," ",{p:[34,1,1713],t:7,e:"ui-display",a:{title:"Anchoring"},f:[{p:[35,3,1747],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.disk_present","data.code_approved"],s:'_0&&_1?null:"disabled"'},p:[36,12,1770]}],icon:[{t:2,x:{r:["data.anchored"],s:'_0?"lock":"unlock"'},p:[37,11,1846]}],style:[{t:2,x:{r:["data.anchored"],s:'_0?null:"caution"'},p:[38,12,1897]}],action:"anchor"},f:[{t:2,x:{r:["data.anchored"],s:'_0?"Engaged":"Off"'},p:[39,21,1956]}]}]}," ",{p:[41,1,2022],t:7,e:"ui-display",a:{title:"Safety"},f:[{p:[42,3,2053],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.disk_present","data.code_approved"],s:'_0&&_1?null:"disabled"'},p:[43,12,2076]}],icon:[{t:2,x:{r:["data.safety"],s:'_0?"lock":"unlock"'},p:[44,11,2152]}],action:"safety",style:[{t:2,x:{r:["data.safety"],s:'_0?"caution":"danger"'},p:[45,12,2217]}]},f:[{p:[46,7,2265],t:7,e:"span",f:[{t:2,x:{r:["data.safety"],s:'_0?"On":"Off"'},p:[46,13,2271]}]}]}]}," ",{p:[49,1,2341],t:7,e:"ui-display",a:{title:"Code"},f:[{p:[50,3,2370],t:7,e:"ui-section",a:{label:"Message"},f:[{t:2,r:"data.message",p:[50,31,2398]}]}," ",{p:[51,3,2431],t:7,e:"ui-section",a:{label:"Keypad"},f:[{p:[52,5,2464],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[52,39,2498]}],params:'{"digit":"1"}'},f:["1"]}," ",{p:[53,5,2583],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[53,39,2617]}],params:'{"digit":"2"}'},f:["2"]}," ",{p:[54,5,2702],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[54,39,2736]}],params:'{"digit":"3"}'},f:["3"]}," ",{p:[55,5,2821],t:7,e:"br"}," ",{p:[56,5,2831],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[56,39,2865]}],params:'{"digit":"4"}'},f:["4"]}," ",{p:[57,5,2950],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[57,39,2984]}],params:'{"digit":"5"}'},f:["5"]}," ",{p:[58,5,3069],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[58,39,3103]}],params:'{"digit":"6"}'},f:["6"]}," ",{p:[59,5,3188],t:7,e:"br"}," ",{p:[60,5,3198],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[60,39,3232]}],params:'{"digit":"7"}'},f:["7"]}," ",{p:[61,5,3317],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[61,39,3351]}],params:'{"digit":"8"}'},f:["8"]}," ",{p:[62,5,3436],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[62,39,3470]}],params:'{"digit":"9"}'},f:["9"]}," ",{p:[63,5,3555],t:7,e:"br"}," ",{p:[64,5,3565],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[64,39,3599]}],params:'{"digit":"R"}'},f:["R"]}," ",{p:[65,5,3684],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[65,39,3718]}],params:'{"digit":"0"}'},f:["0"]}," ",{p:[66,5,3803],t:7,e:"ui-button",a:{action:"keypad",state:[{t:2,x:{r:["data.disk_present"],s:'_0?null:"disabled"'},p:[66,39,3837]}],params:'{"digit":"E"}'},f:["E"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],287:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,2,25],t:7,e:"ui-notice",f:["No table detected!"]}],n:51,r:"data.table",p:[1,1,0]},{p:[6,1,88],t:7,e:"ui-display",f:[{p:[7,2,103],t:7,e:"ui-display",a:{title:"Patient State"},f:[{t:4,f:[{p:[9,4,166],t:7,e:"ui-section",a:{label:"State"},f:[{p:[10,5,198],t:7,e:"span",a:{"class":[{t:2,r:"data.patient.statstate",p:[10,18,211]}]},f:[{t:2,r:"data.patient.stat",p:[10,46,239]}]}]}," ",{p:[12,4,290],t:7,e:"ui-section",a:{label:"Blood Type"},f:[{p:[13,5,327],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.patient.blood_type",p:[13,27,349]}]}]}," ",{p:[15,4,406],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[16,5,439],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.patient.minHealth",p:[16,18,452]}],max:[{t:2,r:"data.patient.maxHealth",p:[16,51,485]}],value:[{t:2,r:"data.patient.health",p:[16,86,520]}],state:[{t:2,x:{r:["data.patient.health"],s:'_0>=0?"good":"average"'},p:[17,12,557]}]},f:[{t:2,x:{r:["adata.patient.health"],s:"Math.round(_0)"},p:[17,63,608]}]}]}," ",{t:4,f:[{p:[20,5,840],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[20,24,859]}]},f:[{p:[21,6,877],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.patient.maxHealth",p:[21,27,898]}],value:[{t:2,rx:{r:"data.patient",m:[{t:30,n:"type"}]},p:[21,62,933]}],state:"bad"},f:[{t:2,x:{r:["type","adata.patient"],s:"Math.round(_1[_0])"},p:[21,98,969]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Burn",type:"fireLoss"},{label:"Toxin",type:"toxLoss"},{label:"Respiratory",type:"oxyLoss"}]'},p:[19,4,676]}],n:50,r:"data.patient",p:[8,3,141]},{t:4,n:51,f:["No patient detected."],r:"data.patient"}]}," ",{p:[28,2,1113],t:7,e:"ui-display",a:{title:"Initiated Procedures"},f:[{t:4,f:[{t:4,f:[{p:[31,5,1217],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"name",p:[31,27,1239]}]},f:[{p:[32,6,1256],t:7,e:"ui-section",a:{label:"Next Step"},f:[{p:[33,7,1294],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"next_step",p:[33,29,1316]}]}]}," ",{t:4,f:[{p:[36,7,1395],t:7,e:"ui-section",a:{label:"Alternative Step"},f:[{p:[37,8,1441],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"alternative_step",p:[37,30,1463]}]}]}],n:50,r:"alternative_step",p:[35,6,1363]}]}],n:52,r:"data.procedures",p:[30,4,1186]}],n:50,r:"data.procedures",p:[29,3,1158]},{t:4,n:51,f:["No active procedures."],r:"data.procedures"}]}]}]},e.exports=a.extend(r.exports)},{205:205}],288:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,2,15],t:7,e:"ui-section",f:["This machine only accepts ore. Gibtonite and Slag are not accepted."]}," ",{p:[5,2,117],t:7,e:"ui-section",f:["Current unclaimed points: ",{t:2,r:"data.unclaimedPoints",p:[6,29,159]}," ",{t:4,f:[{p:[8,4,220],t:7,e:"ui-button",a:{action:"Claim"},f:["Claim Points"]}],n:50,r:"data.unclaimedPoints",p:[7,3,187]}]}," ",{p:[13,2,311],t:7,e:"ui-section",f:[{t:4,f:[{p:[15,4,350],t:7,e:"ui-button",a:{action:"Eject"},f:["Eject ID"]}," You have ",{t:2,r:"data.claimedPoints",p:[18,13,421]}," mining points collected."],n:50,r:"data.hasID",p:[14,3,327]},{t:4,n:51,f:[{p:[20,4,485],t:7,e:"ui-button",a:{action:"Insert"},f:["Insert ID"]}],r:"data.hasID"}]}]}," ",{p:[26,1,588],t:7,e:"ui-display",f:[{t:4,f:[{p:[28,3,627],t:7,e:"ui-section",f:[{p:[29,4,644],t:7,e:"ui-button",a:{action:"diskEject",icon:"eject"},f:["Eject Disk"]}]}," ",{t:4,f:[{p:[34,4,772],t:7,e:"ui-section",a:{"class":"candystripe" +},f:[{p:[35,5,808],t:7,e:"ui-button",a:{action:"diskUpload",state:[{t:2,x:{r:["canupload"],s:'(_0)?null:"disabled"'},p:[35,42,845]}],icon:"upload",align:"right",params:['{ "design" : "',{t:2,r:"index",p:[35,129,932]},'" }']},f:["Upload"]}," File ",{t:2,r:"index",p:[38,10,988]},": ",{t:2,r:"name",p:[38,21,999]}]}],n:52,r:"data.diskDesigns",p:[33,3,741]}],n:50,r:"data.hasDisk",p:[27,2,603]},{t:4,n:51,f:[{p:[42,3,1053],t:7,e:"ui-section",f:[{p:[43,4,1070],t:7,e:"ui-button",a:{action:"diskInsert",icon:"floppy-o"},f:["Insert Disk"]}]}],r:"data.hasDisk"}]}," ",{p:[49,1,1195],t:7,e:"div",a:{"class":"display tabular"},f:[{p:[50,2,1227],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[51,4,1261],t:7,e:"section",a:{"class":"cell"},f:["Mineral"]}," ",{p:[54,4,1316],t:7,e:"section",a:{"class":"cell"},f:["Sheets"]}," ",{p:[57,4,1370],t:7,e:"section",a:{"class":"cell"},f:[]}," ",{p:[59,4,1412],t:7,e:"section",a:{"class":"cell"},f:[{p:[60,5,1440],t:7,e:"ui-button",a:{"class":"center mineral",grid:0,action:"Release",params:'{"id" : "all"}'},f:["Release All"]}]}," ",{p:[64,4,1576],t:7,e:"section",a:{"class":"cell"},f:["Ore Value"]}]}," ",{t:4,f:[{p:[69,3,1673],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[70,4,1707],t:7,e:"section",a:{"class":"cell"},f:[{t:2,r:"name",p:[71,5,1735]}]}," ",{p:[73,4,1763],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{t:2,r:"amount",p:[74,5,1805]}]}," ",{p:[76,4,1835],t:7,e:"section",a:{"class":"cell"},f:[{p:[77,5,1863],t:7,e:"input",a:{value:[{t:2,r:"sheets",p:[77,18,1876]}],placeholder:"###","class":"number"}}]}," ",{p:[79,4,1941],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{p:[80,5,1983],t:7,e:"ui-button",a:{"class":"center",grid:0,action:"Release",state:[{t:2,x:{r:["amount"],s:'(_0>=1)?null:"disabled"'},p:[80,59,2037]}],params:['{ "id" : ',{t:2,r:"id",p:[80,114,2092]},', "sheets" : ',{t:2,r:"sheets",p:[80,133,2111]}," }"]},f:["Release"]}]}," ",{p:[84,4,2178],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{t:2,r:"value",p:[85,5,2220]}]}]}],n:52,r:"data.materials",p:[68,2,1645]}," ",{t:4,f:[{p:[90,3,2298],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[91,4,2332],t:7,e:"section",a:{"class":"cell"},f:[{t:2,r:"name",p:[92,5,2360]}]}," ",{p:[94,4,2388],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{t:2,r:"amount",p:[95,5,2430]}]}," ",{p:[97,4,2460],t:7,e:"section",a:{"class":"cell"},f:[{p:[98,5,2488],t:7,e:"input",a:{value:[{t:2,r:"sheets",p:[98,18,2501]}],placeholder:"###","class":"number"}}]}," ",{p:[100,4,2566],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{p:[101,5,2608],t:7,e:"ui-button",a:{"class":"center",grid:0,action:"Smelt",state:[{t:2,x:{r:["amount"],s:'(_0>=1)?null:"disabled"'},p:[101,57,2660]}],params:['{ "id" : ',{t:2,r:"id",p:[101,113,2716]},', "sheets" : ',{t:2,r:"sheets",p:[101,132,2735]}," }"]},f:["Smelt"]}]}," ",{p:[105,4,2799],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{p:[106,5,2841],t:7,e:"ui-button",a:{"class":"center",grid:0,action:"SmeltAll",state:[{t:2,x:{r:["amount"],s:'(_0>=1)?null:"disabled"'},p:[106,60,2896]}],params:['{ "id" : ',{t:2,r:"id",p:[106,116,2952]}," }"]},f:["Smelt All"]}]}]}],n:52,r:"data.alloys",p:[89,2,2273]}]}]},e.exports=a.extend(r.exports)},{205:205}],289:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:{button:[{p:[4,4,87],t:7,e:"ui-button",a:{icon:"remove",state:[{t:2,x:{r:["data.has_beaker"],s:'_0?null:"disabled"'},p:[4,36,119]}],action:"empty_eject_beaker"},f:["Empty and eject"]}," ",{p:[7,4,231],t:7,e:"ui-button",a:{icon:"trash",state:[{t:2,x:{r:["data.has_beaker"],s:'_0?null:"disabled"'},p:[7,35,262]}],action:"empty_beaker"},f:["Empty"]}," ",{p:[10,4,358],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.has_beaker"],s:'_0?null:"disabled"'},p:[10,35,389]}],action:"eject_beaker"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{t:4,f:[{p:[15,4,528],t:7,e:"ui-section",f:[{t:4,f:[{p:[17,6,578],t:7,e:"span",a:{"class":"bad"},f:["The beaker is empty!"]}],n:50,r:"data.beaker_empty",p:[16,5,546]},{t:4,n:51,f:[{p:[19,6,644],t:7,e:"ui-subdisplay",a:{title:"Blood"},f:[{t:4,f:[{p:[21,8,712],t:7,e:"ui-section",a:{label:"Blood DNA"},f:[{t:2,r:"data.blood.dna",p:[21,38,742]}]}," ",{p:[22,8,782],t:7,e:"ui-section",a:{label:"Blood type"},f:[{t:2,r:"data.blood.type",p:[22,39,813]}]}],n:50,r:"data.has_blood",p:[20,7,681]},{t:4,n:51,f:[{p:[24,8,870],t:7,e:"ui-section",f:[{p:[25,9,892],t:7,e:"span",a:{"class":"average"},f:["No blood sample detected."]}]}],r:"data.has_blood"}]}],r:"data.beaker_empty"}]}],n:50,r:"data.has_beaker",p:[14,3,500]},{t:4,n:51,f:[{p:[32,4,1054],t:7,e:"ui-section",f:[{p:[33,5,1072],t:7,e:"span",a:{"class":"bad"},f:["No beaker loaded."]}]}],r:"data.has_beaker"}]}," ",{t:4,f:[{p:[38,3,1188],t:7,e:"ui-display",a:{title:"Diseases"},f:[{t:4,f:[{p:{button:[{t:4,f:[{p:[43,8,1343],t:7,e:"ui-button",a:{icon:"pencil",action:"rename_disease",state:[{t:2,x:{r:["can_rename"],s:'_0?"":"disabled"'},p:[43,64,1399]}],params:['{"index": ',{t:2,r:"index",p:[43,116,1451]},"}"]},f:["Name advanced disease"]}],n:50,r:"is_adv",p:[42,7,1320]}," ",{p:[47,7,1538],t:7,e:"ui-button",a:{icon:"flask",action:"create_culture_bottle",state:[{t:2,x:{r:["data.is_ready"],s:'_0?"":"disabled"'},p:[47,69,1600]}],params:['{"index": ',{t:2,r:"index",p:[47,124,1655]},"}"]},f:["Create virus culture bottle"]}]},t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[40,24,1269]}],button:0},f:[" ",{p:[51,6,1749],t:7,e:"ui-section",a:{label:"Disease agent"},f:[{t:2,r:"agent",p:[51,40,1783]}]}," ",{p:[52,6,1812],t:7,e:"ui-section",a:{label:"Description"},f:[{t:2,r:"description",p:[52,38,1844]}]}," ",{p:[53,6,1879],t:7,e:"ui-section",a:{label:"Spread"},f:[{t:2,r:"spread",p:[53,33,1906]}]}," ",{p:[54,6,1936],t:7,e:"ui-section",a:{label:"Possible cure"},f:[{t:2,r:"cure",p:[54,40,1970]}]}," ",{t:4,f:[{p:[56,7,2021],t:7,e:"ui-section",a:{label:"Symptoms"},f:[{t:4,f:[{p:[58,9,2087],t:7,e:"ui-button",a:{action:"symptom_details",state:"",params:['{"picked_symptom": ',{t:2,r:"sym_index",p:[58,81,2159]},', "index": ',{t:2,r:"index",p:[58,105,2183]},"}"]},f:[{t:2,r:"name",p:[59,10,2206]}," "]},{p:[60,21,2236],t:7,e:"br"}],n:52,r:"symptoms",p:[57,8,2059]}]}," ",{p:[63,7,2289],t:7,e:"ui-section",a:{label:"Resistance"},f:[{t:2,r:"resistance",p:[63,38,2320]}]}," ",{p:[64,7,2355],t:7,e:"ui-section",a:{label:"Stealth"},f:[{t:2,r:"stealth",p:[64,35,2383]}]}," ",{p:[65,7,2415],t:7,e:"ui-section",a:{label:"Stage speed"},f:[{t:2,r:"stage_speed",p:[65,39,2447]}]}," ",{p:[66,7,2483],t:7,e:"ui-section",a:{label:"Transmittability"},f:[{t:2,r:"transmission",p:[66,44,2520]}]}],n:50,r:"is_adv",p:[55,6,1999]}]}],n:52,r:"data.viruses",p:[39,4,1222]},{t:4,n:51,f:[{p:[70,5,2601],t:7,e:"ui-section",f:[{p:[71,6,2620],t:7,e:"span",a:{"class":"average"},f:["No detectable virus in the blood sample."]}]}],r:"data.viruses"}]}," ",{p:[75,3,2743],t:7,e:"ui-display",a:{title:"Antibodies"},f:[{t:4,f:[{p:[77,5,2811],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[77,24,2830]}]},f:[{p:[78,7,2848],t:7,e:"ui-button",a:{icon:"eyedropper",state:[{t:2,x:{r:["data.is_ready"],s:'_0?"":"disabled"'},p:[78,43,2884]}],action:"create_vaccine_bottle",params:['{"index": ',{t:2,r:"id",p:[78,129,2970]},"}"]},f:["Create vaccine bottle"]}]}],n:52,r:"data.resistances",p:[76,4,2779]},{t:4,n:51,f:[{p:[83,5,3067],t:7,e:"ui-section",f:[{p:[84,6,3086],t:7,e:"span",a:{"class":"average"},f:["No antibodies detected in the blood sample."]}]}],r:"data.resistances"}]}],n:50,r:"data.has_blood",p:[37,2,1162]}],n:50,x:{r:["data.mode"],s:"_0==1"},p:[1,1,0]},{t:4,n:51,f:[{p:[90,2,3231],t:7,e:"ui-button",a:{icon:"undo",state:"",action:"back"},f:["Back"]}," ",{t:4,f:[{p:[94,4,3330],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[94,23,3349]}]},f:[{p:[95,4,3364],t:7,e:"ui-section",f:[{t:2,r:"desc",p:[96,5,3382]}," ",{t:4,f:[{p:[98,5,3417],t:7,e:"br"}," ",{p:[99,5,3428],t:7,e:"b",f:["This symptom has been neutered, and has no effect. It will still affect the virus' statistics."]}],n:50,r:"neutered",p:[97,4,3395]}]}," ",{p:[102,4,3564],t:7,e:"ui-section",f:[{p:[103,5,3582],t:7,e:"ui-section",a:{label:"Level"},f:[{t:2,r:"level",p:[103,31,3608]}]}," ",{p:[104,5,3636],t:7,e:"ui-section",a:{label:"Resistance"},f:[{t:2,r:"resistance",p:[104,36,3667]}]}," ",{p:[105,5,3700],t:7,e:"ui-section",a:{label:"Stealth"},f:[{t:2,r:"stealth",p:[105,33,3728]}]}," ",{p:[106,5,3758],t:7,e:"ui-section",a:{label:"Stage speed"},f:[{t:2,r:"stage_speed",p:[106,37,3790]}]}," ",{p:[107,5,3824],t:7,e:"ui-section",a:{label:"Transmittability"},f:[{t:2,r:"transmission",p:[107,42,3861]}]}]}," ",{p:[109,4,3913],t:7,e:"ui-subdisplay",a:{title:"Effect Thresholds"},f:[{p:[110,5,3960],t:7,e:"ui-section",f:[{t:3,r:"threshold_desc",p:[110,17,3972]}]}]}]}],n:53,r:"data.symptom",p:[93,2,3303]}],x:{r:["data.mode"],s:"_0==1"}}]},e.exports=a.extend(r.exports)},{205:205}],290:[function(t,e,n){var a=t(205),r={exports:{}};!function(e){"use strict";var n=t(338);e.exports={data:{filter:"",tooltiptext:function(t,e,n){var a="";return t&&(a+="REQUIREMENTS: "+t+" "),e&&(a+="CATALYSTS: "+e+" "),n&&(a+="TOOLS: "+n),a}},oninit:function(){var t=this;this.on({hover:function(t){this.set("hovered",t.context.params)},unhover:function(t){this.set("hovered")}}),this.observe("filter",function(e,a,r){var i=null;i=t.get("data.display_compact")?t.findAll(".section"):t.findAll(".display:not(:first-child)"),(0,n.filterMulti)(i,t.get("filter").toLowerCase())},{init:!1})}}}(r),r.exports.template={v:3,t:[" ",{p:[48,1,1342],t:7,e:"ui-display",a:{title:[{t:2,r:"data.category",p:[48,20,1361]},{t:4,f:[" : ",{t:2,r:"data.subcategory",p:[48,64,1405]}],n:50,r:"data.subcategory",p:[48,37,1378]}]},f:[{t:4,f:[{p:[50,3,1459],t:7,e:"ui-section",f:["Crafting... ",{p:[51,16,1488],t:7,e:"i",a:{"class":"fa-spin fa fa-spinner"}}]}],n:50,r:"data.busy",p:[49,2,1438]},{t:4,n:51,f:[{p:[54,3,1557],t:7,e:"ui-section",f:[{p:[55,4,1574],t:7,e:"table",a:{style:"width:100%"},f:[{p:[56,5,1606],t:7,e:"tr",f:[{p:[57,6,1617],t:7,e:"td",a:{style:"width:150px!important"},f:[{p:[58,7,1659],t:7,e:"ui-button",a:{icon:"arrow-left",action:"backwardCat"},f:[{t:2,r:"data.prev_cat",p:[59,8,1718]}]}]}," ",{p:[62,6,1774],t:7,e:"td",a:{style:"width:150px!important"},f:[{p:[63,7,1816],t:7,e:"ui-button",a:{icon:"arrow-right",action:"forwardCat"},f:[{t:2,r:"data.next_cat",p:[64,7,1874]}]}]}," ",{p:[67,6,1930],t:7,e:"td",a:{style:"float:right!important"},f:[{t:4,f:[{p:[69,7,2014],t:7,e:"ui-button",a:{icon:"lock",action:"toggle_recipes"},f:["Showing Craftable Recipes"]}],n:50,r:"data.display_craftable_only",p:[68,6,1971]},{t:4,n:51,f:[{p:[73,7,2138],t:7,e:"ui-button",a:{icon:"unlock",action:"toggle_recipes"},f:["Showing All Recipes"]}],r:"data.display_craftable_only"}]}," ",{p:[78,6,2268],t:7,e:"td",a:{style:"float:right!important"},f:[{p:[79,7,2310],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.display_compact"],s:'_0?"check-square-o":"square-o"'},p:[79,24,2327]}],action:"toggle_compact"},f:["Compact"]}]}]}," ",{p:[84,5,2474],t:7,e:"tr",f:[{t:4,f:[{p:[86,6,2515],t:7,e:"td",a:{style:"width:150px!important"},f:[{p:[87,7,2557],t:7,e:"ui-button",a:{icon:"arrow-left",action:"backwardSubCat"},f:[{t:2,r:"data.prev_subcat",p:[88,8,2619]}]}]}," ",{p:[91,6,2678],t:7,e:"td",a:{style:"width:150px!important"},f:[{p:[92,7,2720],t:7,e:"ui-button",a:{icon:"arrow-right",action:"forwardSubCat"},f:[{t:2,r:"data.next_subcat",p:[93,8,2782]}]}]}],n:50,r:"data.subcategory",p:[85,5,2484]}]}]}," ",{t:4,f:[{t:4,f:[" ",{p:[101,6,2992],t:7,e:"ui-input",a:{value:[{t:2,r:"filter",p:[101,23,3009]}],placeholder:"Filter.."}}],n:51,r:"data.display_compact",p:[100,5,2902]}],n:50,r:"config.fancy",p:[99,4,2876]}]}," ",{t:4,f:[{p:[106,5,3144],t:7,e:"ui-display",f:[{t:4,f:[{p:[108,6,3193],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[108,25,3212]}]},f:[{p:[109,7,3230],t:7,e:"ui-button",a:{tooltip:[{t:2,x:{r:["tooltiptext","req_text","catalyst_text","tool_text"],s:"_0(_1,_2,_3)"},p:[109,27,3250]}],"tooltip-side":"right",action:"make",params:['{"recipe": "',{t:2,r:"ref",p:[109,135,3358]},'"}'],icon:"gears"},v:{hover:"hover",unhover:"unhover"},f:["Craft"]}]}],n:52,r:"data.can_craft",p:[107,5,3162]}," ",{t:4,f:[{t:4,f:[{p:[116,7,3567],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[116,26,3586]}]},f:[{p:[117,8,3605],t:7,e:"ui-button",a:{tooltip:[{t:2,x:{r:["tooltiptext","req_text","catalyst_text","tool_text"],s:"_0(_1,_2,_3)"},p:[117,28,3625]}],"tooltip-side":"right",state:"disabled",icon:"gears"},v:{hover:"hover",unhover:"unhover"},f:["Craft"]}]}],n:52,r:"data.cant_craft",p:[115,6,3534]}],n:51,r:"data.display_craftable_only",p:[114,5,3495]}]}],n:50,r:"data.display_compact",p:[105,4,3110]},{t:4,n:51,f:[{t:4,f:[{p:[126,6,3947],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[126,25,3966]}]},f:[{t:4,f:[{p:[128,8,4009],t:7,e:"ui-section",a:{label:"Requirements"},f:[{t:2,r:"req_text",p:[129,9,4052]}]}],n:50,r:"req_text",p:[127,7,3984]}," ",{t:4,f:[{p:[133,8,4139],t:7,e:"ui-section",a:{label:"Catalysts"},f:[{t:2,r:"catalyst_text",p:[134,9,4179]}]}],n:50,r:"catalyst_text",p:[132,7,4109]}," ",{t:4,f:[{p:[138,8,4267],t:7,e:"ui-section",a:{label:"Tools"},f:[{t:2,r:"tool_text",p:[139,9,4303]}]}],n:50,r:"tool_text",p:[137,7,4241]}," ",{p:[142,7,4361],t:7,e:"ui-section",f:[{p:[143,8,4382],t:7,e:"ui-button",a:{icon:"gears",action:"make",params:['{"recipe": "',{t:2,r:"ref",p:[143,66,4440]},'"}']},f:["Craft"]}]}]}],n:52,r:"data.can_craft",p:[125,5,3916]}," ",{t:4,f:[{t:4,f:[{p:[151,7,4621],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[151,26,4640]}]},f:[{t:4,f:[{p:[153,9,4685],t:7,e:"ui-section",a:{label:"Requirements"},f:[{t:2,r:"req_text",p:[154,10,4729]}]}],n:50,r:"req_text",p:[152,8,4659]}," ",{t:4,f:[{p:[158,9,4820],t:7,e:"ui-section",a:{label:"Catalysts"},f:[{t:2,r:"catalyst_text",p:[159,10,4861]}]}],n:50,r:"catalyst_text",p:[157,8,4789]}," ",{t:4,f:[{p:[163,9,4953],t:7,e:"ui-section",a:{label:"Tools"},f:[{t:2,r:"tool_text",p:[164,10,4990]}]}],n:50,r:"tool_text",p:[162,8,4926]}]}],n:52,r:"data.cant_craft",p:[150,6,4588]}],n:51,r:"data.display_craftable_only",p:[149,5,4549]}],r:"data.display_compact"}],r:"data.busy"}]}]},e.exports=a.extend(r.exports)},{205:205,338:338}],291:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,15],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.holding"],s:'_0?"is":"is not"'},p:[2,23,35]}," connected to a tank."]}]}," ",{p:[4,1,113],t:7,e:"ui-display",a:{title:"Status",button:0},f:[{p:[5,3,151],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[6,5,186],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.round(_0)"},p:[6,11,192]}," kPa"]}]}," ",{p:[8,3,254],t:7,e:"ui-section",a:{label:"Port"},f:[{p:[9,5,285],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected"],s:'_0?"good":"average"'},p:[9,18,298]}]},f:[{t:2,x:{r:["data.connected"],s:'_0?"Connected":"Not Connected"'},p:[9,59,339]}]}]}]}," ",{p:[12,1,430],t:7,e:"ui-display",a:{title:"Pump"},f:[{p:[13,3,459],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[14,5,491],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[14,22,508]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":"null"'},p:[15,14,559]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[16,22,616]}]}]}," ",{p:[18,3,675],t:7,e:"ui-section",a:{label:"Direction"},f:[{p:[19,5,711],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.direction"],s:'_0=="out"?"sign-out":"sign-in"'},p:[19,22,728]}],action:"direction"},f:[{t:2,x:{r:["data.direction"],s:'_0=="out"?"Out":"In"'},p:[20,26,808]}]}]}," ",{p:[22,3,883],t:7,e:"ui-section",a:{label:"Target Pressure"},f:[{p:[23,5,925],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.min_pressure",p:[23,18,938]}],max:[{t:2,r:"data.max_pressure",p:[23,46,966]}],value:[{t:2,r:"data.target_pressure",p:[24,14,1003]}]},f:[{t:2,x:{r:["adata.target_pressure"],s:"Math.round(_0)"},p:[24,40,1029]}," kPa"]}]}," ",{p:[26,3,1100],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[27,5,1145],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.target_pressure","data.default_pressure"],s:'_0!=_1?null:"disabled"'},p:[27,38,1178]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[29,5,1328],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.target_pressure","data.min_pressure"],s:'_0>_1?null:"disabled"'},p:[29,36,1359]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[31,5,1500],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[32,5,1595],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.target_pressure","data.max_pressure"],s:'_0<_1?null:"disabled"'},p:[32,35,1625]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}]}," ",{p:{button:[{t:4,f:[{p:[39,7,1891],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.on"],s:'_0?"danger":null'},p:[39,38,1922]}],action:"eject"},f:["Eject"]}],n:50,r:"data.holding",p:[38,5,1863]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[43,3,2042],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holding.name",p:[44,4,2073]}]}," ",{p:[46,3,2115],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holding.pressure"],s:"Math.round(_0)"},p:[47,4,2149]}," kPa"]}],n:50,r:"data.holding",p:[42,3,2018]},{t:4,n:51,f:[{p:[50,3,2223],t:7,e:"ui-section",f:[{p:[51,4,2240],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.holding"}]}]},e.exports=a.extend(r.exports)},{205:205}],292:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[3,1,69],t:7,e:"ui-notice",f:[{p:[4,3,84],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.holding"],s:'_0?"is":"is not"'},p:[4,23,104]}," connected to a tank."]}]}," ",{p:[6,1,182],t:7,e:"ui-display",a:{title:"Status",button:0},f:[{p:[7,3,220],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[8,5,255],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.round(_0)"},p:[8,11,261]}," kPa"]}]}," ",{p:[10,3,323],t:7,e:"ui-section",a:{label:"Port"},f:[{p:[11,5,354],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected"],s:'_0?"good":"average"'},p:[11,18,367]}]},f:[{t:2,x:{r:["data.connected"],s:'_0?"Connected":"Not Connected"'},p:[11,59,408]}]}]}]}," ",{p:[14,1,499],t:7,e:"ui-display",a:{title:"Filter"},f:[{p:[15,3,530],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[16,5,562],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[16,22,579]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":"null"'},p:[17,14,630]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[18,22,687]}]}]}]}," ",{p:{button:[{t:4,f:[{p:[24,7,856],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.on"],s:'_0?"danger":null'},p:[24,38,887]}],action:"eject"},f:["Eject"]}],n:50,r:"data.holding",p:[23,5,828]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[28,3,1007],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holding.name",p:[29,4,1038]}]}," ",{p:[31,3,1080],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holding.pressure"],s:"Math.round(_0)"},p:[32,4,1114]}," kPa"]}],n:50,r:"data.holding",p:[27,3,983]},{t:4,n:51,f:[{p:[35,3,1188],t:7,e:"ui-section",f:[{p:[36,4,1205],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.holding"}]}," ",{p:[40,1,1293],t:7,e:"ui-display",a:{title:"Filters"},f:[{t:4,f:[{p:[42,5,1345],t:7,e:"filters"}],n:53,r:"data",p:[41,3,1325]}]}]},r.exports.components=r.exports.components||{};var i={filters:t(311)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,311:311}],293:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{chargingState:function(t){switch(t){case 2:return"good";case 1:return"average";default:return"bad"}},chargingMode:function(t){return 2==t?"Full":1==t?"Charging":"Draining"},channelState:function(t){return t>=2?"good":"bad"},channelPower:function(t){return t>=2?"On":"Off"},channelMode:function(t){return 1==t||3==t?"Auto":"Manual"}},computed:{graphData:function(){var t=this.get("data.history");return Object.keys(t).map(function(e){return t[e].map(function(t,e){return{x:e,y:t}})})}}}}(r),r.exports.template={v:3,t:[" ",{p:[42,1,1035],t:7,e:"ui-display",a:{title:"Network"},f:[{t:4,f:[{p:[44,5,1093],t:7,e:"ui-linegraph",a:{points:[{t:2,r:"graphData",p:[44,27,1115]}],height:"500",legend:'["Available", "Load"]',colors:'["rgb(0, 102, 0)", "rgb(153, 0, 0)"]',xunit:"seconds ago",xfactor:[{t:2,r:"data.interval",p:[46,38,1267]}],yunit:"W",yfactor:"1",xinc:[{t:2,x:{r:["data.stored"],s:"_0/10"},p:[47,15,1323]}],yinc:"9"}}],n:50,r:"config.fancy",p:[43,3,1067]},{t:4,n:51,f:[{p:[49,5,1373],t:7,e:"ui-section",a:{label:"Available"},f:[{p:[50,7,1411],t:7,e:"span",f:[{t:2,r:"data.supply",p:[50,13,1417]}]}]}," ",{p:[52,5,1464],t:7,e:"ui-section",a:{label:"Load"},f:[{p:[53,9,1499],t:7,e:"span",f:[{t:2,r:"data.demand",p:[53,15,1505]}]}]}],r:"config.fancy"}]}," ",{p:[57,1,1574],t:7,e:"ui-display",a:{title:"Areas"},f:[{p:[58,3,1604],t:7,e:"ui-section",a:{nowrap:0},f:[{p:[59,5,1629],t:7,e:"div",a:{"class":"content"},f:["Area"]}," ",{p:[60,5,1666],t:7,e:"div",a:{"class":"content"},f:["Charge"]}," ",{p:[61,5,1705],t:7,e:"div",a:{"class":"content"},f:["Load"]}," ",{p:[62,5,1742],t:7,e:"div",a:{"class":"content"},f:["Status"]}," ",{p:[63,5,1781],t:7,e:"div",a:{"class":"content"},f:["Equipment"]}," ",{p:[64,5,1823],t:7,e:"div",a:{"class":"content"},f:["Lighting"]}," ",{p:[65,5,1864],t:7,e:"div",a:{"class":"content"},f:["Environment"]}]}," ",{t:4,f:[{p:[68,5,1949],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[68,24,1968]}],nowrap:0},f:[{p:[69,7,1993],t:7,e:"div",a:{"class":"content"},f:[{t:2,x:{r:["@index","adata.areas"],s:"Math.round(_1[_0].charge)"},p:[69,28,2014]}," %"]}," ",{p:[70,7,2072],t:7,e:"div",a:{"class":"content"},f:[{t:2,rx:{r:"adata.areas",m:[{t:30,n:"@index"},"load"]},p:[70,28,2093]}]}," ",{p:[71,7,2135],t:7,e:"div",a:{"class":"content"},f:[{p:[71,28,2156],t:7,e:"span",a:{"class":[{t:2,x:{r:["chargingState","charging"],s:"_0(_1)"},p:[71,41,2169]}]},f:[{t:2,x:{r:["chargingMode","charging"],s:"_0(_1)"},p:[71,70,2198]}]}]}," ",{p:[72,7,2245],t:7,e:"div",a:{"class":"content"},f:[{p:[72,28,2266],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","eqp"],s:"_0(_1)"},p:[72,41,2279]}]},f:[{t:2,x:{r:["channelPower","eqp"],s:"_0(_1)"},p:[72,64,2302]}," [",{p:[72,87,2325],t:7,e:"span",f:[{t:2,x:{r:["channelMode","eqp"],s:"_0(_1)"},p:[72,93,2331]}]},"]"]}]}," ",{p:[73,7,2380],t:7,e:"div",a:{"class":"content"},f:[{p:[73,28,2401],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","lgt"],s:"_0(_1)"},p:[73,41,2414]}]},f:[{t:2,x:{r:["channelPower","lgt"],s:"_0(_1)"},p:[73,64,2437]}," [",{p:[73,87,2460],t:7,e:"span",f:[{t:2,x:{r:["channelMode","lgt"],s:"_0(_1)"},p:[73,93,2466]}]},"]"]}]}," ",{p:[74,7,2515],t:7,e:"div",a:{"class":"content"},f:[{p:[74,28,2536],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","env"],s:"_0(_1)"},p:[74,41,2549]}]},f:[{t:2,x:{r:["channelPower","env"],s:"_0(_1)"},p:[74,64,2572]}," [",{p:[74,87,2595],t:7,e:"span",f:[{t:2,x:{r:["channelMode","env"],s:"_0(_1)"},p:[74,93,2601]}]},"]"]}]}]}],n:52,r:"data.areas",p:[67,3,1923]}]}]},e.exports=a.extend(r.exports)},{205:205}],294:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={computed:{readableFrequency:function(){return Math.round(this.get("adata.frequency"))/10}}}}(r),r.exports.template={v:3,t:[" ",{p:[11,1,177],t:7,e:"ui-display",a:{title:"Settings"},f:[{t:4,f:[{p:[13,5,236],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[14,7,270],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.listening"],s:'_0?"power-off":"close"'},p:[14,24,287]}],style:[{t:2,x:{r:["data.listening"],s:'_0?"selected":null'},p:[14,75,338]}],action:"listen"},f:[{t:2,x:{r:["data.listening"],s:'_0?"On":"Off"'},p:[16,9,413]}]}]}],n:50,r:"data.headset",p:[12,3,210]},{t:4,n:51,f:[{p:[19,5,494],t:7,e:"ui-section",a:{label:"Microphone"},f:[{p:[20,7,533],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.broadcasting"],s:'_0?"power-off":"close"'},p:[20,24,550]}],style:[{t:2,x:{r:["data.broadcasting"],s:'_0?"selected":null'},p:[20,78,604]}],action:"broadcast"},f:[{t:2,x:{r:["data.broadcasting"],s:'_0?"Engaged":"Disengaged"'},p:[22,9,685]}]}]}," ",{p:[24,5,769],t:7,e:"ui-section",a:{label:"Speaker"},f:[{p:[25,7,805],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.listening"],s:'_0?"power-off":"close"'},p:[25,24,822]}],style:[{t:2,x:{r:["data.listening"],s:'_0?"selected":null'},p:[25,75,873]}],action:"listen"},f:[{t:2,x:{r:["data.listening"],s:'_0?"Engaged":"Disengaged"'},p:[27,9,948]}]}]}],r:"data.headset"}," ",{t:4,f:[{p:[31,5,1064],t:7,e:"ui-section",a:{label:"High Volume"},f:[{p:[32,7,1104],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.useCommand"],s:'_0?"power-off":"close"'},p:[32,24,1121]}],style:[{t:2,x:{r:["data.useCommand"],s:'_0?"selected":null'},p:[32,76,1173]}],action:"command"},f:[{t:2,x:{r:["data.useCommand"],s:'_0?"On":"Off"'},p:[34,9,1250]}]}]}],n:50,r:"data.command",p:[30,3,1038]}]}," ",{p:[38,1,1342],t:7,e:"ui-display",a:{title:"Channel"},f:[{p:[39,3,1374],t:7,e:"ui-section",a:{label:"Frequency"},f:[{t:4,f:[{p:[41,7,1439],t:7,e:"span",f:[{t:2,r:"readableFrequency",p:[41,13,1445]}]}],n:50,r:"data.freqlock",p:[40,5,1410]},{t:4,n:51,f:[{p:[43,7,1495],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.frequency","data.minFrequency"],s:'_0==_1?"disabled":null'},p:[43,46,1534]}],action:"frequency",params:'{"adjust": -1}'}}," ",{p:[44,7,1646],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.frequency","data.minFrequency"],s:'_0==_1?"disabled":null'},p:[44,41,1680]}],action:"frequency",params:'{"adjust": -.2}'}}," ",{p:[45,7,1793],t:7,e:"ui-button",a:{icon:"pencil",action:"frequency",params:'{"tune": "input"}'},f:[{t:2,r:"readableFrequency",p:[45,78,1864]}]}," ",{p:[46,7,1905],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.frequency","data.maxFrequency"],s:'_0==_1?"disabled":null'},p:[46,40,1938]}],action:"frequency",params:'{"adjust": .2}'}}," ",{p:[47,7,2050],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.frequency","data.maxFrequency"],s:'_0==_1?"disabled":null'},p:[47,45,2088]}],action:"frequency",params:'{"adjust": 1}'}}],r:"data.freqlock"}]}," ",{t:4,f:[{p:[51,5,2262],t:7,e:"ui-section",a:{label:"Subspace Transmission"},f:[{p:[52,7,2312],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.subspace"],s:'_0?"power-off":"close"'},p:[52,24,2329]}],style:[{t:2,x:{r:["data.subspace"],s:'_0?"selected":null'},p:[52,74,2379]}],action:"subspace"},f:[{t:2,x:{r:["data.subspace"],s:'_0?"Active":"Inactive"'},p:[53,29,2447]}]}]}],n:50,r:"data.subspaceSwitchable",p:[50,3,2225]}," ",{t:4,f:[{p:[57,5,2578],t:7,e:"ui-section",a:{label:"Channels"},f:[{t:4,f:[{p:[59,9,2656],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["."],s:'_0?"check-square-o":"square-o"'},p:[59,26,2673]}],style:[{t:2,x:{r:["."],s:'_0?"selected":null'},p:[60,18,2730]}],action:"channel",params:['{"channel": "',{t:2,r:"channel",p:[61,49,2806]},'"}']},f:[{t:2,r:"channel",p:[62,11,2833]}]},{p:[62,34,2856],t:7,e:"br"}],n:52,i:"channel",r:"data.channels",p:[58,7,2615]}]}],n:50,x:{r:["data.subspace","data.channels"],s:"_0&&_1"},p:[56,3,2534]}]}]},e.exports=a.extend(r.exports)},{205:205}],295:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" "," "," "," "," "," "," "," "," "," ",{p:[11,1,560],t:7,e:"rdheader"}," ",{t:4,f:[{p:[13,2,595],t:7,e:"ui-display",a:{title:"CONSOLE LOCKED"},f:[{p:[14,3,634],t:7,e:"ui-button",a:{action:"Unlock"},f:["Unlock"]}]}],n:50,r:"data.locked",p:[12,1,573]},{t:4,f:[{p:[18,2,729],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"data.tabs",p:[18,17,744]}]},f:[{p:[19,3,763],t:7,e:"tab",a:{name:"Technology"},f:[{p:[20,4,791],t:7,e:"techweb"}]}," ",{p:[22,3,815],t:7,e:"tab",a:{name:"View Node"},f:[{p:[23,4,842],t:7,e:"nodeview"}]}," ",{p:[25,3,867],t:7,e:"tab",a:{name:"View Design"},f:[{p:[26,4,896],t:7,e:"designview"}]}," ",{p:[28,3,923],t:7,e:"tab",a:{name:"Disk Operations - Design"},f:[{p:[29,4,965],t:7,e:"diskopsdesign"}]}," ",{p:[31,3,995],t:7,e:"tab",a:{name:"Disk Operations - Technology"},f:[{p:[32,4,1041],t:7,e:"diskopstech"}]}," ",{p:[34,3,1069],t:7,e:"tab",a:{name:"Deconstructive Analyzer"},f:[{p:[35,4,1110],t:7,e:"destruct"}]}," ",{p:[37,3,1135],t:7,e:"tab",a:{name:"Protolathe"},f:[{p:[38,4,1163],t:7,e:"protolathe"}]}," ",{p:[40,3,1190],t:7,e:"tab",a:{name:"Circuit Imprinter"},f:[{p:[41,4,1225],t:7,e:"circuit"}]}," ",{p:[43,3,1249],t:7,e:"tab",a:{name:"Settings"},f:[{p:[44,4,1275],t:7,e:"settings"}]}]}],n:50,x:{r:["data.locked"],s:"!_0"},p:[17,1,706]}]},r.exports.components=r.exports.components||{};var i={settings:t(304),circuit:t(296),protolathe:t(302),destruct:t(298),diskopsdesign:t(299),diskopstech:t(300),designview:t(297),nodeview:t(301),techweb:t(305),rdheader:t(303)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,296:296,297:297,298:298,299:299,300:300,301:301,302:302,303:303,304:304,305:305}],296:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{t:4,f:[{p:[3,3,58],t:7,e:"ui-display",a:{title:"Circuit Imprinter Busy!"}}],n:50,r:"data.circuitbusy",p:[2,2,30]},{t:4,n:51,f:[{p:[5,3,130],t:7,e:"ui-display",f:[{p:[6,4,147],t:7,e:"ui-section",f:["Search Available Designs: ",{p:[7,4,189],t:7,e:"input",a:{value:[{t:2,r:"textsearch",p:[7,17,202]}],placeholder:"Type Here","class":"text"}}," ",{p:[8,5,261],t:7,e:"ui-button",a:{action:"textSearch",params:['{"latheType" : "circuit", "inputText" : ',{t:2,r:"textsearch",p:[8,84,340]},"}"]},f:["Search"]}]}," ",{p:[10,4,398],t:7,e:"ui-section",f:["Materials: ",{t:2,r:"data.circuitmats",p:[10,27,421]}," / ",{t:2,r:"data.circuitmaxmats",p:[10,50,444]}]}," ",{p:[11,4,485],t:7,e:"ui-section",f:["Reagents: ",{t:2,r:"data.circuitchems",p:[11,26,507]}," / ",{t:2,r:"data.circuitmaxchems",p:[11,50,531]}]}," ",{p:[12,3,572],t:7,e:"ui-display",f:[{p:[14,3,590],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"data.lathe_tabs",p:[14,18,605]}]},f:[{p:[15,4,631],t:7,e:"tab",a:{name:"Category List"},f:[{t:4,f:[{p:[17,6,696],t:7,e:"ui-button",a:{action:"switchcat",state:[{t:2,x:{r:["data.circuitcat"],s:'_0=="{{name}}"?"selected":null'},p:[17,43,733]}],params:['{"type" : "circuit", "cat" : "',{t:2,r:"name",p:[17,135,825]},'"}']},f:[{t:2,r:"name",p:[17,147,837]}]}],n:52,r:"data.circuitcats",p:[16,5,663]}]}," ",{p:[20,4,888],t:7,e:"tab",a:{name:"Selected Category"},f:[{t:4,f:[{p:[22,6,956],t:7,e:"ui-section",f:[{t:2,r:"name",p:[22,18,968]},{t:2,r:"matstring",p:[22,26,976]}," ",{p:[23,7,997],t:7,e:"ui-button",a:{action:"print",state:[{t:2,x:{r:["canprint"],s:'_0>1?null:"disabled"'},p:[23,40,1030]}],params:['{"latheType" : "circuit", "id" : "',{t:2,r:"id",p:[23,119,1109]},'"}']},f:["Print"]}]}],n:52,r:"data.circuitdes",p:[21,5,924]}]}," ",{p:[27,4,1187],t:7,e:"tab",a:{name:"Search Results"},f:[{t:4,f:[{p:[29,6,1254],t:7,e:"ui-section",f:[{t:2,r:"name",p:[29,18,1266]},{t:2,r:"matstring",p:[29,26,1274]}," ",{p:[30,7,1295],t:7,e:"ui-button",a:{action:"print",state:[{t:2,x:{r:["canprint"],s:'_0>1?null:"disabled"'},p:[30,40,1328]}],params:['{"latheType" : "circuit", "id" : "',{t:2,r:"id",p:[30,119,1407]},'"}']},f:["Print"]}]}],n:52,r:"data.circuitmatch",p:[28,5,1220]}]}," ",{p:[34,4,1485],t:7,e:"tab",a:{name:"Materials"},f:[{t:4,f:[{p:[36,6,1550],t:7,e:"ui-section",f:[{t:2,r:"name",p:[36,18,1562]}," : ",{t:2,r:"amount",p:[36,29,1573]}," cm3 - ",{t:4,f:[{p:[38,7,1623],t:7,e:"input",a:{value:[{t:2,r:"number",p:[38,20,1636]}],placeholder:["1-",{t:2,r:"sheets",p:[38,46,1662]}],"class":"number"}}," ",{p:[39,7,1698],t:7,e:"ui-button",a:{action:"releasemats",params:['{"latheType" : "circuit", "mat_id" : ',{t:2,r:"mat_id",p:[39,84,1775]},', "sheets" : ',{t:2,r:"number",p:[39,107,1798]},"}"]},f:["Release"]}],n:50,x:{r:["sheets"],s:"_0>0"},p:[37,6,1597]}]}],n:52,r:"data.circuitmat_list",p:[35,5,1513]}]}," ",{p:[44,4,1895],t:7,e:"tab",a:{name:"Chemicals"},f:[{t:4,f:[{p:[46,6,1961],t:7,e:"ui-section",f:[{t:2,r:"name",p:[46,18,1973]}," : ",{t:2,r:"amount",p:[46,29,1984]}," - ",{p:[47,7,2005],t:7,e:"ui-button",a:{action:"purgechem", +params:['{"latheType" : "circuit", "name" : ',{t:2,r:"name",p:[47,80,2078]},', "id" : ',{t:2,r:"reagentid",p:[47,97,2095]},"}"]},f:["Purge"]}]}],n:52,r:"data.circuitchem_list",p:[45,5,1923]}]}]}]}]}],r:"data.circuitbusy"}],n:50,r:"data.circuit_linked",p:[1,1,0]},{t:4,n:51,f:[{p:[55,2,2216],t:7,e:"ui-display",a:{title:"No Linked Circuit Imprinter"}}],r:"data.circuit_linked"}]},e.exports=a.extend(r.exports)},{205:205}],297:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,2,31],t:7,e:"ui-display",a:{title:[{t:2,r:"data.sdesign_name",p:[2,21,50]}]},f:[{p:[3,3,77],t:7,e:"ui-section",a:{title:"Description"},f:[{t:2,r:"data.sdesign_desc",p:[3,35,109]}]}]}," ",{p:[5,2,162],t:7,e:"ui-display",a:{title:"Lathe Types"},f:[{t:4,f:[{p:[7,4,239],t:7,e:"ui-section",a:{title:"Circuit Imprinter"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&1"},p:[6,3,198]}," ",{t:4,f:[{p:[10,4,346],t:7,e:"ui-section",a:{title:"Protolathe"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&2"},p:[9,3,305]}," ",{t:4,f:[{p:[13,4,446],t:7,e:"ui-section",a:{title:"Autolathe"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&4"},p:[12,3,405]}," ",{t:4,f:[{p:[16,4,545],t:7,e:"ui-section",a:{title:"Crafting Fabricator"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&8"},p:[15,3,504]}," ",{t:4,f:[{p:[19,4,655],t:7,e:"ui-section",a:{title:"Exosuit Fabricator"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&16"},p:[18,3,613]}," ",{t:4,f:[{p:[22,4,764],t:7,e:"ui-section",a:{title:"Biogenerator"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&32"},p:[21,3,722]}," ",{t:4,f:[{p:[25,4,867],t:7,e:"ui-section",a:{title:"Limb Grower"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&64"},p:[24,3,825]}," ",{t:4,f:[{p:[28,4,970],t:7,e:"ui-section",a:{title:"Ore Smelter"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&128"},p:[27,3,927]}]}," ",{p:[31,2,1045],t:7,e:"ui-display",a:{title:"Materials"},f:[{t:4,f:[{p:[33,4,1116],t:7,e:"ui-section",a:{title:[{t:2,r:"matname",p:[33,23,1135]}]},f:[{t:2,r:"matamt",p:[33,36,1148]}," cm^3"]}],n:52,r:"data.sdesign_materials",p:[32,3,1079]}]}],n:50,r:"data.design_selected",p:[1,1,0]},{t:4,f:[{p:[38,2,1248],t:7,e:"ui-display",a:{title:"No Design Selected."}}],n:50,x:{r:["data.design_selected"],s:"!_0"},p:[37,1,1216]}]},e.exports=a.extend(r.exports)},{205:205}],298:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{t:4,f:[{p:[4,3,60],t:7,e:"ui-display",a:{title:"Destructive Analyzer Busy!"}}],n:50,r:"data.destroybusy",p:[3,2,32]},{t:4,n:51,f:[{t:4,f:[{p:[7,4,168],t:7,e:"ui-display",a:{title:"Destructive Analyzer Unloaded"}}],n:50,x:{r:["data.destroy_loaded"],s:"!_0"},p:[6,3,135]},{t:4,n:51,f:[{p:[9,4,248],t:7,e:"ui-display",a:{title:"Loaded Item"},f:[{p:[10,4,285],t:7,e:"ui-section",a:{title:"Name"},f:[{t:2,r:"data.destroy_name",p:[10,29,310]}]}]}," ",{p:[12,4,367],t:7,e:"ui-display",a:{title:"Boost Nodes"},f:[{t:4,f:[{p:[14,6,438],t:7,e:"ui-section",a:{title:[{t:2,r:"name",p:[14,25,457]}," | ",{t:2,r:"value",p:[14,36,468]}]},f:[{p:[15,7,487],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["allow"],s:'_0?null:"disabled"'},p:[15,25,505]}],action:"deconstruct",params:['{"id":',{t:2,r:"id",p:[15,90,570]},"}"]},f:["Deconstruct and Boost"]}]}],n:52,r:"data.boost_paths",p:[13,5,405]}]}," ",{p:[19,4,670],t:7,e:"ui-button",a:{action:"eject_da"},f:["Eject Item"]}],x:{r:["data.destroy_loaded"],s:"!_0"}}],r:"data.destroybusy"}],n:50,r:"data.destroy_linked",p:[2,1,2]},{t:4,n:51,f:[{p:[23,2,755],t:7,e:"ui-display",a:{title:"No Linked Destructive Analyzer"}}],r:"data.destroy_linked"}]},e.exports=a.extend(r.exports)},{205:205}],299:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[3,2,24],t:7,e:"ui-display",a:{title:"No Design Disk Loaded"}}],n:50,x:{r:["data.ddisk"],s:"!_0"},p:[2,1,2]},{t:4,n:51,f:[{t:4,f:[{p:[6,3,121],t:7,e:"ui-display",a:{title:"Design Disk Updating"}}],n:50,r:"data.ddisk_update",p:[5,2,92]},{t:4,n:51,f:[{t:4,f:[{p:[9,4,221],t:7,e:"ui-display",a:{title:"Design Disk"},f:[{p:[10,5,259],t:7,e:"ui-section",a:{title:"Disk Space"},f:["Disk Capacity: ",{t:2,r:"data.ddisk_size",p:[10,51,305]}," blueprints."]}," ",{p:[11,5,355],t:7,e:"ui-section",a:{title:"Disk IO"},f:[{p:[11,33,383],t:7,e:"ui-button",a:{action:"ddisk_upall"},f:["Upload all designs"]}]}," ",{p:[12,5,464],t:7,e:"ui-section",a:{title:"Clear Disk"},f:[{p:[12,36,495],t:7,e:"ui-button",a:{action:"clear_designdisk",style:"danger"},f:["WIPE ALL DATA"]}]}," ",{p:[13,5,591],t:7,e:"ui-section",a:{title:"Eject Disk"},f:[{p:[13,36,622],t:7,e:"ui-button",a:{action:"eject_designdisk"},f:["Eject Disk"]}]}]}," ",{p:[15,4,717],t:7,e:"ui-display",a:{title:"Disk Contents"},f:[{t:4,f:[{p:[17,6,792],t:7,e:"ui-section",a:{title:"Number"},f:["#",{t:2,r:"pos",p:[17,34,820]},": ",{t:4,f:[{p:[19,8,866],t:7,e:"ui-button",a:{action:"upload_empty_ddisk_slot",params:['{"slot": "',{t:2,r:"pos",p:[19,70,928]},'"}']},f:["Upload to Empty Slot"]}],n:50,x:{r:["id"],s:'_0=="null"'},p:[18,7,837]},{t:4,n:51,f:[{p:[21,8,996],t:7,e:"ui-button",a:{action:"select_design",params:['{"id": "',{t:2,r:"id",p:[21,58,1046]},'"}'],state:[{t:2,x:{r:["data.sdesign_id","id"],s:'_0==_1?"selected":null'},p:[21,75,1063]}]},f:[{t:2,r:"name",p:[21,122,1110]}]}," ",{p:[22,8,1139],t:7,e:"ui-button",a:{action:"ddisk_erasepos",style:"danger",params:['{"id": "',{t:2,r:"id",p:[22,74,1205]},'"}'],state:[{t:2,x:{r:["id"],s:'_0=="null"?"disabled":null'},p:[22,91,1222]}]},f:["Delete Slot"]}],x:{r:["id"],s:'_0=="null"'}}]}],n:52,r:"data.ddisk_designs",p:[16,5,757]}]}],n:50,x:{r:["data.ddisk_upload"],s:"!_0"},p:[8,3,190]},{t:4,n:51,f:[{p:[28,4,1367],t:7,e:"ui-display",a:{title:"Upload Design to Disk"},f:[{p:[28,46,1409],t:7,e:"ui-section",f:["Available Designs:"]}]}," ",{t:4,f:[{p:[30,5,1513],t:7,e:"ui-section",f:[{p:[30,17,1525],t:7,e:"ui-button",a:{action:"ddisk_uploaddesign",params:['{"id": "',{t:2,r:"id",p:[30,72,1580]},'"}']},f:[{t:2,r:"name",p:[30,82,1590]}]}]}],n:52,r:"data.ddisk_possible_designs",p:[29,4,1470]}],x:{r:["data.ddisk_upload"],s:"!_0"}}],r:"data.ddisk_update"}],x:{r:["data.ddisk"],s:"!_0"}}]},e.exports=a.extend(r.exports)},{205:205}],300:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[3,2,24],t:7,e:"ui-display",a:{title:"No Technology Disk Loaded"}}],n:50,x:{r:["data.tdisk"],s:"!_0"},p:[2,1,2]},{t:4,n:51,f:[{t:4,f:[{p:[6,3,125],t:7,e:"ui-display",a:{title:"Technology Disk Updating"}}],n:50,r:"data.tdisk_update",p:[5,2,96]},{t:4,n:51,f:[{p:[8,3,198],t:7,e:"ui-display",a:{title:"Technology Disk"},f:[{p:[9,4,239],t:7,e:"ui-section",a:{title:"Disk IO"},f:[{p:[9,32,267],t:7,e:"ui-button",a:{action:"tdisk_down"},f:["Download Research to Disk"]},{p:[9,100,335],t:7,e:"ui-button",a:{action:"tdisk_up"},f:["Upload Research from Disk"]}," ",{p:[10,4,406],t:7,e:"ui-section",a:{title:"Clear Disk"},f:[{p:[10,35,437],t:7,e:"ui-button",a:{action:"clear_techdisk",style:"danger"},f:["WIPE ALL DATA"]}]}," ",{p:[11,4,530],t:7,e:"ui-section",a:{title:"Eject Disk"},f:[{p:[11,35,561],t:7,e:"ui-button",a:{action:"eject_techdisk"},f:["Eject Disk"]}]}]}]}," ",{p:[13,3,652],t:7,e:"ui-display",a:{title:"Disk Contents"},f:[{t:4,f:[{p:[15,5,723],t:7,e:"ui-button",a:{action:"select_node",params:['{"id": "',{t:2,r:"id",p:[15,53,771]},'"}'],state:[{t:2,x:{r:["data.snode_id","id"],s:'_0==_1?"selected":null'},p:[15,70,788]}]},f:[{t:2,r:"display_name",p:[15,115,833]}]}],n:52,r:"data.tdisk_nodes",p:[14,4,691]}]}],r:"data.tdisk_update"}],x:{r:["data.tdisk"],s:"!_0"}}]},e.exports=a.extend(r.exports)},{205:205}],301:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,2,29],t:7,e:"ui-display",a:{title:[{t:2,r:"data.snode_name",p:[2,21,48]}]},f:[{p:[3,3,73],t:7,e:"ui-section",a:{title:"Description"},f:["Description: ",{t:2,r:"data.snode_desc",p:[3,48,118]}]}," ",{p:[4,3,154],t:7,e:"ui-section",a:{title:"Point Cost"},f:["Point Cost: ",{t:2,r:"data.snode_cost",p:[4,46,197]}]}," ",{p:[5,3,233],t:7,e:"ui-section",a:{title:"Export Price"},f:["Export Price: ",{t:2,r:"data.snode_export",p:[5,50,280]}]}," ",{p:[6,3,318],t:7,e:"ui-button",a:{action:"research_node",params:['{"id"="',{t:2,r:"id",p:[6,52,367]},'"}'],state:[{t:2,x:{r:["data.snode_researched"],s:'_0?"disabled":null'},p:[6,69,384]}]},f:[{t:2,x:{r:["data.snode_researched"],s:'_0?"Researched":"Research Node"'},p:[6,115,430]}]}]}," ",{p:[8,2,518],t:7,e:"ui-display",a:{title:"Prerequisites"},f:[{t:4,f:[{p:[10,4,588],t:7,e:"ui-button",a:{action:"select_node",params:['{"id": "',{t:2,r:"id",p:[10,52,636]},'"}'],state:[{t:2,x:{r:["data.snode_id","id"],s:'_0==_1?"selected":null'},p:[10,69,653]}]},f:[{t:2,r:"display_name",p:[10,114,698]}]}],n:52,r:"data.node_prereqs",p:[9,3,556]}]}," ",{p:[13,2,759],t:7,e:"ui-display",a:{title:"Unlocks"},f:[{t:4,f:[{p:[15,4,823],t:7,e:"ui-button",a:{action:"select_node",params:['{"id": "',{t:2,r:"id",p:[15,52,871]},'"}'],state:[{t:2,x:{r:["data.snode_id","id"],s:'_0==_1?"selected":null'},p:[15,69,888]}]},f:[{t:2,r:"display_name",p:[15,114,933]}]}],n:52,r:"data.node_unlocks",p:[14,3,791]}]}," ",{p:[18,2,994],t:7,e:"ui-display",a:{title:"Designs"},f:[{t:4,f:[{p:[20,4,1058],t:7,e:"ui-button",a:{action:"select_design",params:['{"id": "',{t:2,r:"id",p:[20,54,1108]},'"}'],state:[{t:2,x:{r:["data.sdesign_id","id"],s:'_0==_1?"selected":null'},p:[20,71,1125]}]},f:[{t:2,r:"name",p:[20,118,1172]}]}],n:52,r:"data.node_designs",p:[19,3,1026]}]}],n:50,r:"data.node_selected",p:[1,1,0]},{t:4,f:[{p:[25,2,1263],t:7,e:"ui-display",a:{title:"No Node Selected."}}],n:50,x:{r:["data.node_selected"],s:"!_0"},p:[24,1,1233]}]},e.exports=a.extend(r.exports)},{205:205}],302:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{t:4,f:[{p:[3,3,59],t:7,e:"ui-display",a:{title:"Protolathe Busy!"}}],n:50,r:"data.protobusy",p:[2,2,33]},{t:4,n:51,f:[{p:[5,3,124],t:7,e:"ui-display",f:[{p:[6,4,141],t:7,e:"ui-section",f:["Search Available Designs: ",{p:[7,4,183],t:7,e:"input",a:{value:[{t:2,r:"textsearch",p:[7,17,196]}],placeholder:"Type Here","class":"text"}}," ",{p:[8,5,255],t:7,e:"ui-button",a:{action:"textSearch",params:['{"latheType" : "proto", "inputText" : ',{t:2,r:"textsearch",p:[8,82,332]},"}"]},f:["Search"]}]}," ",{p:[10,4,390],t:7,e:"ui-section",f:["Materials: ",{t:2,r:"data.protomats",p:[10,27,413]}," / ",{t:2,r:"data.protomaxmats",p:[10,48,434]}]}," ",{p:[11,4,473],t:7,e:"ui-section",f:["Reagents: ",{t:2,r:"data.protochems",p:[11,26,495]}," / ",{t:2,r:"data.protomaxchems",p:[11,48,517]}]}," ",{p:[12,3,556],t:7,e:"ui-display",f:[{p:[14,3,574],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"data.lathe_tabs",p:[14,18,589]}]},f:[{p:[15,4,615],t:7,e:"tab",a:{name:"Category List"},f:[{t:4,f:[{p:[17,6,678],t:7,e:"ui-button",a:{action:"switchcat",state:[{t:2,x:{r:["data.protocat","name"],s:'_0==_1?"selected":null'},p:[17,43,715]}],params:['{"type" : "proto", "cat" : "',{t:2,r:"name",p:[17,125,797]},'"}']},f:[{t:2,r:"name",p:[17,137,809]}]}],n:52,r:"data.protocats",p:[16,5,647]}]}," ",{p:[20,4,860],t:7,e:"tab",a:{name:"Selected Category"},f:[{t:4,f:[{p:[22,6,926],t:7,e:"ui-section",f:[{t:2,r:"name",p:[22,18,938]},{t:2,r:"matstring",p:[22,26,946]}," ",{t:4,f:[{p:[24,8,996],t:7,e:"input",a:{value:[{t:2,r:"number",p:[24,21,1009]}],placeholder:["1-",{t:2,x:{r:["canprint"],s:"_0>10?10:_0"},p:[24,47,1035]}],"class":"number"}}],n:50,x:{r:["canprint"],s:"_0>1"},p:[23,7,967]}," ",{p:[26,7,1108],t:7,e:"ui-button",a:{action:"print",state:[{t:2,x:{r:["canprint"],s:'_0>1?null:"disabled"'},p:[26,40,1141]}],params:['{"latheType" : "proto", "id" : "',{t:2,r:"id",p:[26,117,1218]},'", "amount" : "',{t:2,r:"number",p:[26,138,1239]},'"}']},f:["Print"]}]}],n:52,r:"data.protodes",p:[21,5,896]}]}," ",{p:[30,4,1321],t:7,e:"tab",a:{name:"Search Results"},f:[{t:4,f:[{p:[32,6,1386],t:7,e:"ui-section",f:[{t:2,r:"name",p:[32,18,1398]},{t:2,r:"matstring",p:[32,26,1406]}," ",{t:4,f:[{p:[34,8,1456],t:7,e:"input",a:{value:[{t:2,r:"number",p:[34,21,1469]}],placeholder:["1-",{t:2,x:{r:["canprint"],s:"_0>10?10:_0"},p:[34,47,1495]}],"class":"number"}}],n:50,x:{r:["canprint"],s:"_0>1"},p:[33,7,1427]}," ",{p:[36,7,1568],t:7,e:"ui-button",a:{action:"print",state:[{t:2,x:{r:["canprint"],s:'_0>1?null:"disabled"'},p:[36,40,1601]}],params:['{"latheType" : "proto", "id" : "',{t:2,r:"id",p:[36,117,1678]},'", "amount" : "',{t:2,r:"number",p:[36,138,1699]},'"}']},f:["Print"]}]}],n:52,r:"data.protomatch",p:[31,5,1354]}]}," ",{p:[40,4,1781],t:7,e:"tab",a:{name:"Materials"},f:[{t:4,f:[{p:[42,6,1844],t:7,e:"ui-section",f:[{t:2,r:"name",p:[42,18,1856]}," : ",{t:2,r:"amount",p:[42,29,1867]}," cm3 - ",{t:4,f:[{p:[44,7,1917],t:7,e:"input",a:{value:[{t:2,r:"number",p:[44,20,1930]}],placeholder:["1-",{t:2,r:"sheets",p:[44,46,1956]}],"class":"number"}}," ",{p:[45,7,1992],t:7,e:"ui-button",a:{action:"releasemats",params:['{"latheType" : "proto", "mat_id" : ',{t:2,r:"mat_id",p:[45,82,2067]},', "sheets" : ',{t:2,r:"number",p:[45,105,2090]},"}"]},f:["Release"]}],n:50,x:{r:["sheets"],s:"_0>0"},p:[43,6,1891]}]}],n:52,r:"data.protomat_list",p:[41,5,1809]}]}," ",{p:[50,4,2187],t:7,e:"tab",a:{name:"Chemicals"},f:[{t:4,f:[{p:[52,6,2251],t:7,e:"ui-section",f:[{t:2,r:"name",p:[52,18,2263]}," : ",{t:2,r:"amount",p:[52,29,2274]}," - ",{p:[53,7,2295],t:7,e:"ui-button",a:{action:"purgechem",params:['{"latheType" : "proto", "name" : ',{t:2,r:"name",p:[53,78,2366]},', "id" : ',{t:2,r:"reagentid",p:[53,95,2383]},"}"]},f:["Purge"]}]}],n:52,r:"data.protochem_list",p:[51,5,2215]}]}]}]}]}],r:"data.protobusy"}],n:50,r:"data.protolathe_linked",p:[1,1,0]},{t:4,n:51,f:[{p:[61,2,2504],t:7,e:"ui-display",a:{title:"No Linked Protolathe"}}],r:"data.protolathe_linked"}]},e.exports=a.extend(r.exports)},{205:205}],303:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,1,14],t:7,e:"span",a:{"class":"memoedit"},f:["NanoTrasen R&D Console"]},{p:[2,53,66],t:7,e:"br"}," Available Points: ",{p:[3,19,91],t:7,e:"ui-section",a:{title:"Research Points"},f:[{t:2,r:"data.research_points_stored",p:[3,55,127]}]}," ",{p:[4,1,173],t:7,e:"ui-section",a:{title:["Page Selection - ",{t:2,r:"page",p:[4,37,209]}]},f:[{p:[4,47,219],t:7,e:"input",a:{value:[{t:2,r:"pageselect",p:[4,60,232]}],placeholder:"1","class":"number"}}," Select Page: ",{p:[5,14,294],t:7,e:"ui-button",a:{action:"page",params:['{"num" : "',{t:2,r:"pageselect",p:[5,57,337]},'"}']},f:["[Go]"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],304:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"span",a:{"class":"bad"},f:["Settings"]},{p:[1,34,33],t:7,e:"br"},{p:[1,39,38],t:7,e:"br"}," ",{p:[2,1,45],t:7,e:"ui-button",a:{action:"Resync"},f:["RESYNC MACHINERY"]},{p:[2,56,100],t:7,e:"br"}," ",{p:[3,1,107],t:7,e:"ui-button",a:{action:"Lock"},f:["LOCK"]}," ",{p:[4,1,150],t:7,e:"ui-button",a:{action:"disconnect",params:'{"type" : "destroy"}',state:[{t:2,x:{r:["data.destroy_linked"],s:'_0?null:"disabled"'},p:[4,71,220]}]},f:["Disconnect Destructive Analyzer"]}," ",{p:[5,1,309],t:7,e:"ui-button",a:{action:"disconnect",params:'{"type" : "lathe"}',state:[{t:2,x:{r:["data.protolathe_linked"],s:'_0?null:"disabled"'},p:[5,69,377]}]},f:["Disconnect Protolathe"]}," ",{p:[6,1,459],t:7,e:"ui-button",a:{action:"disconnect",params:'{"type" : "imprinter"}',state:[{t:2,x:{r:["data.circuit_linked"],s:'_0?null:"disabled"'},p:[6,73,531]}]},f:["Disconnect Circuit Imprinter"]}]},e.exports=a.extend(r.exports)},{205:205}],305:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Available for Research"},f:[{t:4,f:[{p:[3,3,78],t:7,e:"ui-button",a:{action:"select_node",params:['{"id": "',{t:2,r:"id",p:[3,51,126]},'"}'],state:[{t:2,x:{r:["data.snode_id","id"],s:'_0==_1?"selected":null'},p:[3,68,143]}]},f:[{t:2,r:"display_name",p:[3,113,188]}]}],n:52,r:"data.techweb_avail",p:[2,2,46]}]}," ",{p:[6,1,245],t:7,e:"ui-display",a:{title:"Locked Nodes"},f:[{t:4,f:[{p:[8,3,314],t:7,e:"ui-button",a:{action:"select_node",params:['{"id": "',{t:2,r:"id",p:[8,51,362]},'"}'],state:[{t:2,x:{r:["data.snode_id","id"],s:'_0==_1?"selected":null'},p:[8,68,379]}]},f:[{t:2,r:"display_name",p:[8,113,424]}]}],n:52,r:"data.techweb_locked",p:[7,2,281]}]}," ",{p:[11,1,482],t:7,e:"ui-display",a:{title:"Researched Nodes"},f:[{t:4,f:[{p:[13,3,559],t:7,e:"ui-button",a:{action:"select_node",params:['{"id": "',{t:2,r:"id",p:[13,51,607]},'"}'],state:[{t:2,x:{r:["data.snode_id","id"],s:'_0==_1?"selected":null'},p:[13,68,624]}]},f:[{t:2,r:"display_name",p:[13,113,669]}]}],n:52,r:"data.techweb_researched",p:[12,2,522]}]}]},e.exports=a.extend(r.exports)},{205:205}],306:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,1,25],t:7,e:"ui-notice",f:[{p:[3,3,40],t:7,e:"span",f:["The grinder is currently processing and cannot be used."]}]}],n:50,r:"data.processing",p:[1,1,0]},{p:{button:[{p:[8,5,208],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.operating","data.contents"],s:'(_0==0)&&_1?null:"disabled"'},p:[8,36,239]}],action:"eject"},f:["Eject Contents"]}]},t:7,e:"ui-display",a:{title:"Processing Chamber",button:0},f:[" ",{p:[10,3,364],t:7,e:"ui-section",a:{label:"Grinding"},f:[{p:[11,5,399],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.operating"],s:'_0?"average":"good"'},p:[11,18,412]}]},f:[{t:2,x:{r:["data.operating"],s:'_0?"Busy":"Ready"'},p:[11,59,453]}]}," ",{p:[12,2,500],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.operating","data.contents"],s:'(_0==0)&&_1?null:"disabled"'},p:[12,35,533]}],action:"grind"},f:["Activate"]}]}," ",{p:[14,3,653],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{t:4,f:[{p:[17,9,755],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:["The ",{t:2,r:"name",p:[17,56,802]}]},{p:[17,71,817],t:7,e:"br"}],n:52,r:"adata.contentslist",p:[16,7,717]},{t:4,n:51,f:[{p:[19,9,848],t:7,e:"span",f:["No Contents"]}],r:"adata.contentslist"}],n:50,r:"data.contents",p:[15,5,688]},{t:4,n:51,f:[{p:[22,7,911],t:7,e:"span",f:["No Contents"]}],r:"data.contents"}]}]}," ",{p:{button:[{p:[28,5,1047],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.operating","data.isBeakerLoaded"],s:'(_0==0)&&_1?null:"disabled"'},p:[28,36,1078]}],action:"detach"},f:["Detach"]}]},t:7,e:"ui-display",a:{title:"Container",button:0},f:[" ",{p:[30,3,1202],t:7,e:"ui-section",a:{label:"Reagents"},f:[{t:4,f:[{p:[32,7,1272],t:7,e:"span",f:[{t:2,x:{r:["adata.beakerCurrentVolume"],s:"Math.round(_0)"},p:[32,13,1278]},"/",{t:2,r:"data.beakerMaxVolume",p:[32,55,1320]}," Units"]}," ",{p:[33,7,1365],t:7,e:"br"}," ",{t:4,f:[{p:[35,9,1418],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[35,52,1461]}," units of ",{t:2,r:"name",p:[35,87,1496]}]},{p:[35,102,1511],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[34,7,1378]},{t:4,n:51,f:[{p:[37,9,1542],t:7,e:"span",a:{"class":"bad"},f:["Container Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[31,5,1237]},{t:4,n:51,f:[{p:[40,7,1621],t:7,e:"span",a:{"class":"average"},f:["No Container"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=a.extend(r.exports)},{205:205}],307:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" "," ",{t:4,f:[{p:[5,2,123],t:7,e:"dirsel"}],n:50,x:{r:["data.mode"],s:"_0>=0"},p:[4,1,98]},{t:4,f:[{p:[8,2,187],t:7,e:"colorsel"}],n:50,x:{r:["data.mode"],s:"_0==-2||_0==0"},p:[7,1,143]},{p:[10,1,209],t:7,e:"ui-display",a:{title:"Utilities"},f:[{p:[11,2,242],t:7,e:"ui-section",f:[{p:[12,3,258],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0>=0?"check-square-o":"square-o"'},p:[12,20,275]}],state:[{t:2,x:{r:["data.mode"],s:'_0>=0?"selected":null'},p:[12,79,334]}],action:"mode",params:['{"mode": ',{t:2,r:"data.screen",p:[13,35,409]},"}"]},f:["Lay Pipes"]}]}," ",{p:[15,2,467],t:7,e:"ui-section",f:[{p:[16,3,483],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0==-1?"check-square-o":"square-o"'},p:[16,20,500]}],state:[{t:2,x:{r:["data.mode"],s:'_0==-1?"selected":null'},p:[16,80,560]}],action:"mode",params:'{"mode": -1}'},f:["Eat Pipes"]}]}," ",{p:[19,2,681],t:7,e:"ui-section",f:[{p:[20,3,697],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0==-2?"check-square-o":"square-o"'},p:[20,20,714]}],state:[{t:2,x:{r:["data.mode"],s:'_0==-2?"selected":null'},p:[20,80,774]}],action:"mode",params:'{"mode": -2}'},f:["Paint Pipes"]}]}]}," ",{p:[24,1,911],t:7,e:"ui-display",a:{title:"Category"},f:[{p:[25,2,943],t:7,e:"ui-section",f:[{p:[26,3,959],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.screen"],s:'_0==0?"check-square-o":"square-o"'},p:[26,20,976]}],state:[{t:2,x:{r:["data.screen"],s:'_0==0?"selected":null'},p:[26,81,1037]}],action:"screen",params:'{"screen": 0}'},f:["Atmospherics"]}," ",{p:[28,3,1150],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.screen"],s:'_0==2?"check-square-o":"square-o"'},p:[28,20,1167]}],state:[{t:2,x:{r:["data.screen"],s:'_0==2?"selected":null'},p:[28,81,1228]}],action:"screen",params:'{"screen": 2}'},f:["Disposals"]}," ",{p:[30,3,1338],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.screen"],s:'_0==3?"check-square-o":"square-o"'},p:[30,20,1355]}],state:[{t:2,x:{r:["data.screen"],s:'_0==3?"selected":null'},p:[30,81,1416]}],action:"screen",params:'{"screen": 3}'},f:["Transit Tubes"]}]}," ",{t:4,f:[{p:[34,3,1573],t:7,e:"ui-section",a:{label:"Piping Layer"},f:[{p:[35,4,1611],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.piping_layer"],s:'_0==1?"selected":null'},p:[35,22,1629]}],action:"piping_layer",params:'{"piping_layer": 1}'},f:["1"]}," ",{p:[37,4,1751],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.piping_layer"],s:'_0==2?"selected":null'},p:[37,22,1769]}],action:"piping_layer",params:'{"piping_layer": 2}'},f:["2"]}," ",{p:[39,4,1891],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.piping_layer"],s:'_0==3?"selected":null'},p:[39,22,1909]}],action:"piping_layer",params:'{"piping_layer": 3}'},f:["3"]}]}],n:50,x:{r:["data.screen"],s:"_0==0"},p:[33,2,1545]}]}," ",{t:4,f:[{p:[45,2,2098],t:7,e:"ui-display",a:{title:[{t:2,r:"cat_name",p:[45,21,2117]}]},f:[{t:4,f:[{p:[47,4,2157],t:7,e:"ui-section",f:[{p:[48,5,2175],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["selected"],s:'_0?"selected":null'},p:[48,23,2193]}],action:"pipe_type",params:['{"pipe_type": ',{t:2,r:"pipe_index",p:[49,28,2274]},', "category": ',{t:2,r:"cat_name",p:[49,56,2302]},"}"]},f:[{t:2,r:"pipe_name",p:[49,71,2317]}]}]}],n:52,r:"recipes",p:[46,3,2135]}]}],n:52,r:"data.categories",p:[44,1,2070]}]},r.exports.components=r.exports.components||{};var i={colorsel:t(308),dirsel:t(309)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,308:308,309:309}],308:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Color"},f:[{t:4,f:[{p:[3,3,60],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["selected"],s:'_0?"selected":null'},p:[3,21,78]}],action:"color",params:['{"paint_color": ',{t:2,r:"color_name",p:[4,28,155]},"}"]},f:[{t:2,r:"color_name",p:[4,45,172]}]}],n:52,r:"data.paint_colors",p:[2,2,29]}]}]},e.exports=a.extend(r.exports)},{205:205}],309:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Direction"},f:[{t:4,f:[{p:[3,3,64],t:7,e:"ui-section",f:[{t:4,f:[{p:[5,5,105],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["selected"],s:'_0?"selected":null'},p:[5,23,123]}],action:"setdir",params:['{"dir": ',{t:2,r:"dir",p:[6,22,195]},', "flipped": ',{t:2,r:"flipped",p:[6,42,215]},"}"]},f:[{p:[6,56,229],t:7,e:"img",a:{src:["pipe.",{t:2,r:"dir",p:[6,71,244]},".",{t:2,r:"icon_state",p:[6,79,252]},".png"],title:[{t:2,r:"dir_name",p:[6,106,279]}]}}]}],n:52,r:"previews",p:[4,4,81]}]}],n:52,r:"data.preview_rows",p:[2,2,33]}]}]},e.exports=a.extend(r.exports)},{205:205}],310:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,23],t:7,e:"ui-notice",f:[{t:2,r:"data.notice",p:[3,5,40]}]}],n:50,r:"data.notice",p:[1,1,0]},{p:[6,1,82],t:7,e:"ui-display",a:{title:"Satellite Network Control",button:0},f:[{t:4,f:[{p:[8,4,168],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:[{p:[9,9,209],t:7,e:"div",a:{"class":"content"},f:["#",{t:2,r:"id",p:[9,31,231]}]}," ",{p:[10,9,253],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"mode",p:[10,30,274]}]}," ",{p:[11,9,298],t:7,e:"div",a:{"class":"content"},f:[{p:[12,11,331],t:7,e:"ui-button",a:{action:"toggle",params:['{"id": "',{t:2,r:"id",p:[12,54,374]},'"}']},f:[{t:2,x:{r:["active"],s:'_0?"Deactivate":"Activate"'},p:[12,64,384]}]}]}]}],n:52,r:"data.satellites",p:[7,2,138]}]}," ",{t:4,f:[{p:[18,1,528],t:7,e:"ui-display",a:{title:"Station Shield Coverage"},f:[{p:[19,3,576],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.meteor_shield_coverage_max",p:[19,24,597]}],value:[{t:2,r:"data.meteor_shield_coverage",p:[19,68,641]}]},f:[{t:2,x:{r:["data.meteor_shield_coverage","data.meteor_shield_coverage_max"],s:"100*_0/_1"},p:[19,101,674]}," %"]}," ",{p:[20,1,758],t:7,e:"ui-display",f:[]}]}],n:50,r:"data.meteor_shield",p:[17,1,500]}]},e.exports=a.extend(r.exports)},{205:205}],311:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,26],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["enabled"],s:'_0?"check-square-o":"square-o"'},p:[2,20,43]}],style:[{t:2,x:{r:["enabled"],s:'_0?"selected":null'},p:[2,72,95]}],action:"toggle_filter",params:['{"id_tag": "',{t:2,r:"id_tag",p:[3,48,176]},'", "val": ',{t:2,r:"gas_id",p:[3,68,196]},"}"]},f:[{t:2,r:"gas_name",p:[3,81,209]}]}],n:52,r:"filter_types",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{205:205}],312:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[" "," "," ",{p:[5,1,200],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"data.tabs",p:[5,16,215]}]},f:[{p:[6,2,233],t:7,e:"tab",a:{name:"Status"},f:[{p:[7,3,256],t:7,e:"status"}]}," ",{p:[9,2,277],t:7,e:"tab",a:{name:"Templates"},f:[{p:[10,3,303],t:7,e:"templates"}]}," ",{p:[12,2,327],t:7,e:"tab",a:{name:"Modification"},f:[{t:4,f:[{p:[14,3,381],t:7,e:"modification"}],n:50,r:"data.selected",p:[13,3,356]}," ",{t:4,f:[{p:[17,3,437],t:7,e:"span",a:{"class":"bad"},f:["No shuttle selected."]}],n:50,x:{r:["data.selected"],s:"!_0"},p:[16,3,411]}]}]}]},r.exports.components=r.exports.components||{};var i={modification:t(313),templates:t(315),status:t(314)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{205:205,313:313,314:314,315:315}],313:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:["Selected: ",{t:2,r:"data.selected.name",p:[1,30,29]}]},f:[{t:4,f:[{p:[3,5,96],t:7,e:"ui-section",a:{label:"Description"},f:[{t:2,r:"data.selected.description",p:[3,37,128]}]}],n:50,r:"data.selected.description",p:[2,3,57]}," ",{t:4,f:[{p:[6,5,224],t:7,e:"ui-section",a:{label:"Admin Notes"},f:[{t:2,r:"data.selected.admin_notes",p:[6,37,256]}]}],n:50,r:"data.selected.admin_notes",p:[5,3,185]}]}," ",{t:4,f:[{p:[11,3,361],t:7,e:"ui-display",a:{title:["Existing Shuttle: ",{t:2,r:"data.existing_shuttle.name",p:[11,40,398]}]},f:["Status: ",{t:2,r:"data.existing_shuttle.status",p:[12,13,444]}," ",{t:4,f:["(",{t:2,r:"data.existing_shuttle.timeleft",p:[14,8,526]},")"],n:50,r:"data.existing_shuttle.timer",p:[13,5,482]}," ",{p:[16,5,580],t:7,e:"ui-button",a:{action:"jump_to",params:['{"type": "mobile", "id": "',{t:2,r:"data.existing_shuttle.id",p:[17,41,649]},'"}']},f:["Jump To"]}]}],n:50,r:"data.existing_shuttle",p:[10,1,328]},{t:4,f:[{p:[24,3,778],t:7,e:"ui-display",a:{title:"Existing Shuttle: None"}}],n:50,x:{r:["data.existing_shuttle"],s:"!_0"},p:[23,1,744]},{p:[27,1,847],t:7,e:"ui-button",a:{action:"preview",params:['{"shuttle_id": "',{t:2,r:"data.selected.shuttle_id",p:[28,27,902]},'"}']},f:["Preview"]}," ",{p:[31,1,961],t:7,e:"ui-button",a:{action:"load",params:['{"shuttle_id": "',{t:2,r:"data.selected.shuttle_id",p:[32,27,1013]},'"}'],style:"danger"},f:["Load"]}," ",{p:[37,1,1089],t:7,e:"ui-display",a:{title:"Status"},f:[]}]},e.exports=a.extend(r.exports)},{205:205}],314:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,27],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[2,22,46]}," (",{t:2,r:"id",p:[2,32,56]},")"]},f:[{t:2,r:"status",p:[3,5,71]}," ",{t:4,f:["(",{t:2,r:"timeleft",p:[5,8,109]},")"],n:50,r:"timer",p:[4,5,87]}," ",{p:[7,5,141],t:7,e:"ui-button",a:{action:"jump_to",params:['{"type": "mobile", "id": "',{t:2,r:"id",p:[7,67,203]},'"}']},f:["Jump To"]}," ",{p:[10,5,252],t:7,e:"ui-button",a:{action:"fast_travel",params:['{"id": "',{t:2,r:"id",p:[10,53,300]},'"}'],state:[{t:2,x:{r:["can_fast_travel"],s:'_0?null:"disabled"'},p:[10,70,317]}]},f:["Fast Travel"]}]}],n:52,r:"data.shuttles",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{205:205}],315:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"data.templates_tabs",p:[1,16,15]}]},f:[{t:4,f:[{p:[3,5,74],t:7,e:"tab",a:{name:[{t:2,r:"port_id",p:[3,16,85]}]},f:[{t:4,f:[{p:[5,9,135],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[5,28,154]}]},f:[{t:4,f:[{p:[7,13,209],t:7,e:"ui-section",a:{label:"Description"},f:[{t:2,r:"description",p:[7,45,241]}]}],n:50,r:"description",p:[6,11,176]}," ",{t:4,f:[{p:[10,13,333],t:7,e:"ui-section",a:{label:"Admin Notes"},f:[{t:2,r:"admin_notes",p:[10,45,365]}]}],n:50,r:"admin_notes",p:[9,11,300]}," ",{p:[13,11,426],t:7,e:"ui-button",a:{action:"select_template",params:['{"shuttle_id": "',{t:2,r:"shuttle_id",p:[14,37,499]},'"}'],state:[{t:2,x:{r:["data.selected.shuttle_id","shuttle_id"],s:'_0==_1?"selected":null'},p:[15,20,537]}]},f:[{t:2,x:{r:["data.selected.shuttle_id","shuttle_id"],s:'_0==_1?"Selected":"Select"'},p:[17,13,630]}]}]}],n:52,r:"templates",p:[4,7,106]}]}],n:52,r:"data.templates",p:[2,3,44]}]}]},e.exports=a.extend(r.exports)},{205:205}],316:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[2,3,33],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[3,3,66],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[3,9,72]}]}]}," ",{t:4,f:[{p:[6,5,186],t:7,e:"ui-section",a:{label:"State"},f:[{p:[7,7,220],t:7,e:"span",a:{"class":[{t:2,r:"data.occupant.statstate",p:[7,20,233]}]},f:[{t:2,r:"data.occupant.stat",p:[7,49,262]}]}]}," ",{p:[9,5,315],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[10,7,350],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.occupant.minHealth",p:[10,20,363]}],max:[{t:2,r:"data.occupant.maxHealth",p:[10,54,397]}],value:[{t:2,r:"data.occupant.health",p:[10,90,433]}],state:[{t:2,x:{r:["data.occupant.health"],s:'_0>=0?"good":"average"'},p:[11,16,475]}]},f:[{t:2,x:{r:["adata.occupant.health"],s:"Math.round(_0)"},p:[11,68,527]}]}]}," ",{t:4,f:[{p:[14,7,764],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[14,26,783]}]},f:[{p:[15,9,804],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.maxHealth",p:[15,30,825]}],value:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[15,66,861]}],state:"bad"},f:[{t:2,x:{r:["type","adata.occupant"],s:"Math.round(_1[_0])"},p:[15,103,898]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}]'},p:[13,5,598]}," ",{p:[18,5,985],t:7,e:"ui-section",a:{label:"Cells"},f:[{p:[19,9,1021],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.occupant.cloneLoss"],s:'_0?"bad":"good"'},p:[19,22,1034]}]},f:[{t:2,x:{r:["data.occupant.cloneLoss"],s:'_0?"Damaged":"Healthy"'},p:[19,68,1080]}]}]}," ",{p:[21,5,1163],t:7,e:"ui-section",a:{label:"Brain"},f:[{p:[22,9,1199],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.occupant.brainLoss"],s:'_0?"bad":"good"'},p:[22,22,1212]}]},f:[{t:2,x:{r:["data.occupant.brainLoss"],s:'_0?"Abnormal":"Healthy"'},p:[22,68,1258]}]}]}," ",{p:[24,5,1342],t:7,e:"ui-section",a:{label:"Bloodstream"},f:[{t:4,f:[{p:[26,11,1429],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,1)"},p:[26,54,1472]}," units of ",{t:2,r:"name",p:[26,89,1507]}]},{p:[26,104,1522],t:7,e:"br"}],n:52,r:"adata.occupant.reagents",p:[25,9,1384]},{t:4,n:51, +f:[{p:[28,11,1557],t:7,e:"span",a:{"class":"good"},f:["Pure"]}],r:"adata.occupant.reagents"}]}],n:50,r:"data.occupied",p:[5,3,159]}]}," ",{p:[33,1,1653],t:7,e:"ui-display",a:{title:"Controls"},f:[{p:[34,2,1685],t:7,e:"ui-section",a:{label:"Door"},f:[{p:[35,5,1716],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.open"],s:'_0?"unlock":"lock"'},p:[35,22,1733]}],action:"door"},f:[{t:2,x:{r:["data.open"],s:'_0?"Open":"Closed"'},p:[35,71,1782]}]}]}," ",{p:[37,3,1847],t:7,e:"ui-section",a:{label:"Inject"},f:[{t:4,f:[{p:[39,7,1908],t:7,e:"ui-button",a:{icon:"flask",state:[{t:2,x:{r:["data.occupied","allowed"],s:'_0&&_1?null:"disabled"'},p:[39,38,1939]}],action:"inject",params:['{"chem": "',{t:2,r:"id",p:[39,122,2023]},'"}']},f:[{t:2,r:"name",p:[39,132,2033]}]},{p:[39,152,2053],t:7,e:"br"}],n:52,r:"data.chems",p:[38,5,1880]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],317:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,25],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[2,22,44]}],labelcolor:[{t:2,r:"htmlcolor",p:[2,44,66]}],candystripe:0,right:0},f:[{p:[3,5,105],t:7,e:"ui-section",a:{label:"Status"},f:[{p:[3,32,132],t:7,e:"span",a:{"class":[{t:2,x:{r:["status"],s:'_0=="Dead"?"bad bold":_0=="Unconscious"?"average bold":"good"'},p:[3,45,145]}]},f:[{t:2,r:"status",p:[3,132,232]}]}]}," ",{p:[4,5,268],t:7,e:"ui-section",a:{label:"Jelly"},f:[{t:2,r:"exoticblood",p:[4,31,294]}]}," ",{p:[5,5,328],t:7,e:"ui-section",a:{label:"Location"},f:[{t:2,r:"area",p:[5,34,357]}]}," ",{p:[7,5,386],t:7,e:"ui-button",a:{state:[{t:2,r:"swap_button_state",p:[8,14,411]}],action:"swap",params:['{"ref": "',{t:2,r:"ref",p:[9,38,472]},'"}']},f:[{t:4,f:["You Are Here"],n:50,x:{r:["occupied"],s:'_0=="owner"'},p:[10,7,491]},{t:4,n:51,f:[{t:4,f:["Occupied"],n:50,x:{r:["occupied"],s:'_0=="stranger"'},p:[13,9,566]},{t:4,n:51,f:["Swap"],x:{r:["occupied"],s:'_0=="stranger"'}}],x:{r:["occupied"],s:'_0=="owner"'}}]}]}],n:52,r:"data.bodies",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{205:205}],318:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:{button:[{t:4,f:[{p:[4,23,82],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.drying"],s:'_0?"stop":"tint"'},p:[4,40,99]}],action:"Dry"},f:[{t:2,x:{r:["data.drying"],s:'_0?"Stop drying":"Dry"'},p:[4,88,147]}]}],n:50,r:"data.isdryer",p:[4,3,62]}]},t:7,e:"ui-display",a:{title:"Storage",button:0},f:[" ",{t:4,f:[{p:[7,3,258],t:7,e:"ui-notice",f:[{p:[8,5,275],t:7,e:"span",f:["Unfortunately, this ",{t:2,r:"data.name",p:[8,31,301]}," is empty."]}]}],n:50,x:{r:["data.contents.length"],s:"_0==0"},p:[6,1,221]},{t:4,n:51,f:[{p:[11,1,359],t:7,e:"div",a:{"class":"display tabular"},f:[{p:[12,2,391],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[13,4,425],t:7,e:"section",a:{"class":"cell bold"},f:["Item"]}," ",{p:[16,4,482],t:7,e:"section",a:{"class":"cell bold"},f:["Quantity"]}," ",{p:[19,4,543],t:7,e:"section",a:{"class":"cell bold",align:"center"},f:[{t:4,f:[{t:2,r:"data.verb",p:[20,22,608]}],n:50,r:"data.verb",p:[20,5,591]},{t:4,n:51,f:["Dispense"],r:"data.verb"}]}]}," ",{t:4,f:[{p:[24,3,703],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[25,4,737],t:7,e:"section",a:{"class":"cell"},f:[{t:2,r:"name",p:[26,5,765]}]}," ",{p:[28,4,793],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{t:2,r:"amount",p:[29,5,835]}]}," ",{p:[31,4,865],t:7,e:"section",a:{"class":"table",alight:"right"},f:[{p:[32,5,909],t:7,e:"section",a:{"class":"cell"}}," ",{p:[33,5,947],t:7,e:"section",a:{"class":"cell"},f:[{p:[34,6,976],t:7,e:"ui-button",a:{grid:0,action:"Release",state:[{t:2,x:{r:["amount"],s:'(_0>=1)?null:"disabled"'},p:[34,45,1015]}],params:['{ "name" : ',{t:2,r:"name",p:[34,102,1072]},', "amount" : 1 }']},f:["One"]}]}," ",{p:[38,5,1151],t:7,e:"section",a:{"class":"cell"},f:[{p:[39,6,1180],t:7,e:"ui-button",a:{grid:0,action:"Release",state:[{t:2,x:{r:["amount"],s:'(_0>1)?null:"disabled"'},p:[39,45,1219]}],params:['{ "name" : ',{t:2,r:"name",p:[39,101,1275]}," }"]},f:["Many"]}]}]}]}],n:52,r:"data.contents",p:[23,2,676]}]}],x:{r:["data.contents.length"],s:"_0==0"}}]}]},e.exports=a.extend(r.exports)},{205:205}],319:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={computed:{capacityPercentState:function(){var t=this.get("data.capacityPercent");return t>50?"good":t>15?"average":"bad"},inputState:function(){return this.get("data.capacityPercent")>=100?"good":this.get("data.inputting")?"average":"bad"},outputState:function(){return this.get("data.outputting")?"good":this.get("data.charge")>0?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{p:[24,1,663],t:7,e:"ui-display",a:{title:"Storage"},f:[{p:[25,3,695],t:7,e:"ui-section",a:{label:"Stored Energy"},f:[{p:[26,5,735],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.capacityPercent",p:[26,38,768]}],state:[{t:2,r:"capacityPercentState",p:[26,71,801]}]},f:[{t:2,x:{r:["adata.capacityPercent"],s:"Math.fixed(_0)"},p:[26,97,827]},"%"]}]}]}," ",{p:[29,1,908],t:7,e:"ui-display",a:{title:"Input"},f:[{p:[30,3,938],t:7,e:"ui-section",a:{label:"Charge Mode"},f:[{p:[31,5,976],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"refresh":"close"'},p:[31,22,993]}],style:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"selected":null'},p:[31,74,1045]}],action:"tryinput"},f:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"Auto":"Off"'},p:[32,25,1113]}]},"   [",{p:[34,6,1182],t:7,e:"span",a:{"class":[{t:2,r:"inputState",p:[34,19,1195]}]},f:[{t:2,x:{r:["data.capacityPercent","data.inputting"],s:'_0>=100?"Fully Charged":_1?"Charging":"Not Charging"'},p:[34,35,1211]}]},"]"]}," ",{p:[36,3,1335],t:7,e:"ui-section",a:{label:"Target Input"},f:[{p:[37,5,1374],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.inputLevelMax",p:[37,26,1395]}],value:[{t:2,r:"data.inputLevel",p:[37,57,1426]}]},f:[{t:2,r:"adata.inputLevel_text",p:[37,78,1447]}]}]}," ",{p:[39,3,1501],t:7,e:"ui-section",a:{label:"Adjust Input"},f:[{p:[40,5,1540],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[40,44,1579]}],action:"input",params:'{"target": "min"}'}}," ",{p:[41,5,1674],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[41,39,1708]}],action:"input",params:'{"adjust": -10000}'}}," ",{p:[42,5,1804],t:7,e:"ui-button",a:{icon:"pencil",action:"input",params:'{"target": "input"}'},f:["Set"]}," ",{p:[43,5,1894],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[43,38,1927]}],action:"input",params:'{"adjust": 10000}'}}," ",{p:[44,5,2039],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[44,43,2077]}],action:"input",params:'{"target": "max"}'}}]}," ",{p:[46,3,2204],t:7,e:"ui-section",a:{label:"Available"},f:[{p:[47,3,2238],t:7,e:"span",f:[{t:2,r:"adata.inputAvailable",p:[47,9,2244]}]}]}]}," ",{p:[50,1,2308],t:7,e:"ui-display",a:{title:"Output"},f:[{p:[51,3,2339],t:7,e:"ui-section",a:{label:"Output Mode"},f:[{p:[52,5,2377],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"power-off":"close"'},p:[52,22,2394]}],style:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"selected":null'},p:[52,77,2449]}],action:"tryoutput"},f:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"On":"Off"'},p:[53,26,2519]}]},"   [",{p:[55,6,2587],t:7,e:"span",a:{"class":[{t:2,r:"outputState",p:[55,19,2600]}]},f:[{t:2,x:{r:["data.outputting","data.charge"],s:'_0?"Sending":_1>0?"Not Sending":"No Charge"'},p:[55,36,2617]}]},"]"]}," ",{p:[57,3,2724],t:7,e:"ui-section",a:{label:"Target Output"},f:[{p:[58,5,2764],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.outputLevelMax",p:[58,26,2785]}],value:[{t:2,r:"data.outputLevel",p:[58,58,2817]}]},f:[{t:2,r:"adata.outputLevel_text",p:[58,80,2839]}]}]}," ",{p:[60,3,2894],t:7,e:"ui-section",a:{label:"Adjust Output"},f:[{p:[61,5,2934],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[61,44,2973]}],action:"output",params:'{"target": "min"}'}}," ",{p:[62,5,3070],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[62,39,3104]}],action:"output",params:'{"adjust": -10000}'}}," ",{p:[63,5,3202],t:7,e:"ui-button",a:{icon:"pencil",action:"output",params:'{"target": "input"}'},f:["Set"]}," ",{p:[64,5,3293],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[64,38,3326]}],action:"output",params:'{"adjust": 10000}'}}," ",{p:[65,5,3441],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[65,43,3479]}],action:"output",params:'{"target": "max"}'}}]}," ",{p:[67,3,3609],t:7,e:"ui-section",a:{label:"Outputting"},f:[{p:[68,3,3644],t:7,e:"span",f:[{t:2,r:"adata.outputUsed",p:[68,9,3650]}]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],320:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:["\ufeff",{t:4,f:[" ",{p:[2,2,33],t:7,e:"ui-display",a:{title:"Dispersal Tank"},f:[{p:[3,3,73],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[4,4,104],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.active"],s:'_0?"power-off":"close"'},p:[4,21,121]}],style:[{t:2,x:{r:["data.active"],s:'_0?"selected":null'},p:[5,12,174]}],state:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?null:"disabled"'},p:[6,12,223]}],action:"power"},f:[{t:2,x:{r:["data.active"],s:'_0?"On":"Off"'},p:[7,20,286]}]}]}," ",{p:[10,3,354],t:7,e:"ui-section",a:{label:"Smoke Radius Setting"},f:[{p:[11,5,401],t:7,e:"div",a:{"class":"content",style:"float:left"},f:[{p:[12,6,448],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.maxSetting"],s:'_0>=1?null:"disabled"'},p:[12,36,478]}],style:[{t:2,x:{r:["data.setting"],s:'_0==1?"selected":null'},p:[12,89,531]}],action:"setting",params:'{"amount": 1}'},f:["3"]}," ",{p:[13,6,634],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.maxSetting"],s:'_0>=2?null:"disabled"'},p:[13,36,664]}],style:[{t:2,x:{r:["data.setting"],s:'_0==2?"selected":null'},p:[13,89,717]}],action:"setting",params:'{"amount": 2}'},f:["6"]}," ",{p:[14,6,820],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.maxSetting"],s:'_0>=3?null:"disabled"'},p:[14,36,850]}],style:[{t:2,x:{r:["data.setting"],s:'_0==3?"selected":null'},p:[14,89,903]}],action:"setting",params:'{"amount": 3}'},f:["9"]}," ",{p:[15,6,1006],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.maxSetting"],s:'_0>=4?null:"disabled"'},p:[15,36,1036]}],style:[{t:2,x:{r:["data.setting"],s:'_0==4?"selected":null'},p:[15,89,1089]}],action:"setting",params:'{"amount": 4}'},f:["12"]}," ",{p:[16,6,1193],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.maxSetting"],s:'_0>=5?null:"disabled"'},p:[16,36,1223]}],style:[{t:2,x:{r:["data.setting"],s:'_0==5?"selected":null'},p:[16,89,1276]}],action:"setting",params:'{"amount": 5}'},f:["15"]}]}]}," ",{p:[19,3,1410],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[21,6,1476],t:7,e:"span",f:[{t:2,x:{r:["adata.TankCurrentVolume"],s:"Math.round(_0)"},p:[21,12,1482]},"/",{t:2,r:"data.TankMaxVolume",p:[21,52,1522]}," Units"]}," ",{p:[22,6,1564],t:7,e:"br"}," ",{p:[23,5,1575],t:7,e:"br"}," ",{t:4,f:[{p:[25,7,1623],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[25,50,1666]}," units of ",{t:2,r:"name",p:[25,85,1701]}]},{p:[25,100,1716],t:7,e:"br"}],n:52,r:"adata.TankContents",p:[24,6,1587]}],n:50,r:"data.isTankLoaded",p:[20,4,1444]},{t:4,n:51,f:[{p:[28,6,1757],t:7,e:"span",a:{"class":"bad"},f:["Tank Empty"]}],r:"data.isTankLoaded"}," ",{p:[30,4,1809],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?"Eject":"Close"'},p:[30,21,1826]}],style:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?"selected":null'},p:[31,12,1881]}],state:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?null:"disabled"'},p:[32,12,1936]}],action:"purge"},f:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?"Purge Contents":"No chemicals detected"'},p:[33,20,1999]}]}]}]}],n:50,x:{r:["data.screen"],s:'_0=="home"'},p:[1,2,1]}]},e.exports=a.extend(r.exports)},{205:205}],321:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,3,31],t:7,e:"ui-section",a:{label:"Generated Power"},f:[{t:2,x:{r:["adata.generated"],s:"Math.round(_0)"},p:[3,5,73]},"W"]}," ",{p:[5,3,126],t:7,e:"ui-section",a:{label:"Orientation"},f:[{p:[6,5,164],t:7,e:"span",f:[{t:2,x:{r:["adata.angle"],s:"Math.round(_0)"},p:[6,11,170]},"° (",{t:2,r:"data.direction",p:[6,45,204]},")"]}]}," ",{p:[8,3,251],t:7,e:"ui-section",a:{label:"Adjust Angle"},f:[{p:[9,5,290],t:7,e:"ui-button",a:{icon:"step-backward",action:"angle",params:'{"adjust": -15}'},f:["15°"]}," ",{p:[10,5,387],t:7,e:"ui-button",a:{icon:"backward",action:"angle",params:'{"adjust": -5}'},f:["5°"]}," ",{p:[11,5,477],t:7,e:"ui-button",a:{icon:"forward",action:"angle",params:'{"adjust": 5}'},f:["5°"]}," ",{p:[12,5,565],t:7,e:"ui-button",a:{icon:"step-forward",action:"angle",params:'{"adjust": 15}'},f:["15°"]}]}]}," ",{p:[15,1,687],t:7,e:"ui-display",a:{title:"Tracking"},f:[{p:[16,3,720],t:7,e:"ui-section",a:{label:"Tracker Mode"},f:[{p:[17,5,759],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==0?"selected":null'},p:[17,36,790]}],action:"tracking",params:'{"mode": 0}'},f:["Off"]}," ",{p:[19,5,907],t:7,e:"ui-button",a:{icon:"clock-o",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==1?"selected":null'},p:[19,38,940]}],action:"tracking",params:'{"mode": 1}'},f:["Timed"]}," ",{p:[21,5,1059],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.connected_tracker","data.tracking_state"],s:'_0?_1==2?"selected":null:"disabled"'},p:[21,38,1092]}],action:"tracking",params:'{"mode": 2}'},f:["Auto"]}]}," ",{p:[24,3,1262],t:7,e:"ui-section",a:{label:"Tracking Rate"},f:[{p:[25,3,1300],t:7,e:"span",f:[{t:2,x:{r:["adata.tracking_rate"],s:"Math.round(_0)"},p:[25,9,1306]},"°/h (",{t:2,r:"data.rotating_way",p:[25,53,1350]},")"]}]}," ",{p:[27,3,1399],t:7,e:"ui-section",a:{label:"Adjust Rate"},f:[{p:[28,5,1437],t:7,e:"ui-button",a:{icon:"fast-backward",action:"rate",params:'{"adjust": -180}'},f:["180°"]}," ",{p:[29,5,1535],t:7,e:"ui-button",a:{icon:"step-backward",action:"rate",params:'{"adjust": -30}'},f:["30°"]}," ",{p:[30,5,1631],t:7,e:"ui-button",a:{icon:"backward",action:"rate",params:'{"adjust": -5}'},f:["5°"]}," ",{p:[31,5,1720],t:7,e:"ui-button",a:{icon:"forward",action:"rate",params:'{"adjust": 5}'},f:["5°"]}," ",{p:[32,5,1807],t:7,e:"ui-button",a:{icon:"step-forward",action:"rate",params:'{"adjust": 30}'},f:["30°"]}," ",{p:[33,5,1901],t:7,e:"ui-button",a:{icon:"fast-forward",action:"rate",params:'{"adjust": 180}'},f:["180°"]}]}]}," ",{p:{button:[{p:[38,5,2088],t:7,e:"ui-button",a:{icon:"refresh",action:"refresh"},f:["Refresh"]}]},t:7,e:"ui-display",a:{title:"Devices",button:0},f:[" ",{p:[40,2,2169],t:7,e:"ui-section",a:{label:"Solar Tracker"},f:[{p:[41,5,2209],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_tracker"],s:'_0?"good":"bad"'},p:[41,18,2222]}]},f:[{t:2,x:{r:["data.connected_tracker"],s:'_0?"":"Not "'},p:[41,63,2267]},"Found"]}]}," ",{p:[43,2,2338],t:7,e:"ui-section",a:{label:"Solar Panels"},f:[{p:[44,3,2375],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_panels"],s:'_0?"good":"bad"'},p:[44,16,2388]}]},f:[{t:2,x:{r:["adata.connected_panels"],s:"Math.round(_0)"},p:[44,60,2432]}," Panels Connected"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],322:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:{button:[{t:4,f:[{p:[4,7,87],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.hasPowercell"],s:'_0?null:"disabled"'},p:[4,38,118]}],action:"eject"},f:["Eject"]}],n:50,r:"data.open",p:[3,5,62]}]},t:7,e:"ui-display",a:{title:"Power",button:0},f:[" ",{p:[7,3,226],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[8,5,258],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[8,22,275]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[9,14,326]}],state:[{t:2,x:{r:["data.hasPowercell"],s:'_0?null:"disabled"'},p:[9,54,366]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[10,22,431]}]}]}," ",{p:[12,3,490],t:7,e:"ui-section",a:{label:"Cell"},f:[{t:4,f:[{p:[14,7,554],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.powerLevel",p:[14,40,587]}]},f:[{t:2,x:{r:["adata.powerLevel"],s:"Math.fixed(_0)"},p:[14,61,608]},"%"]}],n:50,r:"data.hasPowercell",p:[13,5,521]},{t:4,n:51,f:[{p:[16,4,667],t:7,e:"span",a:{"class":"bad"},f:["No Cell"]}],r:"data.hasPowercell"}]}]}," ",{p:[20,1,744],t:7,e:"ui-display",a:{title:"Thermostat"},f:[{p:[21,3,779],t:7,e:"ui-section",a:{label:"Current Temperature"},f:[{p:[22,3,823],t:7,e:"span",f:[{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[22,9,829]},"°C"]}]}," ",{p:[24,2,894],t:7,e:"ui-section",a:{label:"Target Temperature"},f:[{p:[25,3,937],t:7,e:"span",f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[25,9,943]},"°C"]}]}," ",{t:4,f:[{p:[28,5,1031],t:7,e:"ui-section",a:{label:"Adjust Target"},f:[{p:[29,7,1073],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[29,46,1112]}],action:"target",params:'{"adjust": -20}'}}," ",{p:[30,7,1218],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[30,41,1252]}],action:"target",params:'{"adjust": -5}'}}," ",{p:[31,7,1357],t:7,e:"ui-button",a:{icon:"pencil",action:"target",params:'{"target": "input"}'},f:["Set"]}," ",{p:[32,7,1450],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[32,40,1483]}],action:"target",params:'{"adjust": 5}'}}," ",{p:[33,7,1587],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[33,45,1625]}],action:"target",params:'{"adjust": 20}'}}]}],n:50,r:"data.open",p:[27,3,1008]}," ",{p:[36,3,1754],t:7,e:"ui-section",a:{label:"Mode"},f:[{t:4,f:[{p:[38,7,1808],t:7,e:"ui-button",a:{icon:"long-arrow-up",state:[{t:2,x:{r:["data.mode"],s:'_0=="heat"?"selected":null'},p:[38,46,1847]}],action:"mode",params:'{"mode": "heat"}'},f:["Heat"]}," ",{p:[39,7,1956],t:7,e:"ui-button",a:{icon:"long-arrow-down",state:[{t:2,x:{r:["data.mode"],s:'_0=="cool"?"selected":null'},p:[39,48,1997]}],action:"mode",params:'{"mode": "cool"}'},f:["Cool"]}," ",{p:[40,7,2106],t:7,e:"ui-button",a:{icon:"arrows-v",state:[{t:2,x:{r:["data.mode"],s:'_0=="auto"?"selected":null'},p:[40,41,2140]}],action:"mode",params:'{"mode": "auto"}'},f:["Auto"]}],n:50,r:"data.open",p:[37,3,1783]},{t:4,n:51,f:[{p:[42,4,2258],t:7,e:"span",f:[{t:2,x:{r:["text","data.mode"],s:"_0.titleCase(_1)"},p:[42,10,2264]}]}],r:"data.open"}]}]}]},e.exports=a.extend(r.exports)},{205:205}],323:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:{button:[{p:[4,8,97],t:7,e:"ui-button",a:{action:"jump",params:['{"name" : ',{t:2,r:"name",p:[4,51,140]},"}"]},f:["Jump"]}," ",{p:[7,9,195],t:7,e:"ui-button",a:{action:"spawn",params:['{"name" : ',{t:2,r:"name",p:[7,53,239]},"}"]},f:["Spawn"]}]},t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[2,22,46]}],button:0},f:[" ",{p:[11,3,308],t:7,e:"ui-section",a:{label:"Description"},f:[{p:[12,5,346],t:7,e:"span",f:[{t:3,r:"desc",p:[12,11,352]}]}]}," ",{p:[14,3,390],t:7,e:"ui-section",a:{label:"Spawners left"},f:[{p:[15,5,430],t:7,e:"span",f:[{t:2,r:"amount_left",p:[15,11,436]}]}]}]}],n:52,r:"data.spawners",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{205:205}],324:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,31],t:7,e:"ui-display",a:{title:[{t:2,r:"class",p:[2,22,50]}," Alarms"]},f:[{p:[3,5,74],t:7,e:"ul",f:[{t:4,f:[{p:[5,9,107],t:7,e:"li",f:[{t:2,r:".",p:[5,13,111]}]}],n:52,r:".",p:[4,7,86]},{t:4,n:51,f:[{p:[7,9,147],t:7,e:"li",f:["System Nominal"]}],r:"."}]}]}],n:52,i:"class",r:"data.alarms",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{205:205}],325:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,42],t:7,e:"ui-notice",f:[{p:[3,5,59],t:7,e:"span",f:["Biological entity detected in contents. Please remove."]}]}],n:50,x:{r:["data.occupied","data.safeties"],s:"_0&&_1"},p:[1,1,0]},{t:4,f:[{p:[7,3,179],t:7,e:"ui-notice",f:[{p:[8,5,196],t:7,e:"span",f:["Contents are being disinfected. Please wait."]}]}],n:50,r:"data.uv_active",p:[6,1,153]},{t:4,n:51,f:[{p:{button:[{t:4,f:[{p:[13,25,369],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[13,42,386]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Unlock":"Lock"'},p:[13,93,437]}]}],n:50,x:{r:["data.open"],s:"!_0"},p:[13,7,351]}," ",{t:4,f:[{p:[14,27,519],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.open"],s:'_0?"sign-out":"sign-in"'},p:[14,44,536]}],action:"door"},f:[{t:2,x:{r:["data.open"],s:'_0?"Close":"Open"'},p:[14,98,590]}]}],n:50,x:{r:["data.locked"],s:"!_0"},p:[14,7,499]}]},t:7,e:"ui-display",a:{title:"Storage",button:0},f:[" ",{t:4,f:[{p:[17,7,692],t:7,e:"ui-notice",f:[{p:[18,9,713],t:7,e:"span",f:["Unit Locked"]}]}],n:50,r:"data.locked",p:[16,5,665]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.open"],s:"_0"},f:[{p:[21,9,793],t:7,e:"ui-section",a:{label:"Helmet"},f:[{p:[22,11,832],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.helmet"],s:'_0?"square":"square-o"'},p:[22,28,849]}],state:[{t:2,x:{r:["data.helmet"],s:'_0?null:"disabled"'},p:[22,75,896]}],action:"dispense",params:'{"item": "helmet"}'},f:[{t:2,x:{r:["data.helmet"],s:'_0||"Empty"'},p:[23,59,992]}]}]}," ",{p:[25,9,1063],t:7,e:"ui-section",a:{label:"Suit"},f:[{p:[26,11,1100],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.suit"],s:'_0?"square":"square-o"'},p:[26,28,1117]}],state:[{t:2,x:{r:["data.suit"],s:'_0?null:"disabled"'},p:[26,74,1163]}],action:"dispense",params:'{"item": "suit"}'},f:[{t:2,x:{r:["data.suit"],s:'_0||"Empty"'},p:[27,57,1255]}]}]}," ",{p:[29,9,1324],t:7,e:"ui-section",a:{label:"Mask"},f:[{p:[30,11,1361],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mask"],s:'_0?"square":"square-o"'},p:[30,28,1378]}],state:[{t:2,x:{r:["data.mask"],s:'_0?null:"disabled"'},p:[30,74,1424]}],action:"dispense",params:'{"item": "mask"}'},f:[{t:2,x:{r:["data.mask"],s:'_0||"Empty"'},p:[31,57,1516]}]}]}," ",{p:[33,9,1585],t:7,e:"ui-section",a:{label:"Storage"},f:[{p:[34,11,1625],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.storage"],s:'_0?"square":"square-o"'},p:[34,28,1642]}],state:[{t:2,x:{r:["data.storage"],s:'_0?null:"disabled"'},p:[34,77,1691]}],action:"dispense",params:'{"item": "storage"}'},f:[{t:2,x:{r:["data.storage"],s:'_0||"Empty"'},p:[35,60,1789]}]}]}]},{t:4,n:50,x:{r:["data.open"],s:"!(_0)"},f:[" ",{p:[38,7,1873],t:7,e:"ui-button",a:{icon:"recycle",state:[{t:2,x:{r:["data.occupied","data.safeties"],s:'_0&&_1?"disabled":null'},p:[38,40,1906]}],action:"uv"},f:["Disinfect"]}]}],r:"data.locked"}]}],r:"data.uv_active"}]},e.exports=a.extend(r.exports)},{205:205}],326:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,5,18],t:7,e:"ui-section",a:{label:"Dispense"},f:[{p:[3,9,57],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.plasma"],s:'_0?"square":"square-o"'},p:[3,26,74]}],state:[{t:2,x:{r:["data.plasma"],s:'_0?null:"disabled"'},p:[3,74,122]}],action:"plasma"},f:["Plasma (",{t:2,x:{r:["adata.plasma"],s:"Math.round(_0)"},p:[4,37,196]},")"]}," ",{p:[5,9,247],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.oxygen"],s:'_0?"square":"square-o"'},p:[5,26,264]}],state:[{t:2,x:{r:["data.oxygen"],s:'_0?null:"disabled"'},p:[5,74,312]}],action:"oxygen"},f:["Oxygen (",{t:2,x:{r:["adata.oxygen"],s:"Math.round(_0)"},p:[6,37,386]},")"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],327:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={computed:{tankPressureState:function(){var t=this.get("data.tankPressure");return t>=200?"good":t>=100?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{p:[14,1,295],t:7,e:"ui-notice",f:[{p:[15,3,310],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.connected"],s:'_0?"is":"is not"'},p:[15,23,330]}," connected to a mask."]}]}," ",{p:[17,1,409],t:7,e:"ui-display",f:[{p:[18,3,425],t:7,e:"ui-section",a:{label:"Tank Pressure"},f:[{p:[19,7,467],t:7,e:"ui-bar",a:{min:"0",max:"1013",value:[{t:2,r:"data.tankPressure",p:[19,41,501]}],state:[{t:2,r:"tankPressureState",p:[20,16,540]}]},f:[{t:2,x:{r:["adata.tankPressure"],s:"Math.round(_0)"},p:[20,39,563]}," kPa"]}]}," ",{p:[22,3,631],t:7,e:"ui-section",a:{label:"Release Pressure"},f:[{p:[23,5,674],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[23,18,687]}],max:[{t:2,r:"data.maxReleasePressure",p:[23,52,721]}],value:[{t:2,r:"data.releasePressure",p:[24,14,764]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[24,40,790]}," kPa"]}]}," ",{p:[26,3,861],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[27,5,906],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[27,38,939]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[29,5,1095],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[29,36,1126]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[31,5,1273],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[32,5,1368],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[32,35,1398]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],328:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,5,33],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[3,9,75],t:7,e:"span",f:[{t:2,x:{r:["adata.temperature"],s:"Math.fixed(_0,2)"},p:[3,15,81]}," K"]}]}," ",{p:[5,5,151],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[6,9,190],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.fixed(_0,2)"},p:[6,15,196]}," kPa"]}]}]}," ",{p:[9,1,276],t:7,e:"ui-display",a:{title:"Controls"},f:[{p:[10,5,311],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[11,9,347],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[11,26,364]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[11,70,408]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[12,28,469]}]}]}," ",{p:[14,5,531],t:7,e:"ui-section",a:{label:"Target Temperature"},f:[{p:[15,9,580],t:7,e:"ui-button",a:{icon:"fast-backward",style:[{t:2,x:{r:["data.target","data.min"],s:'_0==_1?"disabled":null'},p:[15,48,619]}],action:"target",params:'{"adjust": -20}'}}," ",{p:[17,9,733],t:7,e:"ui-button",a:{icon:"backward",style:[{t:2,x:{r:["data.target","data.min"],s:'_0==_1?"disabled":null'},p:[17,43,767]}],action:"target",params:'{"adjust": -5}'}}," ",{p:[19,9,880],t:7,e:"ui-button",a:{icon:"pencil",action:"target",params:'{"target": "input"}'},f:[{t:2,x:{r:["adata.target"],s:"Math.fixed(_0,2)"},p:[19,79,950]}]}," ",{p:[20,9,1003],t:7,e:"ui-button",a:{icon:"forward",style:[{t:2,x:{r:["data.target","data.max"],s:'_0==_1?"disabled":null'},p:[20,42,1036]}],action:"target",params:'{"adjust": 5}'}}," ",{p:[22,9,1148],t:7,e:"ui-button",a:{icon:"fast-forward",style:[{t:2,x:{r:["data.target","data.max"],s:'_0==_1?"disabled":null'},p:[22,47,1186]}],action:"target",params:'{"adjust": 20}'}}]}]}]},e.exports=a.extend(r.exports)},{205:205}],329:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{powerState:function(t){switch(t){case 1:return"good";default:return"bad"}}}}}(r),r.exports.template={v:3,t:[" ",{p:[13,1,173],t:7,e:"ui-notice",f:[{p:[14,2,187],t:7,e:"ui-section",a:{label:"Reconnect"},f:[{p:[15,3,221],t:7,e:"div",a:{style:"float:right"},f:[{p:[16,4,251],t:7,e:"ui-button",a:{icon:"refresh",action:"reconnect"},f:["Reconnect"]}]}]}]}," ",{p:[20,1,359],t:7,e:"ui-display",a:{title:"Turbine Controller"},f:[{p:[21,2,401],t:7,e:"ui-section",a:{label:"Status"},f:[{t:4,f:[{p:[23,4,456],t:7,e:"span",a:{"class":"bad"},f:["Broken"]}],n:50,r:"data.broken",p:[22,3,432]},{t:4,n:51,f:[{p:[25,4,504],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.online"],s:"_0(_1)"},p:[25,17,517]}]},f:[{t:2,x:{r:["data.online","data.compressor_broke","data.turbine_broke"],s:'_0&&!(_1||_2)?"Online":"Offline"'},p:[25,46,546]}]}],r:"data.broken"}," ",{p:[27,3,656],t:7,e:"div",a:{style:"float:right"},f:[{p:[28,4,686],t:7,e:"ui-button",a:{icon:"power-off",action:"power-on",state:[{t:2,r:"data.broken",p:[28,57,739]}],style:[{t:2,x:{r:["data.online"],s:'_0?"selected":""'},p:[28,81,763]}]},f:["On"]}," ",{p:[29,4,817],t:7,e:"ui-button",a:{icon:"close",action:"power-off",state:[{t:2,r:"data.broken",p:[29,54,867]}],style:[{t:2,x:{r:["data.online"],s:'_0?"":"selected"'},p:[29,78,891]}]},f:["Off"]}]}," ",{t:4,f:[{p:[32,4,989],t:7,e:"br"}," [ ",{p:[33,6,1e3],t:7,e:"span",a:{"class":"bad"},f:["Compressor is inoperable"]}," ]"],n:50,r:"data.compressor_broke",p:[31,3,955]}," ",{t:4,f:[{p:[36,4,1097],t:7,e:"br"}," [ ",{p:[37,6,1108],t:7,e:"span",a:{"class":"bad"},f:["Turbine is inoperable"]}," ]"],n:50,r:"data.turbine_broke",p:[35,3,1066]}]}]}," ",{p:[41,1,1200],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[42,2,1230],t:7,e:"ui-section",a:{label:"Turbine Speed"},f:[{p:[43,3,1268],t:7,e:"span",f:[{t:2,x:{r:["data.broken","data.rpm"],s:'_0?"--":_1'},p:[43,9,1274]}," RPM"]}]}," ",{p:[45,2,1337],t:7,e:"ui-section",a:{label:"Internal Temp"},f:[{p:[46,3,1375],t:7,e:"span",f:[{t:2,x:{r:["data.broken","data.temp"],s:'_0?"--":_1'},p:[46,9,1381]}," K"]}]}," ",{p:[48,2,1443],t:7,e:"ui-section",a:{label:"Generated Power"},f:[{p:[49,3,1483],t:7,e:"span",f:[{t:2,x:{r:["data.broken","data.power"],s:'_0?"--":_1'},p:[49,9,1489]}]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],330:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{},oninit:function(){this.on({hover:function(t){var e=this.get("data.telecrystals");e>=t.context.params.cost&&this.set("hovered",t.context.params)},unhover:function(t){this.set("hovered")}})}}}(r),r.exports.template={v:3,t:[" ",{p:{button:[{t:4,f:[{p:[23,7,482],t:7,e:"ui-button",a:{icon:"lock",action:"lock"},f:["Lock"]}],n:50,r:"data.lockable",p:[22,5,453]}]},t:7,e:"ui-display",a:{title:"Uplink",button:0},f:[" ",{p:[26,3,568],t:7,e:"ui-section",a:{label:"Telecrystals",right:0},f:[{p:[27,5,613],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.telecrystals"],s:'_0>0?"good":"bad"'},p:[27,18,626]}]},f:[{t:2,r:"data.telecrystals",p:[27,62,670]}," TC"]}]}]}," ",{t:4,f:[{p:[31,3,764],t:7,e:"ui-display",f:[{p:[32,2,779],t:7,e:"ui-button",a:{action:"select",params:['{"category": "',{t:2,r:"name",p:[32,51,828]},'"}']},f:[{t:2,r:"name",p:[32,63,840]}]}," ",{t:4,f:[{p:[34,4,883],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[34,23,902]}],candystripe:0,right:0},f:[{p:[35,3,934],t:7,e:"ui-button",a:{tooltip:[{t:2,r:"name",p:[35,23,954]},": ",{t:2,r:"desc",p:[35,33,964]}],"tooltip-side":"left",state:[{t:2,x:{r:["data.telecrystals","hovered.cost","cost","hovered.item","name"],s:'_0<_2||(_0-_1<_2&&_3!=_4)?"disabled":null'},p:[36,12,1006]}],action:"buy",params:['{"category": "',{t:2,r:"category",p:[37,40,1165]},'", "item": ',{t:2,r:"name",p:[37,63,1188]},', "cost": ',{t:2,r:"cost",p:[37,81,1206]},"}"]},v:{hover:"hover",unhover:"unhover"},f:[{t:2,r:"cost",p:[38,43,1260]}," TC"]}]}],n:52,r:"items",p:[33,2,863]}]}],n:52,r:"data.categories",p:[30,1,735]}]},e.exports=a.extend(r.exports)},{205:205}],331:[function(t,e,n){var a=t(205),r={exports:{}};!function(t){"use strict";t.exports={data:{healthState:function(t){var e=this.get("data.vr_avatar.maxhealth");return t>e/1.5?"good":t>e/3?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{p:[14,1,292],t:7,e:"ui-display",f:[{t:4,f:[{ +p:[16,3,333],t:7,e:"ui-display",a:{title:"Virtual Avatar"},f:[{p:[17,4,373],t:7,e:"ui-section",a:{label:"Name"},f:[{t:2,r:"data.vr_avatar.name",p:[18,5,404]}]}," ",{p:[20,4,450],t:7,e:"ui-section",a:{label:"Status"},f:[{t:2,r:"data.vr_avatar.status",p:[21,5,483]}]}," ",{p:[23,4,531],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[24,5,564],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"adata.vr_avatar.maxhealth",p:[24,26,585]}],value:[{t:2,r:"adata.vr_avatar.health",p:[24,64,623]}],state:[{t:2,x:{r:["healthState","adata.vr_avatar.health"],s:"_0(_1)"},p:[24,99,658]}]},f:[{t:2,x:{r:["adata.vr_avatar.health"],s:"Math.round(_0)"},p:[24,140,699]},"/",{t:2,r:"adata.vr_avatar.maxhealth",p:[24,179,738]}]}]}]}],n:50,r:"data.vr_avatar",p:[15,2,307]},{t:4,n:51,f:[{p:[28,3,826],t:7,e:"ui-display",a:{title:"Virtual Avatar"},f:["No Virtual Avatar detected"]}],r:"data.vr_avatar"}," ",{p:[32,2,922],t:7,e:"ui-display",a:{title:"VR Commands"},f:[{p:[33,3,958],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.toggle_open"],s:'_0?"times":"plus"'},p:[33,20,975]}],action:"toggle_open"},f:[{t:2,x:{r:["data.toggle_open"],s:'_0?"Close":"Open"'},p:[34,4,1042]}," the VR Sleeper"]}," ",{t:4,f:[{p:[37,4,1144],t:7,e:"ui-button",a:{icon:"signal",action:"vr_connect"},f:["Connect to VR"]}],n:50,r:"data.isoccupant",p:[36,3,1116]}," ",{t:4,f:[{p:[42,4,1267],t:7,e:"ui-button",a:{icon:"ban",action:"delete_avatar"},f:["Delete Virtual Avatar"]}],n:50,r:"data.vr_avatar",p:[41,3,1240]}]}]}]},e.exports=a.extend(r.exports)},{205:205}],332:[function(t,e,n){var a=t(205),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{t:4,f:[{p:[3,5,42],t:7,e:"ui-section",a:{label:[{t:2,r:"color",p:[3,24,61]},{t:2,x:{r:["wire"],s:'_0?" ("+_0+")":""'},p:[3,33,70]}],labelcolor:[{t:2,r:"color",p:[3,80,117]}],candystripe:0,right:0},f:[{p:[4,7,154],t:7,e:"ui-button",a:{action:"cut",params:['{"wire":"',{t:2,r:"color",p:[4,48,195]},'"}']},f:[{t:2,x:{r:["cut"],s:'_0?"Mend":"Cut"'},p:[4,61,208]}]}," ",{p:[5,7,252],t:7,e:"ui-button",a:{action:"pulse",params:['{"wire":"',{t:2,r:"color",p:[5,50,295]},'"}']},f:["Pulse"]}," ",{p:[6,7,333],t:7,e:"ui-button",a:{action:"attach",params:['{"wire":"',{t:2,r:"color",p:[6,51,377]},'"}']},f:[{t:2,x:{r:["attached"],s:'_0?"Detach":"Attach"'},p:[6,64,390]}]}]}],n:52,r:"data.wires",p:[2,3,16]}]}," ",{t:4,f:[{p:[11,3,508],t:7,e:"ui-display",f:[{t:4,f:[{p:[13,7,555],t:7,e:"ui-section",f:[{t:2,r:".",p:[13,19,567]}]}],n:52,r:"data.status",p:[12,5,526]}]}],n:50,r:"data.status",p:[10,1,485]}]},e.exports=a.extend(r.exports)},{205:205}],333:[function(t,e,n){(function(e){"use strict";var n=t(205),a=e.interopRequireDefault(n);t(194),t(1),t(190),t(193);var r=t(334),i=e.interopRequireDefault(r),o=t(335),s=t(191),p=t(192),u=e.interopRequireDefault(p);a["default"].DEBUG=/minified/.test(function(){}),Object.assign(Math,t(339)),window.initialize=function(e){window.tgui=window.tgui||new i["default"]({el:"#container",data:function(){var n=JSON.parse(e);return{constants:t(336),text:t(340),config:n.config,data:n.data,adata:n.data}}})};var c=document.getElementById("data"),l=c.textContent,d=c.getAttribute("data-ref");"{}"!==l&&(window.initialize(l),c.remove()),(0,o.act)(d,"tgui:initialize"),(0,s.loadCSS)("font-awesome.min.css");var f=new u["default"]("FontAwesome");f.check("").then(function(){return document.body.classList.add("icons")})["catch"](function(){return document.body.classList.add("no-icons")})}).call(this,t("babel/external-helpers"))},{1:1,190:190,191:191,192:192,193:193,194:194,205:205,334:334,335:335,336:336,339:339,340:340,"babel/external-helpers":"babel/external-helpers"}],334:[function(t,e,n){var a=t(205),r={exports:{}};!function(e){"use strict";var n=t(335),a=t(337);e.exports={components:{"ui-bar":t(206),"ui-button":t(207),"ui-display":t(208),"ui-input":t(209),"ui-linegraph":t(210),"ui-notice":t(211),"ui-section":t(213),"ui-subdisplay":t(214),"ui-tabs":t(215)},events:{enter:t(203).enter,space:t(203).space},transitions:{fade:t(204)},onconfig:function(){var e=this.get("config.interface"),n={ai_airlock:t(219),airalarm:t(220),"airalarm/back":t(221),"airalarm/modes":t(222),"airalarm/scrubbers":t(223),"airalarm/status":t(224),"airalarm/thresholds":t(225),"airalarm/vents":t(226),airlock_electronics:t(227),apc:t(228),atmos_alert:t(229),atmos_control:t(230),atmos_filter:t(231),atmos_mixer:t(232),atmos_pump:t(233),brig_timer:t(234),bsa:t(235),canister:t(236),cargo:t(237),cargo_express:t(238),cellular_emporium:t(239),chem_dispenser:t(240),chem_heater:t(241),chem_master:t(242),clockwork_slab:t(243),codex_gigas:t(244),computer_fabricator:t(245),crayon:t(246),cryo:t(247),disposal_unit:t(248),dna_vault:t(249),dogborg_sleeper:t(250),eightball:t(251),emergency_shuttle_console:t(252),engraved_message:t(253),error:t(254),"exofab - Copia":t(255),exonet_node:t(256),firealarm:t(257),gps:t(258),gulag_console:t(259),gulag_item_reclaimer:t(260),holodeck:t(261),implantchair:t(262),intellicard:t(263),keycard_auth:t(264),labor_claim_console:t(265),language_menu:t(266),launchpad_remote:t(267),mech_bay_power_console:t(268),mulebot:t(269),ntnet_relay:t(270),ntos_ai_restorer:t(271),ntos_card:t(272),ntos_configuration:t(273),ntos_file_manager:t(274),ntos_main:t(275),ntos_net_chat:t(276),ntos_net_dos:t(277),ntos_net_downloader:t(278),ntos_net_monitor:t(279),ntos_net_transfer:t(280),ntos_power_monitor:t(281),ntos_revelation:t(282),ntos_station_alert:t(283),ntos_supermatter_monitor:t(284),ntosheader:t(285),nuclear_bomb:t(286),operating_computer:t(287),ore_redemption_machine:t(288),pandemic:t(289),personal_crafting:t(290),portable_pump:t(291),portable_scrubber:t(292),power_monitor:t(293),radio:t(294),rdconsole:t(295),"rdconsole/circuit":t(296),"rdconsole/designview":t(297),"rdconsole/destruct":t(298),"rdconsole/diskopsdesign":t(299),"rdconsole/diskopstech":t(300),"rdconsole/nodeview":t(301),"rdconsole/protolathe":t(302),"rdconsole/rdheader":t(303),"rdconsole/settings":t(304),"rdconsole/techweb":t(305),reagentgrinder:t(306),rpd:t(307),"rpd/colorsel":t(308),"rpd/dirsel":t(309),sat_control:t(310),scrubbing_types:t(311),shuttle_manipulator:t(312),"shuttle_manipulator/modification":t(313),"shuttle_manipulator/status":t(314),"shuttle_manipulator/templates":t(315),sleeper:t(316),slime_swap_body:t(317),smartvend:t(318),smes:t(319),smoke_machine:t(320),solar_control:t(321),space_heater:t(322),spawners_menu:t(323),station_alert:t(324),suit_storage_unit:t(325),tank_dispenser:t(326),tanks:t(327),thermomachine:t(328),turbine_computer:t(329),uplink:t(330),vr_sleeper:t(331),wires:t(332)};e in n?this.components["interface"]=n[e]:this.components["interface"]=n.error},oninit:function(){this.observe("config.style",function(t,e,n){t&&document.body.classList.add(t),e&&document.body.classList.remove(e)})},oncomplete:function(){if(this.get("config.locked")){var t=(0,a.lock)(window.screenLeft,window.screenTop),e=t.x,r=t.y;(0,n.winset)(this.get("config.window"),"pos",e+","+r)}(0,n.winset)("mapwindow.map","focus",!0)}}}(r),r.exports.template={v:3,t:[" "," "," "," ",{p:[56,1,1874],t:7,e:"titlebar",f:[{t:3,r:"config.title",p:[56,11,1884]}]}," ",{p:[57,1,1915],t:7,e:"main",f:[{p:[58,3,1925],t:7,e:"warnings"}," ",{p:[59,3,1940],t:7,e:"interface"}]}," ",{t:4,f:[{p:[62,3,1990],t:7,e:"resize"}],n:50,r:"config.titlebar",p:[61,1,1963]}]},r.exports.components=r.exports.components||{};var i={warnings:t(218),titlebar:t(217),resize:t(212)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{203:203,204:204,205:205,206:206,207:207,208:208,209:209,210:210,211:211,212:212,213:213,214:214,215:215,217:217,218:218,219:219,220:220,221:221,222:222,223:223,224:224,225:225,226:226,227:227,228:228,229:229,230:230,231:231,232:232,233:233,234:234,235:235,236:236,237:237,238:238,239:239,240:240,241:241,242:242,243:243,244:244,245:245,246:246,247:247,248:248,249:249,250:250,251:251,252:252,253:253,254:254,255:255,256:256,257:257,258:258,259:259,260:260,261:261,262:262,263:263,264:264,265:265,266:266,267:267,268:268,269:269,270:270,271:271,272:272,273:273,274:274,275:275,276:276,277:277,278:278,279:279,280:280,281:281,282:282,283:283,284:284,285:285,286:286,287:287,288:288,289:289,290:290,291:291,292:292,293:293,294:294,295:295,296:296,297:297,298:298,299:299,300:300,301:301,302:302,303:303,304:304,305:305,306:306,307:307,308:308,309:309,310:310,311:311,312:312,313:313,314:314,315:315,316:316,317:317,318:318,319:319,320:320,321:321,322:322,323:323,324:324,325:325,326:326,327:327,328:328,329:329,330:330,331:331,332:332,335:335,337:337}],335:[function(t,e,n){"use strict";function a(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return"byond://"+e+"?"+Object.keys(t).map(function(e){return o(e)+"="+o(t[e])}).join("&")}function r(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};window.location.href=a(Object.assign({src:t,action:e},n))}function i(t,e,n){var r;window.location.href=a((r={},r[t+"."+e]=n,r),"winset")}n.__esModule=!0,n.href=a,n.act=r,n.winset=i;var o=encodeURIComponent},{}],336:[function(t,e,n){"use strict";n.__esModule=!0;n.UI_INTERACTIVE=2,n.UI_UPDATE=1,n.UI_DISABLED=0,n.UI_CLOSE=-1},{}],337:[function(t,e,n){"use strict";function a(t,e){return 0>t?t=0:t+window.innerWidth>window.screen.availWidth&&(t=window.screen.availWidth-window.innerWidth),0>e?e=0:e+window.innerHeight>window.screen.availHeight&&(e=window.screen.availHeight-window.innerHeight),{x:t,y:e}}function r(t){if(t.preventDefault(),this.get("drag")){if(this.get("x")){var e=t.screenX-this.get("x")+window.screenLeft,n=t.screenY-this.get("y")+window.screenTop;if(this.get("config.locked")){var r=a(e,n);e=r.x,n=r.y}(0,s.winset)(this.get("config.window"),"pos",e+","+n)}this.set({x:t.screenX,y:t.screenY})}}function i(t,e){return t=Math.clamp(100,window.screen.width,t),e=Math.clamp(100,window.screen.height,e),{x:t,y:e}}function o(t){if(t.preventDefault(),this.get("resize")){if(this.get("x")){var e=t.screenX-this.get("x")+window.innerWidth,n=t.screenY-this.get("y")+window.innerHeight,a=i(e,n);e=a.x,n=a.y,(0,s.winset)(this.get("config.window"),"size",e+","+n)}this.set({x:t.screenX,y:t.screenY})}}n.__esModule=!0,n.lock=a,n.drag=r,n.sane=i,n.resize=o;var s=t(335)},{335:335}],338:[function(t,e,n){"use strict";function a(t,e){for(var n=t,a=Array.isArray(n),i=0,n=a?n:n[Symbol.iterator]();;){var o;if(a){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var s=o;s.textContent.toLowerCase().includes(e)?(s.style.display="",r(s,e)):s.style.display="none"}}function r(t,e){for(var n=t.queryAll("section"),a=t.query("header").textContent.toLowerCase().includes(e),r=n,i=Array.isArray(r),o=0,r=i?r:r[Symbol.iterator]();;){var s;if(i){if(o>=r.length)break;s=r[o++]}else{if(o=r.next(),o.done)break;s=o.value}var p=s;a||p.textContent.toLowerCase().includes(e)?p.style.display="":p.style.display="none"}}n.__esModule=!0,n.filterMulti=a,n.filter=r},{}],339:[function(t,e,n){"use strict";function a(t,e,n){return Math.max(t,Math.min(n,e))}function r(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return+(Math.round(t+"e"+e)+"e-"+e)}n.__esModule=!0,n.clamp=a,n.fixed=r},{}],340:[function(t,e,n){"use strict";function a(t){return t[0].toUpperCase()+t.slice(1).toLowerCase()}function r(t){return t.replace(/\w\S*/g,a)}function i(t,e){for(t=""+t;t.length1){for(var p=Array(o),u=0;o>u;u++)p[u]=arguments[u+3];n.children=p}return{$$typeof:t,type:e,key:void 0===a?null:""+a,ref:null,props:n,_owner:null}}}(),e.asyncIterator=function(t){if("function"==typeof Symbol){if(Symbol.asyncIterator){var e=t[Symbol.asyncIterator];if(null!=e)return e.call(t)}if(Symbol.iterator)return t[Symbol.iterator]()}throw new TypeError("Object is not async iterable")},e.asyncGenerator=function(){function t(t){this.value=t}function e(e){function n(t,e){return new Promise(function(n,r){var s={key:t,arg:e,resolve:n,reject:r,next:null};o?o=o.next=s:(i=o=s,a(t,e))})}function a(n,i){try{var o=e[n](i),s=o.value;s instanceof t?Promise.resolve(s.value).then(function(t){a("next",t)},function(t){a("throw",t)}):r(o.done?"return":"normal",o.value)}catch(p){r("throw",p)}}function r(t,e){switch(t){case"return":i.resolve({value:e,done:!0});break;case"throw":i.reject(e);break;default:i.resolve({value:e,done:!1})}i=i.next,i?a(i.key,i.arg):o=null}var i,o;this._invoke=n,"function"!=typeof e["return"]&&(this["return"]=void 0)}return"function"==typeof Symbol&&Symbol.asyncIterator&&(e.prototype[Symbol.asyncIterator]=function(){return this}),e.prototype.next=function(t){return this._invoke("next",t)},e.prototype["throw"]=function(t){return this._invoke("throw",t)},e.prototype["return"]=function(t){return this._invoke("return",t)},{wrap:function(t){return function(){return new e(t.apply(this,arguments))}},await:function(e){return new t(e)}}}(),e.asyncGeneratorDelegate=function(t,e){function n(n,a){return r=!0,a=new Promise(function(e){e(t[n](a))}),{done:!1,value:e(a)}}var a={},r=!1;return"function"==typeof Symbol&&Symbol.iterator&&(a[Symbol.iterator]=function(){return this}),a.next=function(t){return r?(r=!1,t):n("next",t)},"function"==typeof t["throw"]&&(a["throw"]=function(t){if(r)throw r=!1,t;return n("throw",t)}),"function"==typeof t["return"]&&(a["return"]=function(t){return n("return",t)}),a},e.asyncToGenerator=function(t){return function(){var e=t.apply(this,arguments);return new Promise(function(t,n){function a(r,i){try{var o=e[r](i),s=o.value}catch(p){return void n(p)}return o.done?void t(s):Promise.resolve(s).then(function(t){a("next",t)},function(t){a("throw",t)})}return a("next")})}},e.classCallCheck=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},e.createClass=function(){function t(t,e){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(t,a)&&(n[a]=t[a]);return n},e.possibleConstructorReturn=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e},e.selfGlobal=void 0===t?self:t,e.set=function a(t,e,n,r){var i=Object.getOwnPropertyDescriptor(t,e);if(void 0===i){var o=Object.getPrototypeOf(t);null!==o&&a(o,e,n,r)}else if("value"in i&&i.writable)i.value=n;else{var s=i.set;void 0!==s&&s.call(r,n)}return n},e.slicedToArray=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(p){r=!0,i=p}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),e.slicedToArrayLoose=function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t)){for(var n,a=[],r=t[Symbol.iterator]();!(n=r.next()).done&&(a.push(n.value),!e||a.length!==e););return a}throw new TypeError("Invalid attempt to destructure non-iterable instance")},e.taggedTemplateLiteral=function(t,e){return Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(e)}}))},e.taggedTemplateLiteralLoose=function(t,e){return t.raw=e,t},e.temporalRef=function(t,e,n){if(t===n)throw new ReferenceError(e+" is not defined - temporal dead zone");return t},e.temporalUndefined={},e.toArray=function(t){return Array.isArray(t)?t:Array.from(t)},e.toConsumableArray=function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);eAtmospherics Disposals + Transit Tubes {{#if data.screen == 0}} diff --git a/tgui/src/interfaces/slime_swap_body.ract b/tgui/src/interfaces/slime_swap_body.ract index 7e069bc86b..5b2c86afd1 100644 --- a/tgui/src/interfaces/slime_swap_body.ract +++ b/tgui/src/interfaces/slime_swap_body.ract @@ -7,7 +7,15 @@ - {{is_current ? "You Are Here" : "Swap"}} + {{#if occupied == "owner"}} + You Are Here + {{else}} + {{#if occupied == "stranger"}} + Occupied + {{else}} + Swap + {{/if}} + {{/if}} diff --git a/tools/hooks/install.sh b/tools/hooks/install.sh index 3bcbfe7ff6..32183a7ce8 100644 --- a/tools/hooks/install.sh +++ b/tools/hooks/install.sh @@ -1,4 +1,5 @@ #!/bin/bash +shopt -s nullglob cd "$(dirname "$0")" for f in *.hook; do echo Installing hook: ${f%.hook} diff --git a/tools/mapmerge2/dmm.py b/tools/mapmerge2/dmm.py index 155181d413..d76f07e32c 100644 --- a/tools/mapmerge2/dmm.py +++ b/tools/mapmerge2/dmm.py @@ -31,10 +31,12 @@ class DMM: return _parse(bytes.decode(ENCODING)) def to_file(self, fname, tgm = True): + self._presave_checks() with open(fname, 'w', newline='\n', encoding=ENCODING) as f: (save_tgm if tgm else save_dmm)(self, f) def to_bytes(self, tgm = True): + self._presave_checks() bio = io.BytesIO() with io.TextIOWrapper(bio, newline='\n', encoding=ENCODING) as f: (save_tgm if tgm else save_dmm)(self, f) @@ -42,12 +44,7 @@ class DMM: return bio.getvalue() def generate_new_key(self): - # ensure that free keys exist by increasing the key length if necessary - free_keys = (BASE ** self.key_length) - len(self.dictionary) - while free_keys <= 0: - self.key_length += 1 - free_keys = (BASE ** self.key_length) - len(self.dictionary) - + free_keys = self._ensure_free_keys(1) # choose one of the free keys at random key = 0 while free_keys: @@ -61,6 +58,32 @@ class DMM: raise RuntimeError("ran out of keys, this shouldn't happen") + def _presave_checks(self): + # last-second handling of bogus keys to help prevent and fix broken maps + self._ensure_free_keys(0) + max_key = max_key_for(self.key_length) + bad_keys = {key: 0 for key in self.dictionary.keys() if key > max_key} + if bad_keys: + print(f"Warning: fixing {len(bad_keys)} overflowing keys") + for k in bad_keys: + # create a new non-bogus key and transfer that value to it + new_key = bad_keys[k] = self.generate_new_key() + self.dictionary.forceput(new_key, self.dictionary[k]) + print(f" {num_to_key(k, self.key_length, True)} -> {num_to_key(new_key, self.key_length)}") + for k, v in self.grid.items(): + # reassign the grid entries which used the old key + self.grid[k] = bad_keys.get(v, v) + + def _ensure_free_keys(self, desired): + # ensure that free keys exist by increasing the key length if necessary + free_keys = max_key_for(self.key_length) - len(self.dictionary) + while free_keys < desired: + if self.key_length >= MAX_KEY_LENGTH: + raise KeyTooLarge(f"can't expand beyond key length {MAX_KEY_LENGTH} ({len(self.dictionary)} keys)") + self.key_length += 1 + free_keys = max_key_for(self.key_length) - len(self.dictionary) + return free_keys + @property def coords_zyx(self): for z in range(1, self.size.z + 1): @@ -82,6 +105,7 @@ class DMM: # key handling # Base 52 a-z A-Z dictionary for fast conversion +MAX_KEY_LENGTH = 3 # things will get ugly fast if you exceed this BASE = 52 base52 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' base52_r = {x: i for i, x in enumerate(base52)} @@ -93,8 +117,8 @@ def key_to_num(key): num = BASE * num + base52_r[ch] return num -def num_to_key(num, key_length): - if num >= BASE ** key_length: +def num_to_key(num, key_length, allow_overflow=False): + if num >= (BASE ** key_length if allow_overflow else max_key_for(key_length)): raise KeyTooLarge(f"num={num} does not fit in key_length={key_length}") result = '' @@ -105,6 +129,11 @@ def num_to_key(num, key_length): assert len(result) <= key_length return base52[0] * (key_length - len(result)) + result +def max_key_for(key_length): + # keys only go up to "ymo" = 65534, under-estimated just in case + # https://secure.byond.com/forum/?post=2340796#comment23770802 + return min(65530, BASE ** key_length) + class KeyTooLarge(Exception): pass diff --git a/tools/travis/build_byond.sh b/tools/travis/build_byond.sh index b0e3f57aad..a25b6a5cff 100755 --- a/tools/travis/build_byond.sh +++ b/tools/travis/build_byond.sh @@ -30,7 +30,14 @@ if [ "$BUILD_TOOLS" = false ]; then fi; if grep '^/*var/' code/**/*.dm; then echo "Unmanaged global var use detected in code, please use the helpers." - grep '^var/' code/*.dm | echo + exit 1 + fi; + if grep -i 'centcomm' code/**/*.dm; then + echo "Misspelling(s) of CENTCOM detected in code, please remove the extra M(s)." + exit 1 + fi; + if grep -i 'centcomm' _maps/**/*.dmm; then + echo "Misspelling(s) of CENTCOM detected in maps, please remove the extra M(s)." exit 1 fi; @@ -44,6 +51,7 @@ if [ "$BUILD_TOOLS" = false ]; then if [ "$BUILD_TESTING" = true ]; then tools/travis/dm.sh -DTRAVISBUILDING -DTRAVISTESTING -DALL_MAPS tgstation.dme else - tools/travis/dm.sh -DTRAVISBUILDING tgstation.dme + tools/travis/dm.sh -DTRAVISBUILDING tgstation.dme && DreamDaemon tgstation.dmb -close -trusted -params "test-run&log-directory=travis" + cat data/logs/travis/clean_run.lk fi; fi;